<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小青年儿]]></title><description><![CDATA[Think Different  ！ Beyond Technology  ！]]></description><link>https://blog.youkuaiyun.com/OutManLee</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; OutManLee]]></copyright><item><title><![CDATA[undefined reference to `pthread_create'的错误。]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/47788033</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/47788033</guid><author>OutManLee</author><pubDate>Wed, 19 Aug 2015 21:19:29 +0800</pubDate><description><![CDATA[晚上编译一个工程，TMD编译时总是报
thread.o: In function `create_thread':
thread.c:(.text+0x1ef): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
make: *** [serverd] Error 1
的错误，可是makefi]]></description><category></category></item><item><title><![CDATA[向GITHUB提交本地代码]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/47324145</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/47324145</guid><author>OutManLee</author><pubDate>Thu, 06 Aug 2015 22:31:42 +0800</pubDate><description><![CDATA[第一步：在本机上操作
1、安装 Git 客户端
如何安装不同操作系统的 Git 客户端，参见：http://help.github.com/win-set-up-git/



2、打开 Git Bash，开始键入各种配置信息：


git config --global user.name "You Name"
git config --global user.email yo]]></description><category></category></item><item><title><![CDATA[压力测试工具ab]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46983783</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46983783</guid><author>OutManLee</author><pubDate>Tue, 21 Jul 2015 11:43:17 +0800</pubDate><description><![CDATA[在 Apache 有个叫 ab(ApacheBench) 的程序, 此程序是专门用在做压力测试用的软件. ApacheBench(ab) 用来测试 apache 执行效率，可以用来测试网站的压力工具.ab 参数:Usage: /usr/sbin/ab [options] [http[s]://]hostname[:port]/pathOptions are:§ -n requests Number]]></description><category></category></item><item><title><![CDATA[ngx.timer.at(0, func)]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46927915</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46927915</guid><author>OutManLee</author><pubDate>Fri, 17 Jul 2015 15:17:08 +0800</pubDate><description><![CDATA[ngx.timer.at 
syntax: ok, err = ngx.timer.at(delay, callback, user_arg1, user_arg2, …) 
The first argument, delay, specifies the delay for the timer, in seconds.  
One can specify fractional seconds li]]></description><category></category></item><item><title><![CDATA[HTTP头部详解]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46878271</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46878271</guid><author>OutManLee</author><pubDate>Tue, 14 Jul 2015 15:05:36 +0800</pubDate><description><![CDATA[轮询调度算法(Round-Robin Scheduling)　　轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器，从1开始，直到N(内部服务器个数)，然后重新开始循环。 
　　算法的优点是其简洁性，它无需记录当前所有连接的状态，所以它是一种无状态调度。 
　　轮询调度算法流程 
　　假设有一组服务器N台，S = {S1, S2, …, Sn}，一个指示变量i表示上一次选择的服务器I]]></description><category></category></item><item><title><![CDATA[NGX负载均衡策略]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46816933</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46816933</guid><author>OutManLee</author><pubDate>Thu, 09 Jul 2015 14:51:17 +0800</pubDate><description><![CDATA[负载均衡策略







nginx的负载均衡策略可以划分为两大类：内置策略和扩展策略。内置策略包含加权轮询和ip hash，在默认情况下这两种策略会编译进nginx内核，只需在nginx配置中指明参数即可。扩展策略有很多，如fair、通用hash、consistent hash等，默认不编译进nginx内核，是第三方模块。



nginx 的 upstream目前支持]]></description><category></category></item><item><title><![CDATA[NGX打印日志时对特殊字符的转码]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46712325</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46712325</guid><author>OutManLee</author><pubDate>Wed, 01 Jul 2015 17:16:37 +0800</pubDate><description><![CDATA[问题： 
[root@3WR ~]# curl -svo /dev/null test/ -x 127.0.0.1:9711 
日志打印结果不一致1.控制台输出结果
>User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 **OpenSSL/0.9.**zlib/1.2.3 libidn/0.6.5
2.access.log]]></description><category></category></item><item><title><![CDATA[查看某个进程号下面的子进程]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46708381</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46708381</guid><author>OutManLee</author><pubDate>Wed, 01 Jul 2015 11:33:09 +0800</pubDate><description><![CDATA[[root@3WR ~]# ps --ppid 60768
   PID TTY          TIME CMD
 38907 ?        00:00:03 nginx
 38908 ?        00:00:03 nginx]]></description><category></category></item><item><title><![CDATA[使用curl命令发送http请求]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46707905</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46707905</guid><author>OutManLee</author><pubDate>Wed, 01 Jul 2015 11:03:53 +0800</pubDate><description><![CDATA[Examples: 
curl -svo /dev/null http://test/index.html -x 127.0.0.1:9711]]></description><category></category></item><item><title><![CDATA[利用二级指针删除单向链表]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46639209</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46639209</guid><author>OutManLee</author><pubDate>Thu, 25 Jun 2015 17:47:18 +0800</pubDate><description><![CDATA[Linus大婶在slashdot上回答一些编程爱好者的提问，其中一个人问他什么样的代码是他所喜好的，大婶表述了自己一些观点之后，举了一个指针的例子，解释了什么才是core
 low-level coding。

下面是Linus的教学原文及翻译——

“At the opposite end of the spectrum, I actually wish more people und]]></description><category></category></item><item><title><![CDATA[Nginx+Lua开发]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46563953</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46563953</guid><author>OutManLee</author><pubDate>Fri, 19 Jun 2015 17:50:21 +0800</pubDate><description><![CDATA[Lua入门
本文目的是学习Nginx+Lua开发，对于Lua基本知识可以参考如下文章：
Lua简明教程
http://coolshell.cn/articles/10739.html
lua在线lua学习教程
http://book.luaer.cn/
Lua 5.1 参考手册
http://www.codingnow.com/2000/download/lua_manual.htm]]></description><category></category></item><item><title><![CDATA[Nginx源码分析之变量]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46563293</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46563293</guid><author>OutManLee</author><pubDate>Fri, 19 Jun 2015 16:50:41 +0800</pubDate><description><![CDATA[nginx中的变量在nginx中的使用非常的多，正因为变量的存在，使得nginx在配置上变得非常灵活。

我们知道，在nginx的配置文件中，配合变量，我们可以动态的得到我们想要的值。最常见的使用是，我们在写access_log的格式时，需要用到多很多变量。
 而这些变量是如何工作的呢？我们可以输出哪些变量？我们又怎么才能输出自己想要的内容呢？当然，我们可能还想知道，如何在我们的模块里面去使]]></description><category></category></item><item><title><![CDATA[图解TCP-IP协议]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/46469687</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/46469687</guid><author>OutManLee</author><pubDate>Fri, 12 Jun 2015 11:34:42 +0800</pubDate><description><![CDATA[本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤：建立TCP连接通道，传输数据，断开TCP连接通道。如图1所示，给出了TCP通信过程的示意图。



图1 TCP 三次握手四次挥手

图1主要包括三部分：建立连接、传输数据、断开连接。

1)建立TCP连接很简单，通过三次握手便可建立连接。

2)建立好连接后，开始传输数据。TCP数据传输牵涉到的概念很多]]></description><category></category></item><item><title><![CDATA[在阅读源代码或设计文档时，看到惊艳的技巧]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/45032555</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/45032555</guid><author>OutManLee</author><pubDate>Mon, 13 Apr 2015 21:39:16 +0800</pubDate><description><![CDATA[提两个C语言里实现列表用到的技巧。会用的人可能会觉得很平常，但是第一次看到的时候还是觉得很厉害的：


两级指针：两级指针要怎么用呢？我们先来看一下大部分正常人实现列表的方法：

//定义链表节点struct
struct node {
  data_type data;
  struct node *next, *prev;
}*head = NULL;
//然后插入一个节点就要这样：]]></description><category></category></item><item><title><![CDATA[Reactor 模式]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/44837759</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/44837759</guid><author>OutManLee</author><pubDate>Thu, 02 Apr 2015 21:31:21 +0800</pubDate><description><![CDATA[概念：



Reactor这个词译成汉语还真没有什么合适的，很多地方叫反应器模式，但更多好像就直接叫reactor模式了，其实我觉着叫应答者模式更好理解一些。通过了解，这个模式更像一个侍卫，一直在等待你的召唤，或者叫召唤兽。

 

并发系统常使用reactor模式，代替常用的多线程的处理方式，节省系统的资源，提高系统的吞吐量。

 

先用比较直观的方式来介绍一下这种方]]></description><category></category></item><item><title><![CDATA[libevent源码分析]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/44757959</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/44757959</guid><author>OutManLee</author><pubDate>Mon, 30 Mar 2015 21:22:08 +0800</pubDate><description><![CDATA[1、入门

1.1、概述
Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点： 
(1)事件驱动（event-driven），高性能；
(2)轻量级，专注于网络，不如 ACE 那么臃肿庞大； 
(3)源代码相当精炼、易读； 
(4)跨平台，支持 Windows、Linux、*BSD和 Mac Os；]]></description><category></category></item><item><title><![CDATA[ptrace]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/43089027</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/43089027</guid><author>OutManLee</author><pubDate>Sat, 24 Jan 2015 20:28:18 +0800</pubDate><description><![CDATA[下面是转帖的内容，写的很详细。但是不同的linux发行版中头文件的路径和名称并不相同。如在某些发行版中就不存在，其中定义的变量出现在和中。

==================================================================================================

by Pradeep Padala

Crea]]></description><category></category></item><item><title><![CDATA[Nginx定时器机制的实现]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/42607853</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/42607853</guid><author>OutManLee</author><pubDate>Sun, 11 Jan 2015 09:44:52 +0800</pubDate><description><![CDATA[nginx提供一套高效的定时器实现，除了nginx核心能够使用定时器以外，我们在进行模块开发的时候也可以使用定时器来完成一些定时执行的任务。nginx定时器实现的核心是使用一棵红黑树来存储各个定时事件，每次循环的时候就从这棵树里找出超时的事件，然后一一触发，完成定时任务操作。下面简单的描述一下nginx在实现定时器时的几个关键点。本文是基于linux的epoll来描述的定时器实现。]]></description><category></category></item><item><title><![CDATA[Nginx如何解决事件过期问题]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/42591771</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/42591771</guid><author>OutManLee</author><pubDate>Sat, 10 Jan 2015 23:47:27 +0800</pubDate><description><![CDATA[详细解释请参考《Nginx模块开发与架构解析》的9.6.3节ngx_epoll_module模块的实现
nginx源码如下：
static ngx_int_t
ngx_epoll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
{
    int                  op;
    uint32_t]]></description><category></category></item><item><title><![CDATA[Epoll的LT模式与ET模式分析]]></title><link>https://blog.youkuaiyun.com/OutManLee/article/details/42589407</link><guid>https://blog.youkuaiyun.com/OutManLee/article/details/42589407</guid><author>OutManLee</author><pubDate>Sat, 10 Jan 2015 22:12:41 +0800</pubDate><description><![CDATA[ET模式仅当状态发生变化的时候才获得通知,这里所谓的状态的变化并不包括缓冲区中还有未处理的数据,也就是说,如果要采用ET模式,需要一直read/write直到出错为止,很多人反映为什么采用ET模式只接收了一部分数据就再也得不到通知了,大多因为这样;而LT模式是只要有数据没有处理就会一直通知下去的.
    LT(level triggered)是缺省的工作方式，并且同时支持block和no-bl]]></description><category></category></item></channel></rss>