2009年4月21日星期二

c与c++ static函数的区别

static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).
(1)局部静态变量
(2)外部静态变量/函数
(3)静态数据成员/成员函数
下面就这三种使用方式及注意事项分别说明
一、局部静态变量
在C/C++中, 局部变量按照存储形式可分为三种auto, static, register
(谭浩强, 第174-175页)
与auto类型(普通)局部变量相比, static局部变量有三点不同
1. 存储空间分配不同
auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数调用结束后自动释放, 而static分配在静态存储区, 在程序整个运行期间都不释放. 两者之间的作用域相同, 但生存期不同.
2. static局部变量在所处模块在初次运行时进行初始化工作, 且只操作一次
3. 对于局部静态变量, 如果不赋初值, 编译期会自动赋初值0或空字符, 而auto类型的初值是不确定的. (对于C++中的class对象例外, class的对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否是static类型)
特点: static局部变量的”记忆性”与生存期的”全局性”
所谓”记忆性”是指在两次函数调用时, 在第二次调用进入时, 能保持第一次调用退出时的值.
示例程序一
#include
using namespace std;
void staticLocalVar()
{
static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作
cout<<"a="<<a<<endl;
++a;
}
int main()
{
staticLocalVar(); // 第一次调用, 输出a=0
staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1
return 0;
}
应用:
利用”记忆性”, 记录函数调用的次数(示例程序一)
利用生存期的”全局性”, 改善”return a pointer / reference to a local object”的问题. Local object的问题在于退出函数, 生存期即结束,. 利用static的作用, 延长变量的生存期.
示例程序二:
// IP address to string format
// Used in Ethernet Frame and IP Header analysis
const char * IpToStr(UINT32 IpAddr)
{
static char strBuff[16]; // static局部变量, 用于返回地址有效
const unsigned char *pChIP = (const unsigned char *)&IpAddr;
sprintf(strBuff, "%u.%u.%u.%u", pChIP[0], pChIP[1], pChIP[2], pChIP[3]);
return strBuff;
}

注意事项:
1. “记忆性”, 程序运行很重要的一点就是可重复性, 而static变量的”记忆性”破坏了这种可重复性, 造成不同时刻至运行的结果可能不同.
2. “生存期”全局性和唯一性. 普通的local变量的存储空间分配在stack上, 因此每次调用函数时, 分配的空间都可能不一样, 而static具有全局唯一性的特点, 每次调用时, 都指向同一块内存, 这就造成一个很重要的问题 ----不可重入性!!!
这样在多线程程序设计或递归程序设计中, 要特别注意这个问题.
(不可重入性的例子可以参见(影印版)第103-105页)
下面针对示例程序二, 分析在多线程情况下的不安全性.(为方便描述, 标上行号)
① const char * IpToStr(UINT32 IpAddr)
② {
③ static char strBuff[16]; // static局部变量, 用于返回地址有效
④ const unsigned char *pChIP = (const unsigned char *)&IpAddr;
⑤ sprintf(strBuff, "%u.%u.%u.%u", pChIP[0], pChIP[1], pChIP[2], pChIP[3]);
⑥ return strBuff;
⑦ }
假设现在有两个线程A,B运行期间都需要调用IpToStr()函数, 将32位的IP地址转换成点分10进制的字符串形式. 现A先获得执行机会, 执行IpToStr(), 传入的参数是0x0B090A0A, 顺序执行完应该返回的指针存储区内容是:”10.10.9.11”, 现执行到⑥时, 失去执行权, 调度到B线程执行, B线程传入的参数是0xA8A8A8C0, 执行至⑦, 静态存储区的内容是192.168.168.168. 当再调度到A执行时, 从⑥继续执行, 由于strBuff的全局唯一性, 内容已经被B线程冲掉, 此时返回的将是192.168.168.168字符串, 不再是10.10.9.11字符串.

二、外部静态变量/函数
在C中 static有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。但为了限制全局变量/函数的作用域, 函数或变量前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。注意此时, 对于外部(全局)变量, 不论是否有static限制, 它的存储区域都是在静态存储区, 生存期都是全局的. 此时的static只是起作用域限制作用, 限定作用域在本模块(文件)内部.
使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。
示例程序三:

//file1.cpp

static int varA;
int varB;
extern void funA()
{
……
}

static void funB()
{
……
}

//file2.cpp

extern int varB; // 使用file1.cpp中定义的全局变量
extern int varA; // 错误! varA是static类型, 无法在其他文件中使用
extern vod funA(); // 使用file1.cpp中定义的函数
extern void funB(); // 错误! 无法使用file1.cpp文件中static函数

三、静态数据成员/成员函数(C++特有)
C+ +重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数. 这是与普通成员函数的最大区别, 也是其应用所在, 比如在对某一个类的对象进行计数时, 计数生成多少个类的实例, 就可以用到静态数据成员. 在这里面, static既不是限定作用域的, 也不是扩展生存期的作用, 而是指示变量/函数在此类中的唯一性. 这也是”属于一个类而不是属于此类的任何特定对象的变量和函数”的含义. 因为它是对整个类来说是唯一的, 因此不可能属于某一个实例对象的. (针对静态数据成员而言, 成员函数不管是否是static, 在内存中只有一个副本, 普通成员函数调用时, 需要传入this指针, static成员函数调用时, 没有this指针. )
请看示例程序四(<effective>(影印版)第59页)
class EnemyTarget {
public:
EnemyTarget() { ++numTargets; }
EnemyTarget(const EnemyTarget&) { ++numTargets; }
~EnemyTarget() { --numTargets; }
static size_t numberOfTargets() { return numTargets; }
bool destroy(); // returns success of attempt to destroy EnemyTarget object
private:
static size_t numTargets; // object counter
};
// class statics must be defined outside the class;
// initialization is to 0 by default
size_t EnemyTarget::numTargets;

在这个例子中, 静态数据成员numTargets就是用来计数产生的对象个数的.
另外, 在设计类的多线程操作时, 由于POSIX库下的线程函数pthread_create()要求是全局的, 普通成员函数无法直接做为线程函数, 可以考虑用Static成员函数做线程函数.

KFC员工日记

1 一个男人走到前台,只对我说了一句,“你先给我找个座。”

2 顾客冲进来直奔前台 :“小姐,给我来一个莫斯科鸡肉卷。”
我:“对不起,我们只有墨西哥和老北京的。”
顾客:“……那我要莫斯科的。”
我:……

3 中年妇女过来点餐:“给我一个麦当劳。”
我:“不好意思,我们这是肯德基。”
女:“哦!那给我来个肯德基。”
我:无语,掉头我就走了,实在不知道怎么跟她说了……

4 一名顾客走到前台。
顾客:“给我一个小碗。"
我:“啊?”
顾客指指菜单我才明白是要圣代。
我:“圣代是吧,您要什么口味啊?”
顾客:“苹果的。”
我:“啊?对不起从没卖过苹果的。”
顾客:“那个绿色的是什么?”
我:“哦,那是芦荟口味的。”
顾客:“芦荟?那不是花么!能吃么?”
我:“能!”
顾客:“算了,我从不瞎吃。我要咖啡味的吧。”
我:(茫然状)“对不起啊,也从没卖过咖啡味的。”
顾客:“那黑色的是什么?”
我:“那是巧克力的。”
顾客:“算了,巧克力太甜,我要那个红色的吧。是草莓的吧。”
我:(超级兴奋,可猜对一回。)“是,您要几个?”
顾客:“一个,不过我不吃芝麻,你把草莓籽都帮我挑出去。”
我:!@~#$%^&&**~!@#$%^&*


5 一个老太太进来,态度非常和蔼的说:“姑娘,给我来一斤鸡翅。”

6 “我要两个田园汉堡,一个不放肉,另一个加两片肉……”

7 一次一个小孩进来说:“给我20包番茄酱。”
我说:“小朋友,我们给不了你那么多,再说你要那么多干什么 啊?”
他说:“我妈说晚上给我做樱桃肉。”

8 “来个火炬。”
“啊?”
“就是拿在手里的那种。”

9 一位顾客走到前台。
顾客:“我要草莓新地。”
我:“好,一个草莓圣代。”
顾客:“不是这个,我要草莓新地!”
我:“嗯?哦,麦当劳叫新地,肯德基叫圣代。都一样,我们这里是肯德基。”
顾客:“哦,草莓新地,草莓圣代,一样啊。”
我:“对,先生您真聪明!”
顾客:“哈哈哈哈,那我要巧克力新地吧。”
我:~!@#$%^&*~!@#$%^&*

10 一个老大爷到前台点餐,看着很熟练,都不犹豫就指着餐盘说:“我要一个哥西墨!”
我当时真的不想干了!

11 加菲上市。
一个顾客买全家桶问了句:“我买了这么大一桶,(边说边摸着展示的加菲)送我一个小老虎行么?”

12 顾客:“给我来个新加坡肉卷!”
我对配餐员说:“你先点着,我先去后边笑会去!”
顾客:“给我来对奥斯卡烤翅。”
我:狂晕!

13 有一天,一个欧吉桑大摇大摆的走进来,来到柜台前。
嗓门很大的说道:“我要一个‘Q B鸡米花’!”

14 一位顾客掏出2张优惠券扔桌上,说:“就要这两样,带走。”
我:“汉堡要辣的还是不辣的?”
顾客:“嗯。”
我:“汉堡要辣的还是不辣的?”
顾客:“嗯。”
我:“你~汉~堡~是~要~辣~的~还~是~不~辣~的?”
顾客:(恍然大悟)“要辣的。”
我:“那圣代呢?”
顾客:“要辣的。”

15 我:欢迎光临肯德基,请问需要点什么?
顾客:请问附近麦当劳怎么走?
我:#¥@%@……¥

2009年4月16日星期四

2009最贱的话

1 :我的优点是:我很帅;但是我的缺点是:我帅的不明显.
  2 :谈钱不伤感情,谈感情最他妈伤钱。
  3:我诅咒你一辈子买方便面没有调料包。
  4:会计说:“你晚点来领工资吧,我这没零钱。”
  5 :虽然你身上喷了古龙水,但我还是能隐约闻到一股人渣味儿。
  6 :有一次我上街,一群女孩把我拦住,她们说我帅,我不承认,她们就打我,还说我虚伪。
  7 :冲杯三鹿给党喝。
  8 :史上最神秘的部门:有关部门。
  9:我这辈子只有两件事不会:这也不会,那也不会。
  10:人家有的是背景,而我有的是背影。
  11 :别把虾米不当海鲜。
  12 :我是天使,回不去天堂是因为体重的原因。
  13:泡妞就像挂QQ,每天哄她2个小时,很快就可以太阳了。
  14 :骗子太多,傻子明显不够用了。
  15 :你的手机比话费还便宜。
  16 :不怕偷儿带工具,就怕偷儿懂科技!
  17 :有空学风水去,死后占个好墓也算弥补了生前买不起好房的遗憾。
  18 :明骚易躲,暗贱难防

2009年4月13日星期一

一个高速交警的吐血救命忠告!跑高速的一定要看

一、停车、停车、还是停车!

   最重要的我要放在最前面说。高速公路行车最怕的是什么?是停车!在高速运动的车流里不管因为什么原因致使道路堵塞而停车,最可怕的事情就可能要发生了。这里我要重点说一下小车,碰到这种情况,小车司机发现前方道路堵塞时,一定要马上看观后镜里有没有大货车跟着你,如果有,一定要提前减速并打开双闪灯提醒后车注意,给后面的大车充足的距离和时间减速,如果后面的大车按喇叭或向你不停的闪灯,相信我,他一定是刹不住车了,你一定一定要加速往紧急停车道内钻!哪怕会刮伤你的爱车。每年!每年我们都会碰到几起这样的事故:因为堵路,小车停在大车后面等待放行,结果后面的大车撞上来,后面的大车车头都撞上了前面大车的车尾!小车在哪里?!二人、三人、四人、五人!小车上有几人就是几条人命!几毫米厚的小车框架在几十、上百吨重量的冲击下比纸还薄!不要迷信你乘坐的是什么车,不要自认为安全,我见过拉开后压缩的只剩一米长的红旗车,我见过被压成铁皮的面包车,我见过火中被困的人的扭曲的身影和嚎叫,我见过挤得只有二指宽的人的头颅你或许会问,后面的大车为什么不停下来?相信我,他不是不想停,他太想把车停下来了!可是你见过核载九吨却拉五十吨的货车吗?你见过核载十九吨却实载九十吨的罐车吗?你见过核载三十吨却实载一百三十吨的巨无霸吗?交警早已不允许处罚卸载超载车了,你看看路上的大货车们,十辆车有九辆半都或多或少的超载,不超就没有盈利,不超就会亏钱!那远不是交警一家就能够解决的问题,碰到情况,尤其是下坡路面,你就是给这些个大半挂车后面拴上一百头牛也拉不停他!这里暂且不提。还是要劝告所有碰到堵路的小车司机,将车停下后,就算外面在下刀子也要全部离开车辆迅速转移到路外,直到你的车后排上了七八辆以上的大车后再回到你的车上!为什么要等七八辆?06年我手里曾有一辆车连撞十三辆车的纪录,在我们大队一直没有人能打破,你愿意你是第几辆?实在不行就从紧急停车道往前走,走上二三百米后再找空位腾出停车道,宁愿让交警罚你贰佰元钱,也比命便宜!在这里,还是那句话:紧急停车道是一条生命通道!一条你的逃生通道!

二、爆胎时的操控处理
  
    刚才提到了车辆爆胎,在高速行驶时小车爆胎尤其是前轮爆胎造成的后果远比大车爆胎严重,爆胎虽然不可预料,但在我们的事故处理中常常发现一个有趣的现象:如果是左前轮爆胎造成车辆失控撞击护栏,撞的往往是右侧护栏,反之亦然。究其原因,在车辆爆胎时因胎径及摩擦系数的不同,车辆的运行轨迹将偏向爆胎的方向,爆左前轮向左偏,爆右前轮向右偏,而司机在打方向纠正时,指向性能反映在已爆胎的车辆上是有一个迟缓性的,加之因爆胎造成的慌乱,常常造成纠正过度,从而人为加剧车辆的失控,致使左前轮爆反而撞上了右边护栏,甚至连续多次撞击左右护栏的现象发生。正确的做法是在车辆爆胎时,首先要紧握方向,不管车头向哪偏,给一个固定的纠正角度(与你的实际车速有关)并用力保持,同时不要采取紧急制动,因为这时车辆的制动能力在纵线上是不平衡的,让减速行为掌握在受控制的过程中并努力保持原来的行车轨迹,切忌急打方向纠正。
  
三、超速行驶
  
    超速行驶的危害大家都知道,无论是地方还是高速,都会造成不可挽回的后果。如果你驾驶一辆时速100KM的小车,假设你身高170CM,从你眼睛发现情况,到大脑做出判断,再反映在刹车制动,生理上的反应时间是1.7S左右,而这时你的车辆已经前行了47.2M。40米的距离!会包含多少无可奈何的生命!我们曾经在限速70KM/H的路段查超速(110公里我们才纪录),有辆小车竟然跑了203KM/H,看着照片,我们都说这个驾驶员迟早要报销,那是他的命,命在他的手中,别人无能为力。对于超速行为,我只有两句话:一句是“十祸九快”,一句是不要迷信“好车”,往往有些人迷信自己的车好,性能就好,但是生命面前是人人平等的,我们手里有宝马 745,有保时捷卡宴,还有S80,不管曰本车欧洲车,只要超速出事,该死死该伤伤,一点不耽误。我国最高等级的高速公路限高速是120KM/H,这是写在安全法里的法定最高时速,这不是没有根据的,据国外资料,如果一辆时速超过160KM的小车发生爆胎事故,不管你是否系安全带,司乘人员的死亡率是 100%!记住,不是50%,也不是99%,是100%!敬告那些喜欢一上高速就把油门踩到底的司机朋友,祈祷你的轮胎安然无恙罢。
  
四、行车前的安全检查
  
    还是爆胎问题引出的题目,这是一个很偶然的因素,你说你是新车?我们手里有5000公里不到的新车爆胎,至于车型我不方便在这里说,但可以透漏是** 公司十万元左右最普通的家用车;除了出行前检查轮胎,还有机油问题、润滑油问题、降温液问题,甚至雨刮和玻璃水也要仔细检查,我们曾经下班时坏了雨刮,邪门,偏偏是左雨刮,那天又正好是雨夹雪,可想而知我们那几十公里的路是怎么回的家!不堪回首啊,这是高速公路,前不着村后不着店的,幸亏我们是警车又熟悉路况,打着双闪和警灯就这样歪着脖子开车坚持下了路,要是换了别人,要么受罪,要么就容易出危险了。回到家后检查车辆,原来是雨刮连杆掉了一个螺丝,一毛钱都不到的维修成本造成了多大的麻烦和隐患!
  
五、高速公路的标线、标牌和警告
  
    相信很多经常上高速的司机朋友都会发现高速沿线不时会有这样那样的警告标语和警示灯,我以前没上高速干的时候也是没有在意这些东西,但干了这几年才深深感触,那每个“事故多发路段,请谨慎驾驶”,当您在路上见到类似的警告标志时,一定要有意识的降低车速并保持车距,同时做好应对紧急情况的准备,
  
六、尽量避免夜间行车
  
    在我国目前的现实里,这是一个全国普遍的规律:夜间行车的大货车数量要远远多于白天在路上跑的。在我们这里,光说大货车,白天与夜间的比例能达到 1:5 甚至更高,晚上巡逻时左边是一溜白灯,右边是一溜红灯,一边一串看不到头,这曾经让我们困惑过,白天视野又好,车流量又小,为什么这么多的货车要昼伏夜出?以至我们经常为处警彻夜不眠。后来通过和当事司机聊天才知道,白天要装卸货物、维修车辆、办事找人、而且最重要的是路政、超限和交警白天都在路上,晚上行车麻烦更少!这就造成晚上是各种事故的高发时段,作为小车的司乘人员,在晚上行车,流量大、密度高,跑着“不爽”还是其次,重要的是忙了一天的大车司机大部分涉嫌疲劳驾驶、更有证驾不符、违法驾驶等大比例牵涉其中给行车造成更大的安全隐患。而且大车的座位较高,高速公路的**隔离根本挡不住对面射过来的一串车灯,大车司机几乎是在半眩目的状态下开车,你愿意一路上和这样的司机们一同驰骋吗?
  
七、超车时多用闪灯提醒
  
    高速公路速度快,噪音大,你的车喇叭前车根本听不到,超车时还是多切换远近闪灯提醒一下对方更有用;而且,当你发现行车道内有两辆以上大货车前后距离比较近时,超车时你就要提防后面的大车突然变道超车,那时如果你正好跑到他旁边,那可就真要听天由命了,相信我,那些变道超车的大货车在变道前能有一半在观后镜里看一眼的就算阿弥陀佛了,更何况你是小车,不容易被发现且车速更快。而且,晚上超车时,不要一直用远光灯,在你距离被超车辆尾部贰、叁佰米时最好切成近光灯,这样前车才能更好的判断你与他的距离从而不会误判,要知道,在路上让其他车辆更清楚地看到你,与你是否能清楚看到对方是同等的重要。说到这里,想起在市里经常有晚上不开车灯或者打着远光会车的摩托和机动车,他们自认为自己能看清路面和其他车,而别人是否能看清他们呢?那都是一些自私而且毫不体谅别人的人,我一直很鄙视这些人。


八、非紧急情况不要占用紧急停车道.紧急停车道,顾名思义是在紧急情况下才能使用的车道。

  
九、保护现场?保证安全!

  我们大队管辖的高速路段约170公里,从前事故一直是一个点三班倒,后来随着人员的增加及为了快速出警(有时早到现场十分钟可能就能救回一条人命)我们分成了两个事故出警点各辖一段,可就是这样,在自己的辖区转一圈也要两、三个小时。有时经常接到这样的事故报警:双方发生了简单的刮擦或追尾,事实无争议、无人员伤亡、财损不大、车辆能够移动,可无论我们怎么在电话里劝,双方当事人就是不肯将车移到路边!一定要我们到现场“照相”后才肯动车!七八十公里呀!最快也要四十分钟一个小时!有时为了百十块钱的损失,两个车横在路面阻塞通行致使堵路达十余公里!碰到这样的司机,我捶他的心都有!你为了自己的些微利益,不听交警的劝告一意孤行,如果你的车辆滞留路面引发二次事故怎么办?如果你的车辆滞留路面,致使后面堵路造成事故怎么办?可以肯定的是如果再发生事故,所造成的人员财产损失一定会大于你的小事故,到时,后面的事故当事人如果起诉你,虽然你可能不用承担法律责任,但你百分百要承担赔偿责任!

  在高速公路发生财产损失轻微的事故,如果无人员伤亡、双方对成因无异议,且车辆具备移动能力,一定要将车辆移动致紧急停车道内停放,现在的人们几乎都有拍照功能的手机,可以在动车前用自己的手机将原始现场拍两张照片,当然,最好能在电话里和当班民警沟通,放心,碰到这样的“移动现场”,高速事故交警一定不会难为你的!


十、发生事故后

  当然,前面说的只是简单的小财损事故。如果你的车辆在高速公路上发生大的财产损失事故甚至伤亡事故,你是一定不能动现场的(抢救伤员除外),这时就牵扯到两件比较重要的事情了:设置警告标志和电话报警。在高速公路发生交通事故致使车辆无法移动的,一定要在事故现场来车方向一百五十米外设置警告标志,且人员要转移到公路护栏外。记住:一定是一百五十米外,如果因为你设置的警告标志达不到这个距离,致使发生二次事故,那么我们事故民警是一定会在二次事故中给你划责任的,最起码也是次要甚至同等!可惜的是,凭我在高速公路上这几年的实践,没有一个当事人会“舍得”将警告标志设置到位,真的!没有一个!能在车后五十米以外设置标志的就令我刮目相看了!还记得去年夏天的午夜,我和队上的一个老同志巡逻回单位的途中,在对面半幅的下坡行车道内发现一起刚刚发生的交通事故,两辆大货车的四五个当事人就“若无其事”的或倒或躺在事故现场后方的路面上,唬得我俩赶紧连劝带赶得将人弄出护栏外,前后也就三五分钟,就又有一辆大货车驶过刚才躺人的路面在我眼前三四米的距离撞上了事故现场!当时的腿说不软真的是假的,如果我们不是路上偶遇,而是接到当事人的报警电话才出现场,那么车后的这四五个人会一个不剩!当然,如果你的车辆没有三角警示牌或锥桶,你也可以将色彩鲜艳的旅行包或机油桶甚至路边的树枝等等拿来借用,可是千万不要搬石头哦!那性质就变了!说到报警,经常有当事人发生事故后,第一个电话打给老婆孩子,第二个打给朋友,第三个打给保险公司,等到想起报警,距离发生事故已经个把钟头了!如果因为这样发生二次事故,对不起,你一样要承担二次事故的法律责任!发生事故后,设置警告标志、人员转移到路外、及时报警这三样缺一不可,任何一个环节的不规范致使加重事故后果或直接导致二次事故的发生,当事人均要承担相应的法律责任。放心,保险公司的报警时间限定在48小时内,你就是第二天再报也来得及,干嘛一定要在险象环生的现场避重就轻?

十一、不要在高速公路上丢弃废物、行人不要上高速

  这两条是相辅相成的,怎么,不理解?我们这里每天都有路外的穷苦村民上路捡空的饮料瓶,赶也赶不完,你从这头把他撵下去转个圈他又从那头上路了,这就直接导致了一个后果:我们大队每年都有三五起无名尸案件,说它是无名尸,是因为现场没有肇事车辆,也有的大货车夜间根本就不知道刮擦或撞上了行人,现场只有残缺不全的碾碎的压扁的尸体,有时男女都无法分辨,只能经DNA检验。至于撞伤的、撞残的每年都有几例,究其原因,就是您从车窗外扔出的那一个个饮料瓶,砸坏了来往车辆还是小事,我相信被砸得一定也不会放过你,可是就用那一个个小瓶子去换一个虽不富裕但却鲜活的生命,您于心就忍吗?当您摇下车窗抛弃废物时,您可能就是一个间接的杀人凶手!

  过往的乘客朋友,不要再上高速公路上拦车、搭车了!还有那些上路捡空瓶和煤块的人们,当高速机动车撞上人体时,人真的会碎的!我永远也忘不了那年冬天夜里一点多,我在路上守在一具无头尸旁,昏暗的车灯中地方上太平间的老王拎着找到的一个女人头走向我的镜头,开始我们还怀疑是谋杀,经县市两级法医及刑警队联合尸检,最终证实该人体是被巨大的冲击力作用于背后,致使颈部撕脱后飞出一百多米远,后来证实那个老太太精神不太好,收费站的监控显示她确是一个人走上的高速,至于她要干什么,谁也不知道。至于路面被多车连续多次碾压的尸体我见得太多了,以致我们常常要用铁锨和麻袋来为他们收尸,你想象不到一具人的尸体散落在10X80M的路面上是一个什么情景,你也感受不到那种新鲜的破碎的尸体是一种怎样的气味,那是自然界中你永远也闻不到的,我永远也不愿再见!再闻到!

十二、安全带保安全
  
  高速上...坐在后座的人一定要系安全带!...这个往往是很容易忽视的问题....亲眼见过一辆SUV在高速翻滚...司机因为系了安全带没事...后座上的两个女孩被甩出...当场死亡!太恐怖了!现在..只要上高速...强令车上所有的人系安全带!
   
这是一个老生常谈的问题,也是一个很多司乘朋友很不以为然的问题。诚然,在地方上开车尤其是城市道路,我个人观点安全带的作用大部分是应付交警,实际作用并不大。而在高速公路上,系与不系安全带却会在事故后果中产生天壤之别。我出现场的2007年度的事故中,我印象中最少有两起小车单方造成的死亡事故都是没有系安全带引起的,其中一起是辆帕萨特自翻,车上只有司机一人,如果他系上安全带的话,我个人认为最多是轻伤,法医鉴定为颈椎骨折致死,全是翻车时身体不受限制运动造成;第二起也是小车单方,在高速行驶时前轮爆胎造成车辆失控多次撞击道路护栏,共有司乘两人,司机系了安全带毫发无伤,而副驾驶上的乘客因为没系安全带,且在放倒的座位上斜躺着休息,结果在车辆失控打转时被从后风挡玻璃处甩出车外致死。

十三、高速路上必须集中精力,不能接打电话,不能想事而思想开小差


十四、其他

  没想到这篇即兴的短文竟会写了这么多。最后,我还有几个简单的实践经验想告诉在高速公路上的司乘朋友:

  1、副驾驶位上的朋友,最安全的座位是司机后面的那个座位,相信我,遇到紧急情况,司机避让自己是本能的下意识行为,你与他的上下级关系、感情甚至亲情在这里都没用。如果你是一个在后排卧铺休息的大车乘客,也请你选择将头朝向驾驶员的方向,你愿意失去一条腿还是“一个”头?这不是可选择的题目!

  2、交通事故受伤致死的原因比例最高的为颅脑损伤、胸腹脏器损伤、出血过多及休克死亡;所以除非你有专业的医疗知识,在没有确定伤者伤情的情况下,最好不要轻易的移动伤员,否则,他断裂的肋骨可能就是在你的“帮助”下才插入心脏或动脉的。如果伤者四肢大出血,你可以在他出血肢体靠近心脏端的关节上方用鞋带或腰带扎紧止血并及时报警,这才是最重要的。

  3、在高速公路上,一切非正常的行驶状态下,都要及时打开双闪灯!包括停车、前方堵路及施工、单道放行、前方发生事故、进入雾区等等。

  4、高速公路上的重大肇事驾驶员的驾龄是6—8年!相信我,你没有看错,这个数据从市、省到全国都是一致的,个中原因您一定能体会。熟能生巧?熟也能生骄!

  5、永远把与你同在道路上行驶的其他机动车当成菜鸟,不要把自己的生命财产安全寄希望于掌握在别人的手中。(就好像我们一看到违法行驶的女司机就赶紧躲得远一点^-^)

  6、上高速公路前,要规划好线路,尽可能了解沿途的路况,给车辆加满油料并保持手机电、费充足,不然给你撂到荒郊野外,那可真是上天无路入地无门啊!

  7、还有一句题外话,现在的高速公路平均50—60公里就会设置一个服务区或停车区,当您的车辆遇到小的故障或您内急时,请您坚持到服务区解决。毕竟,你的车辆不管停在紧急停车道还是加宽车道,不仅给您和他人的行车造成安全隐患,遇到夜间,还很有可能给预谋或流窜的犯罪分子提供难得的发财机会。

  8、最后一个很白痴的提示:报警电话永远是110!不要在前面加区号!

  无论何时牢记一句话:一个好的驾驶员,并不在他的驾车技术有多么高超,而是他的头脑中是否有安全意识。无论您开不开车,都应该知道这些,因为您的命也只有一条!

补充:  如何防止高速中爆胎
  
  
  在汽车行驶中,轮胎对于行车安全极为重要,尤其是高速行驶。高速行驶中爆胎导致的事故时有发生。那么,如何防止高速中爆胎呢?
  
  
  
  
  一、平时要注意轮胎的保养
  
    经常检查轮胎是否有扎伤、划伤,是否有因断线造成的突起。在汽车被升起的时候(如检查底盘和换机油)应该顺便查看轮胎内侧是否存在问题,发现问题及时找修理厂或4S店咨询。按照要求调换轮胎以利磨损均匀。
  
  二、关注轮胎寿命
  
   轮胎到一定里程要视行驶路面和磨损状况而确定是否更换。一般来讲城市道路时间可以长一些,若经常上高速或行使路面较差,就要视磨损程度及时更换。
  
  三、养成检查胎压的好习惯
  
   要经常检查胎压,每隔一个月要测量胎压,随时补充。上高速前更要检查胎压,使其在正常范围内。
  
  四、高速中防止轮胎温度过高
  
    尽量不要连续太长时间跑高速,可适当在休息区停车,使轮胎降温。这一点在夏天尤其重要。
  
  五、养良好驾驶习惯、控制车速
  
    尽量防止急起步、急刹车和快速过弯,这些动作都会加剧轮胎磨损和增加瞬间压力。不要碾压路面上的坚硬物,控制车速。   
  
  
  
  
  
    高速公路上的爆胎因受轮胎质量、气体温度、磨损、路面状况及行驶操作等影响,原因比较复杂,有些轮胎质量问题是一般修理厂检查不出来的。因此高速爆胎很难彻底杜绝。但随时关注自己的爱胎、及时检查和保养、养成好的驾驶习惯是有利无害的。一旦爆胎发生,切不可紧急刹车,要握住方向盘,慢慢把车速降下来。
  
    当自驾游成为一种时尚的时候,告诉车友:保持可控的车速是危险发生时唯一的救命稻草。
一个高速交警的吐血救命忠告!常跑高速的一定要看!!!

瞻仰

2009年4月12日星期日

《明朝那些事儿》后记

绝对共鸣!!没理由不喜欢!!



本来没想写,但还是写一个吧,毕竟那么多字都写了。



记得前段时间,去央视面对面访谈,主持人问我,书写完的时候,你有什么感觉?

其实这个问题,我曾经问过我自己很多次,高兴、兴奋、沮丧,什么都有可能。

但当这刻来到的时候,我只感觉,没有感觉。

不是矫情。



怎么说呢,因为我始终觉得写这玩意,是个小得没法再小的事。然而很快有人告诉我,你的书在畅销排行榜蹲了几天,几月,几年,然后是几十万册、几百万册,直到某天,某位仁兄很是激动地对我说,改革开放三十年,这本书发行量,可以排进前十五名。



有意思吗?说实话,有点意思。



雷打不动的,还有媒体,报纸、期刊、杂志、电视台,从时尚到社会,从休闲到时局,从中央到地方,从中国到外国,借用某位同志的话,连宠物杂志都上门找你。平均一天几个访问,问的问题,也大致雷同,翻来覆去,总也是那么几个问题,每天都要背几遍,像我这么乏味的人,谁愿意跟我聊,那都是交差,我明白。

外型土得掉渣,也硬拽上若干电视讲坛,讲一些相当通俗,相当大众,相当是人就能听明白的所谓历史(类似故事会),当然,该问的还得问下去,还讲的可能还得讲下去。



这个没意思,没意思,也得接着混。



我始终觉得,我是个很平凡的人,扔人堆里就找不着,放在通缉令上,估计都没人能记住,到现在还这么觉得,今天被人记住了,明天就会被人忘记,今天很多人知道,明天就不知道,所以所谓后记,所谓感想,所谓获奖感言之类的无聊的,乱扯的,自欺欺人的,胡说八道的,都休息吧。



那么接下来,说点有必要说的话。



首先,是感谢,非常之感谢。

记得马未都同志有次对我说,这世上很多人都有不喜欢你的理由。因为你成名太早,成名太盛,太过年轻,人家不喜欢你,那是有道理的,所以无论人家怎么讨厌你,怎么逗你,你都得理解,应该理解。



我觉得这句话很有道理,所以一直以来,我都无所谓。

但让我感动的是,广大人民群众应该还是喜欢我的,一直以来,我都得到了许多朋友的帮助,没有你们,我撑不到今天,谢谢你们,非常真诚地谢谢你们。

谢谢。



然后是心得,如果要问我,有个什么成功心得,处世原则,我觉得,只有一点,老实做人,勤奋写书,无它。



几年来,我每天都写,没有一天敢于疏忽,不惹事,不闹事,即使所谓盛名之下,我也从未懈怠,有人让我写文章推荐商品,推荐什么就送什么,还有的希望我做点广告,费用可以到六位数,顺手就挣。

我没有理会。因为我不是商人。



出版商亲自算给我听,由于我坚持把未出版部分免费发表,因此每年带来的版税损失,可以达到七位数,这还不包括盗版,以及各种未经许可的文本。

我依然坚持,因为我相信,这是个自由的时代,每个人有看与不看的自由,也有买和不买的自由,任何人都不应该被强迫。

这是我的处世原则,我始终坚持,或许很多人认为这么干很吃亏,但结果,相信你已经看到。



好的,还有历史,既然写了历史,还要说说对历史的看法。

就剩几句了,虚的就算了,来点实在的吧。



很多人问,为什么看历史,很多人回答,以史为鉴。

现在我来告诉你,以史为鉴,是不可能的。

因为我发现,其实历史没有变化,技术变了,衣服变了,饮食变了,这都是外壳,里面什么都没变化,还是几千年前那一套,转来转去,该犯的错误还是要犯,该杀的人还是要杀,岳飞会死,袁崇焕会死,再过一千年,还是会死。



所有发生的,是因为它有发生的理由,能超越历史的人,才叫以史为鉴,然而我们终究不能超越,因为我们自己的欲望和弱点。



所有的错误,我们都知道,然而终究改不掉。



能改的,叫做缺点,不能改的,叫做弱点。



顺便说下,能超越历史的人,还是有的,我们管这种人,叫做圣人。



以上的话,能看懂的,就看懂了,没看懂的,就当是说疯话。

最后,说说我自己的想法。



因为看得历史比较多,所以我这个人比较有历史感,当然,这是文明的说法,粗点讲,就是悲观。



这并非开玩笑,我本人虽然经常幽默幽默,但对很多事情都很悲观,因为我经常看历史(就好比很多人看电视剧一样),不同的是,我看到的那些古文中,只有悲剧结局,无一例外。

每一个人,他的飞黄腾达和他的没落,对他本人而言,是几十年,而对我而言,只有几页,前一页他很牛,后一页就怂了。

王朝也是如此。



真没意思,没意思透了。



但我坚持幽默,是因为我明白,无论这个世界有多绝望,你自己都要充满希望



人生并非如某些人所说,很短暂,事实上,有时候,它很漫长,特别是对苦难中的人,漫长得想死。



但我坚持,无论有多绝望,无论有多悲哀,每天早上起来,都要对自己说,这个世界很好,很强大。



这句话,不是在满怀希望光明时说的,很绝望、很无助,很痛苦,很迷茫的时候,说这句话。



要坚信,你是一个勇敢的人。



因为你还活着,活着,就要继续前进。



曾经有人问我,你怎么了解那么多你不应该了解的东西,你怎么会有那么多六七十岁的人才有的感受。我说我不知道。跟我一起排话剧的田沁鑫导演说,我是上辈子看了太多书,憋屈死了,这辈子来写。

我没话说。

还会不会写?应该会,感觉还能写,还写得出来,毕竟还很年轻,离退休尚早,尚能饭

继续写之前,先歇歇,累得慌。



是的,这个世界还是很有趣的。



最后送一首食指的诗给大家,我所要跟大家讲的,大致就在其中了吧。





当蜘蛛网无情地查封了我的炉台
当灰烬的余烟叹息着贫困的悲哀
我依然固执地铺平失望的灰烬
用美丽的雪花写下:相信未来

当我的紫葡萄化为深秋的露水
当我的鲜花依偎在别人的情怀
我依然固执地用凝霜的枯藤
在凄凉的大地上写下:相信未来

我要用手指那涌向天边的排浪
我要用手掌那托住太阳的大海
摇曳着曙光那枝温暖漂亮的笔杆
用孩子的笔体写下:相信未来

我之所以坚定地相信未来
是我相信未来人们的眼睛
她有拨开历史风尘的睫毛
她有看透岁月篇章的瞳孔

不管人们对于我们腐烂的皮肉
那些迷途的惆怅、失败的苦痛
是寄予感动的热泪、深切的同情
还是给以轻蔑的微笑、辛辣的嘲讽

我坚信人们对于我们的脊骨
那无数次的探索、迷途、失败和成功
一定会给予热情、客观、公正的评定
是的,我焦急地等待着他们的评定

朋友,坚定地相信未来吧
相信不屈不挠的努力
相信战胜死亡的年轻
相信未来、热爱生命



二十多岁写,写完还是二十多岁,有趣。



是的,这个世界还是很有趣的



无需害怕



无需绝望



要相信自己

一首有意思的诗

当蜘蛛网无情地查封了我的炉台
当灰烬的余烟叹息着贫困的悲哀
我依然固执地铺平失望的灰烬
用美丽的雪花写下:相信未来

当我的紫葡萄化为深秋的露水
当我的鲜花依偎在别人的情怀
我依然固执地用凝霜的枯藤
在凄凉的大地上写下:相信未来

我要用手指那涌向天边的排浪
我要用手掌那托住太阳的大海
摇曳着曙光那枝温暖漂亮的笔杆
用孩子的笔体写下:相信未来

我之所以坚定地相信未来
是我相信未来人们的眼睛
她有拨开历史风尘的睫毛
她有看透岁月篇章的瞳孔

不管人们对于我们腐烂的皮肉
那些迷途的惆怅、失败的苦痛
是寄予感动的热泪、深切的同情
还是给以轻蔑的微笑、辛辣的嘲讽

我坚信人们对于我们的脊骨
那无数次的探索、迷途、失败和成功
一定会给予热情、客观、公正的评定
是的,我焦急地等待着他们的评定

朋友,坚定地相信未来吧
相信不屈不挠的努力
相信战胜死亡的年轻
相信未来、热爱生命

2009年4月11日星期六

笑死我了,转一个,大家开心一下~~

关于讲理   简直就是不胡扯
老公:你不讲理。  
老婆:和你我从来就没讲过理,家就不是讲理的地方。再说你是男的,还比我大28个月呢,你就得让着我。  

关于钱  
老公:以后我挣的钱,按比例给你吧,我挣的多时留得也多一点,这样我较会有积极性。  
老婆:好。  
老公:那我给你百分之多少?  
老婆:百分之一百二。  
老公:  

关于主意  
老婆:咱们出去玩吧。  
老公:好,你说去哪就去哪。  
老婆:我要有主意还和你说!  
老公:我出的主意你从来都不同意呀。  
老婆:我不同意的那叫什么主意啊,那叫敷衍!你得不停的有主意,直到我满意为止。  
老公:  

关于中心  
老婆:我在我们家一直是中心,在你们家也得以我为中心。  
老公:那我在我们家也一直是中心。  
老婆:可我这中心比你那中心重要。  
老公:为什么?  
老婆:因为我是千金,你只是个小子。  

关于心情  
老婆:我一干活心情就不好了,会降低咱们的婚姻质量的。  
老公:我干活心情也会不好啊。  
老婆:不行,你得心里承受能力比我强。因为你拳头比我大,心脏也比我大!  

关于买衣服  
老婆:这衣服好看吗?  
老公:好看。  
老婆:你就敷衍我,想让我赶快买完了赶快回家,  
。。。  
老婆:那衣服好看吗?  
老公:不好看。  
老婆:你就舍不得给我买!  
老公:  

关于拿东西  
老婆:这个袋子你也拿着吧。  
老公:我都拿着四个袋子了,你什么都不拿,好意思吗?  
老婆:那我还挽着你呢!你有100多斤呢,我拿的东西比你拿的东西重多了。  
老公:  

关于吃东西  
老婆:这个话梅我吃了一半,挺好吃的,剩下的给你吃吧。  
老公:我不爱吃话梅。  
老婆:不行,你就爱吃!你是不是嫌弃我吃过的!  
老公:这鱼挺好吃的,来。  
老婆:你得脏筷子碰过,谁吃!  
老公:那你吃过一半我还吃呢,我不嫌弃你,你怎么嫌弃我?  
老婆:那就对了。我嫌弃你说明我比你干净。我比你干净你凭什么嫌弃我?!  
老公:  

关于喝水  
老婆:老公,我要喝水!  
老公:我给你倒去。哎,这水杯不就在你手边嘛,没看见?  
老婆:看见了,我就是想让你递给我。  
老公:  

关于打电话  
老婆:你为什么不给我打电话?!  
老公:倒打一耙!今天不是说好你给我打电话的嘛。结果我等了一天,还是我打给你的。  
老婆:我是说过,可我又改主意了。张爱玲说:女人有改主意的权利。  
老公:那你改主意没跟我说呀!  
老婆:我说了,我心里说的,谁让你和我的心灵不相通的。  
老公:  

关于洗碗  
老公:一会你洗碗?  
老婆:好。  
老公:那怎么还不动啊?  
老婆:我头疼。  
老公:懒死了,不让你洗碗你也不头疼。  
老婆:真的!一想到洗碗我就头疼。  

关于散步  
老婆:咱们一直散步到那条马路吧。  
老公:到那儿太远了,一会儿该走不回来了。  
老婆:没事,你背我回来。  
老公:  

关于干家务  
老公:咱们把家务分分工吧。  
老婆:好。首先,脏活累活得男人干吧。如擦地/刷马桶/擦桌子。。。  
老公:这对。  
老婆:男主外,女主内。和外人打交道的得你干吧,买菜/交水费/取报纸和牛奶。  
老公:这。。。行!  
老婆:你是学理工的,我是学文科的,带电的东西得你干吧,像洗衣机/电冰箱/电饭锅/电熨斗。。。  
老公:行,行,那你干什么?  
老婆:别着急啊,厨房里油烟那么大,可毁皮肤了,做饭也得你干吧。  
老公:你就告诉我你干什么吧.  
老婆:我也有很多要干的呀。我可以陪着你,监督你,赞美你,安慰你。。。。。。  
老公:  

关于爱情  
老婆:“你爱我吗?”  
老公:“噢!”  
老婆:“噢是什么意思?”  
老公:“爱”  
老婆:“爱谁?”  
老公:“你”  
老婆:“不行,你说全了”  
老公:“好”  
老婆:“你快说呀!今天不说完,别想睡觉”  
老公:“我爱你”  
老婆:“这可是你自愿说的哦!我可没有逼你!”  
老公:  

关于异性朋友  
老婆:我可以有男朋友,你不能干涉我。  
老公:行,我也交个女朋友。  
老婆:不行!  
老公:凭什么你行我不行呀。  
老婆:我交男朋友,你做不到的人家能做到,我就不会老挑你的毛病了,有利于家庭幸福。你交女朋友,我心眼儿小,吃醋和你吵叫,不利于家庭安定。  
老公:那我也心眼儿小。  
老婆:一个男人,和女人一样心眼儿小,亏你好意思说!  
老公:  

关于婚外恋  
老婆:现在电视里老演婚外恋,你说,你会有婚外恋吗?  
老公:不会.  
老婆:为什么?  
老公:有你一个我就够后悔的了,决不能再要第二个!!  
然后---  

关于睡觉(一)  
老公:你那么小人,怎么占那么大地儿!  
老婆:那当然,我得翻身,还得伸懒腰呢!  
老公:  

关于睡觉(二)  
老婆:咱们盖那个双人被吧。  
老公:别!那到第二天早上就全裹你身上了。我什么也盖不着。还是自己盖自己的吧,心里踏实。  
老婆:哼,你就是自己盖,到明天早上照样也得被我裹走!  
老公:  

关于起床  
老公:起床了,起床了,你不说今天要早起开会嘛.  
老婆:别吵我,我再睡一会。  
老公:快起来吧,会迟到了。  
老婆:你别碰我!我还要睡啦!!  
。。。  
老婆:呀!都迟到了!你怎么不叫我呢?!  
老公:  

关于吃饭  
老婆:老公,咱们到那里吃饭啊,吃什么?  
老公:你想吃什么?  
老婆:什么都让我决定啊,那我还要你干什么?随便,你说吃什么就吃什么  
老公:那我们去XXX吃XXX吧  
老婆:大怒,又吃这个啊,你能不能有点创意  
每次这样我生气的都想发火  
 
关于真话  
老婆:你看,那女孩多好看。  
老公:好看什么啊。  
老婆:你什么意思!你为什么不和我保持一致!  
老公:好看好看。  
。。。  
老公:哎,你别走啊,怎么不理我了?  

关于孩子  
老婆:咱们要个孩子吧。  
老公:行.  
老婆:那你喜欢咱们的孩子吗?  
老公:喜欢。  
老婆:那不行!你就得喜欢我一个人!  
老公:好,好,我就喜欢你一个人。  
老婆:那我的孩子你凭什么不喜欢阿!  
老公:咱还是别要孩子了。  

关于离婚  
老婆:咱们要是离了婚,房子归我,我的钱我也得拿走。  
老公:那我的钱呢?  
老婆:你的钱都是我的钱,你有什么钱!  
老婆:还有,离婚后你每月的收入也得给我80%。嗯,如果你再结婚了,那就给我60%就成了。  
老公:老婆,我决不跟你离婚!  

关于男女平等  
老公:都说男女平等,咱们家是不是也得平等平等?  
老婆:行啊。你们男的欺负女的欺负了好几千年。等我们也欺负了你们欺负几千年,才是真正的平等呢。别急,再过几千年,咱们家就平等了。  

关于幸福  
老婆:你娶了我是不是特别幸福啊?  
老公:没觉得。你又不讲理,又不干活,还老折腾人,我怎么幸福啊。  
老婆:这就是你的幸福啊。我不讲理,才能反衬出你的宽容大度;我不干活,就培养出了你,所谓艺多不压身,让你能力强还不好吗;我折腾人,你的生活才充满了多彩多姿,你看,你的婚姻生活就不像别人家那么单调吧。
我觉得我好笑就让大家分享分享

2009年4月8日星期三

宇宙史上最神奇的小概率事件发生在中国

声明:为了中国的千千万万上当受骗的彩民,本人愿意为此文负任何法律责任。如果中国福利彩票中心认为本人损害了你们的利益,可以通过查IP、个人资料或直接短信联系本人查找真实身份,我接受你们的任何诉讼!同时也欢迎另外一个孪生兄弟中国体育彩票中心加入诉讼行列!你们都是一窝的。都是宇宙极品骗子的聚集地。只要你们敢通过正当的法律途径、光明正大地告到我,我愿意把牢底坐穿
  
  
  如果真的有幸成为中国福利彩票中心的被告,请看到的网友全程关注。我等待这一天很久了,现在是时候了!
  -------------------------------------------------------------------------------------------------------
  先看数据:
  
  
  第1名:1.138亿元
  
  中奖彩民:甘肃省嘉峪关市彩民
  
  开奖时间:2007年11月27日
  
  中奖金额:1.13836968亿元
  
  中奖方式:投注双色球先全包蓝球6+16,后
  
  以1注单式进行20倍投注
  
  投注金额:72元
  
  -------------
  第2名:6504万元
  
  中奖彩民:黑龙江省哈尔滨市彩民
  
  开奖时间:2007年10月11日
  
  中奖金额:6504.5685万元
  
  中奖方式:对双色球4注号码进行15倍投注
  
  投注金额:120元
  ----------
  第3名:5332万元
  
  中奖彩民:广东珠海一彩民
  
  开奖时间:2009年3月10日
  
  中奖金额:5332万元
  
  中奖方式:对双色球2注号码10倍投注
  
  投注金额:40元
  ------------------------
  
  第4名:5100万元
  
  中奖彩民:浙江省温州市彩民林先生
  
  开奖时间:2008年5月5日
  
  中奖金额:5100万元
  
  中奖方式:对双色球一张单式5注票10倍投注
  
  投注金额:100元
  -------------
  并列第5名:5071万元
  
  中奖彩民:广东珠海一彩民
  
  开奖时间:2009年3月12日
  
  中奖金额:5071万元
  
  中奖方式:对双色球2注号码10倍投注
  
  投注金额:40元
  
  并列第5名:5071万元
  
  中奖彩民:广东深圳一彩民
  
  开奖时间:2009年3月12日
  
  中奖金额:5071万元
  
  中奖方式:10张7+1复式票
  投注金额:140元
  
  ------------------------------
  从数据我们可以看出,中大奖的彩票都是多投票,而且金额很小。中奖者堪称火眼金睛或神算子。从地理位置看:2009年3月10日 广东珠海 2009年3月12日 广东珠海 广东深圳 。
  
  如果这些都不足以证明神奇。那么请看2009年4月6日的福彩双色球的开奖结果:
  双色球09038期开奖,当期开出奖号红色球号码:13、12、23、28、15、32,蓝色球号码:05。本期中出了20注头奖,分别被贵州(17注)、云南(2注)、青海(1注)三地彩民所瓜分,单注中奖金额572万元。
  20注572万出自20个投注站 且都是2元单式票。
  
  我的天啊。。我的神啊。。。。。。福彩中心的人不但懒惰而且小气到了极点。你派几个人全国各地的跑来跑去确实辛苦。但也不要这么小气啊。上次派往广东的那个或许把钱或者用在了别处(珠海小姐可是闻名全世界的,日本人都那么喜欢)。这次到了云贵高原的竟然都是穷光蛋了?其实作假是一件很容易的事情。不就是多派几个人吗?反正中心不缺钱。你们只需拿出微不足道的钱加上不同地点不同的购买方式。我可以保证你们100年不会暴露!但是你们没看到当年陕西的张永民吗?要不是为了一辆宝马斤斤计较怎么会进了牢房?如果你们真的认为全国人民都和你们一样白痴的话,那么你们就是白痴+脑残。这么容易的事情都搞成这个样子,你们不是一般的脑残,是极品脑残!你们是全宇宙最最极品的脑残!因为宇宙史上最“神奇”的小概率事件就是你们制造的!

2009年4月3日星期五

就怕骗子有文化--开发商忽悠大全

偏远地段——远离闹市喧嚣,尽享静谧人生
郊区乡镇——回归自然,享受田园风光
紧邻闹市——坐拥城市繁华
挨着臭水沟——水岸名邸,上风上水
挖个水池子——东方威尼斯,演绎浪漫风情
挖个水沟——亲水豪宅
水能流动——叠水丽景
地势高——视野开阔,俯瞰全城
地势低洼——台地叠景,冬暖夏凉
外立面贴砖——托斯卡纳风格
楼顶是圆的——巴洛克风格
楼顶是尖的——哥特式风格
楼顶是平的——观景露台
户型很烂——个性化设计,紧跟时尚潮流
规划方案奇怪——打破传统
楼间距小——邻里亲近,和谐温馨
能看见一丝海——无敌海景
边上是荒草地——超大绿化,满眼绿意
边上有个公园——公园拥抱的房屋
边上有家银行——紧邻中央商务区
边上有个居委会——中心政务区核心地标
边上有家学校——浓厚人文学术氛围
边上有家诊所——拥抱健康,安享生活
边上有家小超市——繁华闹市
边上有家大超市——闹中取静
边上有家大商场——与LV为邻
项目缺商业配套——纯居住社区
边上有五星酒店——CBD核心区
边上有四星酒店——后CBD
边上有三星酒店——泛CBD
边上有经济型酒店——这里充满朝气
有会所——豪宅配套,尽享银行家俱乐部的风雅
没有会所——简约生活,新都市主义
有中水设备——绿色住宅
有集中供暖——节能环保,领先时代
地板采暖——韩国领先技术
柱式散热器——北欧风情
没有采暖——自由式供暖系统,节约采暖成本
有壁炉——欧陆风情
没有壁炉——可自设壁炉,空间布置灵活
没有电梯——洋房
有电梯——两梯两户(含楼梯)
门口有保安——管家式服务
门口没保安——和谐的邻里关系
挨着地铁线——一线生活
挨着地铁口——立体交通
公交车多——交通枢纽,坐拥城市繁华
没有公交——私属领地,坐拥升值空间
离主干道远——你能听到的只有“宁静”
紧邻主干道——你到任何地方永远只有一步
紧邻经济适用房——本区域市政条件即将改善
70/90项目——精致三居,创意无限
非70/90项目——高尚社区
有书房——拥有知识,拥有世界
没有书房——网络生活
做了个样板间——体验式营销
光积累客户不卖——蓄势待发,闪亮登场
客户多了就涨价——倍受追捧
卖不动打折——回报客户
还卖不动再打折——回报社会
业务员天天讲解——接待客户
领导给客户讲解——产品说明会
客户上网查资料——网上全是对我们的评价
业内人士上网——市调

2009年3月31日星期二

面朝大海,春暖花开

很喜欢,再来一次
===================================
从明天起,做一个幸福的人
  喂马,劈柴,周游世界
  从明天起,关心粮食和蔬菜
  我有一所房子,面朝大海,春暖花开
  
  从明天起,和每一个亲人通信
  告诉他们我的幸福
  那幸福的闪电告诉我的
  我将告诉每一个人
    
  给每一条河每一座山取一个温暖的名字
  陌生人,我也为你祝福
  愿你有一个灿烂的前程
  愿你有情人终成眷属
  愿你在尘世获得幸福
  我只愿面朝大海,春暖花开

2009年3月30日星期一

一首老去的童谣

胖娃胖嘟嘟,骑马上成都,
  
成都又好耍,胖娃骑白马,
  
白马跳得高,胖娃耍关刀,
  
关刀耍得圆,胖娃滚铜圆,
  
铜圆滚得远,胖娃跟倒撵,
  
撵又撵不上,白白跑一趟。

2009年3月24日星期二

仁•《论语》

克己复礼
己所不欲,勿施于人
爱人
己欲立而立人,己欲达而达人。

我们都是有罪的人

看了这篇帖子,很难受。
我庆幸我还有感觉难受,生活在这个麻木的世界,还有这么点感觉,也算是一种幸运。
这是天灾还是人祸?
===============================================================================

看到艾未未先生博客里公布的遇难学生名单,心情沉痛到无法用语言描述。血往上涌,泪往下流。想到万千生命灰飞烟灭,祖国的花朵从此凋谢,我真是死的心都有了。

如果按照官方去年11月21日公布的19065名遇难学生人数,艾未未和他的朋友分期分批公布的1579名孩子,只占了全部遇难学生总数的8.28%。未来有一天,全体遇难学生的名字会镌刻在汶川地震遇难者纪念碑上。面对45.7%的学生死亡率,面对长长的名单,面对一串串一眼望不到尽头的密密麻麻的名字,我不知道到那时我有没有勇气仰望纪念碑上孩子们的笑脸。眼下面对1579个最小2、3周岁,最大十八、九岁的孩子的名字,已经感觉支撑不住。我浏览了所有孩子的资料,发现有三个孩子生日是5月12日,其中一个生于1990年,遇难那天刚满十八周岁,还有一个叫冯佩佩的女孩于,生于1994年,还有一个更小。我离开电脑,走到窗户下,深呼吸,一次再次,还是觉得窒息。

官方在敷衍,民间在行动。我们都来支持艾未未和他的朋友,为争取在地震一周年到来之际在网络上公布全体遇难学生的名字尽力而为!还有57天,还有1368个小时,还有17486个孩子的名字等待我们一个一个地公布,我们要争分夺秒,我们要只争朝夕,只有这样才能安心,也只有这样才能让天堂里的孩子们安息!

按照艾未未博客里提供的学生家长手机号码,试着给一个叫湛谢的北川中学高一7班学生的家长张宋春发了一个短信。不知这孩子是男孩还是女孩子,也不知这位家长是父亲还是母亲,没多想就发了,只想问候一声。没多久,有短信回复过来。是孩子的妈妈。她说她叫张康春,女儿十六岁,叫谌谢不是湛谢。她说地震夺去了女儿,丈夫又在车祸中去世了,她现在居无定所,孤单一人。她还发来了十六岁女儿的彩照,打开一看,一个长相甜美的女孩冲着我展颜一笑,泪水夺眶而出,失声痛哭。

看来工作量太大,死亡率太高,政府又指望不上,仅靠艾未未和他朋友及好心人的努力,要核实一万多遇难学生的准确名字、性别和学校、遇难地点、家长姓名、地址、联系方式等等具体内容,的确是一件难度很大的事情。盼望政府及早将遇难学生的全体名单公布于众,让真相大白于天下。既然是自然灾害,事情又过去300多天了,有什么必要遮遮掩掩呢?夜长梦多,日久生变,越拖越被动,对自己有什么好处呢?教育主管部门有档案,学校有名册,又是星期一下午出事的,不在校上课的学生是极少数,公布核准后的人数和名单怎么就为难成那样?

现在如果有人走过来对我说,民主不是灵丹妙药,西方民主不适合中国国情。中国不具备现阶段搞民主的环境。我什么不说也不会反驳,我会直接飞起一脚将他踹倒。告诉他这就是我的回答。我没有出过国也没有出过境,从来没见过西方民主长的什么样,但就是再被忽悠一万次我也不会上当了,我也知道西方民主肯定不是中国现在这个样!也不是港澳那个样!

每次开N大,都会密切关注zz改革,当每次的希望落空时,总想着也许时机不成熟,也许还没到时候,也许下一届就会讨论这个问题。再耐心一点吧,再等等吧,现实是个什么样,存在哪些致命问题,党又不傻,怎么会看不出来呢。想了一遍又一遍,盼了一年又一年,直到5.12天崩地裂,当一万多个孩子灰飞烟灭的那一刻我才被震醒了,终于明白,没有民主光有经济的发展是何等畸形的不等式,如果我们再等下去,我们都将断子绝孙,我们都将死无葬身之地!MZ不是等来的,我们也不能再等了!

总是为我党着想,总是为他们操心,总觉得他们的本意和愿望是好的,虽然造孽无数也干了不少好事,许多事情也是情非得已。当年的事政府有罪但学生也有错,也不能全盘否定政府。这20年里虽然有诸多的不满意,虽然眼睁睁看着腐败象毒药一样在侵蚀国家的肌体,环境污染日甚一日,但生活水平确实提高了,加入了世贸组织又办成了奥运会,总体也还过的去。

然而,现实不是这样,现实是孩子们走了,永远也回不来了!是豆腐渣工程造成了如此巨大的伤亡,是 “二分天灾,八分人祸”把我们的孩子害死了!那豆腐渣是怎么来的呢?追根溯源还得回到20年前,那时很少有豆腐渣工程,所以我们体会不深,对学生的反腐呼声不闻不问,深究起来我们都有责任,该我们说话的时候我们一声不吭,现在报应来了!

这就是妥协和退让的报应。既然我们都不说话,容忍并纵容不义的人和不义的事长期存在,那我们就活该付出代价。13亿中国人平均每个人要为0.0000672个地震遇难者承担罪的工价(总计87449名遇难失踪人员),其中每个中国人还要为0.0000146个遇难学生(学生死亡19065名)特别承担罪的工价。

我自信这个账算的很公平。不要对我辩解说,我不是官员我不腐败,我不是承包商也不是校领导,豆腐渣工程与我毫不相干。贪污、腐败分子和道德沦丧、堕落者不是从别的星球移民到中国来的,他们来了也不是生活在真空里,他们违法犯罪是因为有违法犯罪的环境、机会、气候和时间、空间,没有你、我、他,没有大家日积月累,积少成多的功劳来成全他们贪赃枉法、唯利是图的欲望,960万平方公里的土地上根本不可能形成这种当今如此不可收拾的糟糕局面,所以我们都要负责,我们手上都有血债。

想到过要为自己的妥协和退让付出代价!N次想过N种结局,但万没想到代价这么大,让一万多个孩子用生命来为我们开辟道路,我想当物换星移的那一天终于来到时,我们没有一个人能称得上是胜利者,没有一个D能说自己赢了,也应该没有一个人能轻松地笑出来,因为是孩子们付出了巨大牺牲,他们用万千生命为代价推动了国家的MZ,最终换来了几代人奋斗了一生而没有到手的那两个字的东西。

我们都是罪人,我们都活在同样的罪里!孩子们的死我们都有责任,我们都是杀人犯,人人都有份,一个也不能少!13亿中国人都要向孩子们忏悔,全体中国人民应该千秋万代诅咒并忏悔自己对罪的容忍、纵容和妥协退让!

2009年3月20日星期五

奇闻怪事

1.没有一张纸可对折超过9次

2.根据统计每年骡子所杀的人比飞机失事所死的人还多

3.人睡觉比坐着看电视所消耗的卡路里还多

4.第一种有条形码的对象是香口胶

5.Wright’s Brother发明飞机后第一次试飞的路程比一架波音747飞机的飞机翼还短

6.1987年,美国一间航空公司将每个头等机位的飞机餐减少一粒橄榄后,节省了约35万港元

7.很多人每朝起来都喝一杯咖啡提神,但其实一个苹果比一杯咖啡还有效

8.你的家中多数尘埃都是你的死皮

9.洋娃娃Barbie 全名是Barabra Millicent Roberts

10.希特勒的妈妈在怀有希特勒时曾认真地考虑堕胎,不过被医说服,结果把他生下来

11.玛丽莲.梦露有6只脚趾

12.电影里,ET的脚步声是由一位工作人员用手将o者o里榨烂

13.珍珠在醋中会溶

14.登寻找情人广告中,有35%是已婚人士

15.你有可能将一只牛拉上楼梯,但牛是不懂下楼梯的

16.猪不能仰头望天空

17.‘quick brown fox jumps over the lazy dog' 可以用尽26个字母

18.鸭的叫声是不会有回音的,暂时没有人知何解

19.蜗牛可不吃东西睡3年

20.著名影星Tommy Lee Jones与美国副总统曾经是哈佛大学同房

21.如果一个月中,第一天是星期日,那个月便出现黑色星期五

22.把石头放在微波炉中加热会爆炸

23.1,111,111 x 1,111,111 = 1234567654321

24.唯一一个有15英文字母而又不会重复是的英文字’uncopyrightable’

25.猫可发出超过100个音,狗却只能发10个音

26.愈黑的环境下,猫的排尿次数会增加

27.将一个硬币向上抛1000次,字向上的次数是495次,不是500次,因为公较重

28.根据牛顿字典世界上最长的英文字是'pneumonoultramicroscopicsilicovolcanoconiosis’

29.人体的胃每2个星期便会更新一次分泌物,否则它会自我消化

30.可乐原是绿色的

31.夏威夷文只得12个字母

32.走路上班的人最高比率的省是阿拉斯加

33.如果Barbie是人类,她是身形是39-23-33

34.美国平均每小时在空中的人有61000人

35.只有一种食物不会变坏:蜜糖

36.在加勒比海附近有一种蚝是会爬榭的

37.世界上最年轻的父母在1910年出现,一个8岁及另一个9岁的中国人

38.人顃的鼻及耳是毕生都不断长大

39.日本有一种正方形的西瓜,为的是方便收藏

40.海星有8只眼,每只脚都有一只

41.有些昆虫的眼是有毛

42.一条长颈鹿的舌头有2尺长

43.大象可用头来站立

44.蚂蚁早上醒来会抓痒

45.伟大发明家爱迪生是怕黑的

46.世上最老的金鱼是41岁,名叫Fred

47.爱因斯坦9岁时不能流利说话,他妈妈曾经一度以为他是弱智

48.阿拉伯的女人可以因为丈夫不为她倒咖啡而提出离婚

49.只有55%的美国人知道太阳是一个星体

50.多数唇膏是有鱼鳞的

51.长颈鹿没办法咳嗽

52.猫头鹰是唯一能够分辨?#123;色的鸟类

53.一只鲸鱼一分钟心跳只有九下

54.我们喝到肚子里头的水已经有三亿岁了

55.只有百分之三十的人可以放大缩小自己的鼻孔

56.一只牡蛎的性别会由男变女,此后一生中还会变个几次

57.根据一项1845年由英国通过的法律,自杀是非常严重的罪,最重可以处以吊死的极刑

58.在太空中航天员是没办法哭的,因为没有地心引力,眼泪流不出来

59.一只变色龙的舌头是它自己身体的两倍长

60.最常用牙签的人是美国人

61.一个正常人的眼部肌肉一天平均要动上一万到一万五千次

62.大象死后还会保持站立姿势

63.有些昆虫没有头还可以再活上一年

64.达芬奇光是画蒙那丽莎的嘴唇就花上十二年

65.玻璃破掉时,玻璃碎片的时速最高可达每小时三千英哩

66.乳牛听音乐时可以供应更多牛奶

67.下午摘下的玫瑰比清晨摘下的玫瑰更能持久不枯萎

68.虎鲨的胚胎在母亲的子宫里需经过激烈的搏斗,胜利者就是可以活着出生的小虎鲨

69.一只70磅的章鱼可以穿过一个仅一枚银币大小的洞,因为他们没有脊椎

70.印尼竹节虫是全世界最大的昆虫,有些光是身长就有一呎长

71.其实,河马跑得比人快

72.降落伞的发明人把第一次乘坐降落伞的机会让给了一只狗

73.一只日本大螃蟹可能长达12呎

74.刚出生的小火鸡要有爸爸妈妈教导如何吃东西,不然会饿死

75.一只鲨鱼可以侦测到水中仅百万分之一含量的血液

76.桑巴舞的森巴原来的意思是一起磨肚脐吧

77.小孩子在春天长得比较快

78.蝙蝠是唯一能飞的哺乳动物

79.一只毛虫身上有超过两千条的肌肉

80.人的心脏可以产生把血液喷出三十尺高的压力

81.公的合掌螳螂头还在身体上的时候没办法交配,所以,母的合掌螳螂在进行交配之前,先要把雄的头

砍掉

82.虾米的心脏在头部

83.你永远不可能用你的舌头舔到你的手肘

84.世界人口50%的人从来都没有接过电话

85.老鼠和马不能呕吐

86."Sixth Sick Sheik's Sixth Sheep's Sick "是英文中最难以发言的一个句子

87.打喷嚏过于强劲了,会导致胸腔破裂,但是如果你想要将这个喷嚏强行忍住,却会导致你头或者是脖

子中某个血管的破裂

88.如果你打电话超过一个小时,那么你耳朵里的耳屎会增加大概700倍左右

89.打火机是比火柴更早发明出来的

90.据说,在你睡觉的时候,在你不知不觉中,你会吃入七十多种虫子和十多只蜘蛛

91.人类全身上下,最强韧有力的肌肉,竟是舌头

92.张开眼睛打喷嚏是不可能的

93.憋气自杀也是不可能成功的

94.每一次你舔一张邮票的背胶,你就吸收了十分之一卡路里

95.右撇子平均比左撇子多活九年

96.鱼无法伸出它们的舌头

97.北极熊都是左撇子

98.鸵鸟的眼睛比脑袋大

99.海星至今还没演化出脑

100.跳蚤可以跳过它们350倍身长的距离,相当于一个人跳过一个美式足球场

2009年3月16日星期一

picasa隐藏文件

1. 您的图片小于 250 x 250 像素或您的标签可能只包含大小小于 250 x 250 像素的图片。Picasa 自动隐藏小于 250 x 250 像素的小图片。要查看您的文件夹中包含的所有小图片,请进入"查看">"小图片"。要查看图片的像素值,请在屏幕左下角位置选择图片并查看其像素值(例如 640 x 480)。也可以右键单击图片,然后从下拉菜单中选择"属性"。

2. 您已在 Picasa 中隐藏图片。如果是这样,您应该可以在图片库中看到隐藏文件夹图片集。要取消隐藏文件夹,请首先单击"隐藏文件夹"图片集。需要输入为进入图片集而指定的密码。可以右键单击文件夹后选择"取消隐藏文件夹",以取消隐藏文件夹。要取消隐藏单张图片,请进入"查看">"隐藏图片",然后右键单击要取消隐藏的单张图片。从菜单中选择"取消隐藏"。

3. 您已选择从硬盘中删除图片。Picasa 并不存储图片的副本,因此如果您从硬盘中以物理方式删除了图片文件,则无法再在 Picasa 中查看该图片。

4. Picasa 无法查看 Windows 中隐藏的图片。

3. Picasa 不会显示 Picasa 选项中没有选中其文件类型的图片。可以单击"工具">"选项",然后单击"文件类型"标签,设置想 Picasa 查看的文件类型。

2009年3月13日星期五

成都22条旅游指南

哈哈,个人感觉相当贴切

第一条:不要在成都人面前说自己不喜欢喝茶和坐茶馆,这会使成都人觉得你是一个不懂得生活,一心只会赚钱的经济动物。
第二条:不管你的四川话说得多么标准,只要一听说大熊猫就显出稀罕劲,一定不会被当成成都人,因为成都人最不觉得稀奇而外地人觉得很了不得的,就是那个戴着黑眼镜永远只能照黑白照片的家伙。
第三条:不要轻视成都人对太阳的稀罕,对于这座把阳光当成节日来看待的城市,许多生意是要看太阳面子而做的。
第四条:千万不要指望能在“农家乐”里体会到成都农民的真实生活,那里只有农民们根据自己对现代生活理解而搞的种种自以为城里人会喜欢的生活翻版。机麻,抽水马桶和标准间式的住处,只能让你感觉到不过是把宾馆搬到乡下来而已。
第五条:开车进成都城,请千万不要左转,太多的禁左标志将成都搞成一座来了不能左转的城市。
第六条:除非你是维吾尔族姑娘,否则不要和成都女孩子比白。如果你恰好是维吾尔族或白种人,那么成都女孩子就会和你比皮肤的细和嫩。
第七条:不要以为到成都就吃饭就一定要带个防辣口套,其实川菜中不辣菜越来越多,这是川菜全球化进程中的必然演变。
第八条:不要太过于强调自己外地人的身份,因为成都人心目中,没有太强的排外意识,他们不会像上海人和广东人那样,将自己城市以外的人称为乡下人。往回溯三代,几乎有一半以上的成都人都是外乡人,他们像水融进海绵一样深深地进入到这座城市中。
第九条:不要流露出你讨厌麻将,说不定和你聊天的人,刚从一场麻将下来。
第十条:不要在成都男人面前讲“大男子主义”的好处,这样会引发一场如何疼老婆的辩论赛。
第十一条:不要以为成都话松软好听,吵架只是“比牙齿白”,你要是手中有一本成都话词典,就能听懂对方表情不凶不带脏字骂出来的话,那是足以让小气的人去自杀的。
第十二条:不要对“节日”大惊小怪,在成都,一年四季,光是本土的各种特色节日就有一百八十多个,加上国际的国内的土的洋的,几乎每天都在过节。
第十三条:不要轻易说小排量车的坏话,说不定接待你的主人,就是开着一辆奥托车来接你的。
第十四条:不要在成都人对你说普通话时发笑,即便你没有任何恶意,也会被对方理解为你对他的“椒盐”普通话的嘲笑,欲知他在和你说话之前,决定是否要用普通话,是需要进行一番挣扎和纠结的。
第十五条:不要给成都人讲“生活在别处”,没有万不得已的理由,成都人是不会愿意到外地工作的。
第十六条:别轻易和漂亮的成都小妹妹套近乎,说不定在不远处,她的宠物——一头巨型的狗在瞪着你呢。
第十七条:没结婚的男人,如果没确定要来成都定居,最好别来成都,这样免得你在成都生活一段时间,看惯了可爱美丽的女孩子之后,再也看不顺眼自己家乡的女孩子。
第十八条:在“谁不说咱家乡美”的语言比赛中,不要试图拿气候来和成都人说事,这相当于给了他们超强的子弹,他们会说成都的气候比海南凉爽比东北暖和比西部润泽,总之一定要争个赢。
第十九条:星期天不要在春熙路问路,因为这个时段,在那条成都最热闹的街上走着的,多数都是外地人。本地人呢?都开车出城玩去了。
第二十条:不要因为听说成都有许多诗人,就把扎辫子的男人当成艺术家,说不定他是守自行车或收废品的。
第二十一条:在成都,不要从衣著来区分一个人的经济状况,因为许多成都人铭记“财不露白”的古训,不会过多地在面子上做功夫。连大富豪刘永好,买衬衣都是一百元左右一件的。而说不定你面前开辆破捷达的男人,正是几天前五百万彩票的得主。而那些浑身名牌油光水滑的主,说不定是来骗你饭的混子。
第二十二条:不要试图在成都三环路以内看到正宗的川戏,这个古老的剧种除了在极少数涉外旅游景点有高价演出之外,已基本退出了成都人的生活。

2009年3月12日星期四

《春江花月夜》

春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!
江流宛转绕芳甸,月照花林皆似霰;空里流霜不觉飞,汀上白沙看不见。
江天一色无纤尘,皎皎空中孤月轮。江畔何人初见月?江月何年初照人?
人生代代无穷已,江月年年只相似。不知江月待何人,但见长江送流水。
白云一片去悠悠,青枫浦上不胜愁。谁家今夜扁舟子?何处相思明月楼?
可怜楼上月徘徊,应照离人妆镜台。玉户帘中卷不去,捣衣砧上指还来。
此时相望不相闻,愿逐月华流照君。鸿雁长飞光不度,鱼龙潜跃水成文。
昨夜闲潭梦落花,可怜春半不还家。江水流春去欲尽,江潭落月复西斜。
斜月沉沉藏海雾,碣石潇湘无限路。不知乘月几人归,落月摇情满江树。

2009年3月10日星期二

谁在为楼市“叫春”?

http://cache.tianya.cn/publicforum/content/house/1/139848.shtml
  暖春三月,万物复苏,正是草长鸢飞的季节。在这股暖流中,房地产市场弥漫着一片“叫春”之声。开年后股市强劲反弹,大盘暴涨,让众多发霉的股民们如打了鸡血似的兴奋不已,房地产市场也局部出现成交量的大幅反弹,于是股民们和开发商一片狂呼:冬天已远,春天来矣。一些腕儿级学者和专家跟在媒体后面也一个劲的鼓吹楼市暖风,熏得股民们和开发商们如痴如醉,以为真的是“牛市”之兆了。
  
  迟来的“小阳春”让许多开发商都莫名兴奋,“反弹 ”成了坊间流传最广的潮流词汇。莫非这短暂的春暖花开中,真的是中国房地产的春天来了吗?我看且住,“回暖”尚早,“春寒”却在!“叫春”其实本没什么错,正常的欲望,正常的需要,问题是中国房市在2007年纵欲过度之后遭遇重创以致肾亏严重、阳痿不举,难道真的吃了几剂政策的补药就又可以成为金刚不坏之身了?
  
  当前楼市和股市,与2007年年初何其相似,在成交量上升和股市大涨的热呼中,所有人都认为“牛市”来了,大喊“雄起”,而对其虚弱多病的体质视而不见,于是在“全民炒股”、“全民抢房”、“全商抢地”的运动中,2007年全国房价普遍“高烧”不退。最后疯狂圈地的开发商们,不得不强咽下自己高价买来的苦酒。前车之鉴,不可不察。只见树叶,不见森林,小心被狼吃掉。
  
  在楼市“小阳春”现象背后,其实是几家欢喜几家愁。有的楼盘成交量剧增,有的楼盘依然门可罗雀。有的数钱数的笑嘻嘻,有的愁钱愁的要跳楼。看着对手的成交量霍霍往上窜,有的开发商坐如针毡,天天逼着策划人员想对策。有的开发商被短期升涨的成交量所迷惑,准备立即停止在售楼盘的降价促销策略,思考着是不是该提价了。理由是成交量上升了,市场正在“回暖”,没有必要再降价了,再降就赚不到钱了。这显然是盲目的乐观。我们不难发现,卖的好的楼盘,依然是降价幅度较大,性价比较高的楼盘,这些楼盘以低总价,可变面积,多功能等特性迎合了大部分刚性自住型置业需求。而姿态高傲,价格高企的楼盘,依然少有问津。所以“小阳春”现象值得担忧。
  
  那么当前楼市真的“回暖”了吗?或者牛市已指日可待了吗?我看未必。有两个严重的问题不可忽视,一个是严重的金融危机惯性与政策效应淡化,一个是严重的市场供需矛盾。
  
  先说第一个问题。金融危机惯性使得民众购买力普遍减低。
  
  美国次贷危机引发的全球金融海啸依然惯性的向前冲,虽有各国政府全力积极应对,但全球经济依然未有复苏迹象。奥巴马的一揽子经济刺激方案也无法拯救美国 14家银行于倒闭破产之境地。在这场全球性的金融危机中,尽管各国政府都积极采取了前所未所有财政和货币政策应对,但实际效果甚微,全球经济依然一片痿迷,因此宏观环境的恶劣气侯,使社会对房地产行业的投资意欲受到严重打击。这表明政策效应正在淡化。
  
  当中国出口驱动型经济增速显著放缓时,依靠刺激国内内需带动经济发展显然显得有点杯水车薪。目前老百姓在银行的储蓄率太高,而消费率太低,这是中国经济目前的根本问题。为什么?因为老百姓不敢消费,或者不敢乱消费。如果政府一系列的经济刺激方案仍然不能带动经济的增长,不能增加更多的就业岗位,不能有效增加民众的收入水平,不能增强民众对未来的信心,则当前股市和楼市的狂热将可能是一场来得快也去得快的旱雨。因此在一片“回暖”声中,投资者其实需要更为谨慎。
  
  其实目前房价的下跌并非完全需求不足,而是受整体外部环境与国内经济因素影响。一方面国家信贷政策并没有对开发商完全松绑,相关限制仍较多,银行仍以风险控制为由,对房地产实行信贷紧缩,因此惜贷将造成开发商资金链风险扩大化,开发商为回收资金不得不降价促销;另一方面,未来经济前景仍未完全明朗,老百姓对未来经济和收入预期都不乐观,在金融危机打击下社会民众收入水平普遍减低,市场对未来楼市普遍看淡,这种看空的强大心理预期将导致未来房价继续走跌,而价格下跌趋势一旦形成,短期内不会立即扭转,购买力的不足,又将迫使房价存在进一步下调可能,因此这也使得当前的政策效应逐渐淡化。
  
  再说第二个问题。目前楼市最大的问题不是资金链风险,而是“供应过剩”。
  
  2006年成都市城区(三环内)供应成交土地总面积6400余亩,2007年成都市城区供应成交土地总面积5400 余亩。因此2006-2007年仅城区供应成交土地面积就达1万多亩,受金融危机和汶川地震影响,商品房和开发土地的空置率大大上升,实际已开发土地不到 5000亩,土地闲置率约50%;而成都市未来两年还将有约11565亩土地等待供应用于住房建设。
  
  2008年成都全年商品房供应面积达2244万平米,其中住宅供应面积达2102万平米,商业用房预售供应面积 142万平米。以成都市主城区为例,2008年新增住宅供应1001万余方,成交量仅为590万方左右,商业用房供应142万平米,成交量仅40万平米左右,严重供大于求,市场观望气氛蔓延,购买需求严重下滑; 2007-2008年预售商品房存量总计将达22万余套,如果按每月10000套的去化速度算(显然有点痴人说梦),至少还要两年才能消化完。加上 2009年成都计划供应的11万余套商品住房(其中以套型建筑面积90平方米左右为主),建筑面积达1051万平米,去掉农迁房与安置房,也至少有8万余套的压力,故未来两至三年成都将面临严重的供需失衡,而这种结构性矛盾将直接影响未来房价走势,成为楼市的拖累。(祥见《成都市2008-2009年住房建设计划》)
  
  在2007年楼市高峰期,房地产的暴利让所有有钱人都感到狂热,开发商基本上是赚富人的钱,消费群体锁定有钱人,因此在“全民抢房”运动中,主要是投资性消费在支撑着楼市泡沫。而一旦市场紧缩,投资性需求就会消失得无影无踪,而政策调控的目的主要是促进首次置业及改善型置业消费,关注的是中低端消费群体,投资者已经被踢出局。因此这个时侯大量的存量土地和存量房源就普遍面临“供应过剩”之危。由于存量大、消化困难,将逼迫开发商加快推盘和降价销售。因此如果大量被压抑的投资性需求不能有效被政策调控激活,则开发商未来将面临更严重的资金压力焦烤。
  
  不管目前的“小阳春”现象如何鼓惑人心,我认为都需要保持客观冷静,不可盲目乐观。对未来大势和房价走势如果缺乏基本面的准确判断,则盲目追涨是要付出沉重代价的。这种“小阳春”现象,我认为是基于08年底部分抄底反弹,因压抑太久,故暴发得有点突然。根据国家统计局数据,截至2008年12月底,全国商品房空置面积达1.64亿平方米,同比增长21.8%。整个市场严重供需不平衡,房子很多,但需求并没有得到满足。这是非常恐怖的。
  
  在各地积极救市政策与财政补贴政策的推动下,积累已久的自住型需求在经过半年的消化后已趋减弱;在一片“叫春”声中,刚性需求的反弹已经基本式微。而改善型居住需求的进一步释放,则取决于房价的下跌空间与政策的继续推动,以及购买力的成长速度。但显然2008年信心回落、存量高企以及价跌量缩的困境并未改观。因此在普遍的社会舆论影响下,预计中国楼市的下行趋势仍然短期内难以改变。在资金压力与需求痿缩下,未来房价或将还要酝酿新一轮下跌。
  
  写到这里,惊闻闹得沸沸扬扬的“房地产振兴规划”之争终于以房地产落选十大产业规划振兴计划而尘埃落定,这似乎是某种暗示,在强大民生与民意面前,房地产将被彻底出局,尊重市场才是硬道理,因此,降与不降,是您的事。

2009年3月6日星期五

《挪威的森林》中的寓言

在《挪威的森林》中,村上构造了一个现代寓言:一个个人如何在自我与现世间达成一个平衡。

直子在信中对渡边说:“……你不像我,你不可能轻易地钻入自己的壳中,你总能随便做些什么来使自己解脱。”
永泽对渡边说:“……需要的不是理想,而是行为规范。”

直子在矛盾的这一端:彻底地把自己封闭在自我中;永泽在矛盾的另一端:彻底地掌握在现世中游戏的规则。自我与现世的规则在他们两个人身上完全分裂,水火不容。

§§§§§§§§
玲子的女学生、直子的姐姐也在永泽的一端。

玲子的女学生是现世规则的化身。她的自我已经完全异化到现世的规则里。她自如地运用这些规则,将周围的人玩弄在指掌之上。她只为掌握别人而来,但她在掌握别人的同时也彻底丧失了自我。

直子的姐姐一样也把握住现世的规则。但她的自我并没有异化到规则里,她仅仅是主动忽视了自我——即便在她最抑郁的时候,她仍能给直子最细致的关怀。自我与现世的规则在她身上分别是两个独立的成分,她能自如地运用规则,可她的自我又微弱又封闭……

永泽既彻底掌握了现世的规则,也拥有内向的力量。不过,只要两者稍微冲突,他会毫不犹豫地践踏自我,勿论是别人的还是自己的。但不让人讨厌的是,他从来不会因为规则而出卖自我。

§§§§§§§§
木月、初美则在直子的一端。

木月拥有最可珍贵的自我——“没有一点坏心和恶意”,但在意识里却最在乎对现世规则的掌握——“那个也要干,这个也要改”。他不能珍视那最可珍贵的自我,却无限鄙视不能最好地掌握现世规则的自己。

初美一样拥有令人心颤的自我,但与木月不同的是,她一直珍视自己的自我,而并不在意永泽在规则上的潇洒。但最后,她发现自己单纯的自我无法与现世相容。“拯救”初美也许不应该是一个特别难的事情——只要有一个人能像渡边在乎直子的纯粹的自我一样在乎她的单纯的自我。

直子完美的“黑暗中的裸体”是纯粹的自我的象征。但她只能在彻底摆脱现世的一种特别的意识状态里才完全接受它,并把它自然地展现在渡边的眼前。一旦到了现世中,她就会延续木月的努力。这种努力也没有什么,可悲的是直子不能珍视自己的自我。

勿论永泽、直子的姐姐,还是直子、木月,他们都将现世的规则尊为意识中最重要的东西,同时或者忽视自我,或者践踏自我。所以,他们的活着都恰似在地狱中。

§§§§§§§§
普通的芸芸众生则存在于这两端间某一个位置片断。

绿子的父亲既不知道规则,又不理会自我。他只是战战兢兢地活着。

绿子的民谣俱乐部的同学也将规则奉为至高无上的存在,为了规则他们会毫不犹豫地出卖自我——这是他们令人生厌的地方。他们的自我因以服务于规则为目的而势必将越来越虚假。

敢死队的让人好笑的地方是,他将自我异化到一个简单的世俗的规则中,并且就像初美珍视她的“童年憧憬”一样珍视这个异化进自我的规则,以为这就是地道的生命了。

大多数人也将重视规则,但总还能胆战心惊地为自我留下一点可怜的地盘。他们虽然不相信,但能感觉到这点可怜的地盘相当重要,只是非到特殊时候根本不知道珍惜——这是我们多数人的可怜的生存境地。

§§§§§§§§
绿子、玲子是两个特殊的人,也许不能简单地把她们放到自我与现世间的某一个位置片断。

与直子相反,玲子恰恰是在阿美寮中获得了自我——“我从四岁就开始弹钢琴,但想起来,却连一次都没有为自己弹过”。她的风疚抖纳莆耸Χ 急砻魉故钦莆樟吮匾南质拦嬖颍淖晕乙恢倍继趿恕Mü⒚厘嫉?年生涯,尤其是直子和渡边,她最终在现世和自我间达成了一个微弱而和谐的平衡。在《挪威的森林》中,只有玲子一人达成了这样的一个平衡。
玲子的信应是解读《挪威的森林》之寓言的关键:“纵令听其自然,世事的长河还是要流向其应流的方向,而即使再竭尽人力,该受伤害的人也无由幸免。所谓人生便是如此。……有时候你太急于将人生纳入自己的轨道。假如你不想进精神病院,就要心胸豁达地委身于生活的河流。”

绿子的最特别的地方是,她直接从现世中寻找滋养她的自我的养分——这在《挪威的森林》中也是一个绝无仅有的例子。她是现世中唯一的亮色。每当渡边因直子鄙弃她的纯粹的自我而沉溺在泥潭时,绿子可以拉她出来;每当渡边对噪杂的现世感到厌烦时,绿子又让他感到现世的珍贵。

《挪威的森林》的结尾应当是一个破绽:因为直子,在自我和现世间走钢丝的渡边已经彻底到过井底;因为玲子,渡边似乎能够找到一个微弱的平衡;而真正的平衡就应当在他和绿子的关系里。但村上却给出一个忽然茫然起来的结尾:“我是在哪里也不是的处所连连呼唤绿子。”——好像一个倾向是,渡边可能要再次往自我的方向走一走,所以要非常有距离感地呼唤忽然远去的绿子。

……

中国人墓志铭

我们生在中国,
我们葬在中国;
我们所有的不幸,
只有这么两个!

躺在里面的,
再也不必假装死了;
留在外面的
还要继续假装活着。。

现代犬儒主义

现代犬儒主义是一种“以不相信来获得合理性”的社会文化形态。现代犬儒主义的彻底不相信表现在它甚至不相信还能有什么办法改变它所不相信的那个世界。犬儒主义有玩世不恭、愤世疾俗的一面,也有委屈求全、接受现实的一面,它把对现有秩序的不满转化为一种不拒绝的理解,一种不反抗的清醒和一种不认同的接受。犬儒主义在其它现代社会的大众文化中也存在,但是普遍到一般人觉得左手、右手之间的信任都出现了危机的情况却并不多见。这种危机是整个公众政治和道德生活危机的冰山一角。当今中国社会的犬儒主义不只是一种单纯的怀疑戒备心态,而更是一种人们在特定的统治和被统治关系中形成的生存方式。与这一统治和被统治关系有关的犬儒主义,分别表现为在上者的第四权威和在下者的现代现实主义。一、犬儒主义和后极权社会 犬儒主义(cynicism)的鼻祖是公元前五到四世纪希腊的底约基尼斯(Diogenes),他的哲学一反当时浮夸的哲学和社会习气,以行动而非理论向世人展示他的贫困哲学。为了证明人对尘世物质要求越少便越自由,他生活在一个桶里,以最低生存需求来生活。雅典人因此称他为“犬”。以节欲克己来谴责人间超度的权力行为,使得犬儒主义成为一种社会讽刺和批判哲学。在底约基尼斯那里,犬儒主义还是一种以无所求来保持思想独立的理想哲学。古代的犬儒主义具有三种倾向,一是随遇而安的非欲生活方式,二是不相信一切现有价值,三是戏剧性的冷嘲热讽。 从公元三世纪起,犬儒主义开始分化出在下者和在上者的犬儒主义。对于在下者即普通人来说,犬儒主义是一种任人摆布的勉力生存和宣泄愤懑的方式。正如杜德雷(D. R. Dudley)所说:“犬儒主义者是布道人,他们所布之道是,不管世道怎么个变法,日子总得过下去。”下层人面对世道的不平和权势的强梁,没有公开对抗的力量和手段,冷嘲热讽和玩世不恭便成为他们以谑泄怒的主要表现形式。对于在上者即权势精英来说,犬儒主义则是一种对付普通老百姓的手段。公元三世纪的享乐主义哲学家西欧多罗斯(Theodorus)就已经开始将犬儒主义精英化和权术化。西欧多罗斯是克兰尼贵族,是享乐主义哲学的代表。享乐主义和犬儒主义虽然在物质享乐问题上针锋相对,但却都鄙视现存价值(前者认为它不够理解享乐,后者则认为它过于沉溺于享乐),因此而有了衔接的可能。和底约基尼斯一样,西欧多罗斯强调的是智者和平常人的区别,但他更强调智者有权设置自己特殊的游戏规则。智者是自我完足的,适用于傻子们的规范标准并不适用于智者,一无所有的生活对傻子们有好处,但对“我们”智者就未必。智者并不相信过苦日子有什么好,但“过苦日子好”这个想法却能让傻子们安于本分。从西欧多罗斯起,在上者的犬儒主义就成了权力精英设置双重标准,说一套做一套,把普通人当傻子来控制的政治伎俩。 在现代社会中,互相联系的上下分层犬儒主义表现就更为复杂。现代社会各领域的分化和各自建立的领域规范使得权势政治和大众日常生活的道德规范经常处于冲突状态。冠冕堂皇的政治理想和令人失望的政治表现之间的差距使得普通人对政治敬而远之,甚至视之为不道德的事业。现代大众对政治冷漠,他们的犬儒主义其实往往包含了一种波维斯(T. Bewes)所说的“崇高的、升华了的价值尺度”,它往往“把抽象的真理和正直看得远比政治美德所强调的行动和想象来得重要。大众犬儒主义发自大众受压抑的道德意识,是一种大众对现代政治功利伦理的无可奈何的不满和抗议。不管多么无奈,大众犬儒主义毕竟表现了大众某种独立的自我意识。 并非所有的现代社会都有大众犬儒主义存在。在控制严厉有效的现代极权社会中,犬儒主义基本上是不存在的,因为绝大多数人生活在强制相信的状态下。真正有效的正统意识形态统治,其控制能力不只表现在扑灭异端思想,而更表现在封杀异端思想的可能滋生空间。以二十世纪法西斯主义和斯大林主义为经验背景的大众社会理论所强调的正是极权意识形态对大众思想统治的绝对有效性。极权社会的“大众”指的不只是人数众多,而更是众人彼此隔离、相互疏离的状态。极权统治下的大众不断受到政治运动激励,不断处于动员状态之下,因此而聚合为“群众”,更确切地说,是“革命群众”。极权制度中,合众为群的关键力量是一个力行政治专制的群众政党。正如法国政治学家勒夫特(C. Lefort)所说,“群众政党是极权主义的绝佳工具,国家和民间社会因此而成为一体。在每一个公开场合,党都体现了权力的原则;它传播某种普遍规范,使得这规范似乎出自社会本身。”群众社会不断处在“积极行动命令”之中,并以此形成绝对整体的大众社会。极权统治用敌我对立(阶级斗争)意识形态来统治社会。在极权社会中,没有人敢承认自己游离于公共政治之外,没有人敢公然对政治表示冷漠和怀疑,更不要说对它冷嘲热讽。奥维尔的《一九八四年》所描绘的正是一幅不容冷漠和怀疑存在的极权社会图景。这不是一个绝对没有邪思的社会。极权制度下的邪思是“双重思想”,不是犬儒思想。双重思想者对自己思想的罪孽深信不疑,对自己所犯的思想罪行一面恐惧万分,一面却欲罢不能。他一面心存侥幸,但愿能免遭暴露,但一面却知道不可能永远侥幸。正如罗森(P. Roazen)所说,双重思想是一种“病”,“只有用双重思想才能理解双重思想”。经历过文化大革命的人都不难理解双重思想的恐惧和罪孽感。与双重思想相比,犬儒思想并不带有自我罪孽感。在它那里,怀疑正统成为一种常态思想。无论从认知还是从道义来说,不相信都是常态,相信才是病态;相信是因为头脑简单,特容易上当。犬儒思想者也不再受恐惧感的折磨,因为他知道人人都和他一样不相信,只是大家在公开场合不表明自己的不相信罢了。 当专制制度中“双重思想”让位于犬儒思想的时候,极权的铁牢已经转化为后极权的“丝绒牢笼”。犬儒思想的生存空间给人一种后者比前者自由的感觉,乐观者甚至声称后极权制度已经产生了“半独立的”民间社会。但这种“自由”是极有限度的,因为它是一种受制者的自由。即使在事实上没有干涉或不太可能干涉的情况下,受制者仍处于脆弱的状态,因为统治者随时可能进行干涉,受制者不受干涉的限度是由统治者安排的,受制者和统治者都知道这一点。正是这种受制地位,使得受制者即使在不再相信统治者的情况下,也必须按统治者所定的规则继续玩假装相信的游戏。把受制者的自由炫耀为真正的自由, 这本身就是后极权制度下一种特有的犬儒主义。 极权和后极权统治都依赖意识形态的谎言控制,即乔治.奥维尔所概括和描述的“新说法”(Newspeak)。哈维尔(V. Havel)曾这样列举了极权和后极权的“新说法”:“生活中渗透了虚伪和谎言;官僚统治的政府叫做人民政府;工人阶级在工人阶级名义下被奴役;把彻底使人渺小说成人的完全解放;剥夺人的知情权叫做政令公开;弄权操纵叫做群众参政;无法无天叫做遵法守纪;压制文化叫做百花齐放;帝国影响的扩张被说成是支援被压迫人民;没有言论自由成了自由的最高形式;闹剧式的选举成了民主的最高形式;扼杀独立思考成了最科学的世界观;军事占领成了兄弟般的援助。因为该政权成了自己谎言的俘虏,所以它必须对一切作伪。它伪造过去,它伪造现在,它伪造将来。它伪造统计数据。它假装没有无处不在、不受制约的警察机构。它假装尊重人权,假装不迫害任何人。它假装什么也不怕,假装从不做假。” “新说法”是后极权权势犬儒主义最集中的体现。“新说法”“表述了官方意识形态核心思想”,成为权力规定真理的根本手段。那些代表“官方真理核心”的思想(如“阶级斗争”或“四项原则”)将公众语言变为禁固思想的统治工具,“新说法的语言作用,不仅在于言说官方理论,更在于杜绝它异思想的发生。”随着极权统治有效思想控制条件(专制政党的可信度记录,与世隔绝的经济和信息存在方式,意识形态和政策的一致性,等等)一一消失,后极权统治的思想控制已经不再具有实质效力。但它仍具有表面的效力,统治者和被统治者都知道这一点。统治者的绝对权力仍控制着公众空间,仍有能力将被统治者的怀疑和不信都排除在公开话语之外。这种后极权意识形态统治产生的是一种不容说理的政治犬儒主义。它的关键不在于说什么,而在于为什么能这么说;不在于说了你信不信,而在于就是你不信,你也不敢公然说出不信。后极权政治犬儒主义心照不宣地把普通人当傻子,它所行使的是一种特别的统治权威的合法性,古德法勃(J. C. Goldfarb)称之为第四种合法性,我们不妨称之为第四权威。 第四权威玩弄意识形态,其犬儒主义手段不仅表现在它如何继续运用旧的意识形态信条,如“社会主义”、“党领导一切”等等,而且也表现在它如何引进一些新的政治理念,并对之作所谓“中国特殊性”的处理,如具有中国特色的“民主”和“人权”。第四权威建立在受制者不相信,但又不能公开说出不相信的基础上。因此,它完全不同于威柏(M. Weber)所说的那三种以取信于受制者而获得合法性的权威形式(理性法制、个人魅力和传统)。第四权威之所以得以建立,乃是“因为统治者对于公开知识的垄断是得到受制者公开认可的。当然,受制者也没有别的办法。但是,只要没有人公开质疑这种垄断,它就无须提供说明,无须负任何责任。”当权者必须在确保大众不敢反对的情况下,才能公然把他们当傻瓜对待,也只有在大众不公开反对的情况下,才能维持其犬儒式统治。 与在上者第四权威共生的,是在下者即普通人的弱者犬儒主义。它是一种对现实的不反抗的理解和不认同的接受,也就是人们平时常说的“难得糊涂”。弱者犬儒主义使在下者在并不真傻的情况下,深思熟虑地装傻。既然我没法说真话,那么你要我怎么说,我就怎么说,我不这么说也得这么说,由不得我心里想说什么。我照你的说,不见得有好处,但不照你的说,说不定就有麻烦。我知道我照你的说,你未必就相信我,未必就拿我当回事;但我不照你的说,你肯定会说我不拿你当回事。既然你要的不过是我摆出相信的样子,我又何必在说真话上面空费心思。这种颇费心思的不相信和谎言,它们所形成的犬儒主义,便是古德法勃所说的“现代现实主义”,这里的现实指的主要是完全假面化了的公众领域和公众话语机制。二、假面化的公共生活和犬儒式抵抗 专制权力垄断控制公共话语领域,公众生活被强制性地假面化,这是后极权社会中体制性的犬儒主义的特征。凡是专制权力,都需要用美妙崇高的公共话语为自己作道义包装,但受制的大众对这种包装的相信程度却不相同。事实上,相信或不相信这一包装乃是区别极权和后极权这两种专制社会的一个重要标志。这一区别对于区分大众所受的不同种类的意识形态控制也同样具有重要意义。极权的强势统治和后极权的弱势统治是两种不同形式的意识形态控制。前者以洗脑的方式迫使大众参与,不断共同再生统治他们自己的社会制度;后者则以不让公开说话的方式迫使大众相信现存的社会制度为不可改变。前者要使大众觉得现有社会秩序是最为合理美好的(如“文化大革命就是好”);后者则要使他们觉得现有秩序即使不好也不宜改变(如“一搞民主就乱”)。前者将现状合理化,以达到最高程度控制;后者将现状自然化,以达到较低程度的控制。在低程度意识形态控制的社会中,现实失去了意识形态的道义支撑,大众对缺乏支撑的现实却又无力改变。这种无力感便不可避免地表现为对整个公众生活(包括政治和公共道德)的冷漠。 在民主社会中也存在政治冷漠的问题。政治冷漠甚至是民主社会中大众犬儒主义的主要表现。但是,民主社会中的犬儒主义并不涉及整个公共生活领域,它对政治的失望也不延伸为对公共道德的失望。相反,人们疏远政治,往往是因为他们觉得普通公民在社区、宗教和社会运动(如民权、环保与和平)等公众领域中活动,比在政治中更能维持出色的道德水准。大众对政治的失望与政治活动的虚伪有关。但是,在民主国家中,政治虚伪受到权力制衡和舆论的遏制;政治家不可能老是说一套做一套而不被选民唾弃。所以,政治虚伪与其说是因为权力把持了真理的论坛,还不如说是因为政治理念和实践之间本来就存在着差异。 中国大众对政治冷漠,则是长期体验虚假政治的现实教育结果,国内论者对此已多有论述。王蒙在谈到王朔作品中的玩世主义时指出,“首先是生活亵渎了神圣,……我们的政治运动一次又一次地与多么神圣的东西--主义、忠诚、党籍、称号直至生命--开了玩笑,……是他们先残酷地‘玩’了起来,其次才有了王朔。”王力雄则指出,“邓小平时代的意识形态空壳化”,将“‘公有经济加极权政治’(马克思加秦始皇)”改换为“资本主义加极权政治”,使得极权政治因失去了社会主义的道义目标而成为赤裸裸的极权。王力雄写道:“邓把‘实践’奉为唯一标准所导致的挂羊头卖狗肉,对于回避行为与意识形态的分裂固然聪明一时,却由此腐蚀了意识形态之所以可以立身的基础--真诚。‘不争论’进一步导致了说一套做一套的言行不一,形成近年中国官场一大特色--集体心照不宣地‘打左灯向右转’。犬儒主义成了主流价值观。” “说一套做一套”形成了当今中国犬儒文化的基本特点。它不仅弥漫于政治领域中的公开话语,而且成为社会普遍的欺诈、虚伪和腐败行为不成文的规范。按此规范言论行事已成为人们日常活动的自我保护手段和生存技能。人人都说谎、都作假的状态常被解释为是大众的个人道德意识出了问题。其实,如此犬儒化的社会所面临的与其说是个人道德危机,还不如说是公众生活规范危机。公众生活的道德规范和个人道德良知不同,它并不依赖“良心”的维持,它的维持机制是法制(以民主程序所产生和执行)、舆论(以自由言论为基础)和传统(以长期形成的民间正义为核心)。充斥着腐败和谎言的公众生活,不是没有规范,它有它自己的规范,它的规范就是虚假。 从社会批评的角度来看,虚假只是假面化公众生活的症兆,而其症结则在于理性社会规范机能的坏死。理性社会机能就是民主的机能。在民主法制和独立舆论比较完善的社会中尽管也存在虚假和腐败现象,但民主法制和独立舆论能将这些现象的危害降至最低的程度,使之不能恶化为全社会公众生活规范的制度性危机。当今中国社会中,法制由专断权力所操纵,舆论为权力充当喉舌,传统的民间正义无法作为独立舆论介入公众体制。普通人在虚假和腐败问题上抱犬儒主义态度,不仅仅是因为虚假和腐败充斥于现实秩序之中,而更是因为现有秩序已不再能提供解决这些问题的体制性条件。 大众犬儒主义对现有的、假面化的公众生活秩序既有妥协和参与的一面,又有不满和抵抗的一面,这两个方面本来就是犬儒主义乞行天下、冷嘲热讽这两个特征的结合。前一个方面使得大众犬儒主义成为现有公众领域的一部分,成为一种与之相协调的现象。后一个方面则使它疏离现有的公众领域,成为假面公众领域边缘处的批评立场。这一批评立场的领域性质相当暧昧,它与其说是个人的,还不如说是下层的;与其说是异端的,还不如说是受制的;与其说是独立的,还不如说是衍生的。大众犬儒主义的这些性质使得它形成了独特的民间性,也使得它得以从制度性的公众生活领域(政治的、经济的和文化的)及其犬儒主义脱离出来,形成一种特殊的弱者抵抗形式。 民主社会中对大众犬儒主义的批评,大多强调它与现实妥协的一面。批评者大多认为,在民主制度中,犬儒主义不同于批评理性,它是一种非理性的否定和怀疑,因此它与民主政治文化的理性共识机制不合。勒纳(M. Lerner)指出,“犬儒主义不象理性怀疑主义那样相信人可以改变世界。”对犬儒主义的批评, 其合理性必须从民主公共话语空间的自由度来理解。民主公共话语空间既不排斥犬儒式怀疑,也不排斥理性批评,但是只有理性批评才对民主公共话语空间有建设性的贡献。你可以和持理性批判的怀疑者作理性探讨,但你无论如何也不能说服犬儒主义者,因为“犬儒主义象是抱定宗教信仰般地不相信有任何根本变化的可能。” 在非民主社会中,对现有经济、政治和文化统治的质疑和反对不可能自由进入公共话语领域。无论是持理性批评的怀疑还是根本拒绝相信的犬儒主义,它们都只能存在于公共话语的边缘或之外。对大众犬儒主义的评价当然也就不能只是着眼于它与并不存在的民主理性政治文化是否和谐。大众犬儒主义明显的边缘性和不自由状态,凸现了它相对于官方话语的受制性和由此生发的不满。 表示不满的民间大众犬儒主义,其冷嘲热讽的主要表现形式是市井流传的笑话、传言、歌谣、顺口溜和种种异类文艺。它所包含的拒绝和抵抗具有高度的隐蔽性和伪装性。对于它来说,“公开表现的条件是,它相当隐晦和曲折,可以作两面不同的阅读。其中一面是不招惹当局的,这一面也许有些乏味,但却因此留下了一条全身而退的后路。”除了隐晦和曲折,这类民间或大众文化存在的另一个条件是不与统治性的公开语本正面冲突,“民间文化的暧昧和多义,只要它不直接与统治者的公开语本对抗,就能营造出相对独立的自由话语领域来。” 民间犬儒主义是一种扭曲的反抗,它折射出公众生活领域的诚信危机及其公开话语的伪善,但它却不是在说真话,更不是一种公民们公开表示异见的方式。犬儒式反抗对于建立理性、诚实的民主公众话语的正面贡献是极为有限的。民间犬儒主义的某些形式,包括一些痞子文学(如王朔的一些作品)和异类艺术(如“波普艺术”和“玩世绘画”),在反对政治神话的同时,往往借助大众消费文化制造出一个新的神话--市场神话。异类思想在面对政治和经济双重挤压的时?无法依靠犬儒表现来保持独立的批判理性。市场本身就是当今中国最主要的权势犬儒的本源之一。市场操作不择手段地谋利,唱的却是发展社会福利和提升中国地位的爱国高调,它的说一套做一套并不比政治权势逊色。就其犬儒主义操作而言,大众商业文化对异类文化的利用和它对爱国主义话语的利用并无性质上的区别。在公民的民主权利和自由言论受到限制的情况下,大众商业文化不可能为民间犬儒主义提供一个转化为独立批评的理性空间。要想改变民间犬儒主义扭曲性的反抗,或者甚至改变当今中国上下互动的体制性犬儒主义,最终还得从建立允许说真话、鼓励说真话、必须说真话的理性公民社会秩序着眼。
本文来自: 人大经济论坛(http://www.pinggu.org) 详细出处参考:http://www.pinggu.org/bbs/b29i63155.html

犬儒主义

起源
  犬儒主义学派是古希腊四大学派之一(犬儒主义学派,斯多亚学派,伊壁鸠鲁学派,新柏拉图学派)一般认为是苏格拉底的弟子安提斯泰尼创立的,另一人物第欧根尼(公元前404-公元前323)则因为住在木桶里的怪异行为而成为更有名的犬儒主义者。当时奉行这一主义的哲学家或思想家,他们的举止言谈行为方式甚至生活态度与狗的某些特征很相似,他们旁若无人、放浪形骸、不知廉耻,却忠诚可靠、感觉灵敏、敌我分明、敢咬敢斗。于是人们就称这些人为“犬儒”,意思是“像狗一样的人”。至于这个称谓是不是肯定来源于此,学界的观点并不一致。
  另外一种说法是指安提斯泰尼经常到雅典的一个被人们叫做“快犬”的体育场去和人们谈话、辩论,在这个地方形成了他的思想和观点的最初的追随者队伍,因而被称作“犬儒派”。“犬儒主义”则由这一学派的观点理念和生活行为演化而来。
[编辑本段]
犬儒主义历史
  犬儒主义最初关心的事情是道德问题。犬儒学派的学者认为人的美德是获得幸福的唯一要件,换言之,拥有美德完全足以获得幸福。犬儒学派的学者以此为准绳,摒弃一切他们认为“不能让他们达到完美的幸福”的事物,最终在哲学上走向了某种极端。因此,“犬儒”一词即衍生自希腊语的“狗”,意为像狗一样摒弃社会、家庭责任、对金钱的追求甚至个人健康,以达到美德的极致,获得完美的幸福。
  受到这种思想的启发,狄奥根尼(安提斯泰尼的弟子)几乎裸身并且没有携带任何补给便周游了整个希腊,享受了阳光、温暖等一切自然的恩赐,并且聚集了几千个皈依他的思想的人,并向他们讲述这个社会是多么值得讽刺。甚至亚历山大大帝也在东征的途中拜访过狄奥根尼,狄奥根尼劝说亚历山大大帝放弃东征,然而亚历山大大帝拒绝了,理由是“我的命运已经注定”。
  狄奥根尼去世后,后人在他的墓碑上刻了一条狗,以表示他信奉的“犬儒主义”。
[编辑本段]
基本思想
  犬儒学派的主要教条是,人要摆脱世俗的利益而追求唯一值得拥有的善。犬儒学者相信,真正的幸福并不是建立在稍纵即逝的外部环境的优势。每人都可以获得幸福,而且一旦拥有,就绝对不会再失去。人毋须担心自己的健康,也不必担心别人的痛苦。犬儒学派对之后的斯多噶学派产生了深远的影响。
[编辑本段]
后期变化
  随着犬儒理念的流行,犬儒主义的内涵发生了微妙的根本变化。早期的犬儒主义者是根据自身的道德原则去蔑视世俗的观念;后期的犬儒主义者依旧蔑视世俗的观念,但是却丧失了赖为准绳的道德原则。
  因此后期的犬儒主义者普遍有这样的想法:既然无所谓高尚,也就无所谓下贱。既然没有什么是了不得的,因而也就没有什么是要不得的。这样想法的结果是,对世俗的全盘否定变成了对世俗的照单全收,而且还往往是对世俗中最坏的部分的不知羞耻的照单全收。于是,愤世嫉俗就变成了玩世不恭。
  一个关于犬儒主义者德勒斯的例子,某富翁送给他一笔钱,他收下了,对富翁说:“你慷慨大度地施舍给我,而我痛痛快快地取之于你,既不卑躬屈膝,也不唠叨不满。”
  犬儒主义(Cynicism)是个外来词,中文里本来没有现成的对应词汇,通常将它理解为讥诮嘲讽、愤世嫉俗、玩世不恭。
  和玩世不恭恰恰相反,早期的犬儒是极其严肃的,狄奥根尼是一个激烈的社会批评家。他立志要揭穿世间的一切伪善,热烈地追求真正的德行,追求从物欲之下解放出来的心灵自由。狄奥根尼确实愤世嫉俗,他曾经在光天化日之下提着一个灯笼在城里游走,说:“我在找一个真正诚实的人。”
  随着犬儒哲学的流行,其内涵开始发生了微妙的变化。后来的犬儒派们发表宏论,竭力鼓吹清贫生活的无比美好,甚至把人们正常的感情也讥为愚蠢。一位名叫德勒斯的犬儒派就说:“我的儿子或妻子死了,那难道就有任何理由应该不顾仍然还在活着的我自己,并且不再照顾我的财产了么?”超脱到了这一步,未免就有些矫情,就和冷酷分不清界限了。还是这位德勒斯,某富翁送给他一笔钱,他收下了,对富翁说:“你慷慨大度地施舍给我,而我痛痛快快地取之于你,既不卑躬屈膝,也不唠叨不满。”这里暗含的逻辑是,金钱本是无所谓的东西,我若拒绝你的馈赠,倒显得我把金钱看得太重,太当回事了。我若收下金钱又表示感谢,那也是把金钱看重了,当回事了。因此,正确的做法就是,只要你肯给,我就若无其事地收下它。不要白不要,要了也白要。这种态度看上去很洒脱,但好像又有些无耻。这到底是怎么一回事呢?问题在于,金钱本来是重要的东西,不是不重要的东西。只不过在生活中还应该有别的东西比金钱更重要。所以,在坚持更高价值的前提下看轻金钱是高尚的;没有更高的追求却又摆出轻视金钱的姿态就不是高尚而只能是做作了,因此,倘若是无功受禄,正常人总会感觉不安。这就是德勒斯以不把金钱当回事为理由而若无其事地收下别人的馈赠,会给人以不知廉耻之感的原因。早期的犬儒派是依据一种道德原则去蔑视世俗的观念,后期的犬儒派依然在蔑视世俗的观念但却失去了依据的道德原则。这就引出了一个始料不及的后果:既然无所谓高尚,也就无所谓下贱。既然没有什么东西是了不得的,因而也就没有什么东西是要不得的。不难想象,基于这种无可无不可的立场,一个人可以很方便地一方面对世俗观念做出满不在乎的姿态,另一方面又毫无顾忌地去获取他想要获取的任何世俗的东西。于是,对世俗的全盘否定就变成了对世俗的照单全收,而且还往往是对世俗中最坏的部分的不知羞耻的照单全收(别充假正经)。于是,愤世嫉俗就变成了玩世不恭。
  狄奥根尼坚持真善,揭穿伪善,这种批评精神被后来者扭曲得面目全非。一位人称嘲讽者吕西安的犬儒派以揭穿伪善的名义,压根否认世间存在有真善。在吕西安笔下,那些天真地追求德性的人都不过是大傻瓜而已。按照这派人的看法,世间之人只有两种,要么是真小人,要么是伪君子。犬儒一词后来的含义就是把人们一切行为的动机都归结为纯粹的自私自利。不错,犬儒派既嘲讽有权有势者,也嘲讽无权无势者,但前者并不在乎你的嘲讽,“笑骂由人笑骂,好官我自为之。”后者却必须赢得人们的同情支持。所以,犬儒派客观上是有利于强势者不利于弱势者。这样,犬儒派就从现存秩序的激进批评家变成了既得利益者的某种共犯合谋。
  犬儒一词的演变证明,从愤世嫉俗到玩世不恭,其间只有一步之差。一般来说,愤世嫉俗总是理想主义的,而且是十分激烈的理想主义。玩世不恭则是彻底的虚无主义。偏偏是那些看上去最激烈的理想主义者反倒很容易转变为彻底的虚无主义者,其间原因何在?因为,许多愤世嫉俗的理想主义者在看待世界时缺少程度意识或曰分寸感,对他人缺少设身处地的同情的理解,不承认各种价值之间的紧张与冲突,这样,他们很容易把世界看成一片漆黑,由此便使自己陷入悲观失望,再进而怀疑和否认美好价值的存在,最终则是放弃理想放弃追求。“世界既是一场大荒谬、大玩笑,我亦惟有以荒谬和玩笑对待之。”一个理想主义者总是在现实中屡屡碰壁之后才变成犬儒的,但正如哈里斯所言:“犬儒不只是在过去饱尝辛酸,犬儒是对未来过早地失去希望。”
  说来颇具讽刺意味,早期的犬儒是坚持内在的美德和价值,鄙视外在的世俗的功利。可是到后来,犬儒一词正好变成了它的反面:只认外在的世俗的功利,否认内在的德性与价值。王尔德说:“犬儒主义者对各种事物的价钱(price)一清二楚,但是对它们的价值(value)一无所知。”
[编辑本段]
现代犬儒主义
  现代犬儒主义是一种“以不相信来获得合理性”的社会文化形态。现代犬儒主义的彻底不相信表现在它甚至不相信还能有什么办法改变它所不相信的那个世界。犬儒主义把对现有秩序的不满转化为一种不拒绝的理解,一种不反抗的清醒和一种不认同的接受。
  “说一套做一套”形成了当今犬儒文化的基本特点。“世界既是一场大荒谬,大玩笑,我亦惟有以荒谬和玩笑对待之。”
  犬儒思想并不带有自我罪孽感。在它那里,怀疑正统成为一种常态思想。无论从认知还是从道义来说,不相信都是常态,相信才是病态;相信是因为头脑简单,特容易上当。犬儒思想者也不再受恐惧感的折磨,因为他知道人人都和他一样不相信,只是大家在公开场合不表明自己的不相信罢了。
  它是一种对现实的不反抗的理解和不认同的接受,也就是人们平时常说的“难得糊涂”。犬儒主义者意指并不真傻的情况下,深思熟虑地装傻。既然我没法说真话,那么你要我怎么说,我就怎么说,我不这么说也得这么说,由不得我心里想说什么。我照你的说,不见得有好处,但不照你的说,说不定就有麻烦。我知道我照你的说,你未必就相信我,未必就拿我当回事;但我不照你的说,你肯定会说我不拿你当回事。既然你要的不过是我摆出相信的样子,我又何必在说真话上面空费心思。
  麦克米兰英语词典-American的解释:
  cynicism
  cyn·i·cism / ′sɪnɪsɪzəm /
  noun [uncount]
  1 the belief that people care only about themselves and are not sincere or honest
  2 the belief that things will not be successful or useful
  3 the attitude or behavior of someone who is willing to let other people be harmed in order to get an advantage

2009年3月5日星期四

IPV4和IPV6在APR中的用法

由于APR中仅仅使用apr_sockaddr_t结构描述套接字地址,因此其余的各类描述信息最终都要
转换为该结构,APR中提供apr_sockaddr_info_get函数实现该功能:
APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa,
const char *hostname,
apr_int32_t family,
apr_port_t port,
apr_int32_t flags,
apr_pool_t *p);
该函数允许从主机名hostname,地址协议族family和端口port创建新的apr_sockaddr_t地址,
并由sa返回。
hostname参数允许是实际的主机名称,或者也可以是字符串类型的IP地址,比如
”127.0.0.1”,甚至可以是NULL,此时默认的地址是”0.0.0.0”。
family的值可以是AF_INET,AF_UNIX等系统定义类型,也可以是APR_UNSPEC类型,此时,地
址协议族由系统决定。
flags参数用以指定Ipv4和Ipv6处理的 优先级,它的取值包括两种:APR_IPV4_ADDR_OK和
APR_IPV6_ADDR_OK。这两个标志并不是在所有的情况下都有效,这可以从函数的实现中看出它的
用法:
{
apr_int32_t masked;
*sa = NULL;
if ((masked = flags & (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK))) {
if (!hostname ||
family != APR_UNSPEC ||
masked == (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK)) {
return APR_EINVAL;u
}
#if !APR_HAVE_IPV6
if (flags & APR_IPV6_ADDR_OK) {
return APR_ENOTIMPL;
}
#endif
}
#if !APR_HAVE_IPV6
if (family == APR_UNSPEC) {
family = APR_INET; v
}
#endif
return find_addresses(sa, hostname, family, port, flags, p); w
}
从实现代码可以看出,函数的内部实际的地址转换过程是由函数find_address完成的。不过在
调用find_address之前,函数进行了相关检查和预处理,这些检查和预处理包括:
1、APR_IPV4_ADDR_OK标记只有在hostname为NULL,同时family 为 APR_UNSPEC的时候才会有
效,而APR_IPV6_ADDR_OK和APR_IPV4_ADDR_OK是相互排斥的,一旦定义了
APR_IPV4_ADDR_OK,就不能使用APR_IPV6_ADDR_OK,反之亦然。只有在hostname为NULL,同时
family 为 APR_UNSPEC并且没有定义APR_IPV4_ADDR_OK的时候APR_IPV6_ADDR_OK才会有效。
2、如果操作系统平台并不支持IPV6,同时并没有限定获取的地址族,那么此时将默认为IPV6。
如果指定必须获取IPV6的地址信息,但系统并不提供支持,此时返回APR_EINVAL。
一般情况下,在IPV4中从主机名到网络地址的解析可以通过gethostbyname()函数完成,不过
该 API不允许调用者指定所需地址类型的任何信息,这意味着它仅返回包含IPV4地址的信息,
对于目前新的IPV6则无能为力。一些平台中为了支持IPV6 地址的解析,提供了新的地址解析
函数getaddrinfo()以及新的地址描述结构struct addrinfo。APR中通过宏HAVE_GETADDRINFO
判断是否支持IPV6地址的解析。目前Window 2000/XP以上的操作系统都能支持新特性。为此APR
中根据系统平台的特性采取不同的方法完成地址解析。
首先我们来看支持IPV6地址解析平台下的实现代码,find_address函数的实现如下:
static apr_status_t find_addresses(apr_sockaddr_t **sa,
const char *hostname, apr_int32_t family,
apr_port_t port, apr_int32_t flags,
apr_pool_t *p)
{
if (flags & APR_IPV4_ADDR_OK) {
apr_status_t error = call_resolver(sa, hostname, AF_INET, port, flags, p);
#if APR_HAVE_IPV6
if (error) {
family = AF_INET6; /* try again */ u
}
else
#endif
return error;
}
#if APR_HAVE_IPV6
else if (flags & APR_IPV6_ADDR_OK) {
apr_status_t error = call_resolver(sa, hostname, AF_INET6, port, flags, p);
if (error) { v
family = AF_INET; /* try again */
}
else {
return APR_SUCCESS;
}
}
#endif
return call_resolver(sa, hostname, family, port, flags, p); w
}
从上面的代码可以清晰的看到APR_IPV4_ADDR_OK和APR_IPV6_ADDR_OK的含义:对于 前者,函
数内部首先查询对应主机的IPV4地址,只有在IPV4查询失败的时候才会继续查询IPV6地址;
而后者则与之相反,对于给定的主机名称,首先查 询IPV6地址,只有在查询失败的时候才会
查询IPV4。因此APR_IPV4_ADDR_OK和APR_IPV6_ADDR_OK决定了查询的优先性, 任何时候一旦
查询成功都不会继续查询另外协议地址,即使被查询主机具有该协议地址。
查询的核心代码封装在内部函数call_resolve中,该函数的参数和apr_sockaddr_info_get函
数的参数完全相同且对应,call_resolve中的宏处理比较的多,因此我们将分开描述:
static apr_status_t call_resolver(apr_sockaddr_t **sa,
const char *hostname, apr_int32_t family,
apr_port_t port, apr_int32_t flags,
apr_pool_t *p)
{
struct addrinfo hints, *ai, *ai_list;
apr_sockaddr_t *prev_sa;
int error;
char *servname = NULL;
memset(&hints, 0, sizeof(hints));
hints.ai_family = family;
hints.ai_socktype = SOCK_STREAM;
#ifdef HAVE_GAI_ADDRCONFIG
if (family == APR_UNSPEC) {
hints.ai_flags = AI_ADDRCONFIG;
}
#endif
在了解上面的代码之前我们首先简要的了解一些getaddrinfo函数的用法,该函数定义如下:
int getaddrinfo(const char *hostname, const char *service, const struct addinfo
*hints,struct addrinfo **result);
hostname是需要进行地址解析的主机名称或者是二进制的地址串(IPV4的点分十进制或者Ipv6
的十六进制数串),service则是一个服务名或者是一个十进制的端口号数串。其中hints是
addfinfo结构,该结构定义如下:
struct addrinfo {
int ai_flags; /* AI_PASSIVE, AI_CANONNAME,
AI_NUMERICHOST */
int ai_family; /* PF_xxx */
int ai_socktype; /* SOCK_xxx */
int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
size_t ai_addrlen; /* length of ai_addr */
char *ai_canonname; /* canonical name for nodename */
struct sockaddr *ai_addr; /* binary address */
struct addrinfo *ai_next; /* next structure in linked list */
};
hints参数可以是一个空置针,也可以是一个指向某个addrinfo结构的指针,调用者在该结构
中填入关于 期望返回的信息类型的暗示,这些暗示将控制内部的转换细节。比如,如果指定的
服务器既支持TCP,也支持UDP,那么调用者可以把hints结构中的 ai_socktype成员设置为
SOCK_DGRAM,使得返回的仅仅是适用于数据报套接口的信息。
hints结构中调用者可以设置的成员包括ai_flags,ai_family,ai_socktype和ai_protocol。
其中,ai_flags成员可用的标志值及含义如下:


ai_family参数指定调用者期待返回的套接口地址结构的类型。它的值包括三 种:
AF_INET,AF_INET6和AF_UNSPEC。如果指定AF_INET,那么函数九不能返回任何IPV6相关的地
址信息;如果仅指定了 AF_INET6,则就不能返回任何IPV4地址信息。AF_UNSPEC则意味着函数
返回的是适用于指定主机名和服务名且适合任何协议族的地址。如果某 个主机既有AAAA记录
(IPV6)地址,同时又有A记录(IPV4)地址,那么AAAA记录将作为sockaddr_in6结构返回,而A
记录则作为 sockaddr_in结构返回。
if(hostname == NULL) {
#ifdef AI_PASSIVE
hints.ai_flags |= AI_PASSIVE;
#endif
#ifdef OSF1
hostname = family == AF_INET6 ? "::" : "0.0.0.0";
servname = NULL;
#ifdef AI_NUMERICHOST
hints.ai_flags |= AI_NUMERICHOST;
#endif
#else
#ifdef _AIX
if (!port) {
servname = "1";
}
else
#endif /* _AIX */
servname = apr_itoa(p, port);
#endif /* OSF1 */
}
#ifdef HAVE_GAI_ADDRCONFIG
if (error == EAI_BADFLAGS && family == APR_UNSPEC) {
hints.ai_flags = 0;
error = getaddrinfo(hostname, servname, &hints, &ai_list);
}
#endif
if (error) {
#ifndef WIN32
if (error == EAI_SYSTEM) {
return errno;
}
else
#endif
{
#if defined(NEGATIVE_EAI)
error = -error;
#endif
return error + APR_OS_START_EAIERR;
}
}

2009年2月25日星期三

墨子说:国之将亡,必有七患

子墨子曰:國有七患。七患者何?
城郭溝池不可守而治宮室,一患也。
邊國至境四鄰莫救,二患也。
先盡民力無用之功,賞賜無能之人,民力盡於無用,財寶虛於待客,三患也。
仕者持祿,游者愛佼,君脩法討臣,臣懾雨不敢拂,四患也。
君自以為聖智而不問事,自以為安彊而無守備,四鄰謀之不知戒,五患也。
所信不忠,所忠不信,六患也。
畜種菽粟不足以食之,大臣不足以事之,賞賜不能喜,誅罰不能威,七患也。
以七患居國,必無社稷;以七患守城,敵至國傾。七患之所當,國必有殃。

墨子说:国之将亡,必有七患
1国防之患:不修国防 大兴宫殿 粉饰太平
2外交之患:大敌当前 外无盟友 孤立无援
3财政之患:分配不公 铺张浪费 穷尽民用
4内政之患:仕皆渔私 修法禁言 不问国是
5国君之患:闭门自大 标榜先进 坐以待毙
6团队之患:用人不当 小人当道 离心离德
7政权之患:民无食用 国无贤能 赏罚失威

墨子的国家忧患战略:

1.内政上:说忠行义,尊天志敬鬼神,爱利百姓
2.物质上:发展生产,节约官场消费,保障民生
3.军事上:科技强兵,重视国家防御,保障安全
4.心理上:居安思危,警惕突发变故,心有备虑
5. 外交上:和平外交,外结近邦盟友,礼交邻国

2009年2月18日星期三

世界人权宣言

1948年12月10日,联合国大会通过第217A(III)号决议并颁布《世界人权宣言》。这一具有历史意义的《宣言》颁布后,大会要求所有会员国广为宣传,并且“不分国家或领土的政治地位,主要在各级学校和其他教育机构加以传播、展示、阅读和阐述。”《宣言》全文如下:

序 言

鉴于对人类家庭所有成员的固有尊严及其平等的和不移的权利的承认,乃是世界自由、正义与和平的基础,鉴于对人权的无视和侮蔑视已发展为野蛮暴行,这些暴行玷污了人类的良心,而一个人人享有言论和信仰自由并免予恐惧和匮乏的世界的来临,已被宣布为普通人民的最高愿望,鉴于为使人类不致迫不得已铤而走险对暴政和压迫进行反叛,有必要使人权受法治的保护,于有必要促进各国间友好关系的发展,鉴于各联合国国家的人民已在联合国宪章中重申他们对基本人权、人格尊严和价值以及男女平等权利的信念,并决心促成较大自由中的社会进步和生活水平的改善,鉴于各会员国业已誓愿同联合国合作以促进对人权和基本自由的普遍尊重和遵行,鉴于对这些权利和自由的普遍了解对于这个誓愿的充分实现具有很大的重要性,因此现在,大会发布这一世界人权宣言,作为所有人民和所有国家努力实现的共同标准,以期每一个人和社会机构经常铭念本宣言,努力通过教诲和教育促进对权利和自由的尊重,并通过国家的和国际的渐进措施,使这些权利和自由在各会员国本身人民及在其管辖下领土的人民中得到普遍和有效的承认和遵行。

第一条

人人生而自由,在尊严和权利上一律平等。他们赋有理性和良心,并应以兄弟关系的精神相对待。

第二条

人人有资格享受本宣言所载的一切权利和自由,不分种族、肤色、性别、语言、宗教、政治或其他见解、国籍或社会出身、财产、出生或其他身份等任何区别。
并且不得因一人所属的国家或领土的政治的、行政的或者国际的地位之不同而有所区别,无论该领土是独立领土、托管领土、非自治领土或者处于其他任何主权受限制的情况之下。
第三条
人人有权享有生命、自由和人身安全。
第四条
任何人不得使为奴隶或奴役;一切形式的奴隶制度和奴隶买卖,均应予以禁止。
第五条
任何人不得加以酷刑,或施以残忍的、不人道的或侮辱性的待遇或刑罚。
第六条
人人在任何地方有权被承认在法律前的人格。
第七条
在法律前人人平等,并有权享受法律的平等保护,不受任何歧视。人人有权享受平等保护,以免受违反本宣言的任何歧视行为以及煽动这种歧视的任何行为之害
第八条
任何人当宪法或法律所赋予他的基本权利遭受侵害时,有权由合格的国家法庭对这种侵害行为作有效的补救。
第九条
任何人不得加以任意逮捕、拘禁或放逐。
第十条
人人完全平等地有权由一个独立而无偏倚的法庭进行公正的和公开的审讯,以确定他的权利和义务并判定对他提出的任何刑事指控。
第十一条
(一)凡受刑事控告者,在未经获得辩护上所需的一切保证的公开审判而依法证实有罪以前,有权歧视为无罪。
(二)任何人的任何行为或不行为,在其发生时依国家法或国际法均不构成刑事罪者,不得被判为犯有刑事罪。刑罚不得重于犯罪时适用的法律规定。
第十二条
任何人的私生活、家庭、住宅和通信不得任意干涉,他的荣誉和名誉不得加以攻击。人人有权享受法律保护,以免受这种干涉或攻击。
第十三条
(一)人人在各国境内有权自由迁徙和居住。
(二)人人有权离开任何国家,包括其本国在内,并有权返回他的国家。
第十四条
(一)人人有权在其他国家寻求和享受庇护以避免迫害。
(二)在真正由于非政治性的罪行或违背联合国的宗旨和原则的行为而被起诉的情况下,不得援用此种权利。
第十五条
(一)人人有权享有国籍。
(二)任何人的国籍不得任意剥夺,亦不得否认其改变国籍的权利。
第十六条
成年男女,不受种族、国籍或宗教的任何限制,有权婚嫁和成立家庭。他们在婚姻方面,在结婚期间和在解除婚约时,应有平等的权利。
(二)只有经男女双方的自由的和完全的同意,才能缔婚。
(三)家庭是天然的和基本的社会单元,并应受社会和国家的保护。
第十七条
(一)人人得有单独的财产所有权以及同他人合有的所有权。
(二)任何的财产不得任意剥夺。
第十八条
人人有思想、良心和宗教自由的权利;此项权利包括他的宗教或信仰的自由,以及单独或集体、公开工秘密地以教义、实践、礼拜和戒律表示他的宗教或信仰的自由。
第十九条
人人有权享有主张和发表意见的自由;此项权利包括持有主张而不受干涉的自由;和通过任何媒介和不论国界寻求、接受和传递消息和思想的自由。
第二十条 (一)人人有权享有和平集会和结社的自由。
(二)任何人不得迫使隶属于某一团体。
第二十一条
(一)人人有直接或通过自由选择的代表参与治理本国的权利。
(二)人人有平等机会参加本国公务的权利。
(三) 人民的意志是政府权力的基础;这一意志应以定期和真正的选举予以表现,而选举应依据普遍和平等的投票权,并以不记名投票或相当的自由投票程序进行。
第二十二条
每个人、作为社会的一员,有权享受社会保障,并有权享受他的个人尊严和人格的自由发展所必需的经济、社会和文化方面各种权利的实现,这种实现是通过国家努力和国际合作并依照各国的组织和资源情况。
第二十三条
(一)人人有权工作、自由选择职业、享受公正和合适的工作条件并享受免于失业的保障。
(二)人人有同工同酬的权利,不受任何歧视。
(三)每一个工作的人,有权享受公正和合适的报酬,保证使他本人和家属有一个符合人的尊严的生活条
件,必要时并辅以其他方式的社会保障。
(四)人人有为维护其利益而组织和参加工会的权利。
第二十四条
人人有享受休息和闲暇的权利,包括工作时间有合理限制和定期给薪休假的权利。
第二十五条
(一)人人有权享受为维持他本人和家属的健康和福利所需的生活水准,包括食物、衣著、住房、医疗和必要的社会服务;在遭到失业、疾病、残废、守寡、衰老或在其他不能控制的情况下丧失谋生能力时,有权享受保障。
(二)母亲和儿童有权享受特别照顾和协助。一切儿童,无论婚生或非婚生,都应享受同样的社会保护。
第二十六条
(一)人人都有受教育的权利,教育应当免费,至少在初级和基本阶段应如此。初级教育应属义务性质。技术和职业教育应普遍设立。高等教育应根据成绩而对一切人平等开放。
(二)教育的目的在于充分发展人的个性并加强对人权和基本自由的尊重。教育应促进各国、各种族或各宗教集团的了解、容忍和友谊,并应促进联合国维护和平的各项活动。
(三)父母结其子女所应受的教育的种类,有优先选择的权利。
第二十七条
(一)人人有权自由参加社会的文化生活,享受艺术,并分享科学进步及其产生的福利。
(二)人人以由于他所创作的任何科学、文学或美术伤口而产生的精神的和物质的利益,有享受保护的权利。
第二十八条
人人有权要求一种社会的和国际的秩序,在这种秩序中,本宣言所载的权利和自由能获得充分实现。
第二十九条
(一)人人对社会负有义务,因为只有在社会中他的个性才可参得到自由和充分的发展。
(二)人人在行使他的权利和自由时,只受法律所确定的限制,确定此种限制的唯一目的确在于保证对旁人的权利和自由给予应有的承认和尊重,并在一个民主的社会中适应道德、公共秩序和普遍福利的正当需要。
(三)这此权利和自由的行使,无论在任何情下均不得违背联合国的宗旨和原则。
第三十条
本宣言的任体条文,不得解释为默许任何国家、集团或人个有权进行任何旨在破坏本宣言所载的任何权利和自由的活动或行为。

水龙吟

苏轼
词·水龙吟

似花还似非花,也无人惜从教坠。
抛家傍路,思量却是,无情有思。
萦损柔肠,困酣妖眼,欲开还闭。
梦随风万里,寻郎去处,又还被,莺呼起。

不恨此花飞尽,恨西园,落红难缀。
晓来雨过,遗踪何在? 一池萍碎。
春色三分,二分尘土,一分流水。
细看来,不是杨花,点点是离人泪。

《临江仙》----晏小山

梦后楼台高锁,酒醒帘幕低垂。
去年春恨却来时。落花人独立,微雨燕双飞。
记得小苹初见,两重心字罗衣。
琵琶弦上说相思。当时明月在,曾照彩云归。

2009年2月17日星期二

好词一大堆

西风残照,汉家陵阙(李白《忆秦娥》)
弱柳从风疑举袂,丛兰溢露似沾巾。独坐亦含颦(刘禹锡《忆江南》)
楚客欲听瑶瑟怨,潇湘深夜月明时(刘禹锡《潇湘神》)
山寺月中寻桂子,郡亭枕上看潮头。何日更重游(白居易《忆江南》)
思悠悠,恨悠悠,恨到归时方始休。月明人倚楼(白居易《长相思》)
时节欲黄昏,无聊独倚门(温庭筠《菩萨蛮》)
过尽千帆皆不是,斜晖脉脉水悠悠,肠断白频洲(温庭筠《梦江南》)
未老莫还乡,还乡须断肠(韦庄《菩萨蛮》)
妾拟将身嫁与,一生休。纵被无情弃,不能羞(韦庄《思帝乡》)
残月脸边明,别泪临清晓(牛希济《生查子》)
语已多,情未了。回首犹重道:记得绿罗裙,处处怜芳草(牛希济《生查子》)
枕前发尽千般愿,要休且待青山烂(敦煌词)
欲他征夫早归来,腾身却放我向青云里(敦煌词)
暗里回眸深属意。遗双翠。骑象背人先过水(李旬《南乡子》)
日日花前常病酒,不辞镜里朱颜瘦(冯延巳《鹊踏枝》)
多少泪珠何限恨,倚阑干(李景《摊破浣溪沙》)
剪不断,理还乱,是离愁。别有一般滋味在心头(李煜《乌夜啼》)
问君能有几多愁,恰似一江春水向东流(李煜《虞美人》)
独自莫凭栏,无限江山,别时容易见时难。流水落花春去也,天上人间(李煜《浪淘沙》)
奴为出来难,教君恣意怜。(李煜《菩萨蛮》)
别巷寂寥人散后,望残烟草低迷。炉香闲袅凤凰儿。
空持罗带,回首恨依依。(李煜《临江仙》)
换我心,为你心,始知相忆深(顾夐《诉衷情》)
绿杨芳草几时休?泪眼愁肠先已断(钱惟演《玉楼春》)
昔年多病厌芳樽,今日芳樽惟恐浅(钱惟演《玉楼春》)
明月楼高休独倚,酒入愁肠,化作相思泪(范仲淹《苏木遮》)
年年今夜,月华如练,长是人千里(范仲淹《御街行》)
愁肠已断无由醉。酒未到,先成泪。残灯明灭枕头欹,谙尽孤眠滋味。
都来此事,眉间心上,无计相回避(范仲淹《御街行》)
送春春去几时回?临晚镜,伤流景,往事后期空记省(张先《天仙子》)
无可奈何花落去,似曾相识燕归来,小园香径独徘徊(晏殊《浣溪沙》)
明月不知离恨苦,斜光到晓穿朱户(晏殊《蝶恋花》)
欲寄彩笺兼尺素,山长水阔知何处(晏殊《蝶恋花》)
生长恨欢娱少,肯爱千金轻一笑。为君持酒劝斜阳,且向花间留晚照。(宋祁《玉楼春》)
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去(欧阳修《蝶恋花》)
离愁渐行渐无穷,迢迢不断如春水(欧阳修《踏莎行》)
寸寸柔肠,盈盈粉泪(欧阳修《踏莎行》)
笙歌散进游人去,始觉春空(欧阳修《采桑子》)
聚散若匆匆,此恨无穷。
今年花胜去年红,可惜明年花更好,知于谁同。(欧阳修《浪淘沙》)
才始送春归,又送君归去。若到江南赶上春,千万留春住(王观《卜算子》)
落花人独立,微雨燕双飞(晏几道《临江仙》)
今宵剩把颍钢照,有恐相逢似梦中(晏几道《鹧鸪天》)
残睡觉来人又晚,难忘,便是无情也断肠(晏几道《南乡子》)
两鬓可怜青,只为相思老(晏几道《生查子》)
不肯画堂朱户,春风自在杨花(王安国《清平乐》)
十年生死两茫茫,不思量,自难忘(苏轼《江城子》)
小轩窗,正梳妆。相顾无言,惟有泪千行(苏轼《江城子》)
细看来,不是杨花,点点是离人泪(苏轼《水龙吟》)
拣尽寒枝不肯栖,寂寞沙洲冷(苏轼《卜算子》)
枝上柳绵吹又少,天涯何处无芳草(苏轼《蝶恋花》)
笑渐不闻声渐悄,多情却被无情恼(苏轼《蝶恋花》)
人生弹指事成空,断魂惆怅无寻处(李之仪《踏莎行》)
思量只有梦来去,更不怕,江拦住(黄庭坚《望江东》)
最关情漏声正永,暗断肠花影偷移(晁元礼《绿头鸭》)
人强健,青尊素影,长愿相随(晁元礼《绿头鸭》)
叹好梦,一一无凭,怅掩金花坐凝目(晁元礼《雨霖铃》)
别后厌厌,应是香肌,瘦减罗幅(晁元礼《雨霖铃》)
梅英疏淡,冰澌溶泄,东风暗换年华(秦观《望海潮》)
两情若是久长时,又岂在朝朝暮暮(秦观《鹊桥仙》)
韶华不为少年留,恨悠悠,几时休(秦观《江城子》)
便做春江都是泪,流不尽,许多愁(秦观《江城子》)
此去何时见也?襟袖上空惹啼痕(秦观《满庭芳》)
豆蔻梢头旧恨,十年梦屈指堪惊(秦观《满庭芳》)
无奈云沉雨散。凭阑干,东风泪眼(王诜《忆故人》)
断送一生憔悴,只消几个黄昏(赵令峙《清平乐》)
试问闲愁都几许?一川烟草,满城风絮,梅子黄时雨(贺铸《青玉案》)
原上草,露初唏,旧楼新垅两依依。空床卧听南窗雨,谁复挑灯夜补衣(贺铸《鹧鸪天》)
留恋处,兰舟催发。执手相看泪眼,竟无语凝噎(柳永《雨霖铃》)
多情自古伤离别,更那堪冷落青秋节(柳永《雨霖铃》)
此去经年,应是良晨好景虚设。便纵有千钟风情,更与何人说(柳永《雨霖铃》)
一曲阳关,断肠声尽,独自凭栏桡(柳永《少年游》)
早知恁么。悔当初,不把雕鞍锁(柳永《定风波》)
草色烟光残照里,无言谁会凭栏意。(柳永《蝶恋花》)
衣带渐宽终不毁,为伊消得人憔悴。(柳永《蝶恋花》)
香非在蕊,香非在萼,骨中香彻(晁补之《盐角儿》)
宽尽春来金缕衣,憔悴有谁知(魏夫人《武林春》)
憔悴江南倦客,不堪听,急管繁弦(周邦彦《满庭芳》)
念月榭携手,露桥闻笛,沈思前事,似梦里,泪暗滴(周邦彦《兰陵王》)
故乡遥,何日去(周邦彦《苏幕遮》)
低声问:向谁行宿?城上已三更。马滑霜浓,不如休去,直是少人行(周邦彦《少年游》)
大家且道,是伊模样,怎如念奴(李鹿《品令》)
只有关山今夜月,千里外,素光同(谢逸《江神子》)
万里云帆何时到?送孤魂,目断青山阻。谁为我,唱金缕(叶梦得《贺新郎》)
恨君不是江楼月,南北东西。南北东西,只有相随无别离。
恨君却是江楼月,暂满还亏。暂满还亏,待得团圆是几时(吕本中《采桑子》)
好是风和日暖,输与莺莺燕燕。满院落花帘不卷,断肠芳草远(朱淑真《谒金门》)
独行独坐,独倡独酬还独卧。伫立伤神,无奈轻寒着摸人(朱淑真《减字木兰花》)
娇痴不怕人猜,和衣睡倒人怀。最是分携时候,归来懒傍妆台(朱淑真《清平乐》)
生怕离怀别苦,多少事,欲说还休(李清照《凤凰台上忆吹箫》)
惟有楼前流水,应念我,终日凝眸。
凝眸处,从今又添一段新愁(李清照《凤凰台上忆吹箫》)
莫道不消魂,帘卷西风,人比黄花瘦(李清照《醉花阴》)
如今憔悴,风鬟霜鬓,怕见夜间出去。不如向帘儿底下,听人笑语(李清照《永遇乐》)
寻寻觅觅,冷冷清清,凄凄惨惨戚戚(李清照《声声慢》)
乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他,晚来风急(李清照《声声慢》)
这次第,怎一个愁字了得(李清照《声声慢》)
欲将心事付瑶琴,知音少,弦断有谁听(岳飞《小重山》)
一声声,一更更。窗外芭蕉窗里灯,此时无限情。
梦难成,恨难平。不道愁人不喜听,空阶滴到明。(万俟咏《长相思》)
东风恶,欢情薄,一怀愁绪,几年离索。错,错,错(陆游《钗头凤》)
春如旧,人空瘦,泪痕红溢鲛绡透(陆游《钗头凤》)
桃花落,闲池阁。山盟虽在,锦书难托。莫,莫,莫(陆游《钗头凤》)
已是黄昏独自愁,更着风和雨(陆游《卜算子》)
无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故(陆游《卜算子》)
只有梦魂能再遇,堪嗟梦不由人做(陆游)《蝶恋花》)
不怕银钢深秀户,只愁风断清衣渡(陆游《蝶恋花》)
惜春长怕花开早,何况落红无数(辛弃疾《摸鱼儿》)
千金纵买相如赋,脉脉此情谁诉(辛弃疾《摸鱼儿》)
闲愁最苦,休去倚危栏,斜阳正在,烟柳断肠处(辛弃疾《摸鱼儿》)
旧恨春江流不尽,新恨云山千叠。料得明朝,尊前重见,镜里花难折。
也应惊问:近来多少华发(辛弃疾《念奴娇》)
楼空人去,旧游飞燕能说(辛弃疾《念奴娇》)
少年不识愁滋味,爱上层楼。爱上层楼,为赋新词强说愁。
而今识尽愁滋味,欲说还休。欲说还休,却道天凉好个秋(辛弃疾《丑奴儿》)
断肠片片飞红,都无人管,更谁劝啼莺声住(辛弃疾《祝英台近》)
是他春带愁来,春归何处,却不解带将愁去(辛弃疾《祝英台近》)
众里寻他千百度,蓦然回首,那人却在,灯火阑珊处(辛弃疾《青玉案》)
纵豆蔻词工,青楼梦好,难赋深情(姜夔《扬州慢》)
算空有并刀,难剪离愁千缕(姜夔《长亭怨慢》)
嫣然摇动,冷香飞上诗句(姜夔《念奴娇》)
夜长争得薄情知,春初早被相思染(姜夔《踏莎行》)
春未绿,鬓先丝。人间别久不成悲。谁教岁岁红莲夜,两处沉吟各自知。(姜夔《鹧鸪天》)

2009年2月9日星期一

Apache 中内存管理的三种境界

中国文化中几乎所有的数字都被冠以特殊的意义,《易》曰:"道生一,一生二,二生三,三生万物"。由于个人知识与经历的限制,无法完成对于万物的探究,但是三以下的数字数字还是可以追述的。

Apache作为万维网首屈一指的高性能Web服务器,如果能够从科学与哲学的角度进行分析,将会对我们的软件开发者的学习工作工作带来极大的好处.

正如《易》曰"书不尽言,言不尽意",写出来的未必能够表达我说出来的,说出来的未必能够表到我想说出来的。所以如果我不能描绘出我体会到的Apache中内存管理的三种境界,请不要责怪。

APR(Apache Platform Protable) Library 是Apache为了实现跨平台而抽象出来的一套开发库,内存管理作为与系统紧密相关的软件开发的基础之一,在APR中得到了充分的体现。

第一层境界,基于apr_pool的内存管理。apr_poll简单易用,但是只能申请内存而无法释放或返回缓存池,只能到apr_pool_t到清除 (clear)或消毁(destory)才能够继续使用,而且如果根pool没有被消毁之前,内存是无法返回系统的,不够灵活,apr_pool中用了一个全局的根pool,而高级方式的apr_pool可以在第三层境界的基础上直接创建。所以如果Apache中使用了比较大的内存,尤其是在频繁使用的情况下,最好不要用Apache中已近存在的pool结构,而是采用apache中的第二层境界来解决。

第二层境界,基于 apr_bucket_alloc的内存管理。与apr_pool向相比,apr_bucket_alloc,最大的特点是可以将以申请的内存通过释放而返回到内存池,但不返回系统,以后申请内存可以直接从内存池中获取,并且对于小块内存的管理作了优化,接单易用而且灵活,并且 apr_bucket_alloc在apr_util中实现,apache中内存管理的第一层与第三曾境界是在apr中实现的。可笑的是 apr_bucket_alloc可以通过第一层apr_pool来创建,不过在创建的时候使用的是apr_pool中的allocator(第三层结构的指针)。

第三层境界,基于apr_allocator的内存管理。apr_allocator的内存管理更为低级,内存申请返回一个表示内存的结构而不是实现可用的内存指针,可以在此基础上实现诸如小块内存的优化管理,apr_pool与apr_bucket_alloc都是在 apr_allocator的基础上实现的。apr_allocator的基础就是标准的malloc/free函数了。

整理一下,关系如下

malloc/free-->apr_allocator-------->apr_bucket_alloc
\ /
\ /
\ /
apr_pool



第二层境界,基于apr_bucket_alloc的内存管理使用举例

初始化操作

apr_pool_t *pool;
apr_allocator_t* alloc;
apr_bucket_alloc_t* balloc;

apr_allocator_create(&lloc);
apr_pool_create_ex(&pool, NULL, NULL, alloc);
balloc = apr_bucket_alloc_create(pool);

内存申请与释放

char* p= apr_bucket_alloc(size, balloc);
apr_bucket_free(p);



终止化操作:

apr_bucket_alloc_destroy(balloc);
apr_pool_destroy(pool);
apr_allocator_destroy(alloc);

2009年2月7日星期六

Introduction to Buckets and Brigades

Introduction to Buckets and Brigades
BucketBrigade介绍
The Apache 2 Filter Architecture is the major innovation that sets it apart from other webservers, including Apache 1.x, as a uniquely powerful and versatile applications platform. But this power comes at a price: there is a bit of a learning curve to harnessing it. Apart from understanding the architecture itself, the crux of the matter is to get to grips with Buckets and Brigades, the building blocks of a filter.
Apache2过滤器架构的主要革新让它从其它web服务器,包括Apache1.x区别开来,是一个有独特能力和万能的应用程序结构.但是这 个能力带来了代价:为了驾驭它需要一个学习曲线.不考虑理解结构自身,问题的关键是掌握Bucket和Brigade,这是过滤器的构建块.
In this article, we introduce buckets and brigades, taking the reader to the point where you should have a basic working knowledge. In the process, we develop a simple but useful filter module that works by manipulating buckets and brigades directly.
This direct manipulation is the lowest-level API for working with buckets and brigades, and probably the hardest to use. But because it is low level, it serves to demonstrate what's going on. In other articles we will discuss related subjects including debugging, resource management, and alternative ways to work with the data.
在这篇文章中,我们介绍bucket和brigade,帮助读者找到必须具备哪方面的基本知识.在这个过程中,我们开发了一个简单,但是有用的过滤模块,这个模块通过直接操作bucket和brigade工作.
通过最底层的API来直接操作bucket和brigade,可能是最难使用的.但是因为它是低级别的API,它能给我们展示真正发生了什么.在其它文章中我们将会讨论相关的主题,包括调试,资源管理和可供选择的数据处理方式.
Basic Concepts
基本概念
The basic concepts we are dealing with are the bucket and the brigade. Let us first introduce them, before moving on to why and how to use them.
Bucket和brigade是我们要处理的基本概念. 在我们开始介绍为什么使用和怎么使用他们之前,让我们首先介绍他们.
Buckets
A bucket is a container for data. Buckets can contain any type of data. Although the most common case is a block of memory, a bucket may instead contain a file on disc, or even be fed a data stream from a dynamic source such as a separate program. Different bucket types exist to hold different kinds of data and the methods for handling it. In OOP terms, the apr_bucket is an abstract base class from which actual bucket types are derived.
There are several different types of data bucket, as well as metadata buckets. We will describe these at the end of this article.
Bucket是数据的容器,能包含任何类型的数据.尽管通常情况下是一块内存,bucket也能包含硬盘上的文件,甚至来自动态数据源,例如来 自另一个独立的程序.不同的bucket类型保存不同类型的数据和处理这些数据的方法.在OOP项目组中,apr_bucket是一个抽象的基类,真正的 bucket类型能从这个基本派生.
这里有几种不同bucket数据类型,也包括元数据bucket,我们将在这篇文章结束部分讨论.
Brigades
In normal use, there is no such thing as a freestanding bucket: they are contained in bucket brigades. A brigade is a container that may hold any number of buckets in a ring structure. The brigade serves to enable flexible and efficient manipulation of data, and is the unit that gets passed to and from your filter.
在正常使用中,这里没有孤立的bucket:他们被包含在brigade中.brigade是一个容器,包含许多的bucket而组成一个环状结构.brigade用来提供灵活的和有效率的数据操作,也是从你的过滤器中传进和传出的单元.
Motivation
目的
So, why do we need buckets and brigades? Can't we just keep it simple and pass simple blocks of data? Maybe a void* with a length, or a C++ string?
Well, the first part of the answer we've seen already: buckets are more than just data: they are an abstraction that unifies fundamentally different types of data. But even so, how do they justify the additional complexity over simple buffers and ad-hoc use of other data sources in exceptional cases?
因此,我们为什么需要bucket和brigade?我们难道不能让它简单点么,处理一个简单的数据块?可以用void指针加长度或C++字符串?
恩,第一部分的答案我们已经知道:bucket不仅仅是数据,他们是不同基础数据类型数据的统一抽象.尽管如此,他们怎么证明在例外情况下简单缓冲区上的额外复杂和其它数据源的特别使用是正确的?
The second motivation for buckets and brigades is that they enable efficient manipulation of blocks of memory, typical of many filtering applications. We will demonstrate a simple but typical example of this: a filter to display plain text documents prettified as an HTML page, with header and footer supplied by the webmaster in the manner of a fancy directory listing.
Bucket和brigade的第二个目的是它们能够有效率的操作块状内存,这个是许多过滤器典型的需要操作.我们将举一个简单的但是有典型的例子:这个过滤器修饰纯文本文档为HTML页面,这个页面同时被管理员加上页眉和页脚的,展示一个奇特的目录列表.
Now, HTML can of course include blocks of plain text, enclosing them in <pre> to preserve spacing and formatting. So the main task of a text->html filter is to pass the text straight through. But certain special characters need to be escaped. To be safe both with the HTML spec and browsers, we will escape the four characters <, >, &, and " as &lt, etc.
现在,HTML能够包含纯文本,把这些纯文本包含在<pre>中来保持纯文本的原有空格和格式.因此text->html过 滤器主要任务是直接传递文本.但是一些特殊字符需要被处理.为了HTML和浏览器的安全,我们将会处理四个字符<,>,&和” 为&lt等等.
Because the replacement < is longer by three bytes than the original, we cannot just replace the character. If we are using a simple buffer, we either have to extend it with realloc() or equivalent, or copy the whole thing interpolating the replacement. Repeat this a few times and it rapidly gets very inefficient. A better solution is a two-pass scan of the buffer: the first pass simply computes the length of the new buffer, after which we allocate the memory and copy the data with the required replacements. But even that is by no means efficient.
因为<的替代比原有字符长三个字符,我们不能仅仅替换原有字符.如果我们使用简单缓存区,我们可能需要使用realloc()类 函数扩展缓冲区或者拷贝整个字符串来插入替换的字符串.多次这种操作会迅速导致没有效率.一个好的方法是缓冲区的两遍扫描:第一遍扫描简单的计算新缓冲区 的长度,然后我们分配内存,插入替换,拷贝数据,但是甚至这样都不是有效率的.
By using buckets and brigades in place of a simple buffer, we can simply replace the characters in situ, without allocating or copying any big blocks of memory. Provided the number of characters replaced is small in comparison to the total document size, this is much more efficient. In outline:
  1. We encounter a character that needs replacing in the bucket
  2. We split the bucket before and after the character. Now we have three buckets: the character itself, and all data before and after it.
  3. We drop the character, leaving the before and after buckets.
  4. We create a new bucket containing the replacement, and insert it where the character was.
Now instead of moving/copying big blocks of data, we are just manipulating pointers into an existing block. The only actual data to change are the single character removed and the few bytes that replace it.
通过使用bucket和brigade替换简单缓冲区,我们能简单的替换字符,不需要分配或者拷贝任何大块内存.我们这里的替换字符个数相对文档的大小是很少的.这是更有效率的,概括:
1. 我们在bucket中遇到需要替换的字符.
2. 我们在这个字符位置前后把bucket分开,现在我们有三个bucket:字符本身,字符前面数据和字符后面数据.
3. 我们丢掉字符,剩下该字符前和字符后的bucket.
4. 我们创建一个新的bucket来包含替换的字符串,插入到原有字符串的位置.
现在没有了移动和拷贝大块数据,我们仅仅操作现有数据块的指针.真正需要修改的数据是一个单一字符和替换这个字符的少量字节.
A Real example: mod_txt
现实例子:mod_txt
mod_txt is a simple output filter module to display plain text files as HTML (or XHTML) with a header and footer. When a text file is requested, it escapes the text as required for HTML, and displays it between the header and the footer.
It works by direct manipulation of buckets (the lowest-level API), and demonstrates both insertion of file data and substitution of characters, without any allocation of moving of big blocks.
Mod_txt是一个简单的输出过滤器,用来把纯文本显示成HTML(或者XHTML)有着附加的页眉和页脚.当文本文件被请求,它处理纯文本为需要的HTML,在页眉和页脚显示.
直接操作bucket(最低级别的API),展示插入文件数据和字符的替换,没有任何分配和移动大块数据.
Bucket functions
Bucket函数
Firstly we introduce two functions to deal with the data insertions: one for the files, one for the simple entity replacements:
Creating a File bucket requires an open filehandle and a byte range within the file. Since we're transmitting the entire file, we just stat its size to set the byte range. We open it with a shared lock and with sendfile enabled for maximum performance.
首先我们介绍两个函数来处理数据的插入:文件相关,简单字符替换:
创建一个文件bucket需要一个打开的文件句柄和文件偏移区间.既然我们传送整个文件,因此我们仅仅stat它的大小作为文件偏移区间.我们以共享锁和sendfile标志,为了更大的性能,打开文件.
static apr_bucket* txt_file_bucket(request_rec* r, const char* fname) {
apr_file_t* file = NULL ;
apr_finfo_t finfo ;
if ( apr_stat(&finfo, fname, APR_FINFO_SIZE, r->pool) != APR_SUCCESS ) {
return NULL ;
}
if ( apr_file_open(&file, fname, APR_READ|APR_SHARELOCK|APR_SENDFILE_ENABLED,
APR_OS_DEFAULT, r->pool ) != APR_SUCCESS ) {
return NULL ;
}
if ( ! file ) {
return NULL ;
}
return apr_bucket_file_create(file, 0, finfo.size, r->pool,
r->connection->bucket_alloc) ;
}
Creating the simple text replacements, we can just make a bucket of an inline string. The appropriate bucket type for such data is transient:
创建一个简单的文本替换,我们只需要用内嵌的字符串创建bucket.适合这种数据的bucket类型是transient(短暂):
static apr_bucket* txt_esc(char c, apr_bucket_alloc_t* alloc ) {
switch (c) {
case '<': return apr_bucket_transient_create("<", 4, alloc) ;
case '>': return apr_bucket_transient_create(">", 4, alloc) ;
case '&': return apr_bucket_transient_create("&", 5, alloc) ;
case '"': return apr_bucket_transient_create(""", 6, alloc) ;
default: return NULL ; /* shut compilers up */
}
}
Actually this is not the most efficient way to do this. We will discuss alternative formulations of the above below.
事实上,这不是最有效率的方法.我们下面将讨论可选方法
The Filter
过滤器
Now the main filter itself is broadly straightforward, but there are a number of interesting and unexpected points to consider. Since this is a little longer than the above utility functions, we'll comment it inline instead. Note that the Header and Footer file buckets are set in a filter_init function (omitted for brevity).
现在过滤器主要部分还是十分明了的,但是这有一些有兴趣的和异常情况需要考虑.既然下面这些代码比上面函数要长一点,我们将在代码中注释.注意:页眉和页脚文件bucket在filter_init函数中生成(为了简洁省略掉了).
static int txt_filter(ap_filter_t* f, apr_bucket_brigade* bb) {
apr_bucket* b ;
txt_ctxt* ctxt = (txt_ctxt*)f->ctx ;
if ( ctxt == NULL ) {
txt_filter_init(f) ;
ctxt = f->ctx ;
}
Main Loop: This construct is typical for iterating over the incoming data
主循环:这个结构是遍历输入数据的典型方法.
for ( b = APR_BRIGADE_FIRST(bb);
b != APR_BRIGADE_SENTINEL(bb);
b = APR_BUCKET_NEXT(b) ) {
const char* buf ;
size_t bytes ;
As in any filter, we need to check for EOS. When we encounter it,
we insert the footer in front of it. We shouldn't get more than
one EOS, but just in case we do we'll note having inserted the
footer. That means we're being error-tolerant.
在任何一个过滤器中,我们需要检查EOS.当我们遇到它,在它前面插入页脚.我们不会得到一个以上的EOS,但是如果出现的话,我们将会知道已经插入了页脚.这是错误检查.
if ( APR_BUCKET_IS_EOS(b) ) {
/* end of input file - insert footer if any */
if ( ctxt->foot && ! (ctxt->state & TXT_FOOT ) ) {
ctxt->state |= TXT_FOOT ;
APR_BUCKET_INSERT_BEFORE(b, ctxt->foot);
}
The main case is a bucket containing data, We can get it as a simple
buffer with its size in bytes:
主要情况是要检查bucket是否含有数据,我们能得到简单的缓冲区地址和大小,按字节算:
} else if ( apr_bucket_read(b, &buf, &bytes, APR_BLOCK_READ)
== APR_SUCCESS ) {
/* We have a bucket full of text. Just escape it where necessary */
size_t count = 0 ;
const char* p = buf ;
Now we can search for characters that need replacing, and replace them
现在我们能搜索需要替换的字符,然后替换它们
while ( count <>
size_t sz = strcspn(p, "<>&\"") ;
count += sz ;
Here comes the tricky bit: replacing a single character inline.
这里有一个小技巧:在内联中替换单一字符.
if ( count <>
apr_bucket_split(b, sz) ; Split off before buffer
b = APR_BUCKET_NEXT(b) ; Skip over before buffer
APR_BUCKET_INSERT_BEFORE(b, txt_esc(p[sz],
f->r->connection->bucket_alloc)) ;
Insert the replacement
apr_bucket_split(b, 1) ; Split off the char to remove
APR_BUCKET_REMOVE(b) ; ... and remove it
b = APR_BUCKET_NEXT(b) ; Move cursor on to what-remains
so that it stays in sequence with
our main loop
count += 1 ;
p += sz + 1 ;
}
}
}
}
Now we insert the Header if it hasn't already been inserted.
Note:
(a) This has to come after the main loop, to avoid the header itself
getting into the parse.
(b) It works because we can insert a bucket anywhere in the brigade,
and in this case put it at the head.
(c) As with the footer, we save state to avoid inserting it more than once.
如果还没有插入页眉的话,现在插入.
注意:
(a) 这个在主循环以后,避免页眉被处理(译者注:被进行字符替换).
(b) 这个能工作,因为我们能在brigade任何位置插入bucket,这里是插入最前面.
(c) 考虑页脚,我们保存了状态,避免多次插入.
if ( ctxt->head && ! (ctxt->state & TXT_HEAD ) ) {
ctxt->state |= TXT_HEAD ;
APR_BRIGADE_INSERT_HEAD(bb, ctxt->head);
}
Now we've finished manipulating data, we just pass it down the filter chain.
现在我们已经完成数据的处理,我们把brigade传入下一个过滤器.
return ap_pass_brigade(f->next, bb) ;
}
Note that we created a new bucket every time we replaced a character. Couldn't we have prepared four buckets in advance - one for each of the characters to be replaced - and then re-used them whenever the character occurred?
注意:在每次替换字符的时候,我们创建了一个新的bucket.我们不能预先准备四个bucket一一为每一个需要被替换的字符一一然后在需要的时候重用他们?
The problem here is that each bucket is linked to its neighbours. So if we re-use the same bucket, we lose the links, so that the brigade now jumps over any data between the two instances of it. Hence we do need a new bucket every time. That means this technique becomes inefficient when a high proportion of input data has to be changed. We will show alternative techniques for such cases in other articles.
这里的问题是,每一个bucket是它的邻居相邻,我们重用相同的bucket,链表顺序会被打乱,因此brigade现在会跳过中间的一些数 据.为此,我们必须每次都创建新的bucket.这意味着, 当在处理需要被替换的字符占输入数据很高比例的时候,这种技巧是非常没有效率的.我们将会在其它文章中展示可供选择的方案.
Bucket Types
Bucket类型
In the above, we used two data bucket types: file and transient, and the eos metadata bucket type. There are several other bucket types suitable for different kinds of data and metadata.
在上面,我们使用了两种bucket数据类型:文件和transient(短暂),EOS元数据类型.这里有几个其它的bucket数据类型,适合不同类型的数据和元数据.
Simple in-memory buckets
简单内存bucket
When we created transient buckets above, we were inserting a chunk of memory in the output stream. But we noted that this bucket was not the most efficient way to escape a character. The reason for this is that the transient memory has to be copied internally to prevent it going out of scope. We could instead have used memory that's guaranteed never to go out of scope, by replacing
当我们在上面创建短暂bucket,我们在输出流中插入了一块数据.但是我们注意到这种bucket处理起来不是最效率的.因为短暂内存不得不在内部被拷贝,阻止它失效.我们能够使用保证不会失效内存,取代
case '<': return apr_bucket_transient_create("<", 4, alloc) ;
with
static const char* lt = "<" ;
...
case '<': return apr_bucket_immortal_create(lt, 4, alloc) ;
When we create an immortal bucket, we guarantee that the memory won't go out of scope during the lifetime of the bucket, so the APR never needs to copy it internally.
A third variant on the same principle is the pool bucket. This refers to memory allocated on a pool, and will have to be copied internally if and only if the pool is destroyed within the lifetime of the bucket.
当我们创建永久bucket的时候,我们保证在bucket生命周期中内存不会失效,因此APR绝不需要在内部拷贝.
有着相同原理的第三个bucket是pool bucket.涉及在pool上的内存分配,和仅仅如果在bucket的生命周期内pool被销毁,我们不得不进行内部拷贝.
The Heap bucket
bucket
The heap bucket is another form of in-memory bucket. But its usage is rather different from any of the above. We rarely if ever need to create a heap bucket explicitly: rather they are managed internally when we use the stdio-like API to write data to the next filter. This API is discussed in other articles.
堆bucket是内存bucket的另一种.但是使用方式和上面几种十分不同.我们很少,仅仅在明确需要的时候,创建堆bucket:宁愿它们在内部被管理,当我们使用stdio类的API去向下一个过滤器写数据的时候.这些API在其它文章中讨论.
External data buckets
外部数据bucket
The File bucket, as we have already seen, enables us to insert a file (or part) file into the data stream. Although we had to stat it to find its length, we didn't have to read it. If sendfile is enabled, the operating system (through the APR) can optimise sending the file.
The mmap bucket type is similar, and is appropriate to mmaped files. APR may convert file buckets to mmap internally if we (or a later filter) read the data.
Two other more unusual bucket types are the pipe and the socket, which enable us to insert data from an external source via IPC.
文件bucket,我们已经见到,让我们能够插入一个文件或者部分到数据流.尽管我们不得不stat来知道它的长度,但我们不需要读取它的内容.如果允许sendfile标志,操作系统(通过APR)能优化传送文件.
内存映射bucket和内存映射文件是相似的.当我们(接下来的过滤器)读取数据的时候,APR能在内部把文件bucket转成内存映射bucket.
其它两个不常用的bucket类型,管道和套接字,这两个能够让我们从外部数据源,通过IPC插入数据.
Metadata buckets
元数据bucket
In addition to data buckets, there are two metadata types. The EOS bucket is crucial: it must be sent at the end of a data stream, and it serves to signal the end of incoming data. The other metadata type is the rarely-user FLUSH bucket, which may occasionally be required, but is not guaranted to be propagated by every filter.
处理数据bucket,这里有两个元数据bucket.EOS bucket是关键:它必须在数据流结束的时候被发送,也被用来标志输入数据的结束.另一个元数据类型是很少使用的FLUSH bucket,偶尔会需要,但是可以保证不会被每一个过滤器使用.
Note by anonymous, Fri Mar 30 11:56:20 2007
test
Further reading
进一步参考
Cliff Woolley gave a talk on buckets and brigades at ApacheCon 2002. His notes are very readable, and go into more depth than this article.
Cliff Woolley在ApacheCon 2002上给我们一个关于bucket和brigade的讨论.他的注释是非常值得去度的,内容比这篇文章要深入许多.
http://www.cs.virginia.edu/~jcw5q/talks/

2009年2月6日星期五

水龙吟----周敦儒

  放船千里淩波去,略为吴山留顾
  
  云屯水府,涛随神女,九江东注
  
  北客翩然,壮心偏感,年华将暮
  
  念伊嵩旧隐,巢由故友,南柯梦,遽如许
  
  
  
  回首妖氛未扫,问人间、英雄何处
  
  奇谋报国,可怜无用,尘昏白羽
  
  铁锁横江,锦帆冲浪,孙郎良苦
  
  但愁敲桂棹,悲吟梁父,泪流如雨