<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wangst4321的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wangst4321</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wangst4321]]></copyright><item><title><![CDATA[LVS：DR模式（Direct Routing）部署实验]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/37919419</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/37919419</guid><author>wangst4321</author><pubDate>Fri, 18 Jul 2014 01:00:47 +0800</pubDate><description><![CDATA[本文介绍如何在kvm的虚拟环境下，部署实验LVS的DR模式。包括网络结构图，如何配置，以及使用tcpdump分析ip包。]]></description><category></category></item><item><title><![CDATA[linux路由服务]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/37919381</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/37919381</guid><author>wangst4321</author><pubDate>Fri, 18 Jul 2014 00:40:49 +0800</pubDate><description><![CDATA[本文介绍如何使用linux创建一台简单的路由服务器。主要包括几个参数的设置：ip_forward和rp_filter。]]></description><category></category></item><item><title><![CDATA[python处理中文字符]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/10117525</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/10117525</guid><author>wangst4321</author><pubDate>Tue, 20 Aug 2013 18:17:07 +0800</pubDate><description><![CDATA[1.在py文件中使用中文字符
unicode.py文件内容如下所示：
# -*- coding:utf-8 -*-

str_ch = '我们women'
uni_ch = u'我们women'

print "type:", type(str_ch), "content:", str_ch,  repr(str_ch)
print "type:", type(uni_ch), "conten]]></description><category></category></item><item><title><![CDATA[nginx配置数据结构及合并过程]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8960604</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8960604</guid><author>wangst4321</author><pubDate>Wed, 22 May 2013 17:14:17 +0800</pubDate><description><![CDATA[配置数据结构的创建过程

初始化cycle->conf_ctx
ngx_init_cycle()函数中根据nginx模块的数量ngx_max_module创建一个指针数组，如下。每个指针成员，对应nginx模块的配置数据结构。

cycle->conf_ctx = ngx_pcalloc(pool, ngx_max_module * sizeof(void *));

NGX_COR]]></description><category></category></item><item><title><![CDATA[Nginx配置文件处理过程]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8936497</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8936497</guid><author>wangst4321</author><pubDate>Thu, 16 May 2013 11:53:19 +0800</pubDate><description><![CDATA[本文总结这段时间阅读Nginx处理配置文件的代码。其中很多参考网上的资料，主要时淘宝的那一份。现在，算是有个大体的了解了。先记录下来，以后有加深的认识，再继续补上。加油！


一、配置文件处理的主要步骤和过程
nginx.c文件main函数

    ngx_max_module = 0;
    for (i = 0; ngx_modules[i]; i++) {
        n]]></description><category></category></item><item><title><![CDATA[socket编程缓冲区大小对send()的影响]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8789779</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8789779</guid><author>wangst4321</author><pubDate>Thu, 11 Apr 2013 18:57:46 +0800</pubDate><description><![CDATA[1. 概述
Socket编程中，使用send()传送数据时，返回结果受到以下几个因素的影响：
• Blocking模式或non-blocking模式
• 发送缓冲区的大小
• 接收窗口大小
本文档介绍通过实验的方式，得出（收发）缓冲区大小对send结果的影响。实验使用C语言。
2 数据发送和接收的过程
如下图所示，程序调用send()发送数据时，数据将首先进入发送缓冲区，等待发送。系]]></description><category></category></item><item><title><![CDATA[nginx模块开发入门：hello]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8767656</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8767656</guid><author>wangst4321</author><pubDate>Sun, 07 Apr 2013 15:14:17 +0800</pubDate><description><![CDATA[转载自Joshua Zhu的博客：http://blog.zhuzhaoyuan.com/2009/08/creating-a-hello-world-nginx-module/


1. 下载nginx源码，解压。
2. 创建hello模块目录及文件
目录结构如下：
~/ngx_http_hello_module
    |--ngx_http_hello_module.c]]></description><category></category></item><item><title><![CDATA[socket编程：backlog值对listen连接状态的影响]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8733212</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8733212</guid><author>wangst4321</author><pubDate>Thu, 28 Mar 2013 19:02:59 +0800</pubDate><description><![CDATA[1. 概述
对于TCP服务器，使用bind绑定一个地址和端口，然后使用listen（backlog）在这个socket上监听用户的连接请求。其中，backlog参数的大小，决定了TCP服务器的连接请求队列大小，进一步影响客户端连接请求的成功与否。
本文档介绍通过实验的方式获得不同backlog参数值的不同影响。实验使用Python语言。
2 socket连接建立过程
2.1 服务器监听端口]]></description><category></category></item><item><title><![CDATA[文件锁]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8729204</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8729204</guid><author>wangst4321</author><pubDate>Thu, 28 Mar 2013 00:45:26 +0800</pubDate><description><![CDATA[1. sample学习代码
#include 
#include 
#include 
#include 
#include 
#include 

#define read_lock(fd, offset, whence, len) \
            lock_reg((fd), F_SETLK, F_RDLCK, (offset), (whence), (len))
#define]]></description><category></category></item><item><title><![CDATA[非阻塞io和IO多路转接]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8704263</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8704263</guid><author>wangst4321</author><pubDate>Fri, 22 Mar 2013 07:50:35 +0800</pubDate><description><![CDATA[本文参考《Unix高级环境编程》,仅用于个人学习，备忘。
1. sample 学习代码

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAXLINE 500000

void set_fl(int, int);
void clr_fl(int, int);

int
main(v]]></description><category></category></item><item><title><![CDATA[sax模块处理xml]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8700815</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8700815</guid><author>wangst4321</author><pubDate>Thu, 21 Mar 2013 13:40:10 +0800</pubDate><description><![CDATA[sax的简单用法
sax (Simple API for XML), 以事件处理为基础，按照遇到XML元素的顺序读取XML文档，触发处理函数来执行处理。
为此，我们需要定义自己的处理器（Handler），定义遇到XML元素时，执行什么样的处理动作。如startElement()方法，定义了遇到开始tag时，应该做些什么。以下是示范代码：


from xml.sax import Con]]></description><category></category></item><item><title><![CDATA[ElementTree处理xml]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8697838</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8697838</guid><author>wangst4321</author><pubDate>Wed, 20 Mar 2013 18:42:14 +0800</pubDate><description><![CDATA[1. 示例用法
参照官方文档，创建country_data.xml测试文档，内容如下：


    
        1
        2008
        141100
        
        
    
    
        4
        2011
        59900
        
    
    
        68
        2011]]></description><category></category></item><item><title><![CDATA[XML基础知识]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8697682</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8697682</guid><author>wangst4321</author><pubDate>Wed, 20 Mar 2013 17:59:57 +0800</pubDate><description><![CDATA[大部分内容来自http://www.w3schools.com。
本文主要是个人学习笔记，将替代手写的笔记。以此记录自己的学习过程，记录不懂的，可以逐渐增加新知识点。




What is XML?

XML stands for EXtensible Markup LanguageXML is a markup language much like HTMLXML was de]]></description><category></category></item><item><title><![CDATA[python: import模块的相关问题]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8673640</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8673640</guid><author>wangst4321</author><pubDate>Thu, 14 Mar 2013 17:26:11 +0800</pubDate><description><![CDATA[1. 使用imp.load_module时遇到"ImportError: No module named PAD"异常
文件的目录结构如下：
|--test.py  
|--plugins
             |--__init__.py
             |--PAD.py
             |--WEB.py     #包含“import PAD"
当在te]]></description><category></category></item><item><title><![CDATA[git使用介绍（一）]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8673728</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8673728</guid><author>wangst4321</author><pubDate>Thu, 14 Mar 2013 16:15:55 +0800</pubDate><description><![CDATA[1. 如何使用GitHub
执行“git remote add origin https://github.com/username/projectname.git"，将GitHub的repository链接保存到本地的config中。
对于新建的repository，当执行”git clone https://github.com/username/projectname.git“时，这个链]]></description><category></category></item><item><title><![CDATA[python标准库logging模块代码分析]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8658859</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8658859</guid><author>wangst4321</author><pubDate>Mon, 11 Mar 2013 12:47:33 +0800</pubDate><description><![CDATA[问题1：如何获取caller的（文件名，行号，函数名）？
  
    当新增一条log记录时，最终将调用Logger类的_log方法，这个方法首先会创建一个LogRecord对象。LogRecord对象需要（filename,
 lineno, funcname)参数信息。这是通过如下语句得到的：


fn, lno, func = self.findCaller()      fi]]></description><category></category></item><item><title><![CDATA[typedef重定义错误]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8488455</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8488455</guid><author>wangst4321</author><pubDate>Thu, 10 Jan 2013 10:23:08 +0800</pubDate><description><![CDATA[记录一个问题。


Item.h文件：
typedef int Item;


Link.h文件：
#include "Item.h"
void LINKinit(int);


Link.c文件：
#include "stdio.h"

#include "Link.h"
#inlcude "Item.h"


void LINKint(int n)
{]]></description><category></category></item><item><title><![CDATA[Unittest使用和代码简介]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8454118</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8454118</guid><author>wangst4321</author><pubDate>Mon, 31 Dec 2012 08:24:08 +0800</pubDate><description><![CDATA[前段时间有学习过unittest这个模块，但是，没有熟练使用，还是存在好多疑问。今天又重新花时间学习，比较彻底的搞清楚了。记录下来，希望对那些有同样疑问的人，有些帮助。
首先，介绍以下unittest的基本用法。
第1种用法（以下代码是官方文档的sample）。

import unittest

class TestSequenceFunctions(unittest.TestCase)]]></description><category></category></item><item><title><![CDATA[optparse模块代码分析]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8373776</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8373776</guid><author>wangst4321</author><pubDate>Sat, 22 Dec 2012 22:42:59 +0800</pubDate><description><![CDATA[optparse是标准库里用于分析命令行参数的模块（路径：/usr/lib/python2.x/optparse.py, x86-64版本的系统在lib64下)。使用它，可以让自己的程序方便地获得命令行参数，无需再自己处理了。至少也是让程序更标准化。本文首先简单介绍optparse的使用，详细用法请参照官方文档介绍。接着，详细地分析optparse如何实现这些功能的，optparse的代码结构是什]]></description><category></category></item><item><title><![CDATA[使用wsgi模块将Django加于apache]]></title><link>https://blog.youkuaiyun.com/wangst4321/article/details/8228064</link><guid>https://blog.youkuaiyun.com/wangst4321/article/details/8228064</guid><author>wangst4321</author><pubDate>Mon, 26 Nov 2012 23:53:14 +0800</pubDate><description><![CDATA[1. WSGI模块的编译和安装：
首先，从code.google下载mod_wsgi-3.4.tar.gz源码包。
解压并进入目录运行"./configure --with-apxs=/usr/local/apache2/bin/axps  --with-python=/usr/local/bin/python"，其中这两个with分别用于制定apache安装文件的axps路径，和python]]></description><category></category></item></channel></rss>