- 博客(20)
- 资源 (1)
- 问答 (2)
- 收藏
- 关注
原创 nginx中的脚本(理论篇)
按照常规的打法或者按照常规的思路,针对变量的开发,也就是我们在ngx变量实现原理中介绍的那样:定义指令、设计结构体保存指令值、设计方法支持变量插入、利用自带的方法创建注册变量、利用自带的方法获取变量值等等,利用这些基本知识或功能点来开发变量完全没有任何问题。 但当你带着这些知识点去看nginx源码的时候,你会发现,变量的实际实现方式与我们前面介绍的变量实现方式很难一一对应上,代码里面会...
2018-09-06 08:07:54 3764
原创 Nginx中变量的实现(上)
上一篇主要描述的是变量的使用,所以没涉及任何代码,而这一篇主要描述变量的实现原理,避免不了会涉及到一些底层代码,对于不了解c语言的同学读起来可能会有点吃力,这部分同学可以尝试一下两篇结合着读,比如先读一个知识点的用法,然后再回到这篇来看一下实现原理,以此来加深理解。如果在读的过程中你有发现任何问题,还请反馈给我,我会非常感激。1.ngx内部如何表示变量 nginx内部用了两种结...
2018-06-22 07:07:57 1854
原创 Nginx中变量的实现(下)
这是Nginx中变量的实现下篇,上篇可以点这里 1.初始化变量 尽管是同一个变量,但在定义和索引的时候nginx会创建两个ngx_http_variable_t结构体,然后分别存在于两个不同的容器中。一般情况下定义变量的时候该变量携带的信息更全,而索引变量时则相对少一些。 初始化变量的过程其实就是两个容器融合的过程,这个过程在nginx中对应ngx_http_vari...
2018-06-22 06:56:21 4810
原创 Nginx中的变量
在计算机语言中,变量是用来存储和表示数据的,但不同的语言表示变量的方式不同,像java语言会把变量抽象成各种类型,并且每种类型都会用一个特殊的符号表示,比如表示一个整数需要这样: int age = 25;用int去声明age是一个变量,并且是一个表示整数的变量。 另外一种语言比如lua,在使用的时候并不需要预先声明其类型,他可以在程序运行的...
2018-05-11 07:11:01 2261
原创 Nginx系列文章-目录
》变量和脚本 ngx中的变量 ngx变量实现(上) ngx变量实现(下) ngx中的脚本(理论篇) ngx中的脚本(实战篇) 》深入理解location匹配规则 ...
2018-04-24 01:14:46 166
原创 Web开发中文乱码深入分析
[size=x-large]概述[/size]前段时间陆陆续续有一些同事跟我询问中文乱码问题,每个人的问题也都大同小异。而我最早之前也一直想写一篇这样的文章,无奈都腾不出富裕的时间,或者说拖延症比较严重(其实还是懒),这次就索性对自己狠一把,对这个问题做一个总结。 我们知道http协议是请求-响应式的,平常出现的乱码问题也就都隐藏在这一问一答之中,如果能明白字符在这个期间所走的链路,以及在...
2017-02-07 16:04:17 159
原创 URL编码
URL编码又称为百分号编码,编码方式很简单,就是把单个字节用16进制表示,然后在其前面放置一个百分号。比如有"abc"这样一个串,我们把他转换成ascii的字节序后,用16进制表示成这样: [i]61 62 63[/i]把他进行百分号编码就是在各个字节前加上“%”,结果如下: [i]%61%62%63 [/i]在URL的表示中并非所有的字符都需要...
2016-07-20 17:39:08 150
原创 高并发下的读服务
[size=x-large][b]系统背景[/b][/size] [size=small]几乎所有的互联网系统从开始都是一体化设计的,基本上所有的功能代码都是耦合在一起的。后续随着用户的不断增多业务也越来越多样化,系统需要的维护人员也会越来越多,相应的系统的复杂度、稳定性、可维护性也就越来越难控制,这时系统的拆分以及服务化就成了必然的选择。 系统被拆分后实现方式也就多样化起来,...
2016-07-08 17:43:00 142
原创 Nginx中通过lua嵌入C程序
[size=large]为什么要在nginx中使用lua嵌入c程序?[/size]1.性能上的考虑,lua毕竟是一个脚本语言,对于某些特定的功能如果用纯lua来实现性能上一般都会比用c要逊色一些。2.没有现成的库供我们使用,实际上互联网上已经有很多现成的第三方lua库供我们使用,比如读取redis数据的resty.redis;将json转化为lua本地数据格式的cjson等。当找不到合适我...
2015-10-19 22:13:05 641
原创 编码和乱码问题
[size=x-large]背景[/size]程序员一提到编码应该都不陌生,像gbk、utf-8、ascii等这些编码更是经常在用,但时不时也会出个乱码,解决问题的方法大部分都是google、baidu一顿搜,最后可能在某个犄角旮旯里找到一点信息,然后就机械的按部就班的模仿下来,结果问题可能真就迎刃而解了,然后就草草了事,下回遇到相似的问题,可能又是重复上面的过程。很少有人有耐心去花精力弄明白...
2014-11-09 16:30:25 205
原创 commons-pool-1.6部分源码分析
[size=x-large]类图关系[/size] [size=medium]为了简单起见,该图只表现继承和实现关系[/size] [img]http://dl2.iteye.com/upload/attachment/0101/3840/27e483d8-68d9-36c3-9502-91646995ae2d.png[/img][size=large]大部分情况下我们只使...
2014-09-27 23:04:31 170
原创 tcp状态图
[img]http://dl2.iteye.com/upload/attachment/0099/9673/97ea6ac2-f832-3c1e-aaff-94f6baed5aa8.jpg[/img]
2014-08-08 10:04:19 133
原创 数字签名 数字证书
[align=center][size=x-large]什么是数字签名[/size] An introduction to Digital Signatures,by David Youd原文:http://www.youdzone.com/signature.html[/align][align=center] [im...
2014-07-16 13:02:29 140
原创 TCP启动过程(慢启动、拥塞避免、拥塞)
[img]http://dl2.iteye.com/upload/attachment/0090/8167/b522e906-cf46-33a2-922d-5798b88ae21a.png[/img]
2013-11-04 08:48:04 203
原创 根据CPU消耗定位问题代码
[size=large][b]查看进程id,线程id;下面这条命令可以得出哪个线程对应哪个进程[/b]ps -eo pid,lwp -L e:显示所有的进程 o:自定义显示 f:全格式 h:不显示标题 l:长格式 w:宽输出 a:显示终端上的所有进程,包括其他用户的进程 u:有效用户 r:只显示正在运行的进程 x:显示没有控制终端的进程 pid...
2013-08-23 15:59:37 153
原创 多线程IO密集型测试
[code="java"] /** * 多线程方式测试 * 检查多线程读取是否可以节省时间 */ @SuppressWarnings("unchecked") public static void main(String[] args){ try{ //线程池大小 int poolSize = 20; ...
2013-05-04 17:21:53 238
原创 Linux系统分析工具
附件是ppt[img]http://dl.iteye.com/upload/attachment/0080/8634/cd154f3a-2670-3270-a22c-c6bd2ff55d9a.jpg[/img]
2013-02-26 13:53:08 91
原创 JDBC学习笔记
[b]连接数据的步骤[/b] 1.注册驱动 2.建立连接 3.创建执行SQL的语句(Statement) 4.执行语句 5.处理执行结果(ResultSet) 6.释放资源[code="java"]public static void main(String[] args) throws ClassNotFoundException, SQLException{ ...
2013-02-19 23:12:43 77
原创 java中获取对象实例的大小
获取程序中对象的大小:[b] 有jar文件SizeOfObjetct.jar,内容如下:[/b] SizeOfObject.java类 META-INF/MANIFEST.MF文件 SizeOfObject.java类[code="java"]package com.masf;import java.lang.instrument.Instr...
2013-01-31 14:51:06 666
原创 利用java注解拼装HQL
工作中我经常会遇到这样一个场景: 一个可以进行检索的功能列表;查询前我们需要输入一些检索数据,然后后台通过接收这些检索数据,进行Hql拼装,最后形成形如 select filed1,filed2 from table where a=b and c > d 这样的检索语句。 如果检索数据少的话拼装起来不算麻烦,但一旦检索数据很多,代码看起来就会很乱; 我找到一种相对来说比...
2012-05-25 16:04:39 153
为什么Maven打jar包回覆盖表我自己的MANIFEST.MF文件啊?
2013-01-31
<<深入理解java虚拟机:JVM高级测性与最佳实践>> 关于gc的菜鸟级提问
2012-01-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人