November 8, 2010
1>/dev/null 2>&1的含义
"shell中可能经常能看到:\u0026gt;/dev/null 2\u0026gt;\u0026amp;1\n命令的结果可以通过%\u0026gt;的形式来定义输出\n/dev/null 代表空设备文件\n代表重定向到哪里,例如:echo “123” \u0026gt; /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以”\u0026gt;/dev/null”等同于”1\u0026gt;/dev/null” 2 表示stderr标准错误 \u0026amp; 表示等同于的意思,2\u0026gt;\u0026amp;1,表示2的输出重定向等同于1\n那么本文标题的语句: 1\u0026gt;/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 2\u0026gt;\u0026amp;1 接着,标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。\n另一篇相关文章:"
November 8, 2010
PHP autoload机制详解
"(1) autoload机制概述\n在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利。这也是OO设计的基本思想之一。在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。下面是一个实际的例子:\n/* Person.class.php */\nclass Person {\nvar $name, $age;\nfunction __construct ($name, $age)\n{\n$this-\u0026gt;name = $name;\n$this-\u0026gt;age = $age;\n}\n}\n?\u0026gt;\n/* no_autoload.php */\nrequire_once (”Person.class.php”);\n$person = new Person(”Altair”, 6);\nvar_dump ($person);\n?\u0026gt;\n在这个例子中,no-autoload.php文件需要使用Person类,它使用了require_once将其包含,然后就可以直接使 …"
November 6, 2010
谷歌发布apache加速模块可提速50%
"大多人浏览网页如果超过3秒打不开就会离开,Google为此推出了一款Apache加速模块:mod_pagespeed,该模块可以有效将网页加载速度提高50%。网页提速的问题是一个复杂多样的问题,有很多解决方法,往往关系到网站系统程序,服务器硬件,网络传输速度等方面,而Google这款加速模块简单的解决了许多复情况的问题:\n◆如果你的网站采用Apache构建服务器,不需要对网站CMS系统进行处理即可应用;\n◆加速模块可以自行对网络传输的HTML字节优化及对图象,CSS进入压缩优化传输;\n◆智能缓存是一大亮点,它可以自动智能缓存,加速下载。\n下面介绍一下所有特点功能:\n◆优化缓存\n◆缓存扩展\n◆压缩处理CSS\n◆优化JavaScript最大限度的减少重复请求\n◆自动缓存CSS\n◆JavaScript内嵌技术\n◆有效载荷尺寸最小化\n◆压缩空白\n◆合并头信息\n◆附加属性\n◆内建核心JavaScript\n◆优化图像下载\n◆跳地非法字符\n◆重写优化CSS\nGoogle官方文档说明: …"
November 1, 2010
使用FreeBSD构建流量控制防火墙
"概述\n利用FreeBSD内核支持的BRIDGE、IPFIREWALL以及DUMMYNET选项,可以建立基于FreeBSD的透明流量控制防火墙(桥接模式),起到限制流量和包过滤的功能。\n准备\n可以在任何FreeBSD的兼容硬件上构建流量控制防火墙,但是基于性能和管理上的考虑,建议:\n使用Intel PII450以上的处理器\n使用至少128MB RAM\n使用高性能10/100Mbps自适应网络适配器\n如果多于一组桥接设备,建议使用双处理器系统\n另外准备一块单独的网络适配器用于管理\n——————————————————————————–\n实例\n联想万全1300 PC服务器,具有一颗Intel PII300处理器,配置有128MB RAM,主板集成Intel 82557网络适配器,另外安装了4块3Com 3C905B 10/100Mbps自适应PCI网络适配器。\n——————————————————————————–\n安装\n安装最新版本的FreeBSD。可以从www.FreeBSD.org获取当前的FreeBSD版本信息,并且获得安装源文件。可以使用光盘安装和FTP安装方式。为了保证最好的硬件 …"
October 31, 2010
C语言中指针变量和数组的组合
"int a[10];\nint * p;\nC语言规定数组名代表数组中第一个元素(即序号为0的元素)的地址,因此,下面两个语句等价:\np = \u0026amp;a[0];\np = a;\n摘自:C语言程序设计(第二版)p211\n(5)指针变量的值是可以改变的,见下例。\n例10.20 改变指针变量的值。\n#include \u0026lt;stdio.h\u0026gt; void main() { char *a = \u0026#34;I love China!\u0026#34;: a = a + 7; printf(\u0026#34;%s\u0026#34;, a); } 运行结果如下:\nChina!\n指针变量a的值是可以变化的,输出字符串是地从a当时所指向的单元开始输出各个字符,起码到遇’\\0’为止。而数组名虽然代表地址,但它是常量,它的值是不能改变的。下面的用法是错误的:\nchar str[] = {“I love China!”};\nstr = str + 7;\nprintf(“%s”, str);\n需要说明,若定义了一个指针变量, 并使它指向一个字符串,就可以用下标形式引用指针变量所指的字符串中的字符。\n例10.21 用带下标的字符指针变量引 …"
October 30, 2010
又拍网架构中的分库设计
"又拍网是一个照片分享社区,从2005年6月至今积累了260万用户,1.1亿张照片,目前的日访问量为200多万。5年的发展历程里经历过许多起伏,也积累了一些经验,在这篇文章里,我要介绍一些我们在技术上的积累。\n又拍网和大多数Web2.0站点一样,构建于大量开源软件之上,包括MySQL、PHP、nginx、Python、memcached、redis、Solr、Hadoop和RabbitMQ等等。又拍网的服务器端开发语言主要是PHP和Python,其中PHP用于编写Web逻辑(通过HTTP和用户直接打交道), 而Python则主要用于开发内部服务和后台任务。在客户端则使用了大量的Javascript, 这里要感谢一下MooTools这个JS框架,它使得我们很享受前端开发过程。 另外,我们把图片处理过程从PHP进程里独立出来变成一个服务。这个服务基于nginx,但是是作为nginx的一个模块而开放REST API。\n**图1:**开发语言\n由于\nPHP的单线程模型,我们把耗时较久的运算和I/O操作从HTTP请求周期中分离出来, 交给由Python实现的任务进程来完成,以保证请求响应速度。这些 …"
October 30, 2010
软件架构设计中的同步与异步问题(修改版)
"内容概要:本文分析了大型程序系统设计中经常需要面对的同步和异步结构问题。列举异步结构模式实现手段,论证异步模式效率远远优越于同步模式,证明在硬件资源理想情况下,对同步模式而言并发量对计算机系统的平均交易处理时间没有影响,对异步模式而言平均交易处理时间会随着并发量的增大而急剧下降,最终也趋向一个恒定值。在实际有限计算机资源情况下,程序设计必须设置最大并发量以控制并发程度,否则过多并发量会形成交易对硬件资源的竞争,造成交易的拥塞。\n关键词:同步,异步,消息队列,效率,并发\n一.基本概念\n同步和异步问题是大型程序设计中需要慎重等待的问题,但目前这方面的讨论很少,本文就试图进行有关方面讨论。\n一个大型的程序系统常常是由很多不能功能模块组成的。程序系统运行时不同功能模块要按一定顺序执行,以协同完成一件任务。功能模块协作运行完成一件任务存在同步和异步两种方式。如果在某一时间段,这个程序系统的所有功能模块都在为完成相同的一件任务而服务,某一个功能模块在完成一件任务的子任务后,需要等待其他功能模块完成子任务,这样只有当全部功能模块按顺序完成一件任务后,程序系统才能接收下一个任务,功能模块是串行运行,这 …"
October 29, 2010
FreeBSD 单网卡绑定多个IP
"假设网卡lnc0原IP地址为192.168.0.2,现在为它绑定另一个IP:\n# ifconfig lnc0 192.168.0.3 netmask 255.255.255.255 alias\n解释:\n如果别名IP地址和网卡原IP地址在同一个子网上,就需要设置掩码为255.255.255.255\n如果位于不同的子网,就直接使用相应子网的正常网络掩码\n从TCP/IP的角度来看,这样做意味着什么呢?\n网络掩码的所有位都设置成1,就会保证ICP/IP栈这样来看待包:\n只要包的目标地址匹配所有位,就把该包看成本地子网上的包;它创建了只有一个地址的“子网”。\n所有发送给该地址的包以及该地址接受的包都会发送给路由器,而不会发送到LAN上。\n如果多个别名使用了同一个网络掩码,这些别名的广播地址也应该相同,而这样却导致了TCP/IP栈的混乱。\n使用全1的网络掩码,才能骗过ifconfig,让该命令允许单个接口卡上有多个IP地址。\n要在/etc/rc.conf中设置别名,应该使用 ifconfig_xxx#_alias# 关键字,该关键字的使用形式类似于 ifconfig_xxx#: …"
October 28, 2010
centos下快速同步时间
"安装ntpdate\nyum -y install ntp\nvi /etc/crontab 添加下面这行\n30 21 * * * root /usr/sbin/ntpdate cn.pool.ntp.org \u0026amp;\u0026amp; /sbin/hwclock -w\n:wq (保存退出) 手动更新时间方法:ntpdate cn.pool.ntp.org hwclock -w 这里是更新ROM的时间\n文件格式为:分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 周(0-7) user command 意思是:root用户 在每天21:30 分执行ntpdate comamnd 同步到 cn.pool.ntp.org 这个时间池,并且将更新的时间写入到 ROM里保存。\n备注:不要忘记开启服务啊! chkconfig ntpd –list (查看0~6个runlevel 是否按照阁下意愿开启或关闭 ntpd服务) chkconfig ntpd –level 35 on (开启runlevel 3和5的ntpd服务) chkconfig ntpd on (开启runlevel …"
October 28, 2010
ipvsadm+keepalived 实现高可用负载均衡
"一.使用系统Red Hat Enterprise Linux Server release 5.4 二.安装环境 1.说明 realserver:192.168.1.11\nrealserver:192.168.1.12\nlvs控制机 MASTER:192.168.1.100\nBACKUP:192.168.1.101\n虚拟VIP:192.168.1.200\n其中:realserver上只需要简单的安装apache即可\nlvs控制机需要安装:ipvsadm,keepalived\n2.lvs控制机安装,主备机分别安装ipvsadm 实现LVS/DR最重要的两个东西是ipvs内核模块和ipvsadm工具包,现在的系统已经包含ip_vs模块\n1)检查内核模块,看一下ip_vs 是否被加载 lsmod |grep ip_vs ip_vs 35009 0\n如果没有显示,则说明没有加载,执行命令 modprobe ip_vs 就可以把ip_vs模块加载到内核\n#modprobe ip_vs\n2)安装ipvsadm 先把目录/usr/src/kernels/2.6.18-164.el5-x86_64链接 …"