??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人 亚洲欧洲,亚洲国产中文在线视频,婷婷亚洲久悠悠色悠在线播放http://www.tkk7.com/Skynet/---------- ---------- 我的?blog : liukaiyi.cublog.cn ---------- ----------zh-cnFri, 09 May 2025 22:14:06 GMTFri, 09 May 2025 22:14:06 GMT60Nginx 常见应用技术指南[Nginx Tips] W二?(?http://www.tkk7.com/Skynet/archive/2010/01/31/311426.html刘凯?/dc:creator>刘凯?/author>Sun, 31 Jan 2010 15:08:00 GMThttp://www.tkk7.com/Skynet/archive/2010/01/31/311426.htmlhttp://www.tkk7.com/Skynet/comments/311426.htmlhttp://www.tkk7.com/Skynet/archive/2010/01/31/311426.html#Feedback0http://www.tkk7.com/Skynet/comments/commentRss/311426.htmlhttp://www.tkk7.com/Skynet/services/trackbacks/311426.html

作?NetSeek  http://www.linuxtone.org (ITq维专家||集群架构|性能调优)
Ƣ迎转蝲,转蝲时请务必以超链接形式标明文章原始出处和作者信息及(qing)本声?
首发旉: 2008-11-25     更新旉:2009-1-14

??br /> 一?nbsp;       Nginx 基础知识
二?nbsp;       Nginx 安装?qing)调?/em>
三?nbsp;       Nginx Rewrite
四?nbsp;       Nginx Redirect
五?nbsp;       Nginx 目录自动加斜U?
六?nbsp;       Nginx Location
七?nbsp;       Nginx expires
八?nbsp;       Nginx 防盗?/em>
?ji)?nbsp;       Nginx 讉K控制
十?nbsp;       Nginx日志处理
十一?nbsp;    Nginx Cache
十二?nbsp;    Nginx负蝲均衡
十三?      Nginx单优?/em>      
十四?nbsp;       如何构徏高性能的LEMP环境
十五?nbsp;       Nginx服务监控
十六?nbsp;       常见问题?sh)错误处?
十七?nbsp;       相关资源下蝲

【前a】:(x)
~写此技术指南在于推q普?qing)NGINX在国内的使用Q更方便的帮助大家了(jin)解和掌握NGINX的一些用技巧。本指南很多技巧来自于|络和工作中或网l上朋友们问我的问题.在此对网l上愿意分n的朋友们表示感谢和致意!Ƣ迎大家和我一起丰富本技术指南提出更好的Q请朋友们关? http://www.linuxtone.org 技术分享社? 互想学习(fn)共同q步!

一?Nginx 基础知识
1、简?br />    Nginx ("engine x") 是一个高性能?HTTP ?反向代理 服务器,也是一?IMAP/POP3/SMTP 代理服务器?Nginx 是由 Igor Sysoev Z|斯讉K量第二的 Rambler.ru 站点开发的Q它已经在该站点q行过两年半了(jin)。Igor 源代码以类BSD许可证的形式发布。尽还是测试版Q但是,Nginx 已经因ؓ(f)它的E_性、丰富的功能集、示例配|文件和低系l资源的消耗而闻名了(jin)?br /> 更多的请见官方wiki: http://wiki.codemongers.com/

2?Nginx的优?br /> nginx做ؓ(f)HTTP服务器,有以下几基本特性:(x)
1)        处理?rn)态文Ӟ索引文g以及(qing)自动索引Q打开文g描述W缓Ԍ
2)        无缓存的反向代理加速,单的负蝲均衡和容错.
3)        FastCGIQ简单的负蝲均衡和容错.
4)        模块化的l构。包括gzipping, byte ranges, chunked responses, 以及(qing) SSI-filter{filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSIQ则q项处理可以q行q行Q而不需要相互等待?/span>
5)        支持SSL ?TLS SNIQ?br />
Nginx专ؓ(f)性能优化而开发,性能是其最重要的考量, 实现上非常注重效?。它支持内核Poll模型Q能l受高负载的考验, 有报告表明能支持高达 50,000 个ƈ发连接数?br /> Nginxh很高的稳定性。其它HTTP服务器,当遇到访问的峰|或者有人恶意发h速连接时Q也很可能会(x)D服务器物理内存耗尽频繁交换Q失d应,只能重启服务器。例如当前apache一旦上?00个以上进E,web? 应速度明N常缓慢了(jin)。而Nginx采取?jin)分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的q? 接,它只?.5M内存Q所以类似DOSq样的攻dnginx来说基本上是毫无用处的。就E_性而言, nginx比lighthttpd更胜一{V?br /> Nginx支持热部|Ӏ它的启动特别容? q且几乎可以做到7*24不间断运行,即ɘq行C月也不需要重新启动。你q能够在不间断服务的情况下,对Y件版本进行进行升U?br /> Nginx采用master-slave模型, 能够充分利用SMP的优势,且能够减工作进E在盘I(y)/O的阻塞gq。当采用select()/poll()调用Ӟq可以限制每个进E的q接数?br /> Nginx 代码质量非常高,代码很规范, 手法成熟Q?模块扩展也很Ҏ(gu)。特别值得一提的是强大的Upstream与Filter链? Upstream如reverse proxy, 与其他服务器通信模块的编写奠定了(jin)很好的基。而Filter链最L(fng)部分是各个filter不必{待前一个filter执行完毕。它可以把前一? filter的输出做为当前filter的输入,q有点像Unix的管Uѝ这意味着Q一个模块可以开始压~从后端服务器发送过来的hQ且可以在模块接? 完后端服务器的整个请求之前把压羃{向客L(fng)?br /> Nginx采用?jin)一些os提供的最新特性如对sendfile (Linux 2.2+)Qaccept-filter (FreeBSD 4.1+)QTCP_DEFER_ACCEPT (Linux 2.4+) 的支持,从而大大提高(sh)(jin)性能

二?Nginx 安装?qing)调?/strong>
1、Pcre 安装

  1. ./configure
  2.   make && make install
  3.   cd ../
复制代码

2.        nginx ~译安装

  1. ./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-openssl=/usr/local/openssl
  2. make && make install
复制代码

更详l的模块定制与安装请参照官方wiki.

3、Nginx 配置文g试Q?/p>

  1. # /usr/local/nginx/sbin/nginx -t  //Debug 配置文g的关键命令需要重Ҏ(gu)?
  2. 2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  3. 2008/12/16 09:08:35 [info] 28412#0: the configuration file /usr/local/nginx/conf/nginx.conf was tested successfully
复制代码

3、Nginx 启动Q?/p>

  1. # /usr/local/nginx/sbin/nginx
复制代码

4、Nginx 配置文g修改重新加蝲Q?/p>

  1. # kill -HUP `cat /usr/local/nginx/logs/nginx.pid
复制代码

`
三、Nginx Rewrite

1.  Nginx Rewrite 基本标记(flags)
last - 基本上都用这个Flag?/em>
ȝ当于Apache里的[L]标记Q表C完成rewriteQ不再匹配后面的规则
break - 中止RewirteQ不再l匹?/em>
redirect - q回临时重定向的HTTP状?02
permanent - q回怹重定向的HTTP状?01
      d有的url支持正则  重写的url不支持正?/strong>

2.  正则表达式匹配,其中Q?br />     * ~         为区分大写匚w
    * ~*       Z区分大小写匹?/em>
    * !~?~*   分别为区分大写不匹配及(qing)不区分大写不匹?/em>

3. 文g?qing)目录匹配,其中Q?br />    * -f?-f用来判断是否存在文g
    * -d?-d用来判断是否存在目录
    * -e?-e用来判断是否存在文g或目?/em>
    * -x?-x用来判断文g是否可执?/em>


3.  Nginx 的一些可用的全局变量Q可用做条g判断Q?/p>

  1. $args
  2. $content_length
  3. $content_type
  4. $document_root
  5. $document_uri
  6. $host
  7. $http_user_agent
  8. $http_cookie
  9. $limit_rate
  10. $request_body_file
  11. $request_method
  12. $remote_addr
  13. $remote_port
  14. $remote_user
  15. $request_filename
  16. $request_uri
  17. $query_string
  18. $scheme
  19. $server_protocol
  20. $server_addr
  21. $server_name
  22. $server_port
  23. $uri
复制代码

四?Nginx Redirect
所有linuxtone.org与netseek.linuxtone.org域名全部自蟩转到http://www.linuxtone.org

  1. server
  2. {
  3. listen 80;
  4. server_name linuxtone.org netseek.linuxtone.org;
  5. index index.html index.php;
  6. root /data/www/wwwroot;
  7. if ($host !~ "^www.linxtone.org$") {
  8. rewrite ^(.*) http://www.linuxtone.org$1 redirect;
  9. }
  10. ........................
  11. }
复制代码

五?Nginx 目录自动加斜U?

  1. if (-d $request_filename){
  2.            rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  3.      }
复制代码

?nbsp; Nginx Location

1Q基本语?[和上面rewrite正则匚w语法基本一致]
location [=|~|~*|^~] /uri/ { … }
    * ~  为区分大写匚w
    * ~* Z区分大小写匹?/em>
    * !~?~*分别为区分大写不匹配及(qing)不区分大写不匹?/em>

CZ1:
location = / {
# matches the query / only.
# 只匹?/ 查询?/em>
}
匚wM查询Q因为所有请求都?/ 开头。但是正则表辑ּ规则和长的块规则被优先和查询匹?/strong>

CZ2:
location ^~ /images/ {
# matches any query beginning with /images/ and halts searching,
# so regular expressions will not be checked.
# 匚wM?/images/ 开头的M查询q且停止搜烦(ch)。Q何正则表辑ּ不?x)被试?br />
CZ3:
location ~* .(gif|jpg|jpeg)$ {
# matches any request ending in gif, jpg, or jpeg. However, all
# requests to the /images/ directory will be handled by
}
# 匚wM?gif、jpg ?jpeg l尾的请求?/strong>


七?Nginx expires

1Q根据文件类型expires

  1. # Add expires header for static content
  2. location ~* .(js|css|jpg|jpeg|gif|png|swf)$ {
  3.     if (-f $request_filename) {
  4.        root /data/www/wwwroot/bbs;
  5.        expires      1d;
  6.        break;
  7.     }
  8. }
复制代码

2、根据判断某个目?/p>

  1. # serve static files
  2. location ~ ^/(images|javascript|js|css|flash|media|static)/  {
  3. root    /data/www/wwwroot/down;
  4.         expires 30d;
  5.   }
复制代码

八?nbsp; Nginx 防盗?/strong>

1.        针对不同的文件类?/p>

  1. #Preventing hot linking of images and other file types
  2. location ~* ^.+.(gif|jpg|png|swf|flv|rar|zip)$ {
  3.         valid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhost baidu.com;
  4. if ($invalid_referer) {
  5.       rewrite   ^/   ;
  6.      # return   403;
  7.       }
  8. }
复制代码

2.        针对不同的目?/p>

  1. location /img/ {
  2.     root /data/www/wwwroot/bbs/img/;
  3.     valid_referers none blocked server_names *.linuxtone.org http://localhost baidu.com;
  4.     if ($invalid_referer) {
  5.                    rewrite  ^/  ;
  6.                    #return   403;
  7.     }
  8. }
复制代码

3.        同实现防盗链和expires的方?/p>

  1. #Preventing hot linking of images and other file types
  2. location ~* ^.+.(gif|jpg|png|swf|flv|rar|zip)$ {
  3.         valid_referers none blocked server_names *.linuxtone.org linuxtone.org http://localhost ;
  4. if ($invalid_referer) {
  5.       rewrite   ^/   ;
  6.                      }
  7.      access_log off;
  8.      root /data/www/wwwroot/bbs;
  9. expires 1d;
  10.      break;
  11. }
复制代码

?ji)?Nginx 讉K控制

1.        Nginx w䆾证验?/p>

  1. #cd /usr/local/nginx/conf
  2. #mkdir htpasswd
  3. /usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd/tongji linuxtone
  4. #d用户名ؓ(f)linuxtone
  5. New password:   (此处输入你的密码)
  6. Re-type new password:   (再次输入你的密码)
  7. Adding password for user
  8. http://count.linuxtone.org/tongji/data/index.html(目录存在/data/www/wwwroot/tongji/data/目录?
  9. 下D配|放到虚拟主机目录,当访问http://count.linuxtone/tongji/x(chng)C密验?
  10. location ~ ^/(tongji)/  {
  11.                 root    /data/www/wwwroot/count;
  12.                         auth_basic              "LT-COUNT-TongJi";
  13.                         auth_basic_user_file  /usr/local/nginx/conf/htpasswd/tongji;
  14.                 }
复制代码

2.        Nginx 止讉K某类型的文g.
如,Nginx下禁止访?.txt文gQ配|方法如?

  1. location ~* .(txt|doc)$ {
  2.    if (-f $request_filename) {
  3.    root /data/www/wwwroot/linuxtone/test;
  4.    #rewrite …..可以重定向到某个URL
  5.    break;
  6.    }
  7. }
复制代码

Ҏ(gu)2:

  1. location ~* .(txt|doc)${
  2.         root /data/www/wwwroot/linuxtone/test;
  3.         deny all;
  4. }
复制代码

实例:
止讉K某个目录

  1. location ~ ^/(WEB-INF)/ {
  2.             deny all;
  3. }  
复制代码

3.        使用ngx_http_access_module限制ip讉K

  1. location / {
  2.     deny    192.168.1.1;
  3.     allow   192.168.1.0/24;
  4.     allow   10.1.1.0/16;
  5.     deny    all;
  6. }
复制代码

详细参见wiki: http://wiki.codemongers.com/NginxHttpAccessModule#allow

4.        Nginx 下蝲限制q发和速率

  1. limit_zone   linuxtone  $binary_remote_addr  10m;
  2. server
  3.        {
  4.                listen       80;
  5.                server_name  down.linuxotne.org;
  6.                index index.html index.htm index.php;
  7.                root   /data/www/wwwroot/down;
  8.                #Zone limit
  9.                location / {
  10.                    limit_conn   linuxtone  1;
  11.                    limit_rate  20k;
  12.                }
  13. ..........
  14.        }
复制代码

只允许客房端一个线E?每个U程20k.
【注?span style="color: #008000;">limit_zone   linuxtone  $binary_remote_addr  10m; q个可以定义在主?/span>


5.        Nginx 实现Apache一L(fng)录列?/p>

  1. location  /  {
  2.     autoindex  on;
  3. }
复制代码

6.        上文件大限?br /> 主配|文仉加入如下Q具体大根据你自己的业务做调整?br /> client_max_body_size 10m;                                                         

十?nbsp;       Nginx 日志处理

1.Nginx 日志切割
#contab -e
59 23 * * * /usr/local/sbin/logcron.sh /dev/null 2>&1
[root@count ~]# cat /usr/local/sbin/logcron.sh

  1. #!/bin/bash
  2. log_dir="/data/logs"
  3. time=`date +%Y%m%d`  
  4. /bin/mv  ${log_dir}/access_linuxtone.org.log ${log_dir}/access_count.linuxtone.org.$time.log
  5. kill -USR1 `cat  /var/run/nginx.pid`
复制代码

更多的日志分析与处理关?同时Ƣ迎你参加讨?:http://bbs.linuxtone.org/forum-8-1.html

2.利用AWSTATS分析NGINX日志
  讄好Nginx日志格式,仍后利用awstatsq行分析.
请参? http://bbs.linuxtone.org/thread-56-1-1.html

3.        Nginx 如何不记录部分日?br /> 日志太多Q每天好几个GQ少记录一些,下面的配|写到server{}D中可以了(jin)
location ~ .*.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$
{
     access_log off;
}

十一、Nginx Cache服务配置

如果需要将文g~存到本圎ͼ则需要增加如下几个子参数Q?/p>

  1. proxy_store on;
  2. proxy_store_access user:rw group:rw all:rw;
  3. proxy_temp_path ~存目录;
复制代码

其中Q?br /> proxy_store on用来启用~存到本地的功能Q?br /> proxy_temp_path用来指定~存在哪个目录下Q如Qproxy_temp_path html;

在经q上一步配|之后,虽然文g被缓存到?jin)本地磁盘?sh)Q但每次h仍会(x)向远端拉取文ӞZ(jin)避免去远端拉取文Ӟ必须修改

  1. proxy_passQ?/li>
  2. if ( !-e $request_filename) {
  3.     proxy_pass  http://mysvr;
  4. }
复制代码

x(chng)成有条g地去执行proxy_passQ这个条件就是当h的文件在本地的proxy_temp_path指定的目录下不存在时Q再向后端拉取?br />
   
更多更高U的应用可以研究ncache,详细请参?a target="_blank">http://bbs.linuxtone.org 里ncache相关的脓(chung)?

十二、Nginx 负蝲均衡
1. Nginx 负蝲均衡基础知识
nginx的upstream目前支持4U方式的分配
1)、轮询(默认Q?/span>
每个h按时间顺序逐一分配C同的后端服务器,如果后端服务器down掉,能自动剔除?/span>
2)、weight
指定轮询几率Qweight和访问比率成正比Q用于后端服务器性能不均的情c(din)?/span>
2)、ip_hash
每个h按访问ip的hashl果分配Q这h个访客固定访问一个后端服务器Q可以解决session的问题?/span>
3)、fairQ第三方Q?/span>
按后端服务器的响应时间来分配hQ响应时间短的优先分配?
4)、url_hashQ第三方Q?/span>

2.        Nginx 负蝲均衡实例1

  1. upstream bbs.linuxtone.org {#定义负蝲均衡讑֤的Ip?qing)设备状?/li>
  2.     server 127.0.0.1:9090 down;
  3.     server 127.0.0.1:8080 weight=2;
  4.     server 127.0.0.1:6060;
  5.     server 127.0.0.1:7070 backup;
  6. }
复制代码

在需要用负载均衡的server中增?br /> proxy_pass http://bbs.linuxtone.org/;

每个讑֤的状态设|ؓ(f):
a)        down 表示单前的server暂时不参与负?/span>
b)        weight 默认?.weight大Q负载的权重p大?/span>
c)        max_fails Q允许请求失败的ơ数默认?.当超q最大次数时Q返回proxy_next_upstream 模块定义的错?/span>
d)        fail_timeout:max_failsơ失败后Q暂停的旉?/span>
e)        backupQ?其它所有的非backup机器down或者忙的时候,hbackup机器。所以这台机器压力会(x)最轅R?/span>

nginx支持同时讄多组的负载均衡,用来l不用的server来用?br />
client_body_in_file_only 讄为On 可以讲client postq来的数据记录到文g中用来做debug
client_body_temp_path 讄记录文g的目?可以讄最?层目?br /> location 对URLq行匚w.可以q行重定向或者进行新的代?负蝲均衡


3.        Nginx 负蝲均衡实例 2
按访问url的hashl果来分配请求,使每个url定向到同一个后端服务器Q后端服务器为缓存时比较有效,也可以用作提高Squid~存命中?

单的负蝲均等实例:
#vi nginx.conf  //nginx主配|文件核?j)配|?/p>

  1. ……….
  2. #loadblance my.linuxtone.org
  3.        upstream  my.linuxtone.org  {
  4.        ip_hash;
  5.        server   127.0.0.1:8080;
  6.        server   192.168.169.136:8080;
  7.        server   219.101.75.138:8080;
  8.        server   192.168.169.117;
  9.        server   192.168.169.118;
  10.        server   192.168.169.119;
  11.      }
  12. …………..
  13. include          vhosts/linuxtone_lb.conf;
  14. ………
  15. # vi proxy.conf
  16. proxy_redirect off;
  17. proxy_set_header Host $host;
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  20. client_max_body_size 50m;
  21. client_body_buffer_size 256k;
  22. proxy_connect_timeout 30;
  23. proxy_send_timeout 30;
  24. proxy_read_timeout 60;
  25. proxy_buffer_size 4k;
  26. proxy_buffers 4 32k;
  27. proxy_busy_buffers_size 64k;
  28. proxy_temp_file_write_size 64k;
  29. proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  30. proxy_max_temp_file_size 128m;
  31. proxy_store on;
  32. proxy_store_access   user:rw  group:rw  all:r;
  33. #nginx cache               
  34. #client_body_temp_path  /data/nginx_cache/client_body 1 2;
  35. proxy_temp_path /data/nginx_cache/proxy_temp 1 2;
复制代码

#vi  linuxtone_lb.conf

  1. server
  2.     {
  3.         listen  80;
  4.         server_name my.linuxtone.org;
  5.         index index.php;
  6.         root /data/www/wwwroot/mylinuxtone;
  7.         if (-f $request_filename) {
  8.             break;
  9.            }
  10.         if (-f $request_filename/index.php) {
  11.           rewrite (.*) $1/index.php break;
  12.         }
  13.         error_page 403 http://my.linuxtone.org/member.php?m=user&a=login;
  14.         location / {
  15.            if ( !-e $request_filename) {
  16.                proxy_pass http://my.linuxtone.org;
  17.                break;
  18.            }
  19.            include /usr/local/nginx/conf/proxy.conf;
  20.         }
  21. }
复制代码



十三、Nginx单优?/strong>

1.        减小nginx~译后的文g大小 (Reduce file size of nginx)
默认的nginx~译选项里居然是用debug模式(-g)的(debug模式?x)插入很多跟t和ASSERT之类Q,~译以后一个nginx有好几兆。去掉nginx的debug模式~译Q编译以后只有几百K
?auto/cc/gccQ最后几行有Q?br /> # debug

  1. CFLAGS=”$CFLAGS -g”
复制代码

注释掉或删掉q几行,重新~译卛_?br />
2.        修改Nginx的header伪装服务?br /> 1)        修改nginx.h

  1. #vi nginx-0.7.30/src/core/nginx.h
  2. #define NGINX_VERSION      "1.8"
  3. #define NGINX_VER          "LTWS/" NGINX_VERSION
  4. #define NGINX_VAR          "NGINX"
  5. #define NGX_OLDPID_EXT     ".oldbin"
复制代码

2) 修改nginx_http_header_filter_module
#vi nginx-0.7.30/src/http/ngx_http_header_filter_module.c
如?/p>

  1. static char ngx_http_server_string[] = "Server: nginx" CRLF;
复制代码

修改?/p>

  1. static char ngx_http_server_string[] = "Server: LTWS" CRLF;
复制代码

a)        修改nginx_http_header_filter_module
#vi nginx-0.7.30/src/http/ngx_http_special_response.c
如下:(x)

  1. static u_char ngx_http_error_full_tail[] =
  2. "<hr><center>" NGINX_VER "</center>" CRLF
  3. "</body>" CRLF
  4. "</html>" CRLF
  5. ;
复制代码
  1. static u_char ngx_http_error_tail[] =
  2. "<hr><center>nginx</center>" CRLF
  3. "</body>" CRLF
  4. "</html>" CRLF
  5. ;
复制代码

修改?

  1. static u_char ngx_http_error_full_tail[] =
  2. "<center> "NGINX_VER" </center>" CRLF
  3. "<hr><center>http://www.linuxtone.org</center>" CRLF
  4. "</body>" CRLF
  5. "</html>" CRLF
  6. ;
  7. static u_char ngx_http_error_tail[] =
  8. "<hr><center>LTWS</center>" CRLF
  9. "</body>" CRLF
  10. "</html>" CRLF
  11. ;
复制代码

修改后重新编译一下环?
404错误的时候显C效果图Q如果没有指定错误页的话Q:(x)
404.png

利用curl命o(h)查看服务器header
curl.png



 

3.为特定的CPU指定CPUcd~译优化.
默认nginx使用的GCC~译参数?O
需要更加优化可以用以下两个参?br /> --with-cc-opt='-O3'
--with-cpu-opt=opteron
使得~译针对特定CPU以及(qing)增加GCC的优?
此方法仅Ҏ(gu)能有所改善q不?x)有很大的性能提升Q供朋友们参?
CPUDcd定: # cat /proc/cpuinfo | grep "model name"
~译优化参数参考:(x)http://en.gentoo-wiki.com/wiki/Safe_Cflags


4.Tcmalloc优化Nginx 性能

  1. # wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz
  2. # tar zxvf libunwind-0.99-alpha.tar.gz
  3. # cd libunwind-0.99-alpha/
  4. # CFLAGS=-fPIC ./configure
  5. # make CFLAGS=-fPIC
  6. # make CFLAGS=-fPIC install
  7. # wget http://google-perftools.googlecode.com/files/google-perftools-0.98.tar.gz
  8. # tar zxvf google-perftools-0.98.tar.gz
  9. # cd google-perftools-0.98/
  10. # ./configure
  11. # make && make install
  12. # echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
  13. # ldconfig
  14. # lsof -n | grep tcmalloc
复制代码

~译nginx 加蝲google_perftools_module:
./configure --with-google_perftools_module
在主配置文g加入nginx.conf d:
google_perftools_profiles /path/to/profile;

5.内核参数优化
# vi /etc/sysctl.conf   #在末֢加以下内容:(x)

  1. net.ipv4.tcp_fin_timeout = 30
  2. net.ipv4.tcp_keepalive_time = 300
  3. net.ipv4.tcp_syncookies = 1
  4. net.ipv4.tcp_tw_reuse = 1
  5. net.ipv4.tcp_tw_recycle = 1
  6. net.ipv4.ip_local_port_range = 5000 65000
复制代码

#佉K|立即生?br /> /sbin/sysctl -p

十四、如何构建高性的LEMP
请参? http://www.linuxtone.org/lemp/lemp.pdf
1、提供完整的配置脚本下蝲Q?a target="_blank">http://www.linuxtone.org/lemp/scripts.tar.gz
2、提供NGINX常见配置范例?虚拟LQ防盗链QRewrite,讉K控制Q负载均?br /> Discuz相关E序?rn)态化?qing)等{?,你只要稍E修改即可线上应用?3、将原版的xcache替换成EAQƈ提供相关单调优脚本及(qing)配置文g?br /> 更多的及(qing)更新资料请关? http://www.linuxtone.org

十五、Nginx监控
1?nbsp;       RRDTOOL+Perl脚本d监控
先安装好rrdtool Q关于rrdtool本文不作介绍Q具体安装请参照linuxtone监控版块.
#cd /usr/local/sbnin
#wget http://blog.kovyrin.net/files/mrtg/rrd_nginx.pl.txt
#mv rrd_nginx.pl.txt rrd_nginx.pl
#chmod a+x rrd_nginx.pl

#vi rrd_nginx.pl   //配置脚本文g讄好\?br /> #!/usr/bin/perl
use RRDs;
use LWP::UserAgent;

# define location of rrdtool databases
my $rrd = '/data/www/wwwroot/nginx/rrd';
# define location of images
my $img = '/data/www/wwwroot/nginx/html';
# define your nginx stats URL
my $URL = "http://219.232.244.13/nginx_status";
…………
【注】根据自己具体的状况修改相应的\?
#crontab –e //加入如下
* * * * * /usr/local/sbin/rrd_nginx.pl
重启crond后,通过配置nginx虚拟L指到/data/www/wwwroot/nginx/html目录Q通过crond自动执行perl脚本?x)生成很多图?
http://xxx/connections-day.png卛_看到服务器状态图?br />
2?nbsp;       官方Nginx-rrd 监控服务Q多虚拟LQ(推荐Q?br /> |址Q?a target="_blank">http://www.nginx.eu/nginx-rrd.html
此解x(chng)案其实是Z上述监控Ҏ(gu)的一个改q和增强Q同样先安装好rrdtoolq个d工具和相应的perl模块再做如下操作Q?br /> # yum install perl-HTML*
先徏立好生成的库存和囄存放?/p>

  1. #mkdir -p /data/www/wwwroot/nginx/{rrd,html}
  2. #cd /usr/local/sbin
  3. #wget http://www.nginx.eu/nginx-rrd/nginx-rrd-0.1.4.tgz
  4. #tar zxvf nginx-rrd-0.1.4.tgz
  5. #cd nginx-rrd-0.1.4
  6. #cd etc/
  7. #cp nginx-rrd.conf /etc
  8. #cd etc/cron.d
  9. #cp nginx-rrd.cron /etc/cron.d
  10. #cd /usr/local/src/nginx-rrd-0.1.4/html
  11. # cp index.php /data/www/wwwroot/nginx/html/
  12. #cd /usr/local/src/nginx-rrd-0.1.4/usr/sbin
  13. #cp * /usr/sbin/
复制代码

#vi /etc/nginx-rrd.conf

  1. #####################################################
  2. #
  3. # dir where rrd databases are stored
  4. RRD_DIR="/data/www/wwwroot/nginx/rrd";
  5. # dir where png images are presented
  6. WWW_DIR="/data/www/wwwroot/nginx/html";
  7. # process nice level
  8. NICE_LEVEL="-19";
  9. # bin dir
  10. BIN_DIR="/usr/sbin";
  11. # servers to test
  12. # server_utl;server_name
  13. SERVERS_URL="http://219.32.205.13/nginx_status;219.32.205.13  http://www.linuxtone.org/nginx_status;www.linuxtone.org""
复制代码

//Ҏ(gu)你的具体情况做调?
SEVERS_URL 格式 http://domain1/nginx_status;domain1 http://domain2/nginx_status;domain2
q种格式监控多虚拟主接状态:(x)
重点启crond服务Q仍后通过http://219.32.205.13/nginx/html/ 卛_讉K。配|过E很单!

3?nbsp;       CACTI模板监控Nginx
利用Nginx_status状态来d实现CACTI监控
nginx~译时允许http_stub_status_module

# vi /usr/local/nginx/conf/nginx.conf

  1. location /nginx_status {
  2. stub_status on;
  3. access_log off;
  4. allow 192.168.1.37;
  5. deny all;
  6. }
复制代码
  1. # kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
  2. # wget http://forums.cacti.net/download.php?id=12676
  3. # tar xvfz cacti-nginx.tar.gz
  4. # cp cacti-nginx/get_nginx_socket_status.pl /data/cacti/scripts/
  5. # cp cacti-nginx/get_nginx_clients_status.pl /data/cacti/scripts/
  6. # chmod 755 /data/cacti/scripts/get_nginx*
复制代码

(g)插?/p>

  1. # /data/cacti/scripts/get_nginx_clients_status.pl http://192.168.1.37/nginx_status
复制代码

在cacti理面板导入
cacti_graph_template_nginx_clients_stat.xml
cacti_graph_template_nginx_sockets_stat.xml

十六、常见问题(sh)错误处理
1?00 bad request错误的原因和解决办法
配置nginx.conf相关讄如下.
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
Ҏ(gu)具体情况调整Q一般适当调整值就可以?br />
2、Nginx 502 Bad Gateway错误
proxy_next_upstream error timeout invalid_header http_500 http_503;
或者尝试设|?
large_client_header_buffers 4 32k;


3、Nginx出现?13 Request Entity Too Large错误
q个错误一般在上传文g的时候会(x)出现Q?br /> ~辑Nginx主配|文件Nginx.confQ找到http{}D,d
client_max_body_size 10m; //讄多大Ҏ(gu)自己的需求作调整.
如果q行php的话q个大小client_max_body_size要和php.ini中的如下值的最大g致或者稍大,q样׃?x)因为提交数据大不一致出现的错误?br /> post_max_size = 10M
upload_max_filesize = 2M

4、解?04 Gateway Time-out(nginx)
遇到q个问题是在升discuz论坛的时候遇到的
一般看? q种情况可能是由于nginx默认的fastcgiq程响应的缓冲区太小造成? q将Dfastcgiq程被挂? 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能D504 Gateway Time-out
现在的网? 其某些论坛有大量的回复和很多内容的, 一个页面甚x(chng)几百K?br /> 默认的fastcgiq程响应的缓冲区?K, 我们可以讄大点
在nginx.conf? 加入Q?fastcgi_buffers 8 128k
q表C|fastcgi~冲Zؓ(f)8×128k
当然如果(zhn)在q行某一即时的操作, 可能需要nginx的超时参数调大点Q例如设|成60U:(x)send_timeout 60;
只是调整?jin)这两个参? l果是没有再显C那个超? 可以说效果不? 但是也可能是׃其他的原? 目前关于nginx的资料不是很? 很多事情都需要长期的l验累计才有l果, 期待(zhn)的发现?

5、如何用Nginx Proxy
朋友一台服务器q行tomcat ?080端口,IP:192.168.1.2:8080,另一台机器IP:192.168.1.8. 朋友想通过讉Khttp://192.168.1.8卛_讉Ktomcat服务.配置如下:
?92.168.1.8的nginx.conf上配|如?

  1. server {
  2. listen 80;
  3. server_name java.linuxtone.org
  4. location / {
  5. proxy_pass http://192.168.1.2:8080;
  6. include /usr/local/nginx/conf/proxy.conf;
  7. }
  8. }
复制代码

6、如何关闭Nginx的LOG
access_log /dev/null; error_log /dev/null;

十七、相兌源下?/strong>

1.nginx配置CZ?qing)脚本下?
# wget http://www.linuxtone.org/lemp/scripts.tar.gz #此脚本范例定期更?


相关话题 Q?a >查看更多Q?a >知识库搜?/a>Q?/strong>

其中以下q项挺值得留意的?br /> Tcmalloc 不单可用?Mysql 的优化,q能应用?Nginx
虽说 Nginx 本n的性能跟系l占用已l做到很优秀?/p>

4.Tcmalloc优化Nginx 性能

  1. # wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz
  2. # tar zxvf libunwind-0.99-alpha.tar.gz
  3. # cd libunwind-0.99-alpha/
  4. # CFLAGS=-fPIC ./configure
  5. # make CFLAGS=-fPIC
  6. # make CFLAGS=-fPIC install
  7. # wget http://google-perftools.googlecode.com/files/google-perftools-0.98.tar.gz
  8. # tar zxvf google-perftools-0.98.tar.gz
  9. # cd google-perftools-0.98/
  10. # ./configure
  11. # make && make install
  12. # echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
  13. # ldconfig
  14. # lsof -n | grep tcmalloc






]]>
我的 vimrchttp://www.tkk7.com/Skynet/archive/2010/01/18/309949.html刘凯?/dc:creator>刘凯?/author>Mon, 18 Jan 2010 05:45:00 GMThttp://www.tkk7.com/Skynet/archive/2010/01/18/309949.htmlhttp://www.tkk7.com/Skynet/comments/309949.htmlhttp://www.tkk7.com/Skynet/archive/2010/01/18/309949.html#Feedback0http://www.tkk7.com/Skynet/comments/commentRss/309949.htmlhttp://www.tkk7.com/Skynet/services/trackbacks/309949.html阅读全文

]]>
libevent 学习(fn)W记http://www.tkk7.com/Skynet/archive/2010/01/05/308249.html刘凯?/dc:creator>刘凯?/author>Tue, 05 Jan 2010 03:21:00 GMThttp://www.tkk7.com/Skynet/archive/2010/01/05/308249.htmlhttp://www.tkk7.com/Skynet/comments/308249.htmlhttp://www.tkk7.com/Skynet/archive/2010/01/05/308249.html#Feedback0http://www.tkk7.com/Skynet/comments/commentRss/308249.htmlhttp://www.tkk7.com/Skynet/services/trackbacks/308249.html 学习(fn)Q?br /> http://blog.chinaunix.net/u1/59571/showart_2077664.html

个h对上面文章做?W记׃n出来 和大家分享!




]]>
MoinMoin wiki 服务器搭?与尝?/title><link>http://www.tkk7.com/Skynet/archive/2009/12/20/306749.html</link><dc:creator>刘凯?/dc:creator><author>刘凯?/author><pubDate>Sun, 20 Dec 2009 15:34:00 GMT</pubDate><guid>http://www.tkk7.com/Skynet/archive/2009/12/20/306749.html</guid><wfw:comment>http://www.tkk7.com/Skynet/comments/306749.html</wfw:comment><comments>http://www.tkk7.com/Skynet/archive/2009/12/20/306749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Skynet/comments/commentRss/306749.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Skynet/services/trackbacks/306749.html</trackback:ping><description><![CDATA[python easy_install moin ?下蝲 moin-1.9.0 ~译<br /> 讄 path 中有 moin.py <br /> #我这 参?br /> path = $PATH:/Python25/moin-1.9.0/MoinMoin/script<br /> <br /> # wikiconfig.py 下面我点?参数 Q大家看代码 q道了(jin)<br /> vi  /Python25/moin-1.9.0/wiki/config/<strong>wikiconfig.py</strong><br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008000;">#</span><span style="color: #008000;">instance_dir = '/where/ever/your/instance/is'</span><span style="color: #008000;"><br /> </span><span style="color: #000000;">instance_dir </span><span style="color: #000000;">=</span><span style="color: #000000;"> wikiconfig_dir</span><span style="color: #000000;">+</span><span style="color: #800000;">'</span><span style="color: #800000;">/../</span><span style="color: #800000;">'</span><span style="color: #000000;"><br /> <br /> </span><span style="color: #008000;">#</span><span style="color: #008000;"> Where your own wiki pages are (make regular backups of this directory):</span><span style="color: #008000;"><br /> </span><span style="color: #000000;">data_dir </span><span style="color: #000000;">=</span><span style="color: #000000;"> os.path.join(instance_dir, </span><span style="color: #800000;">'</span><span style="color: #800000;">data-1</span><span style="color: #800000;">'</span><span style="color: #000000;">, </span><span style="color: #800000;">''</span><span style="color: #000000;">) </span><span style="color: #008000;">#</span><span style="color: #008000;"> path with trailing /</span><span style="color: #008000;"><br /> </span><span style="color: #000000;"><br /> <br /> navi_bar </span><span style="color: #000000;">=</span><span style="color: #000000;"> [<br />         </span><span style="color: #008000;">#</span><span style="color: #008000;"> If you want to show your page_front_page here:</span><span style="color: #008000;"><br /> </span><span style="color: #000000;">        </span><span style="color: #008000;">#</span><span style="color: #008000;">u'%(page_front_page)s',</span><span style="color: #008000;"><br /> </span><span style="color: #000000;">        u</span><span style="color: #800000;">'</span><span style="color: #800000;">标题</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />         u</span><span style="color: #800000;">'</span><span style="color: #800000;">FindPage</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />         u</span><span style="color: #800000;">'</span><span style="color: #800000;">HelpContents</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />     ]<br /> <br /> language_default </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">'</span><span style="color: #800000;">zh</span><span style="color: #800000;">'</span></div> <br /> 在修改linux 时不起作?Q?br /> 修改/root/tools/moin-1.9.0/MoinMoin/script/server/standalone.py 全局?br /> <br /> <br /> q行Q?br /> <strong>$>moin  </strong>server standalone --config-dir=/root/wiki/mywiki/config/ --hostname=192.168.102.207 --port=18081<br /> 命o(h)是可调参敎ͼ(x)<br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008000;">#</span><span style="color: #008000;">/root/tools/moin-1.9.0/MoinMoin/script/server/standalone.py</span><span style="color: #008000;"><br /> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> PluginScript(MoinScript):<br />     </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> </span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self, argv, def_values):<br />         MoinScript.</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self, argv, def_values)<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--docs</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">docs</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Set the documents directory. Default: use builtin MoinMoin/web/static/htdocs</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--user</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">user</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Set the user to change to. UNIX only. Default: Don't change</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--group</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">group</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Set the group to change to. UNIX only. Default: Don't change</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--port</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">port</span><span style="color: #800000;">"</span><span style="color: #000000;">, type</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">int</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Set the port to listen on. Default: 8080</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--hostname</span><span style="color: #800000;">"</span><span style="color: #000000;">, </span><span style="color: #800000;">"</span><span style="color: #800000;">--interface</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">hostname</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Set the ip/hostname to listen on. Use \</span><span style="color: #800000;">"</span><span style="color: #000000;">\</span><span style="color: #800000;">"</span><span style="color: #800000;"> for all interfaces. Default: localhost</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--start</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">start</span><span style="color: #800000;">"</span><span style="color: #000000;">, action</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">store_true</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Start server in background.</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--stop</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">stop</span><span style="color: #800000;">"</span><span style="color: #000000;">, action</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">store_true</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Stop server in background.</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--pidfile</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">pidfile</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Set file to store pid of moin daemon in. Default: moin.pid</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br />         self.parser.add_option(<br />             </span><span style="color: #800000;">"</span><span style="color: #800000;">--debug</span><span style="color: #800000;">"</span><span style="color: #000000;">, dest</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">debug</span><span style="color: #800000;">"</span><span style="color: #000000;">,<br />             help</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">Debug mode of server. off: no debugging (default), web: for browser based debugging, external: for using an external debugger.</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />         )<br /> </span></div> <br /> <br /> #成功q行 ?br /> 2009-12-20 23:31:31,796 WARNING MoinMoin.log:139 using logging configuration read from built-in fallback in MoinMoin.log module!<br /> <br /> 2009-12-20 23:31:32,515 INFO werkzeug:106  * Running on http://192.168.1.100:8080/<br /> <br /> <br /> 一些简单的语法介绍『其?HelpOnDrawings 的功??#8220;惊艳”的效果!Q呵呵,自己搭徏个自qwiki 出来 看吧?br /> <ul> <li><a >HelpContents</a></li> <li><a >HelpForBeginners</a></li> <li><a >HelpForUsers</a></li> <li><a >HelpIndex</a></li> <li><a >HelpOnAccessControlLists</a></li> <li><a >HelpOnActions</a></li> <li><a >HelpOnActions/AttachFile</a></li> <li><a >HelpOnAdministration</a></li> <li><a >HelpOnAdmonitions</a></li> <li><a >HelpOnAuthentication</a></li> <li><a >HelpOnAuthentication/ExternalCookie</a></li> <li><a >HelpOnAutoAdmin</a></li> <li><a >HelpOnCategories</a></li> <li><a >HelpOnComments</a></li> <li><a >HelpOnConfiguration</a></li> <li><a >HelpOnConfiguration/EmailSupport</a></li> <li><a >HelpOnConfiguration/Example/AideDeParamétrage/WikiEnLangueFrançaise</a></li> <li><a >HelpOnConfiguration/FileAttachments</a></li> <li><a >HelpOnConfiguration/SecurityPolicy</a></li> <li><a >HelpOnConfiguration/SupplementationPage</a></li> <li><a >HelpOnConfiguration/SurgeProtection</a></li> <li><a >HelpOnConfiguration/UserPreferences</a></li> <li><a >HelpOnCreoleSyntax</a></li> <li><a >HelpOnDictionaries</a></li> <li><a >HelpOnDrawings</a></li> <li><a >HelpOnEditLocks</a></li> <li><a >HelpOnEditing</a></li> <li><a >HelpOnEditing/SubPages</a></li> <li><a >HelpOnFormatting</a></li> <li><a >HelpOnGraphicalEditor</a></li> <li><a >HelpOnGroups</a></li> <li><a >HelpOnHeadlines</a></li> <li><a >HelpOnImages</a></li> <li><a >HelpOnLanguages</a></li> <li><a >HelpOnLinking</a></li> <li><a >HelpOnLinking/NotesLinks</a></li> <li><a >HelpOnLists</a></li> <li><a >HelpOnLogin</a></li> <li><a >HelpOnMacros</a></li> <li><a >HelpOnMacros/EmbedObject</a></li> <li><a >HelpOnMacros/Include</a></li> <li><a >HelpOnMacros/MailTo</a></li> <li><a >HelpOnMacros/MonthCalendar</a></li> <li><a >HelpOnMoinCommand</a></li> <li><a >HelpOnMoinCommand/ExportDump</a></li> <li><a >HelpOnMoinWikiSyntax</a></li> <li><a >HelpOnNavigation</a></li> <li><a >HelpOnNotification</a></li> <li><a >HelpOnOpenIDProvider</a></li> <li><a >HelpOnPackageInstaller</a></li> <li><a >HelpOnPageCreation</a></li> <li><a >HelpOnPageDeletion</a></li> <li><a >HelpOnParsers</a></li> <li><a >HelpOnParsers/ReStructuredText</a></li> <li><a >HelpOnParsers/ReStructuredText/RstPrimer</a></li> <li><a >HelpOnProcessingInstructions</a></li> <li><a >HelpOnRules</a></li> <li><a >HelpOnSearching</a></li> <li><a >HelpOnSessions</a></li> <li><a >HelpOnSlideShows</a></li> <li><a >HelpOnSlideShows/000 Introduction</a></li> <li><a >HelpOnSlideShows/100 Creating the slides</a></li> <li><a >HelpOnSlideShows/900 Last but not least: Running your presentation</a></li> <li><a >HelpOnSmileys</a></li> <li><a >HelpOnSpam</a></li> <li><a >HelpOnSpellCheck</a></li> <li><a >HelpOnSubscribing</a></li> <li><a >HelpOnSuperUser</a></li> <li><a >HelpOnSynchronisation</a></li> <li><a >HelpOnTables</a></li> <li><a >HelpOnTemplates</a></li> <li><a >HelpOnThemes</a></li> <li><a >HelpOnUpdating</a></li> <li><a >HelpOnUpdatingPython</a></li> <li><a >HelpOnUserHandling</a></li> <li><a >HelpOnUserPreferences</a></li> <li><a >HelpOnVariables</a></li> <li><a >HelpOnXapian</a></li> <li><a >HelpOnXmlPages</a></li> <li><a >HelpTemplate</a></li> </ul> <br /> <br /> <br /> <br /> <br /> <br /> <img src ="http://www.tkk7.com/Skynet/aggbug/306749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Skynet/" target="_blank">刘凯?/a> 2009-12-20 23:34 <a href="http://www.tkk7.com/Skynet/archive/2009/12/20/306749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>?业务讨论?推荐http://www.tkk7.com/Skynet/archive/2009/12/11/305591.html刘凯?/dc:creator>刘凯?/author>Fri, 11 Dec 2009 08:20:00 GMThttp://www.tkk7.com/Skynet/archive/2009/12/11/305591.htmlhttp://www.tkk7.com/Skynet/comments/305591.htmlhttp://www.tkk7.com/Skynet/archive/2009/12/11/305591.html#Feedback2http://www.tkk7.com/Skynet/comments/commentRss/305591.htmlhttp://www.tkk7.com/Skynet/services/trackbacks/305591.html
定义Q?
灰羊?nbsp;  Q无主见的用L(fng)体)(j)
黑羊   Q?对自己需要什么有明确的认识,我们一般称Z家用戗?nbsp; Q?br />

1. 区分 灎ͼ无主见)(j) ?群

2.
user session 兌 #?兌关系l护使用 用户的会(x)话IDQ用户不同心(j)情,起始在数据中应该是不同分类的)(j)
user 推荐         # 而推荐出产品 q是 ?用户唯一~号有关
#在推荐中需要描q?nbsp; 用户的多角度 问题

3.
蛮力推荐Q?全数?Q描q初期清z后的数?Q?适合 产品兌 
清洗后期的数据(包含用户多维度描qͼ(j) 适合   用户兌


4.
专家跟随推荐
描述Q?br />   用户分类 扑ֈ黑ľ? 
  扑ֈ 一灰l늾 ?一只黑l늾的关联关p?br />   ?一灰l늾 可以?黑ľ?动作





]]>
同事推荐?ȝҎ(gu)http://www.tkk7.com/Skynet/archive/2009/12/11/305535.html刘凯?/dc:creator>刘凯?/author>Fri, 11 Dec 2009 03:52:00 GMThttp://www.tkk7.com/Skynet/archive/2009/12/11/305535.htmlhttp://www.tkk7.com/Skynet/comments/305535.htmlhttp://www.tkk7.com/Skynet/archive/2009/12/11/305535.html#Feedback0http://www.tkk7.com/Skynet/comments/commentRss/305535.htmlhttp://www.tkk7.com/Skynet/services/trackbacks/305535.html

1Q负重深yԌ仰卧起坐Q慢跑,主要l习(fn)?j)肺功能Q腿部锻炼很重要Q如果深y完?jin)没体力Q慢跑可以改成慢走放松)(j)

2Q卧推,仰卧飞鸟Q站立飞鸟,仰卧起坐Q慢跑,主要l习(fn)胔R和肩部(飞鸟是侧DQԒ卧的时候用的是胸的力量Q站立时用的是肩Q?br />
3Q引体向上,划船Q曲臂,主要l习(fn)背部和胳膊,最后加上固定的目QԒ卧v坐和慢跑放松


1的消耗最大,要自q态最好的时候去
2主要是练?fn)?#8220;推,?#8221;相关的肌?br /> 3?#8220;拉,?#8221;相关的肌?br />
而且有个原则Q就是先l大目Q再l小目?br />

 p、卧推、引体向上,q?个是最基本的,别的其实都可有可?br /> 另外Q适当慢跑也是必要的,是很好的放松和有氧运动,?j)进代谢。当?dng)如果有条件可以去户外跑,宁可跑马路,也别在健w房里跑Q空气不理想

做动作也是要循序渐进Q每ơ从很轻的重量开始,逐步加大负荷





]]>
跟我一起学 - 法D - U性时间排?/title><link>http://www.tkk7.com/Skynet/archive/2009/12/08/305156.html</link><dc:creator>刘凯?/dc:creator><author>刘凯?/author><pubDate>Tue, 08 Dec 2009 06:21:00 GMT</pubDate><guid>http://www.tkk7.com/Skynet/archive/2009/12/08/305156.html</guid><wfw:comment>http://www.tkk7.com/Skynet/comments/305156.html</wfw:comment><comments>http://www.tkk7.com/Skynet/archive/2009/12/08/305156.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/Skynet/comments/commentRss/305156.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Skynet/services/trackbacks/305156.html</trackback:ping><description><![CDATA[<strong>下面介绍的排序都为:(x)非比较排序法</strong><br /> <br /> q里个h认ؓ(f)在某些特定的地方非比较排序的速度非常明显Q?br /> 比如 Q?对待排数据中有顺序分c,使用鸽l(f)M分类Q然后对不同cd的待排小数据集合采用 插入Q快排等排序方式<br /> <br /> <br /> Counting sort Q计数排?br /> 描述QP代待排序数组出元素xQ确定小于此元素[z]个数Q然后把x攑ֈ它在的最l输出数l[z]上?br /> Ҏ(gu):(x)与待排值有养IE_的排序算法;待排序数据要求过于严|无实际用处;<br /> 法的步骤如下:(x)<br />    1. 扑և待排序的数组中最大和最的元素<br />    2. l计数组中每个gؓ(f)i的元素出现的ơ数Q存入数lC的第i?br />    3. Ҏ(gu)有的计数累加Q从C中的W一个元素开始,每一和前一相加)(j)<br />    4. 反向填充目标数组Q将每个元素i攑֜新数l的WC(i),每放一个元素就C(i)减去1<br /> <br /> <br /> Radix sortQ基数排?br /> 描述Q将所有待比较数?正整?l一为同L(fng)C长度,C较短的数前面补零. 然后, 从最低位开? 依次q行一ơ排?q样从最低位排序一直到最高(sh)排序完成以后, 数列变成一个有序序?<br /> 排序方式QLSD 由右向左排;MSD 由左向右?br /> Ҏ(gu):(x)非比较排序;待排数据需要统一格式Q?br /> 假设需排序数列的取D围从1...k,我们于是Z个K+1元的数组 a[]Qƈ赋初gؓ(f)0Q然后便开始排序工作:(x)<br /> 法的步骤如下:(x)<br />    1. 按输入顺序读入数列,如果所ȝ元素为i(1<=i<=k),我们将a[i]的值加一Q这L(fng)到读完所有的元素?br />    2. d元素q排序:(x)我们遍历整个数组Q如果a[i]=j(j>=0),我们p出jơi(表示元素i在原先数列中出现?jin)j?,q样输出的序列就是已排序的?br />    3. ׃一般排序算法涉?qing)到元素之间的比较,如果化成比较树(wi)可以知道,q样的排序算法复杂度的下限是O(N*lnN),而计数排序没有比较元素,所以所需排序旉少?jin),我们可以看到计数排序的复杂度为O(n*k)Q其中kQk的定义同上)(j)为合q排列所需的时_(d)是个常数?br />    4. 此算法适合所需排列的元素取D围不大的情况下,否则?x)造成I间的消耗,比如Q一?00个元素,其取D围从1-100000Q显然这个时候用基数排序是不合适的?br /> <br /> <br /> <br /> Bucket sortQ桶排序<br /> 描述Q工作的原理是将阵列分到有限数量的桶子里。每个桶子再个别排序Q有可能再用别的排序算法或是以递回方式l箋(hu)使用桶排序进行排序)(j)?br /> 桶排序以下列E序q行Q?br />    1. 讄一个定量的阵列当作I桶子?br />    2. 寻访序列Qƈ且把目一个一个放到对应的桶子厅R?br />    3. Ҏ(gu)个不是空的桶子进行排序?br />    4. 从不是空的桶子里把项目再攑֛原来的序列中?br /> <br /> <br /> <br /> Pigeonhole sortQ鸽巢排?br /> 描述Q是一U时间复杂度为O(n)且在不可避免遍历每一个元素ƈ且排序的情况下效率最好的一U排序算? 但它只有在差?或者可被映在差?很小的范围内的数值排序的情况下实?<br /> 法的步骤如下:(x)与桶排同<br /> <br /> <br /> <br /> <img src ="http://www.tkk7.com/Skynet/aggbug/305156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Skynet/" target="_blank">刘凯?/a> 2009-12-08 14:21 <a href="http://www.tkk7.com/Skynet/archive/2009/12/08/305156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux date 使用http://www.tkk7.com/Skynet/archive/2009/12/07/305016.html刘凯?/dc:creator>刘凯?/author>Mon, 07 Dec 2009 08:14:00 GMThttp://www.tkk7.com/Skynet/archive/2009/12/07/305016.htmlhttp://www.tkk7.com/Skynet/comments/305016.htmlhttp://www.tkk7.com/Skynet/archive/2009/12/07/305016.html#Feedback0http://www.tkk7.com/Skynet/comments/commentRss/305016.htmlhttp://www.tkk7.com/Skynet/services/trackbacks/305016.html date demo:
实例:
$
>date
Mon Dec  
7 15:43:39 CST 2009

#格式化输?/span>
$> date +"%Y-%m-%d"
2009-12-07

#旉游走 当前旉 2009-12-07
# year , month , day ,hour , minute,second  - ago
#昨天输出

$> date  -"1 day ago" +"%Y-%m-%d"
2009-12-06

#2U后输出
$> date  -"2 second" +"%Y-%m-%d %H:%M.%S"
2009-12-07 15:50.04

#传说中的 1234567890 U?/span>
$>date -"1970-01-01  1234567890 seconds"  +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30

#其他格式的{?/span>
date -"$(echo "03/Nov/2009 11:04:28" |perl -ne 'print "$2 $1 $3 $4\n" if /(.*?)"/(.*?)"/(.*?) (.*)/;') " +%Y-%m-%d
2009-11-03

#普?nbsp;转格?/span>
$> date -"2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00

#apache 格式转换
$>date  -"Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37

#格式转换 后时?nbsp;游走
$>date  -"Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37


#旉?br /> #一时 3600
#一?nbsp;86400 U?/span>
$>st=$(date  -"Dec 5, 2009 12:00:37 AM 1 day ago 1 hour ago " +"%s")
$
>et=$(date  -"Dec 5, 2009 12:00:37 AM" +"%s")
$
>echo "旉?[($et-$st)/86400]天,$[($et-$st)/3600%24]时"
旉?天,1时





date --help
Usage: date [OPTION] [+FORMAT]
  or
:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current 
time in the given FORMAT, or set the system date.

  
-d, --date=STRING         display time described by STRING, not `now'
  -f, --file=DATEFILE       like --date once for each line of DATEFILE
  -r, --reference=FILE      display the last modification time of FILE
  -R, --rfc-2822            output date and time in RFC 2822 format
      --rfc-3339=TIMESPEC   output date and time in RFC 3339 format.
                            TIMESPEC=`date
', `seconds', or `ns' for
                            date and 
time to the indicated precision.
  
-s, --set=STRING          set time described by STRING
  
-u, --utc, --universal    print or set Coordinated Universal Time
      
--help     display this help and exit
      
--version  output version information and exit
















]]>
l自q 囄处理工具 (py2exe)http://www.tkk7.com/Skynet/archive/2009/12/07/305005.html刘凯?/dc:creator>刘凯?/author>Mon, 07 Dec 2009 07:12:00 GMThttp://www.tkk7.com/Skynet/archive/2009/12/07/305005.htmlhttp://www.tkk7.com/Skynet/comments/305005.htmlhttp://www.tkk7.com/Skynet/archive/2009/12/07/305005.html#Feedback0http://www.tkk7.com/Skynet/comments/commentRss/305005.htmlhttp://www.tkk7.com/Skynet/services/trackbacks/305005.html
工具?nbsp; dist/myImg.exe


工具使用:
?dist ?br /> myImg.exe Ratio  c:/需要等比压~图?*.jpg  d:/{比后\?nbsp;  {比ƾwidth  {比高height
myImg.exe Watermark c:/水印囄/x.png  c:/需要加水印囄/*.jpg  d:/d水印后图?nbsp;  加水印width?nbsp; 加水印height?br />
{比压羃实例:
myImg.exe Ratio  
    "C:"Documents and Settings"lky"My Documents"My Dropbox"tools"img"src"python"dist"test"img"*.jpg"
    "C:"Documents and Settings"lky"My Documents"MyDropbox"tools"img"src"python"dist"test"toimg2"
    600 400
l果?nbsp; ../dist"test"toimg  目录?生成 {比囄 testratio_600_400.jpg


水印d实例:
myImg.exe Watermark
    "C:"Documents and Settings"lky"My Documents"My Dropbox"tools"img"src"python"dist"test"img"logo.png"   
    "C:"Documents and Settings"lky"My Documents"My Dropbox"tools"img"src"python"dist"test"toimg2"*.jpg"
    "C:"Documents and Settings"lky"My Documents"My Dropbox"tools"img"src"python"dist"test"toimg3"
    100 220
l果?nbsp; ../dist"test"toimg3  目录?生成 {比囄 test_ratio_600_400_watermark_100_220.jpg



安装 python PIL ?br /> 和安?python py2exe

工具脚本 py


工具~译q程:
python setup.py py2exe



import sys

def imgRatio(imgpath,tpath='.',width=600,height=400):
    
import Image,os
    im 
= Image.open( imgpath )
    im.thumbnail( (width,height) )
    imgpath 
= os.path.split(imgpath)[1]
    
if not os.path.exists(tpath) : os.makedirs(tpath)
    im.save( tpath
+'/'+imgpath.split('.')[0]+'_ratio_'+str(width)+'_'+str(height)+'.jpg' )


def imgWatermark(imgwate,imgpath,sw=100,sh=50,tpath='.'):
    
import Image,os
    baseim 
= Image.open( imgpath )
    floatim 
= Image.open( imgwate )
    baseim.paste( floatim, (sw,sh ) )
    imgpath 
= os.path.split(imgpath)[1]
    
if not os.path.exists(tpath) : os.makedirs(tpath)
    baseim.save( tpath
+'/'+imgpath.split('.')[0]+'_watermark_'+str(sw)+'_'+str(sh)+'.jpg' )
    

args 
= sys.argv
import glob,os

# Ratio  /path/*.jpg  /tpath   width  height  
if args[1== 'Ratio' :
    
for img in glob.glob(args[2]) :
        imgRatio(os.path.abspath(img),args[
3],int(args[4]),int(args[5]))
# Watermark /path/x.png  /path/*.jpg  /tpath   width  height 
if args[1== 'Watermark' :
    
for img in glob.glob(args[3]) :
        imgWatermark(args[
2],img,int(args[5]),int(args[6]),args[4])




py2exe
#!/usr/bin/python
#
 -*- coding: utf-8 -*-
#
  py2exe file
#
 1.install py2exe application
#
 2.python setup.py py2exe
from distutils.core import setup
import py2exe
setup(console
=['myImg.py'])




]]>
跟我一起学 - 法D - 快速排?/title><link>http://www.tkk7.com/Skynet/archive/2009/12/03/304668.html</link><dc:creator>刘凯?/dc:creator><author>刘凯?/author><pubDate>Thu, 03 Dec 2009 09:11:00 GMT</pubDate><guid>http://www.tkk7.com/Skynet/archive/2009/12/03/304668.html</guid><wfw:comment>http://www.tkk7.com/Skynet/comments/304668.html</wfw:comment><comments>http://www.tkk7.com/Skynet/archive/2009/12/03/304668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Skynet/comments/commentRss/304668.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Skynet/services/trackbacks/304668.html</trackback:ping><description><![CDATA[<br /> # 快排 ?分治 很像 都是<strong>分而治?/strong> Q但他们却是 相反?方式排序 Q?br /> 分治 是想拆分完成后,合ƈ以有序的段q行 <strong>排序</strong> Q而快排是直接由原始的“拆分”?strong>排序</strong> ?br /> <br /> <br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008000;">#</span><span style="color: #008000;">encoding=utf-8</span><span style="color: #008000;"><br /> #</span><span style="color: #008000;">?nbsp;?nbsp;?nbsp;?/span><span style="color: #008000;"><br /> </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> partition(A,p,r):<br />     tmp</span><span style="color: #000000;">=</span><span style="color: #000000;">A[p]<br />     </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> True :<br />         </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> p</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;"><</span><span style="color: #000000;">r </span><span style="color: #0000ff;">and</span><span style="color: #000000;"> A[p] </span><span style="color: #000000;">></span><span style="color: #000000;"> tmp : p</span><span style="color: #000000;">+=</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />         </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> r</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">></span><span style="color: #000000;">p </span><span style="color: #0000ff;">and</span><span style="color: #000000;"> A[r] </span><span style="color: #000000;"><=</span><span style="color: #000000;"> tmp : r</span><span style="color: #000000;">-=</span><span style="color: #000000;">1</span><span style="color: #000000;">    <br />     </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> A[p]</span><span style="color: #000000;"><=</span><span style="color: #000000;">A[r]: A[p],A[r]</span><span style="color: #000000;">=</span><span style="color: #000000;">A[r],A[p]<br />     </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> r</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><=</span><span style="color: #000000;">p : </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> p<br /> <br /> <br /> </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> quickSort(A,p,r):<br />     </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> p</span><span style="color: #000000;"><</span><span style="color: #000000;">r:<br />         q</span><span style="color: #000000;">=</span><span style="color: #000000;">partition(A,p,r)<br />         quickSort(A,p,q)<br />         quickSort(A,q</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,r)<br /> <br /> A</span><span style="color: #000000;">=</span><span style="color: #000000;">[</span><span style="color: #000000;">9</span><span style="color: #000000;">,</span><span style="color: #000000;">61</span><span style="color: #000000;">,</span><span style="color: #000000;">7</span><span style="color: #000000;">,</span><span style="color: #000000;">14</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">7</span><span style="color: #000000;">,</span><span style="color: #000000;">667</span><span style="color: #000000;">,</span><span style="color: #000000;">3</span><span style="color: #000000;">,</span><span style="color: #000000;">6</span><span style="color: #000000;">,</span><span style="color: #000000;">8</span><span style="color: #000000;">]<br /> </span><span style="color: #0000ff;">print</span><span style="color: #000000;"> A<br /> quickSort(A,0,len(A)</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br /> </span><span style="color: #0000ff;">print</span><span style="color: #000000;"> A<br /> <strong># l果 </strong></span><strong>[667, 61, 14, 9, 8, 7, 7, 6, 3, -1]</strong></div> <br /> <br /> <br /> 图解Q?br /> 一ơP代过E描q?Q从到大)(j)Q?br /> 1. ?A[0] 为切分点 用(f)时变?记录 q里?<strong>切分?/strong> = [5] <br /> 2. 分别?2枚指?[切分起左,右]<br /> 3. 分别向中?靠拢 Q?当左指针指向值大?切分?停止 ?Q?x(chng)针指向?于 切分?停止 ??br /> 4. 判断 是否?nbsp; 停止??左?于 叛_?是:(x)交换两指针?Q?<br /> <img src="http://www.tkk7.com/images/blogjava_net/skynet/42926/qs.jpg" alt="" border="0" /><br /> <strong>W一ơP代后 :  <br />   以初始分?[5]  已l切分好?于 5 的左 Q大于等? 的右</strong><br /> <br /> <img src ="http://www.tkk7.com/Skynet/aggbug/304668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Skynet/" target="_blank">刘凯?/a> 2009-12-03 17:11 <a href="http://www.tkk7.com/Skynet/archive/2009/12/03/304668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://www-8812.com" target="_blank">Ŀַ</a>| <a href="http://dxjz120.com" target="_blank">vaþþþúݺ</a>| <a href="http://yy6636.com" target="_blank">2020þþƷۺһ </a>| <a href="http://gachi1151.com" target="_blank">޾ƷVŷ޾ƷVպƷ </a>| <a href="http://xass1.com" target="_blank">޸XXXXɫ</a>| <a href="http://qianmiu.com" target="_blank">gayˬˬƵ</a>| <a href="http://5138k.com" target="_blank">ëƬֻѿ</a>| <a href="http://wwwyy763.com" target="_blank">޹avһؼ</a>| <a href="http://0453wcbyy.com" target="_blank">95ѹۿƵ</a>| <a href="http://51huanxin.com" target="_blank">AVպAVþ </a>| <a href="http://taoduoduo666.com" target="_blank">һƵ</a>| <a href="http://h47h.com" target="_blank">Ƭ91Ʒѹۿ</a>| <a href="http://327www.com" target="_blank">޾Ʒۺһ </a>| <a href="http://mtripmall.com" target="_blank">һƵ</a>| <a href="http://wxbhnkyy39.com" target="_blank">Ƶһ</a>| <a href="http://137499.com" target="_blank">ѹëƬ</a>| <a href="http://sczssc.com" target="_blank">ٸaëƬ</a>| <a href="http://8mav1007.com" target="_blank">ձĻ</a>| <a href="http://323799.com" target="_blank">ִִֻˬƵ</a>| <a href="http://gzmsijz.com" target="_blank">AVרߵӰ</a>| <a href="http://my94ok.com" target="_blank">˴ֳսŮ2021ƷƵ </a>| <a href="http://bjgjjrxy.com" target="_blank">йƷһëƬѲ</a>| <a href="http://xieehuomh.com" target="_blank">þɫһ</a>| <a href="http://zhuanjiao521.com" target="_blank">³ѲƵ㽶</a>| <a href="http://400209.com" target="_blank">޾Ʒþþþþ</a>| <a href="http://nkldj.com" target="_blank">žžþþƷѿС˵</a>| <a href="http://c2277.com" target="_blank">޾Ʒþþwww </a>| <a href="http://www3ratcom.com" target="_blank">༤רС˵ͼƬ</a>| <a href="http://bovch.com" target="_blank">˼˼þ99ѾƷ6</a>| <a href="http://cnkaiertong.com" target="_blank">޾Ʒþò</a>| <a href="http://pufenghotel.com" target="_blank">ɫƬѿ</a>| <a href="http://shlamore.com" target="_blank">޾ƷëƬ</a>| <a href="http://www12kvkv.com" target="_blank">2019Ļ</a>| <a href="http://sjkuaixun.com" target="_blank">AV볱߹ۿ</a>| <a href="http://928288.com" target="_blank">99ֻоƷѲ</a>| <a href="http://xzdlgp.com" target="_blank">ŷղvؼëƬ</a>| <a href="http://wwwby1378.com" target="_blank">67194츾ѹۿ</a>| <a href="http://sdyzzs.com" target="_blank">ۺһ</a>| <a href="http://as5566.com" target="_blank">ƷѵӰ</a>| <a href="http://www96008.com" target="_blank">18ëƬaëƬѿ</a>| <a href="http://my533.com" target="_blank">޾ƷһƷƷƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>