- 浏览: 1898523 次
- 性别:
- 来自: 北京
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
jquery打印指定的div -
GentlemanQc:
...
quartz系列(二)spring3.2.5与quartz2.1.7集群版集成简要说明 -
静夜独窗:
你好,能说一下server.xml增加的配置是怎么影响性能的吗 ...
tomcat7.0性能优化-挑战极限精简版 -
beyondfengyu:
beyondfengyu 写道如果每个客户进程的时间不同步,时 ...
java并发(二十二)分布式锁 -
beyondfengyu:
如果每个客户进程的时间不同步,时间超前的进程是不是更容易得到锁 ...
java并发(二十二)分布式锁
文章列表
http2的调试方法
- 博客分类:
- http
http2怎么调试?
关于http2的调试工具
说到这里,个人喜欢chrome和firefox。
直接上图,不想说太多,你懂的。
1.chrome
chrome从40版本开始支持http2,所以无需任何插件安装。
HTTP/2 and SPDY indicator这个插件方便调试chrome上的http2
访问普通的https如图所示:
访问http2如图所示,会多一些首部信息:
其中,通过管理页面,可以查看
chrome://net-internals/#http2 如图所示:
2.firefox
需要安装插件:在组件里搜索http2,会找到HTTP/2 and SPDY i ...
http/2.0是http/1.1的升级版,简称h2,主要应用于https。和html的h5简称不在一个维度上。而http://继续使用http1协议.
优势参考文章 http://www.tuicool.com/articles/aqyMve
注意,前方有大坑!!!!!!!!!!!!!!!!
1)本实验中,不要使用 "nginx -s reload&q ...
nginx里面,默认监控模块是不安装的要自行安装才可以。
安装命令:关键是(--with-http_stub_status_module)
./configure --prefix=/opt/nginx/nginx-1.9.5 --with-http_stub_status_module
make -j4
make install -j4
增加配置:
location /nginx_status {
# Turn on nginx stats
stub_status on;
# I do not need logs for stats
...
Nginx官方今天发布了最新的1.3.13开发版本,添加了对于WebSocket协议的支持。 用法当然很简单,基于反向代理,但是入门很容易,用精了难。使用的难点是超时、异常处理、性能优化。如下
location /test {
proxy_pass http://192.168.1.1/;
#链接超时时间,就是nginx读取后端服务器数据的时间,对websocket也有效,空闲超时时间
proxy_read_timeout 1800;
#以下三行,是开启对websocket的支持
proxy_http_version 1.1;
proxy_set_h ...
windows下安装php及搭建debug环境
- 博客分类:
- php
安装apache2.4
官方地址:http://httpd.apache.org/
如果选择2.2官方会编译好,选择2.4,要从其他镜像下载
Files for Microsoft Windows
然后选择ApacheHaus
然后下载v11_x64版本
修改配置httpd.conf
1.修改ServerRoot到安装目录
2.修改DocumentRoot到htdocs
php5.6.14基础安装
官方地址:http://php.net/
到官方地址下载v11_x64_线程安全版本
1.php配置文件修改:将php.ini-development修为php.ini
2.apache配置文件修 ...
前言
在nginx反向代理服务器中,经常会看到Server的首部,如果让人知道你是用的服务器技术和版本号,就会利用特定服务器和版本的漏洞,对我们进行攻击。现在对服务器的配置精通,不仅仅是运维该掌握的技能,更是架构师该精通的技术。所以今天笔者介绍一下修改的步骤。总共有两种方法供参考。
1.隐藏版本号
优点:修改简单
缺点:无法隐藏服务器技术信息
在http配置模块中添加以下配置信息:
server_tokens off;
效果如下
2.修改Server的全部信息
优点:修改彻底
缺点:需要修改nginx源码,重新编译安装
修改 源码目录下src/core/nginx.h文件,以下两个C语言 ...
前言
linux调试shell是件蛋疼的事,比如现在有个脚本。
#!/bin/sh
echo "hello world"
NAME="piaohailin"
echo $NAME;
一般调试的话,要用-x参数
sh -x test.sh
输出
+ echo 'hello world'
hello world
+ NAME=piaohailin
+ echo piaohailin
piaohailin
其中,带“+”号的表示执行的代码,如图
断点调试
调试shell工具
http://bashdb.sourceforge.net/
教程
http: ...
概述
今天早上在上班的地铁上,看了一篇文章,proxy_cache可以支持nginx的缓存。所以兴致来了,就弄了一下。微信的文章在后面已经给出。
在反向代理服务器上,配置代理缓存,默认开启get和head请求的缓存,如果需要缓存post,还需要特殊处理。因此这个时候我们需要面向缓存编程,有些地方要特殊处理。最终的配置文件可以查看附件。
proxy_cache基础配置
http节点添加
#levels设置目录层次,第一层目录只有一个字符,是由levels=1:2设置,总共二层目录,子目录名字由二个字符组成。如果启用了反向代理的gzip压缩,则本地磁盘中存储的文件是解压后的文件。
#keys_zo ...
nginx配置
浏览器缓存的头信息,在nginx里也是可以设置的,如下。
#配置在server节点下
#将favicon.ico放到nginx安装目录的html目录下
location = /favicon.ico {
root html;
index index.html index.htm;
expires 30d; #会同时设置Expires 和 Cache-Control:max-age
add_header Pragma Pragma;
}
设置完以后,请求通过谷歌浏览 ...
问题背景
在做苏宁易购拍卖平台的时候,设计了一套推送服务器,只有一个只读json接口。原理是使用了发布订阅模式,所有数据都缓存到了tomcat中,向推送服务器写入数据走的是另外一套业务系统,并不是从推送服务器写入。 ...
java职业生涯规划
- 博客分类:
- 综合运用
只上一个图,你就明白
参考文章
http://blog.sina.com.cn/s/blog_59d6717c0100syh3.html
Redis/Memcached高并发访问下的缓存失效时可能产生Dogpile效应(Cache Stampede效应)
避免Memcached缓存的Dogpile效应
Memcached的read-through cache流程:
A客户端读取缓存
B没有的话就由客户查询持久层
C生成缓存
D返回数据
Memcached缓存示例:
package com.chinaso.phl.high.current;
import java.util.ArrayList;
import java.util.List;
import net.rubyeye.xmemcache ...
java并发(三十四)协程kilim
- 博客分类:
- 多线程
概述
对协程的技术已经觊觎很久,他有高性能的优点,但目前工具对他支持的不是很好,调试繁琐。苦于运维和调试比较困难,一直望而却步。恰逢十一,决心攻下这块碉堡。这边文章只是个引子,后续会做更详细的描述,不断完善。贴出实践的经验。
Java里成熟一点的框架属kilim,这个发音让我想起了俄罗斯的克林姆林宫。
顺便欣赏下美景吧。
确实豪华!
进程,线程,协程。简单理解如下。
进程:操作系统级别的,独占的资源比较多。是操作系统层面的并发。
线程:在一个进程中,共享进程的资源且线程之间又可以独立。是应用程序层面的并发。
协程:在一个线程中,共享线程的资源,避免了上下文切换,是用户级别的并发。
模 ...
家里有个微型投影仪,用HDMI和树莓派链接的时候,无信号,这个时候就网上找了一下解决办法。记录下来,日后给其他人同学做个参考。
将烧好的SD卡拔下来,插到windows的机器上,然后打开SD盘,可以看到根目录里面有个config.txt文件,按照习惯,做好备份config.txt.bak。然后修改里面的内容,将以下几个选项前面的“#”号去掉即可,其中里面的值不需要修改,采用系统默认即可。
hdmi_safe=
overscan_left=
overscan_right=
overscan_top=
overscan_bottom=
hdmi_group=
hdmi_mode=
hdmi_dr ...
如果说CountDownLatch(闭锁)是一次性的,那么CyclicBarrier正好可以循环使用。它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。所谓屏障点就是一组任务执行完毕的时刻。
比如在性能测试的时候,多线程需要把数据源的连接准备好,然后执行数据库相关操作。那么“准备”这个任务就可以使用闭锁。
关键方法
CyclicBarrier barrier = new CyclicBarrier(令牌数量);
barrier.await();//屏障点,消耗一个令牌,当令牌消耗到任务数量的时候,栅栏就会全部放开
bar ...