可乐爱上咖啡

致力于高性能服务器和小众语言的研究-个人笔记杂货摊

排序:
默认
按更新时间
按访问量

Nginx定时器的实现及定时事件的使用

nginx提供一套高效的定时器实现,除了nginx核心能够使用定时器以外,我们在进行模块开发的时候也可以使用定时器来完成一些定时执行的任务。nginx定时器实现的核心是使用一棵红黑树来存储各个定时事件,每次循环的时候就从这棵树里找出超时的事件,然后一一触发,完成定时任务操作。下面简单的描述一下ng...

2012-06-01 21:29:32

阅读数:21338

评论数:0

Go语言学习笔记2——数组和Slice

在任何一门语言里,数组应该都是非常基础的类型了,使用率当然也应该是很高的。go不但提供了数组,而且还在数组这个类型之上加了一层包装,这个包装也就是slice。         go的数组变量(也就是数组名)是真真实实的数组,而不是一个指向数组内存起始位置的指针,也不能和同类型的指针进行转化,这一...

2012-02-29 22:18:01

阅读数:19136

评论数:1

Google SPDY介绍

本文主要是参考Google SPDY项目主页的一些文档总结而来,目的整体上介绍SPDY协议的定义为主。后续,我将写一系列的文章分析SPDY的一些项目(如:Nginx),SPDY的性能测试以及如何部署SPDY到实际生产应用。 一、HTTP协议存在的一些主要问题 1、一个连接一个请求。浏览器和...

2012-07-09 12:13:52

阅读数:9947

评论数:3

Nginx源码分析-master和worker进程间的通信

前面单独分析了master进程和worker的工作情况,本文就大概看一下master进程和worker进程之间是如何使用channel来完成通信的。这部分实现的源码主要分布于src/os/unix/channel.h和channel.c两个文件中。实现极其简单,没有什么复杂的逻辑。下面,我绘制了一...

2010-11-17 14:08:00

阅读数:9215

评论数:1

web.py性能测试

一直从事后台系统的开发工作,对web、甚至前端技术一无所知;为了响应leader提出的多面手号召,决定一探前端技术。由于个人对python是情有独钟,毅然决定从python web开发下手。在众多的python web框架中,我看上了简单、轻量的web.py,没有特别喜欢的原因,

2011-07-22 22:12:36

阅读数:9075

评论数:2

bash基础编程总结

bash应该是目前Linux上最流行的shell脚本解释程序了(还有个shell叫dash,我太讨厌这个东东了。),只要你在linux上工作,并且希望自己能够工作得更愉悦,那么你应该熟悉最基本的bash编程,因为它将给你的工作带来足够的幸福感。本文将总结一些我自己平时使用的bash基本编程知识,和...

2012-05-09 19:48:14

阅读数:8908

评论数:0

Go语言学习笔记4——struct

原计划这篇是写函数的,翻来覆去的研究函数,也没找到什么感悟,于是就写struct吧。这可是个好家伙阿,一个非玩具的C系统中,绝对是struct的天下,可Go更是青出于蓝胜于蓝。         struct在Go中基本总是和type一起出现,Go的type关键字相似于C中的typedef,给一个...

2012-03-04 19:50:57

阅读数:8586

评论数:0

Nginx源码分析-Epoll模块

Linux平台上,Nginx使用epoll完成事件驱动,实现高并发;本文将不对epoll本身进行介绍(网上一堆一堆的文章介绍epoll的原理及使用方法,甚至源码分析等),仅看一下Nginx是如何使用epoll的。

2010-12-11 19:01:00

阅读数:7325

评论数:1

2010年度总结-在淘宝的半年日子

2010是自己人生当中的又一个非常重要的转折点——我离开了美丽的象牙塔,踏上了工作岗位。 6月底,我离开了生活了4年的大学,登上了飞往杭州的航班。那一刻,我才明白:“4年后的今天我居然只带走了回忆,除此再无别的;如果大学可以重来,我也许会做出另外一种选择;好像每个踏出校园的同学,都有和我一样...

2011-01-02 16:40:00

阅读数:7204

评论数:25

如何从一个nginx的http请求中获取server端地址?

如果你正在从事nginx的模块开发,可能需要获取服务器端的ip地址。我在改进淘宝日志服务器的nginx模块时,就碰到需要从request中读取到接收这个请求的网卡ip。一开始,我试图如下方式直接从请求中获取地址:struct sockaddr_in *sin = NULL;/*type of r ...

2011-06-12 14:25:00

阅读数:7034

评论数:2

Nginx SPDY patch实现

前不久Nginx官方放出了SPDY的patch,到目前为止都还未合并进nginx源码,主要还是由于此patch还远不成熟,代码和功能都还不足够完善。个人感觉spdy patch合并进nginx源码还有些时日。本文是基于目前的patch,初窥一下nginx官方是如何在实现spdy。 ...

2012-07-14 16:51:53

阅读数:6800

评论数:1

Nginx源码分析-进程管理之master进程

Nginx虽然有着多种进程模型,但生产环境一般都是用master-worker模型来工作。本文着重分析Nginx的master进程做了哪些事情,它是如何管理好各个worker进程的。我们知道在main函数中完成了Nginx启动初始化过程,启动初始化过程中的一个重要环节就是解析配置文件,回调各个配置...

2010-11-11 09:44:00

阅读数:6677

评论数:1

GBK和UTF-8的粗暴判断

最近遇到一些url中携带没有encode掉的汉字,并且这样的url有的是utf-8编码,有的又是gbk编码。最终这些url被记录下来的时候,必然就有一类url是乱码了。有人说,汉语博大精深,可恰恰也是这些博大精深的东西时不时的让我们伤透脑筋。我认为这种url编码的情况,最专业的手法应该是url上有...

2012-05-26 13:21:17

阅读数:6604

评论数:3

第一个Nginx filter模块

以前一直写的都是nginx的handler模块,包括线上服务器都是handler模块,还没有真正写过filter模块,这里就张贴一个filter模块的骨架,方便自己以后查阅。这个入门级的filter只是简单的在响应body尾添加上字符串“Nginx”。 #include #include #inc...

2011-06-12 15:15:00

阅读数:6487

评论数:1

Nginx源码分析-数组

俄罗斯大牛在nginx中给我们封装了非常好用的数组,在做nginx模块开发的时候,不必再使用原始的数组了。nginx使用以下结构来维护数组 struct ngx_array_s { void *elts; ngx_uint_t nelts; size...

2010-07-19 20:52:00

阅读数:5673

评论数:4

python中设置字符编码

2009-06-01 21:43:00

阅读数:5565

评论数:0

小玩TinyCC (aka tcc)

tcc是一个轻量级的C语言编译器,根据官方介绍,完全支持ANSI C,甚至可以用它来编译linux内核。tcc最显著的特点就是编译速度快,产生的可执行程序小,并且能够像脚本一样执行C代码。可惜的是作者现在貌似不再开发tcc了,目前最新版本是0.9.25。           tcc的使用方法和...

2012-03-11 19:25:37

阅读数:5432

评论数:1

nginx配置文件解析过程之神图

<br />所谓神图就是只有自己才能看懂的图,哈哈。此图描述的是nginx配置文件解析过程生成的内存模型图,所有的配置数据,模块handler等信息都是存储在这个图中的。<br /> <br /><br /> <br /> 

2011-04-24 12:58:00

阅读数:5298

评论数:4

Nginx源码分析-事件循环

事件循环这个概念貌似在windows编程中提得更多,Linux程序却很少提及这个概念。本文所提及的事件循环其实就是worker cycle,由于此处将关注的不再是worker进程,而是worker进程在循环过程中关于事件处理的环节,因此就盗用了事件循环这个概念。在具体看代码前,先看一下这个“循环”...

2010-11-21 22:02:00

阅读数:5231

评论数:2

Nginx源码分析-启动初始化过程(二)

在Nginx启动初始化过程(一)中提到main函数会调用ngx_init_cycle()初始化一个全局cycle变量,本文就来看看这个ngx_init_cycle()函数究竟做了哪些初始化工作。ngx_cycle_t结构类型被定义在src/core/ngx_cycle.h文件中,多达23个成员变量...

2010-11-07 17:26:00

阅读数:5217

评论数:2

提示
确定要删除当前文章?
取消 删除
关闭
关闭