2013年1月31日星期四

affect与effect的区别

因为对于  affect    effect 用法的模糊,今天特地总结一下:

 

 

effect 是名词,"影响",搭配短语:have an effect on sth.=have an influence on sth.・・有影响
affect
是动词,"影响",直接跟宾语,affect sth ・・・有影响,且通常指不利的影响。
eg, Sandstorms sometimes affect Bejing.
     Watching TV for a long time will have a bad effect on your eyes.

 

 

         Effected   v. 产生;造成;招致(effect的过去分词); adj. 实现了的;受影响的

         Affected   vt. 影响;假装;使感动(affect的过去式和过去分词);adj. 受到影响的;做作的;假装的

 

 

         Effective   adj. 有效的,起作用的;实际的,实在的;给人深刻印象

         Affective   adj. 情感的;表达感情的

 

 

Effection   n. 影响;结果

         Affection    n. 喜爱,感情;影响;感染

 

Effectual   adj. 奏效的;会应验的;有法律效力的

Affectual    affectual action  情感行动

 

 

2013年1月27日星期日

U盘式生存法则: 自带信息 不装系统 随时插拔 自由协作

从网上看了罗振宇的一期脱口秀, 题目是"夹缝中的 80" 比照自身也想了很多,很喜欢他总结的 U盘式生存法则:  自带信息 不装系统 随时插拔 自由协作。    感觉他这期提到的这些挺对的; 就是小个体的专业自由主义, u 盘式生存方式; 也许这真的是未来这个社会的发展趋势了。要坚决的脱离这个体制; 尤其是一个庞大和腐朽的体制;让市场为自己定价; 做一个自由的手艺人。 专一,专业,自由,不断学习的,一个市场中的节点。

 

视频地址:

http://v.youku.com/v_show/id_XNTA2NDQ4MzIw.html

2013年1月24日星期四

脂肪肝注意 18 条措施

下面介绍的18条措施,在脂肪肝的自疗自养中是非常重要的:

  1、绝对禁酒。

  2、选用去脂牛奶或酸奶。

  3、每天吃的鸡蛋黄不超过2个。

  4、忌用动物油;植物油的总量也不超过20克。

  5、不吃动物内脏(即下水、下货)、鸡皮、肥肉及鱼籽、蟹黄。

  6、忌食煎炸食品。

  7、不吃巧克力。

  8、常吃少油的豆制品和面筋。

  9、每天食用新鲜绿色蔬菜500克。

  10、吃水果后要减少主食的食量,日吃一个苹果,就应该减少主食50克。

  11、山药、白薯、芋头土豆等,要与主食米、面粉调换吃,总量应限制。

  12、每天摄入的盐量以5--6克为限。

  13、葱、蒜,姜、辣椒等"四辣"可吃,但不宜多食。

  14、经常吃鱼、虾等海产品。

  15、降脂的食品有:燕麦、小米等粗粮,黑芝麻、黑木耳、海带、发莱以及菜花等绿  色新鲜蔬菜。

  16、晚饭应少吃,临睡前切忌加餐。

  17、每天用山楂30克、草决明子15克,加水1000毫升代茶饮。

  18、如果肪肝引起肝功能异常,或者转氨酶升高时,应在医生指导下服用降脂药、降酶药物和鱼油类保健品,但不宜过多服用。

2013年1月22日星期二

centos 5 添加第三方源(EPEL RPMForge)

不错的文章,mark 一下, 转自 http://www.ha97.com/2626.html

PS:在CentOS下运行yum install flash-plugin或yum install mplayer的时候,提示库里没有找到这个软件?为什么会这样?因为CentOS是RHEL编译过来的,去掉了所有关于版权问题的东西。因此,在没有使用第三方软件库的情况下,很多软件无法用yum install来直接安装。
EPEL(Extra Packages for Enterprise Linux )软件库提供为 EL4 及 EL5 重新编译的 Fedora 组件。这个软件库在不替换系统组件方面下了功夫。在某些情况下它尝试直接针对 CentOS 兼容性的问题,但坚决否定软件库间的兼容性是目标之一。当它与其它第三方软件库混合使用时,问题可能会出现。故此,当你使用 EPEL 时,尤其是当你亦会运用其它件库的组件时,请确保你使用 yum 的 Priorities 插件。
RPMForge库现在已经拥有超过10000种的CentOS的软件包,被CentOS社区认为是最安全也是最稳定的一个第三方软件库。
下面,偶就来讲解下如何使用EPEL与RPMForge、RPMFusion软件仓库:
一、安装yum-priorities插件。
这个插件是用来设置yum在调用软件源时的顺序的。因为官方提供的软件源,都是比较稳定和被推荐使用的。因此,官方源的顺序要高于第三方源的顺序。如何保证这个顺序,就需要安装yum-priorities这插件了。
[root@CentOS ~]# yum install yum-priorities #安装yum-priorities
安装完后需要设置/etc/yum.repos.d/ 目录下的.repo相关文件(如CentOS-Base.repo),在这些文件中插入顺序指令:priority=N (N为1到99的正整数,数值越小越优先)

一般的配置是这样的:
[base], [addons], [updates], [extras] … priority=1
[CentOSplus],[contrib] … priority=2
其他第三的软件源为:priority=N (推荐N>10)
如我的CentOS-Base.repo配置为:
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
#released updates
[updates]
name=CentOS-$releasever – Updates
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever – Addons
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=1
#additional packages that extend functionality of existing packages
[CentOSplus]
name=CentOS-$releasever – Plus
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=CentOSplus
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/CentOSplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=2
#contrib – packages by CentOS Users
[contrib]
name=CentOS-$releasever – Contrib
mirrorlist=http://mirrorlist.CentOS.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.CentOS.org/CentOS/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
priority=2
二、下载与安装相应EPEL的rpm文件包
1,下载与安装EPEL的rpm文件包
32位系统
[root@CentOS ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
64位系统
[root@CentOS ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
如果您不清楚您的系统内核,请使用 uname -a 命令来查看您的内核信息。
2,导入DAG的PGP Key
[root@CentOS ~]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
3,设置/etc/yum.repos.d/epel.repo文件中源的级别,就是添加priority=11这句。
如我的epel.repo文件内容:
[epel]
name=Extra Packages for Enterprise Linux 5 – $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
priority=11
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 5 – $basearch – Debug
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch/debug
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-debug-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 5 – $basearch – Source
#baseurl=http://download.fedoraproject.org/pub/epel/5/SRPMS
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-source-5&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
gpgcheck=1
三、下载与安装相应rpmforge的rpm文件包
1,下载rpmforge的rpm文件包
32位系统
[root@CentOS ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
64位系统
[root@CentOS ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
2,安装DAG的PGP Key
[root@CentOS ~]# rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
3,验证rpmforge的rpm文件包
[root@CentOS ~]# rpm -K rpmforge-release-0.5.1-1.el5.rf.*.rpm
4,安装rpmforge的rpm文件包
[root@CentOS ~]# rpm -i rpmforge-release-0.5.1-1.el5.rf.*.rpm
5,设置/etc/yum.repos.d/rpmforge.repo文件中源的级别,就是添加priority=12这句。
如我的rpmforge.repo文件内容:
### Name: RPMforge RPM Repository for Red Hat Enterprise 5 – dag
### URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever – RPMforge.net – dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
priority=12
四、下载与安装相应rpmfusion的rpm文件包
(CentOS官方说这个软件库里面的软件稳定性不如rpmforge,选用!rpmfusion官方站:http://rpmfusion.org)
[root@CentOS ~]# rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm
[root@CentOS ~]# rpm -Uvh http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm
五、测试
1,测试升级
[root@CentOS ~]# yum check-update
输出信息应该会有以下两行:
Loading “priorities” plugin

XX packages excluded due to repository priority protections
2,安装下mplayer播放器试试,如果安装成功了就没有问题了。
[root@CentOS ~]# yum install mplayer
PS:以上配置在RHEL/CentOS 5.X所有系列都可以使用!由本人验证总结整理。
参考文档:http://wiki.centos.org/zh/AdditionalResources/Repositories/RPMForge

tcp 参数详解

很好的一篇关于 tcp 参数的文章,转自 http://raocl.wordpress.com

tcp_syn_retries :INTEGER
默认值是5
对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5
,对应于180秒左右时间。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2
.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1
决定的)
tcp_synack_retries :INTEGER
默认值是5
对于远端的连接请求SYN,内核会发送SYN + ACK数据报,以确认收到上一个 SYN连接请求包。这是所谓的三次握手(
threeway handshake)机制的第二个步骤。这里决定内核在放弃连接之前所送出的 SYN+ACK
数目。不应该大于255,默认值是5 ,对应于180秒左右时间。(可以根据上面的 tcp_syn_retries
来决定这个值)
tcp_keepalive_time :INTEGER
默认值是7200(2小时)
当keepalive打开的情况下,TCP发送keepalive消息的频率。(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,曾经也有cu 的朋友提到过,说如果2边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间是不是就是2小时,空连接攻击?
tcp_keepalive_time
就是预防此情形的.我个人在做nat服务的时候的修改值为 1800 秒)
tcp_keepalive_probes: INTEGER
默认值是9
TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5
比较合适)
tcp_keepalive_intvl :INTEGER
默认值为75
探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75
秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15
是个比较合适的值)
tcp_retries1 :INTEGER
默认值是3
放弃回应一个TCP连接请求前﹐需要进行多少次重试。RFC 规定最低的数值是3 ﹐这也是默认值﹐根据RTO的值大约在3秒 – 8分钟之间。(注意:这个值同时还决定进入的syn连接)
tcp_retries2 :INTEGER
默认值为15
在丢弃激活(已建立通讯状况)的TCP连接之前﹐需要进行多少次重试。默认值为15
,根据RTO的值来决定,相当于13-30分钟(RFC1122规定,必须大于100秒).(这个值根据目前的网络设置,可以适当地改小,我的网络内修改为了5)
tcp_orphan_retries :INTEGER
默认值是7
在近端丢弃TCP连接之前﹐要进行多少次重试。默认值是7
个﹐相当于 50秒 – 16分钟﹐视 RTO 而定。如果您的系统是负载很大的web服务器﹐那么也许需要降低该值﹐这类 sockets
可能会耗费大量的资源。另外参的考 tcp_max_orphans 。(事实上做NAT的时候,降低该值也是好处显著的,我本人的网络环境中降低该值为3)
tcp_fin_timeout :INTEGER
默认值是 60
对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为
60 秒。过去在2.2版本的内核中是 180
秒。您可以设置该值﹐但需要注意﹐如果您的机器为负载很重的web服务器﹐您可能要冒内存被大量无效数据报填满的风险﹐FIN-WAIT-2
sockets 的危险性低于 FIN-WAIT-1 ﹐因为它们最多只吃 1.5K 的内存﹐但是它们存在时间更长。另外参考
tcp_max_orphans 。(事实上做NAT的时候,降低该值也是好处显著的,我本人的网络环境中降低该值为30)
tcp_max_tw_buckets :INTEGER
默认值是180000
系统在同时所处理的最大 timewait sockets
数目。如果超过此数的话﹐time-wait socket 会被立即砍除并且显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的
DoS
攻击﹐千万不要人为的降低这个限制﹐不过﹐如果网络条件需要比默认值更多﹐则可以提高它(或许还要增加内存)。(事实上做NAT的时候最好可以适当地增加该值)
tcp_tw_recycle :BOOLEAN
默认值是0
打开快速
TIME-WAIT sockets 回收。除非得到技术专家的建议或要求﹐请不要随意修改这个值。(做NAT的时候,建议打开它)
tcp_tw_reuse :BOOLEAN
默认值是0
该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接(这个对快速重启动某些服务,而启动后提示端口已经被使用的情形非常有帮助)
tcp_max_orphans :INTEGER
缺省值是8192
系统所能处理不属于任何进程的TCP
sockets最大数量。假如超过这个数量﹐那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的
DoS 攻击﹐千万不要依赖这个或是人为的降低这个限制(这个值Redhat
AS版本中设置为 32768
,但是很多防火墙修改的时候,建议该值修改为
2000 )
tcp_abort_on_overflow :BOOLEAN
缺省值是0
当守护进程太忙而不能接受新的连接,就象对方发送reset消息,默认值是false。这意味着当溢出的原因是因为一个偶然的猝发,那么连接将恢复状态。 只有在你确信守护进程真的不能完成连接请求时才打开该选项,该选项会影响客户的使用。(对待已经满载的sendmail,apache这类服务的时候,这 个可以很快让客户端终止连接,可以给予服务程序处理已有连接的缓冲机会,所以很多防火墙上推荐打开它)
tcp_syncookies :BOOLEAN
默认值是 0
只有在内核编译时选择了CONFIG_SYNCOOKIES时才会发生作用。当出现syn等候队列出现溢出时象对方发送syncookies。目的是为了防止syn
flood攻击。
注意:该选项千万不能用于那些没有收到攻击的高负载服务器,如果在日志中出现synflood消息,但是调查发现没有收到synflood攻击,而是合法用户的连接负载过高的原因,你应该调整其它参数来提高服务器性能。参考:
tcp_max_syn_backlog
tcp_synack_retries
tcp_abort_on_overflow
syncookie严重的违背TCP协议,不允许使用TCP扩展,可能对某些服务导致严重的性能影响(如SMTP转发)。(注意,该实现与BSD上面使用的tcp
proxy一样,是违反了RFC中关于tcp连接的三次握手实现的,但是对于防御syn-flood的确很有用.)
tcp_stdurg :BOOLEAN
默认值为0
使用 TCP urg pointer 字段中的主机请求解释功能。大部份的主机都使用老旧的 BSD解释,因此如果您在 Linux
打开它﹐或会导致不能和它们正确沟通。
tcp_max_syn_backlog :INTEGER
对于那些依然还未获得客户端确认的连接请求﹐需要保存在队列中最大数目。对于超过 128Mb 内存的系统﹐默认值是
1024 ﹐低于 128Mb 的则为 128 。如果服务器经常出现过载﹐可以尝试增加这个数字。警告﹗假如您将此值设为大于
1024 ﹐最好修改
include/net/tcp.h 里面的
TCP_SYNQ_HSIZE ﹐以保持
TCP_SYNQ_HSIZE*16
﹐并且编进核心之内。(SYN
Flood攻击利用TCP协议散布握手的缺陷,伪造虚假源IP地址发送大量TCP-SYN半打开连接到目标系统,最终导致目标系统Socket队列资源耗 尽而无法接受新的连接。为了应付这种攻击,现代Unix系统中普遍采用多连接队列处理的方式来缓冲(而不是解决)这种攻击,是用一个基本队列处理正常的完 全连接应用(Connect()和Accept()
),是用另一个队列单独存放半打开连接。这种双队列处理方式和其他一些系统内核措施(例如Syn-Cookies/Caches)联合应用时,能够比较有效的缓解小规模的SYN
Flood攻击(事实证明
)
tcp_window_scaling :INTEGER
缺省值为1
该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。tcp/ip通常使用的窗口最大可达到
65535
字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提高数据传输的能力(RFC
1323)。(对普通地百M网络而言,关闭会降低开销,所以如果不是高速网络,可以考虑设置为0 )
tcp_timestamps :BOOLEAN
缺省值为1
Timestamps
用在其它一些东西中﹐可以防范那些伪造的 sequence 号码。一条1G的宽带线路或许会重遇到带
out-of-line数值的旧sequence 号码(假如它是由于上次产生的)。Timestamp 会让它知道这是个
‘旧封包’。(该文件表示是否启用以一种比超时重发更精确的方法(RFC
1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。)
tcp_sack :BOOLEAN
缺省值为1
使用 Selective ACK﹐它可以用来查找特定的遗失的数据报—
因此有助于快速恢复状态。该文件表示是否启用有选择的应答(Selective
Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段)。(对于广域网通信来说这个选项应该启用,但是这会增加对
CPU 的占用。)
tcp_fack :BOOLEAN
缺省值为1
打开FACK拥塞避免和快速重传功能。(注意,当tcp_sack 设置为0 的时候,这个值即使设置为1 也无效)
tcp_dsack :BOOLEAN
缺省值为1
允许TCP发送”两个完全相同”的SACK。
tcp_ecn :BOOLEAN
缺省值为0
打开TCP的直接拥塞通告功能。
tcp_reordering :INTEGER
默认值是3
TCP流中重排序的数据报最大数量 。 (一般有看到推荐把这个数值略微调整大一些,比如5 )
tcp_retrans_collapse :BOOLEAN
缺省值为1
对于某些有bug的打印机提供针对其bug的兼容性。(一般不需要这个支持,可以关闭它)
tcp_wmem (3个INTEGER 变量): min ,
default , max
min :为TCP socket预留用于发送 缓冲 的内存最小值。每个tcp
socket都可以在建议以后都可以使用它。默认值为4096(4K) 。
default :为TCP
socket预留用于发送缓冲的内存数量,默认情况下该值会影响其它协议使用的net.core.wmem_default
值,一般要低于net.core.wmem_default 的值。默认值为16384(16K) 。
max : 用于TCP
socket发送缓冲的内存最大值。该值不会影响net.core.wmem_max
,”静态”选择参数SO_SNDBUF则不受该值影响。默认值为131072(128K) 。(对于服务器而言,增加这个参数的值对于发送数据很有帮助,在我的网络环境中,修改为了51200
131072 204800)
tcp_rmem (3个INTEGER 变量): min ,
default , max
min :为TCP socket预留用于接收缓冲 的内存数量,即使在内存出现紧张情况下tcp
socket都至少会有这么多数量的内存用于接收缓冲,默认值为8K 。
default :为TCP socket预留用于接收缓冲的内存数量,默认情况下该值影响其它协议使用的
net.core.wmem_default
值。该值决定了在tcp_adv_win_scale
、tcp_app_win 和tcp_app_win
=0默认值情况下,TCP窗口大小为65535
。默认值为87380
max :用于TCP socket接收缓冲的内存最大值。该值不会影响
net.core.wmem_max,”静态”选择参数 SO_SNDBUF则不受该值影响。默认值为 128K 。默认值为87380*2 bytes。(可以看出,.max的设置最好是default的两倍,对于NAT来说主要该增加它,我的网络里为
51200 131072 204800)
tcp_mem (3个INTEGER 变量):low ,
pressure , high
low :当TCP使用了低于该值的内存页面数 时,TCP不会考虑释放内存。(理想情况下,这个值应与指定给 tcp_wmem 的第 2 个值相匹配 – 这第 2
个值表明,最大页面大小乘以最大并发请求数除以页大小 (131072 * 300 / 4096
)。 )
pressure
:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。(理想情况下这个值应该是
TCP 可以使用的总缓冲区大小的最大值 (204800 * 300 / 4096 )。 )
high :允许所有tcp sockets用于排队缓冲数据报的页面量。(如果超过这个值,TCP 连接将被拒绝,这就是为什么不要令其过于保守 (512000 *
300 / 4096 ) 的原因了。
在这种情况下,提供的价值很大,它能处理很多连接,是所预期的 2.5 倍;或者使现有连接能够传输 2.5 倍的数据。
我的网络里为192000 300000 732000)
一般情况下这些值是在系统启动时根据系统内存数量计算得到的。
tcp_app_win : INTEGER
默认值是31
保留max(window/2^tcp_app_win, mss)数量的窗口由于应用缓冲。当为0时表示不需要缓冲。
tcp_adv_win_scale : INTEGER
默认值为2
计算缓冲开销bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale
>
0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale
<= 0)。
tcp_rfc1337 :BOOLEAN
缺省值为0
这个开关可以启动对于在RFC1337中描述的”tcp
的time-wait暗杀危机”问题的修复。启用后,内核将丢弃那些发往time-wait状态TCP套接字的RST
包.
tcp_low_latency
: BOOLEAN
缺省值为0
允许 TCP/IP 栈适应在高吞吐量情况下低延时的情况;这个选项一般情形是的禁用。(但在构建Beowulf
集群的时候,打开它很有帮助)
tcp_westwood
:BOOLEAN
缺省值为0
启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化;对于 WAN
通信来说应该启用这个选项。
tcp_bic
:BOOLEAN
缺省值为0
为快速长距离网络启用 Binary Increase Congestion;这样可以更好地利用以 GB 速度进行操作的链接;对于
WAN 通信应该启用这个选项。

2013年1月19日星期六

高蛋白低脂肪的食物

瘦肉,鸡肉,牛肉,鱼肉,清水煮鸡蛋的蛋白,豆浆,豆腐,豆芽,菠菜,木耳,蘑菇,脱脂牛奶

============================================================

兔肉
      
兔肉与一般畜肉的成分有所不同,其特点是:含蛋白质较多,每百克兔肉中含蛋白质21.5克;含脂肪少,每百克仅含脂肪0.4克;含有丰富的卵磷脂;含胆固醇较少,每百克含胆固醇只有83毫克。由于兔肉含蛋白质较多,营养价值较高,含脂肪较少,是胖人比较理想的肉食。

     
牛肉
     
牛肉的营养价值仅次于兔肉,也是适合于胖人食用的肉类。每百克牛肉含蛋白质20克以上,牛肉蛋白质所含的必需氨基酸较多,而且含脂肪和胆固醇较低,因此,特别适合胖人和高血压、血管硬化、冠心病和糖尿病病人适量食用。

     
鱼肉
     
一般畜肉的脂肪多为饱和脂肪酸,而鱼的脂肪却含有多种不饱和脂肪酸,具有很好的降胆固醇作用。所以,胖人吃鱼肉较好,既能避免肥胖,又能防止动脉硬化和冠心病的发生。

     
鸡肉
     
每百克鸡肉含蛋白质高达23.3克,脂肪含量只有1.2克,比各种畜肉低得多。所以,适当吃些鸡肉,不但有益于人体健康,也不会引起肥胖。

     
瘦猪肉
     
瘦猪肉含蛋白质较高,每百克可高达29克,每百克脂肪含量为6克,但经煮炖后,脂肪含量还会降低,因此,也较适合胖人食用。

蔬菜类
  1
、冬瓜。 具有利尿之功效,能排出水分,减轻体重。如经常食用冬瓜可以改变食物中的淀粉和糖类,防止其转化为脂肪。此外,冬瓜富含维生素,且含热量较低。
  2
、黄瓜 内含内醇二酸,可抑制糖类食物转化为脂肪,黄瓜还含有丰富的纤维素,能加强胃肠蠕动,通畅大便,且热量含量也较低。
  3
、丝瓜 丝瓜中所含的皂疳和粘液有利于大便通畅,且含热量也很低。此外,丝瓜还含丰富的维生素B1B2AC和钙、磷、铁等矿物质。
  4
、白萝卜 含有芥子油和淀粉酶,有助于消化和脂肪类食物的新陈代谢,防止皮下脂肪的堆积。白萝卜也有通气和促进排便的作用
  5
、紫菜 纤维含量高,脂肪含量低,易产生饱腹感,还有清热利尿的功能。
  6
、韭菜 含纤维丰富,能畅通大便,把肠道中过多的蛋白质、脂肪排出体外,防止脂肪在体内的堆积。
  7
、海带 含大量纤维和无机元素(特别是钾的含量十分丰富),有通便和利尿的功能。
  8
、绿豆芽 水分含量多,热量极少,不易形成脂肪,同时还有利尿的功能。
  9
、辣椒 具有消耗体内脂肪的功能,且富含维生素,热量含量也较低。
  10
、苹果 含有果胶质,这是一种可溶性纤维质,有助于降低胆固醇。苹果还富含粗纤维,能吸收大量的水份,减慢人体对糖的吸收,同时它还能刺激肠道蠕动,促进排便。
  11
、柠檬 含较多的柠檬酸,能促进胃液的分泌,促进肠蠕动,利于通便。
  12
、茶 普遍认为,茶具有消除油腻,减脂和降脂的作用。
  13
、醋 醋中富含的氨基酸,可以促进体内脂肪的分解和糖类的新陈代谢。
  14
、兔肉 脂肪含量极低,且多为不饱和脂肪酸,故长期食用也不会引起脂肪在体内的堆积。
  15
、赤小豆 是一种高蛋白,低脂肪的食物。有清热利尿,活血消肿之功效,可以促进排便。
  16
、大蒜 对酶的形成起抑制作用,从而减少脂肪酸和胆固醇的合成(脂肪酸和胆固醇的合成离不开酶的参与)
  17
、木耳 是一种高蛋白、低脂肪、水分多、矿物质多的食物。它还含有一种多糖物质,能降低血中的胆固醇、减肥和抗癌。
  18
、荷叶茶 每日用鲜荷叶50~100克(干荷叶25克)煎汤代茶,连服3个月,能明显降低体重。

19 蘑菇

 

2013年1月13日星期日

好或者不好

好或者不好,你都应该受着,这是你曾经的选择,一步一步的走到现在的地步,不要再去想回头,不要再去后悔; 这些都是曾经自己的选择,或许是因为当初的蒙昧,但这是自己做出的选择,人这一辈子,

最难得就是选择,谁会知道未来是怎么样的呢,你所能够的就是,努力的走好眼下的路,只有走好眼下的一步一步,才能走出宽广的未来。 所以不要后悔,不要抱怨,埋头去奋斗。 2013113日于济南 

2013年1月11日星期五

Squid 开启大内存导致进程内存溢出解决方法

Squid 内存溢出导致的 FATAL: xcalloc: Unable to allocate 1 blocks of 4112 bytes! 报错让我纠结了有几天,看官方FAQ 说此问题可能是由于内存不足或者是 ulimit �d 限制的原因,可是排查了一下都不是这样,后来终于在网上看到一位同学提到,此原因是因为在编译的时候开启了-enable-dlmalloc 参数,况且 squid 又开启了大内存(这里的这个大内存可以理解为 cache­_mem 设置的比较大,也可以理解为因为磁盘缓存文件数量多,导致的 index table 占用内存过大,因为我发现就算 cache­_mem 设置为 128m时,当 squid 进程占用的内存达到 1g 左右的时候也会出现类似的问题);而dlmallocsquid在某些系统本身malloc太烂的情况的代替方案,dlmalloc已经很老,且不支持2G以上内存。

 

看到网上都在建议使用 tcmalloc 做内存的优化管理,我也尝试了,但是还没有去对比,系统自带的 malloc 函数和 tcmalloc 的性能有多大的差异。

 

下面贴一下编译安装 tcmalloc 的过程

 

 

64位操作系统请先安装libunwind库,32位操作系统不要安装。libunwind库为基于64CPU和操作系统的程序提供了基本的堆栈辗转开解功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API

安装google-perftools,使用TCMalloc,与标准的glibc库的malloc相比,TCMalloc在内存的分配上效率和速度要高得多,可以在很大程度上提高服务器在高并发情况下的性能,降低系统负载。由于google-perftools需要libunwind,到http://nongnu.askapache.com/libunwind/下载最新版本的libunwind,文件名为libunwind-0.99.tar.gz。到http://google-perftools.googlecode.com下载最新版本的google-perftools,文件名为google-perftools-1.5.tar.gz。进行安装:

 

安装libunwind-0.99.tar.gz

 

#tar -xzvf libunwind-0.99.tar.gz

 

#cd libunwind-0.99

 

#CFLAGS=-fPIC ./configure

 

#make CFLAGS=-fPIC

 

#make CFLAGS=-fPIC install

 

安装google-perftools-1.5.tar.gz

 

#tar -xzvf google-perftools-1.5.tar.gz

 

#cd google-perftools-1.5

 

#./configure

 

#make

 

#make install

 

运行如下命令:

 

#echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf

 

#ldconfig

 

下载squid,运行如下命令:

 

#http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE9.tar.gz

 

进行安装:

#tar -xzvf squid-2.7.STABLE9.tar.gz

 

#cd squid-2.7.STABLE9

 

#./configure --prefix=/usr/local/squid --sysconfdir=/etc/squid --enable-removal-policies=heap,lru --enable-linux-netfilter --enable-storeio=ufs,aufs --enable-kill-parent-hack --enable-epoll --disable-poll --disable-ident-lookups --disable-carp --enable-delay-pools --disable-wccp --disable-wccpv2 --enable-snmp --enable-cachemgr-hostname=squid --enable-cache-digests --with-pthreads --enable-gnuregex --with-aio

 

#cd src

 

#vi Makefile

 

找到如下地方:

 

squid_LDADD = \

-L../lib \

 

在下面增加一行,变成如下:

 

squid_LDADD = \

-L../lib \

-ltcmalloc \

 

找到如下地方:

 

LDADD = -L../lib -lmiscutil -lrt -lpthread -lm

 

修改为:LDADD = -L../lib -lmiscutil -lrt -lpthread -lm -ltcmalloc

 

#cd ..

 

#make

 

#make install

 

squid安装完毕进行配置。在进行配置的时候,对cache分区采用reiserfs格式进行格式化,在挂载的时候使用noatimenodiratime选项。

2013年1月9日星期三

configure 参数解析

不错的文章,转自:http://blog.csdn.net/caijp1090/article/details/7422460

 

 Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。
'configure'
脚本有大量的命令行选项。对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的。带上'--help'选项执行'configure'脚本可以看到可用的所有选项。尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的。下面对每一个选项进行简略的介绍:

--cache-file=FILE

'configure'会在你的系统上测试存在的特性(或者bug!)。为了加速随后进行的配置,测试的结果会存储在一个cache file里。当configure一个每个子树里都有'configure'脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助。

--help

输出帮助信息。即使是有经验的用户也偶尔需要使用使用'--help'选项,因为一个复杂的项目会包含附加的选项。例如,GCC包里的'configure'脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项。


--no-create


'configure'中的一个主要函数会制作输出文件。此选项阻止'configure'生成这个文件。你可以认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了。


--quiet

--silent


'configure'进行他的测试时,会输出简要的信息来告诉用户正在作什么。这样作是因为'configure'可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么,使用这两个选项中的任何一个都会把你扔到一旁。(译注:这两句话比较有意思,原文是这样的:If there was no such output, the user would be left wondering what is happening. By using this option, you too can be left wondering!)


--version


打印用来产生'configure'脚本的Autoconf的版本号。


--prefix=PEWFIX


'--prefix'是最常用的选项。制作出的'Makefile'会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分。举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到"/opt/gnu/share"

$ ./configure --prefix=/opt/gnu


--exec-prefix=EPREFIX


'--prefix'选项类似,但是他是用来设置结构倚赖的文件的安装位置,编译好的'emacs'二进制文件就是这样一个问件。如果没有设置这个选项的话,默认使用的选项值将被设为和'--prefix'选项值一样。


--bindir=DIR


指定二进制文件的安装位置,这里的二进制文件定义为可以被用户直接执行的程序。


--sbindir=DIR


指定超级二进制文件的安装位置。这是一些通常只能由超级用户执行的程序。


--libexecdir=DIR


指定可执行支持文件的安装位置。与二进制文件相反,这些文件从来不直接由用户执行,但是可以被上面提到的二进制文件所执行。


--datadir=DIR


指定通用数据文件的安装位置。


--sysconfdir=DIR


指定在单个机器上使用的只读数据的安装位置。


--sharedstatedir=DIR

指定可以在多个机器上共享的可写数据的安装位置。


--localstatedir=DIR

指定只能单机使用的可写数据的安装位置。

--libdir=DIR

指定库文件的安装位置。


--includedir=DIR

指定C头文件的安装位置。其他语言如C++的头文件也可以使用此选项。


--oldincludedir=DIR

指定为除GCC外编译器安装的C头文件的安装位置。


--infodir=DIR

指定Info格式文档的安装位置.Info是被GNU工程所使用的文档格式。


--mandir=DIR

指定手册页的安装位置。


--srcdir=DIR

这个选项对安装没有作用,他会告诉'configure'源码的位置。一般来说不用指定此选项,因为'configure'脚本一般和源码文件在同一个目录下。


--program-prefix=PREFIX

指定将被加到所安装程序的名字上的前缀。例如,使用'--program-prefix=g'configure一个名为'tar'的程序将会使安装的程序被命名为'gtar'。当和其他的安装选项一起使用时,这个选项只有当他被`Makefile.in'文件使用时才会工作。


--program-suffix=SUFFIX

指定将被加到所安装程序的名字上的后缀。


--program-transform-name=PROGRAM

这里的PROGRAM是一个sed脚本。当一个程序被安装时,他的名字将经过`sed -e PROGRAM'来产生安装的名字。


--build=BUILD

指定软件包安装的系统平台。如果没有指定,默认值将是'--host'选项的值。


--host=HOST

指定软件运行的系统平台。如果没有指定。将会运行`config.guess'来检测。


--target=GARGET

指定软件面向(target to)的系统平台。这主要在程序语言工具如编译器和汇编器上下文中起作用。如果没有指定,默认将使用'--host'选项的值。


--disable-FEATURE

一些软件包可以选择这个选项来提供为大型选项的编译时配置,例如使用Kerberos认证系统或者一个实验性的编译器最优配置。如果默认是提供这些特性,可以使用'--disable-FEATURE'来禁用它,这里'FEATURE'是特性的名字,例如:

$ ./configure --disable-gui


-enable-FEATURE[=ARG]

相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用'--enable-FEATURE'来起用它。这里'FEATURE'是特性的名字。一个特性可能会接受一个可选的参数。例如:

$ ./configure --enable-buffers=128

`--enable-FEATURE=no'与上面提到的'--disable-FEATURE'是同义的。


--with-PACKAGE[=ARG]

在自由软件社区里,有使用已有软件包和库的优秀传统。当用'configure'来配置一个源码树时,可以提供其他已经安装的软件包的信息。例如,倚赖于TclTkBLT器件工具包。要配置BLT,可能需要给'configure'提供一些关于我们把TclTk装的何处的信息:

$ ./configure --with-tcl=/usr/local --with-tk=/usr/local

'--with-PACKAGE=no'与下面将提到的'--without-PACKAGE'是同义的。


--without-PACKAGE

有时候你可能不想让你的软件包与系统已有的软件包交互。例如,你可能不想让你的新编译器使用GNU ld。通过使用这个选项可以做到这一点:

$ ./configure --without-gnu-ld


--x-includes=DIR

这个选项是'--with-PACKAGE'选项的一个特例。在Autoconf最初被开发出来时,流行使用'configure'来作为Imake的一个变通方法来制作运行于X的软件。'--x-includes'选项提供了向'configure'脚本指明包含X11头文件的目录的方法。


--x-libraries=DIR

类似的,'--x-libraries'选项提供了向'configure'脚本指明包含X11库的目录的方法。


在源码树中运行'configure'是不必要的同时也是不好的。一个由'configure'产生的良好的'Makefile'可以构筑源码属于另一棵树的软件包。在一个独立于源码的树中构筑派生的文件的好处是很明显的:派生的文件,如目标文件,会凌乱的散布于源码树。这也使在另一个不同的系统或用不同的配置选项构筑同样的目标文件非常困难。建议使用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵安装树(install tree)。这里有一个很接近的例子,是使用这种方法来构筑GNU malloc包:

$ gtar zxf mmalloc-1.0.tar.gz

$ mkdir build && cd build

$ ../mmalloc-1.0/configure

creating cache ./config.cache

checking for gcc... gcc

checking whether the C compiler (gcc ) works... yes

checking whether the C compiler (gcc ) is a cross-compiler... no

checking whether we are using GNU C... yes

checking whether gcc accepts -g... yes

checking for a BSD compatible install... /usr/bin/install -c

checking host system type... i586-pc-linux-gnu

checking build system type... i586-pc-linux-gnu

checking for ar... ar

checking for ranlib... ranlib

checking how to run the C preprocessor... gcc -E

checking for unistd.h... yes

checking for getpagesize... yes

checking for working mmap... yes

checking for limits.h... yes

checking for stddef.h... yes

updating cache ../config.cache

creating ./config.status

这样这棵构筑树就被配置了,下面可以继续构筑和安装这个包到默认的位置'/usr/local'

$ make all && make install