- 博客(35)
- 资源 (12)
- 收藏
- 关注
原创 TLS源码解析-golang
概述以golang 1.8.1版本为准。源码目录:src/crypto/tlsRECORD协议record类型const ( recordTypeChangeCipherSpec recordType = 20 // changecipherspec表明发送端已取得用以生成连接参数的足够信息。内容随密码套件不同 recordTypeAlert recordType ...
2018-03-24 19:13:41
4459
原创 动态调整TLS record size优化性能原理及实现
在ssl连接的不同阶段,通过动态调整TLS record size来优化性能,这种思路其实已经出来几年了(至少13年就有相关文章)。在google大神 ILYA GRIGORIK的书 中,可以看到有相关描述。相应的实现也不少,例如go1.7中增加了动态调整tls record size, 详情可见: https://github.com/golang/go/commit/ae00df128d843
2017-03-24 16:33:45
3113
原创 理解HTTP/2流优先级(二)
流依赖和优先级也是HTTP/2的关键特性。设计流依赖和优先级基于以下认识:WEB应用的资源有重要性的区别,优先加载重要资源,可以尽快渲染页面,提升用户体验。HTTP/2中,一个源只有一个连接来实现多路复用,所有资源通过一个连接传输,这时候资源传输的顺序就更重要了。要使用HTTP/2流依赖和优先级,通常情况,我们什么都不需要做。浏览器和HTTP服务器已经帮我们处理好了具体的细节。协议
2017-03-21 20:07:20
4379
1
原创 理解HTTP/2流量控制(一)
在理解HTTP/2协议流量控制部分的过程中,容易被一些问题困惑。HTTP/2构建于tcp之上,tcp协议已经提供了流量控制机制,为什么HTTP/2还要自己实现一个?HTTP/2流量控制是什么原理,怎样才能发挥它的最大价值? 本文将从协议、源码、实验中来找到问题的答案。
2017-03-06 03:10:34
9476
1
原创 RPM打包与SPEC文件
制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。要想制作一个rpm软件包就必须写一个软件包描述文件(SPEC)。 这个文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、以及软件包所要包含的文件列表 等等。 pam_ldap.spec描述文件说明如下:文件规范1.文件头
2016-09-08 10:52:56
5893
原创 nginx源码分析之http解码实现
分析nginx是如何解析并且存储http请求的。对非法甚至恶意请求的识别能力和处理方式。可以发现nginx采用状态机来解析http协议,有一定容错能力,但并不全面
2015-04-02 17:52:22
11191
原创 linux 惊群问题
1. 结论对于惊群的资料,网上特别多,良莠不齐,也不全面。看的时候,有的资料说,惊群已经解决了,有的资料说,惊群还没解决。。 哪个才是对的?! 一怒之下,在研究各种公开资料的基础上,特意查对了linux源码,总结了此文。希望对有需要的人略有帮助,希望各位大神轻拍,如有错漏,不吝指教,感激不尽。(814329735@qq.com)先说结论吧:1. Linux多进程accept系统调
2015-01-31 22:29:11
10937
原创 nginx phase handler的原理和选择
nginx phase handler的原理和选择PHASE HANDLER的种类nginx在接收并解析完请求行,请求头之后,就会依次调用各个phase handler。 phase handler是完成nginx主要功能的阶段。Nginx有如下11种phase,phase会依次执行。同一个phase,可能会挂载多个handler。其中斜体加粗的phase,不允许挂载用户自定义的han
2014-08-25 10:58:46
5995
原创 一篇读书笔记
近日,长夜无聊,偶然观看了央视的《客从何处来》,从书屋中跑出来晒晒太阳的易中天先生跑到越南寻访他的十八世祖易先。易教授的这位祖宗参与了明朝对越侵略战争,并枉死于越南谅山。易教授高屋建瓴的评论道“黑格尔说悲剧就是善的冲突。就这场战争而言,越南方面追求独立、自由,完全是正义的;就易先来说,他身为大明王朝朝廷命官,被朝廷派到了朝廷认为是自己国土的地方,担任知府,他守土有责,他要忠于职守,他在力不能支的情
2014-08-09 03:53:36
1614
原创 ngx lua模块源码简单解析
对nginx lua模块的整个流程,原理简单解析。由于nginx lua模块相关配置,指令,API非常多,所以本文档只以content_by_lua指令举例说明。读本文档最好配合读源码. 不适合对nginx和lua一点都不了解的人看。1.相关配置详细配置见 https://github.com/openresty/lua-nginx-module#installation2
2014-07-11 11:45:10
14766
翻译 cloudflare的新waf,用Lua实现的
我们使用nginx贯穿了我们的网络,做前线web服务,代理,流量过滤。在某些情况下,我们已经扩充了nginx上我们自己的模块的核心C代码,但最近我们做了一个重大举措,与nginx结合使用lua几乎全部用lua写的我们的一个项目是新的cloudflare WAF。这个我们另有博客。http://blog.cloudflare.com/heuristics-and-rules-why-w
2014-07-03 10:41:10
8763
原创 nginx上传文件大小
采用nginx作反向代理,出现了一个诡异的问题,小文件可以提交,大文件会报500内部错误。这个是什么原因导致的呢? 查wiki可知,上传文件大小相关的有三个配置client_body_buffer_size 配置请求体缓存区大小, 不配的话,client_body_temp_path 设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中client
2014-03-03 18:03:34
15791
原创 nginx超时设置
nginx常用的超时配置说明client_header_timeout语法 client_header_timeout time默认值 60s上下文 http server说明 指定等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1).仅当在一次read中,没有收到请求头,才会算成超时。如果在超时时间内,client没发送任何东西,nginx返
2014-01-13 19:07:56
169814
2
原创 跳表的python实现
跳表的性能和红黑树 AVL差不多,但是结构相当简单。只需要简单操作链表,就能很容易实现跳表。参考如下文章,自己用python实现了一个跳表的例程http://blog.sina.com.cn/s/blog_72995dcc01017w1t.html### Example of Skip List source code for c##import ran
2014-01-10 11:56:40
3638
1
原创 SPDY简介
SPDY简介 SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 。SPDY旨在缩短网页的加载时间和提高安全性。Google最早是在Chromium中提出的SPDY协议。本文主要了解SPDY的基本概念,以及如何编译一个含有SPDY的nginxHTTP协议存性能上的一些问题一个连接一个请求。浏览器和web server之间都是以短连接方式交互,一个连接只服务
2014-01-07 10:41:26
4145
原创 graphviz画图之张柏芝前夫是谢霆锋
张柏芝前夫是谢霆锋,谢霆锋前女友是王菲,王菲老公是李亚鹏,李亚鹏前女友叫瞿颖,瞿颖现男友是张亚东,朴树有个前女友叫周迅,周迅有个前男友叫李亚鹏,王菲前夫是窦唯,窦唯有个堂弟叫窦鹏,窦鹏有个前女友叫周迅,窦鹏堂姐是窦颖,窦颖前夫是张亚东,张亚东现女友是瞿颖,瞿颖前男友叫李亚鹏请问张柏芝和李亚鹏什么关系?(本题目摘自2012年国家公务员考试--申论部分)一图胜千言啊dot源码如下:
2014-01-03 18:05:14
3457
原创 nginx内存池实现原理
Nginx以高效,节省内存著称。到底如何高效,如何节省内存,这个得真正了解其设计原理才能知道,分析源码是了解其原理最直接的方法。Nginx对非常多的基础设施(红黑树 内存池 连接池 hash表)都重复造了轮子,我们来看看为什么要这么做。 对于c系统,最难的常常是内存管理,随着系统复杂度的提高,各种内存问题都出来了,很难管理,对于系统的长期稳定运行构成影响。我们生产线上的nginx常年稳定
2014-01-03 17:29:44
9057
原创 nginx连接池实现
nginx作为一款优秀的高性能web server,在大型互联网公司已经占据了很重要的份额。根据分析它的源代码,及在网上查询相关资料,分析了nginx的连接池的实现。nginx的连接池实际上可以看做是一种会话管理,并没有真正实现连接的重用。代码实现的还是非常漂亮,值得学习。1. 配置worker_connections模块:EventsModule语法: worker_connections number默认:位于main section的指令worker_connections和worker
2013-12-28 19:37:30
13989
原创 nginx静态编译lua[jit]
原淘宝工程师清无(王晓哲)和春来(章亦春)开发的lua nginx模块非常强大。现在网上的安装方法主要都是动态编译lua的,但是总有种种原因动态编译有诸多不便,这时候就需要将luajit静态编译进nginx里第一种方法就是直接使用 openresty,并利用openresty提供的方式静态编译luajit安装nginx nginx_lua_module luajit ngi
2013-12-24 15:51:20
5608
原创 从http协议看百度360大战
前段时间甚嚣尘上的3B大战,慢慢退出人们的视线,但是两家公司的战争才刚刚开始,一家是资金技术实力雄厚的搜索引擎巨头,一家是携客户端之威,行事诡谲的数字公司。谁会取得最后的胜利?我们在看热闹之外,也来学习一下云端和客户端是如何通过HTTP协议过招的。360以客户端见长,360安全卫士,以安全为名,占据着用户电脑的最高权限,用户通过360浏览器上网,用户的所有上网行为,360完全知晓。而百度作为一
2012-10-08 02:48:45
5145
原创 wordpress源码解析-数据库表结构(2)
如果是一个普通的用户,不需要了解wordpress数据库的结构。但是,如果你正在写一个插件,你应该会对wordpress如何处理它的数据和关系感兴趣。如果你已经尝试使用已经存在的wordpress api 去访问你需要的数据,但不直接访问数据库的情况下,这是不可能的,WordPress的提供WPDB的类,使这项任务变得简单。WordPress数据库的11个数据表分别是:
2012-10-05 23:20:43
20825
原创 wordpress源码解析-目录结构-文件调用关系(1)
学习开源代码,是一种很快的提升自己的学习方法。Wordpress作为一个开源的博客系统,非常优秀,应用广泛,使用起来简单方便,具有丰富的主题和插件,可以按照自己的需求来任意的进行修改。所以就从wordpress的源码开始自己的php学习之路,希望自己能坚持下去! Wordpress版本:3.1.2 平台:新浪sae平台。monk.sinaapp.com
2012-10-03 21:20:47
49838
原创 php&mysql初探
1.连接数据库shell:Mysql -u$user -p [$database]Php: $con = mysql_connect($Host,$DbaUser,$DbaPassword);2.展示数据库,选择数据库show databases; show tables;describe table;Shell:Use mysqlPhp:
2012-05-14 11:52:53
1590
原创 wps for linux 演示安装过程
首先说一下我的环境发行版本:ubuntu 12.04 内核版本:3.2.0 桌面环境:gnome 机器是x86 32位架构滴下载wps的deb包后,当然迫不及待的进入命令行界面安装啦1.进入deb包所在路径2.执行命令 sudo dpkg -i wps-office_8.1.0.3117+wpp~a1-0.1_i386.deb结果自然要报错了,ubuntu缺
2012-03-28 22:52:44
14496
转载 Shell数值、字符串比较
Shell中字符串、数值的比较二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:if [ "
2012-03-14 11:22:56
1173
原创 超巧妙的设置密码的方法
最近,国内知名的 IT 社区 csdn 发生用户数据泄露事件, 600 万注册用户的用户名、密码、邮箱被上传到网上任人下载。此事发生后,很快得到证实,并且迅速通过微博、 qq 群传播,一时之间,搞挨踢的同学人人自危。 当天晚上得到了这份被泄露的资料,查找了一下,还好没有自己的账号信息,但是周围的部分同学就不走运了,纷纷发现自己的账号赫然在列。用里面别人的账号验证
2011-12-27 23:13:53
3231
3
原创 扫雷的启示
小游戏中蕴藏着大道理,下面是玩扫雷游戏给我的几点启示。1.赢一盘游戏需要技巧和运气的完美配合。2.保持谨慎,不到万不得已的时候不要碰运气。3.永远不要松懈下来,每一步都很重要,包括最后一步。4.不停地实践是提高速度的不二法门。5.你需要通盘考虑,充分利用信息,仔细推敲,谨慎的思考。6.即使是这么一个小游戏,也需要全神贯注的投入。
2011-12-27 23:11:24
1608
原创 我必须让自己很靠谱
我必须让自己很靠谱,不是一般的靠谱,而是非常非常的靠谱。兄弟们,我再也不会在给你们带饭时答应的好好的,上来再平静的告诉你我忘了。再也不会出门不关门、不关灯。不熬夜,让光线和敲击键盘的声音使你们失眠。不睡懒觉,早上起来时不至于发现只有我一个人。不疯狂的看电影和综艺节目,宅在寝室。我会管理好自己的一亩三分地,勤搞卫生,顺便把寝室卫生搞了。我要合理安排好自己的作息时间,过上健
2011-12-27 23:07:47
1194
原创 我的实习面试经历
3月10号星期四下午四点三十四,群里面收到班长转发的一条信息:北京合力金桥软件招聘实习生。我看了一下他们的要求,觉得自己基本吻合条件,平时也没啥事,便决定去面试这份工作。花了一个小时,从网上下载一个简历模板,填好,发了过去。百度地图上找了坐车方式。 3月11号上午十点多,我看到了回信,问我什么时候去面试。我回复说,下午15:00有时间。然后我们班毛良玉同学也填了一份简历
2011-12-27 23:06:03
1907
原创 关于arm-linux相关操作
主机 59.71.94.125 windows XP虚拟机192.168.1.128 ubuntu 10.10 ftp用户名/密码:ubuntu/1一、批处理脚本将虚拟机中程序传递到SD卡中在虚拟机交叉编译环境中编译好的程序,将会放到路径 /home/ubuntu/ftp 下SD卡插入电脑中后,会挂载为为F盘通过ftp将虚拟机中程序传递到F盘中,ftp登陆后路径为 /hom
2011-12-27 23:01:56
1015
翻译 深入理解计算机系统英文版(从672页开始翻译-要做实验没办法)
12.8 Putting it Together: TheTINYWeb ServerWe will conclude our discussion of network programming by developing a small but functioning Web servercalled TINY. TINYis an interesting program. It c
2011-04-01 20:00:00
2212
1
原创 Java正则表达式学习-简单的小工具
最近在学习Java正则表达式,但是对一个正则表达式的测试,总得写一个程序才行。很不方便,于是自己做了一个简单的小工具。自己做着玩的,水平有限,界面很简陋。 打开之后是这个样子: 输入正则表达式和要匹配的文本后,点击Matcher按钮,就会将匹配结果显示在下面的table中(下面的是网址的正则表达式): Reset按钮是从头开始匹配的意思 下面是源代码,只
2010-11-18 10:48:00
1508
原创 正则表达式学习(Java)
花了一个晚上的时间,把Java正则表达式的视频又重新看了一遍。然后写了个小程序测试了一下。还有一些比较特殊的语法没有测试,大概了解了一下。需要用到时再去看吧。正则表达式理解不难,但要用到熟练无比,出神入化,还是有难度的。public class Test1 { /* * 测试 正则表达式语法 */ public static void main(String[] args){
2010-11-05 01:46:00
1081
原创 dancing links 算法 解 Sudoku
1. Danclink links 算法解Sudoku的基本思想: 将Sudoku问题转化为等价的01矩阵问题,然后用dlx算法求解。从一个由0 1组成的矩阵中找到一个行的集合,使得集合中每列恰好包含一个1,称为01矩阵问题。解决它的dancling links 算法利用双向链表的一个性质,巧妙的剪枝,获得了较好的性能 A) 构造01矩阵01矩阵问题是什么?
2010-10-12 00:02:00
6466
3
原创 统计数字问题
最近有些堕落了。 要赶紧调整过来。 先写篇解题报告试试。。。题目描述: 一本书的页码从自然数1开始顺序编码直到自然数N。书的页码不包含前导数字0。例如,第6也用数字6表示,而不是06。要求给定书总页码n。计算书的全部页码中分别用到多少次数字0,1,2,3,4…9. 输入 10 输出 1 4 1 1 1 1 1 1 1 1 为了方便考虑,
2010-09-27 02:55:00
1295
3
sift特征流提取
2013-10-13
windows下gcc编译器
2013-10-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人