Jianqiu's profile猪圈PhotosBlogLists Tools Help
Photo 1 of 15

猪圈

猪圈
November 07

高效对象容器

对一个容器来说,最常用的操作无非3个:插入,查找,删除。

一直想要个三个操作都非常高效的容器,好多年前做了个BaseObjectSet,用STL的MAP和LIST实现的,MAP管理所有插入的对象,实现快速查找,LIST作为空闲表,管理所有被删除的对象。这个实现有以下2个问题:
1. MAP的插入很慢,特别是STL的MAP
2. 插入对象时,要从LIST删除一个节点,然后到MAP增加一个节点,其实MAP和LIST可以共享一个管理节点,MAP用3个指针,LIST用1个指针;同理,删除时也可以省略删除和增加管理节点的开销

因此,最近从Linux内核中移植过来一个红黑树的算法,改成和LIST共享的管理节点,果然效率提高非常多。10万个对象中,插入1000个新对象,每个操作的开销从原先的1430(周期)下降到456,查找从611下降到304,删除从1766下降到343;也就是说,插入和删除有4-5倍的效率提升,查找效率也提升了1倍。

但是,测试的对象除了ID,只有4个字节的一个int。当我把对象大小提高到了512字节时,效率下降的很快。同样,10万个对象,插入1000个新对象,开销从456上升到1231,查找从304上升到454,删除从343上升到467。对于STL的实现来说,则没有这么大的变化,开销几乎没变。

无责任猜想:这是因为对象的ID保存在对象上,当管理的对象很大时,比如10万个512字节的对象,占用50M内存。这时因为每个ID间隔的很大,导致Cache命中率的下降,各类操作的效率都下降的很快。STL的MAP节点也是管理节点和ID在一起的,为啥STL没啥大的变化,本人百思不得其解。

因此,我做了一个新的对象容器,将所有的管理节点分配在整个内存区域的最前面,而数据块在后面。管理节点一共12个字节,比STL的MAP还少了2个字节。ID被移到了管理节点上,因此管理节点一共16个字节。

但是,这样的做法,导致了获取对象ID时的操作慢了很多,从原先直接加便宜读取,变成现在需要根据对象指针判断在哪个内存块中,然后计算偏移,获取对应的管理节点,才能在管理节点上得到ID。只有一块内存块时,获取ID的开销小于10周期,还算可以接受的。

下面是测试数据:
MY1是用自己实现的红黑树加上单链表实现的,要求对象从有ID的基类派生
MY2是在MY1之上改进的,开了256的hash table,table里才是红黑树,然后管理节点分配在开头,后面才是对象。


对网游来说,对象个数一般在10万这个数量级上,对象大小也不会大于512字节,插入、查找、删除开销都在400周期以下,是个可以放心使用的容器了。




June 27

21世纪的国会纵火案(转载)

最近好戏很多。
 
滤霸这种不入流的流氓软件,俺没装虚拟机,看看网上的分析报告,就一笑而过了。想当年江sir搞得GFW那才叫牛呢,现在怎么是老母猪下崽,一窝不如一窝了呢。
 
然后,是禽兽的一句“你有小孩吗”。俺本想买个网络摄像头给他寄去,免费帮他照看小孩,顺便帮他监控下他老婆有没有偷情。但是苦于没有地址,也就作罢了。
 
再后,殃视在短时间内,炮制出一堆新闻,集中火力猛攻google。这招深得孙子兵法之精髓---围魏救赵。
 
最后,是高也被人肉,原来是个想给殃视卖命的,也不知道入党没有,不过经过这次考验,肯定是找到组织了。不出三天,就享受到了和李XX,王X,吾XXX类似的待遇了。
 
上面这些俺都觉得挺正常,反正也被强奸惯了。但是,看了下面这篇文章,俺还是忍不住要抄袭著名导演的一句话:“D怎么能无耻到这个地步?”。
 
说明:google insights for search是一个记录和分析网民搜索偏好的工具,地址为:http://www.google.com/insights/search
 
以下这张图片为本人查询时的截屏,和转载文章的截屏日期上略有差异,搜索的来源地也不仅仅是北京,而是集中在山东、北京等五省市,但是从6月11日到17日搜索流量大增的基本事实仍然一目了然。
 

 
----------------------------------------以下为转载部分--------------------------------

21世纪的国会纵火案
    
    1933年的2月27日在德国发生的国会纵火案改变了德国的历史轨迹,是德国建立纳粹党独裁政权的关键事件。希特勒利用这一案件嫁祸于共产党人,并随后通过了《国会纵火法令》,取消了大部分魏玛宪法赋予德国人的私人权利。从此,德国走上了纳粹法西斯独裁的道路。
    
    在21世纪的今天,德国人仍然反思过去,反思纳粹独裁带给德国和世界的巨大灾难。而国会纵火案则标志着希特勒走向独裁的起点。今天,德国的国会大厦已经重新设计改建。但它仍然提醒着人们警惕纳粹独裁。
    
    最近的一系列蹊跷的事件,让我们不得不联想起上个世纪发生在德国的这一重大历史事件。不过,21世纪的国会纵火案并不需要明火,而是发生在网络上。
    
    6月18日,CCTV的焦点访谈节目披露了Google的联想词功能涉及淫秽色情及不正当内容。比如,你输入“儿子”,Google竟然第一个联想起“儿子母亲不正当关系”。简直太过分了!任何有良知的人看到这个节目都会质疑Google在网上扮演了不正当的角色。但是,为什么联想的词汇里面“儿子母亲不正当关系”排在第一位呢?看来我们中国人很变态,搜索这个词组的人非常多,以至于形成了最紧密的联想。想到这,我不但痛恨Google,而且更为中国人的变态之极而深深悲哀。因为这个词组不是Google想的,而是中国人输入搜索的。
    
    为了找到中国人对这个词组的兴趣的由来,我查看了Google的历史搜索数据:
    
    从历史数据可以看出,中国人对这个词组的兴趣一直不高。在过去5年的时间里搜索的频率极低。而只有在2008年底2009年初才有一点搜索的兴趣。而只有到了2009年6月,对这个词组的兴趣才骤然达到了高峰。
    
    而且,对这个词组的兴趣只有从2009年6月10日之后才骤然上升,到2009年6月17日到达峰值,随后逐步消退。看到这,我心里甚为宽慰。我们中国人根本没有那么变态。只是最近才有一小撮人非常变态,从2009年6月10日开始狂搜这个词组,到2009年6月17日达到高潮。
    
    而为什么CCTV偏偏在2009年6月17日录制揭露Google的节目时才达到最高峰值?看来有两种可能:
    
    第一,CCTV非常非常恰巧,刚好披露了变态人们的搜索行径,阻止了罪恶的搜索。但是,从概率的角度看,此种巧合的几率几乎为零,远远小于被雷劈死的概率,更小于获得500万彩票的几率。
    
    第二,这是一个阴谋。
    
    套用葛优的话:“我相信群众!”我相信中国人不变态,没有太多人闲得没事搜索这个词组。但是,有一小撮心理阴暗的人故意搜索这个词组,配合CCTV恶心Google从而达到不可告人的目的。这简直是嫁祸于人,堪称21世纪的国会纵火案。而且,他们不仅陷害了Google,更侮辱了所有中国人。把中国人塑造成了一个变态的群体。
    
    我希望到了22世纪,也就是机器猫的时代,人们不会用遗憾的口吻纪念这次事件:“看!这就是发生在21世纪的国会纵火案!从此,中国走入了变态的时代。”

May 04

骗子还真是多

上周四晚上和老婆出去闲逛,先看了家叫赫曼德的橱柜展示中心,看完就被震撼到了,设计真是牛B啊,价格更牛B。回来一查,果然是奢侈品牌。
 
然后出来去看了边上的一个家具城,有个卖慕思床具的,老婆特喜欢那个床品的颜色,一问那床要8w,原来是电动的,没有电动功能的也要8k。
 
今天google了一下,发现了很多文章说这个慕思床具是广东东莞的,根本不是他们宣称的法国品牌。又google了一下,看看有没有法文的网站,发现这么一个链接:http://www.derucci.com,上面还装模作样的有几句法语,但是网页上竟然漂浮中文客服窗口,查了一下它的whois:http://www.whois.net/whois/derucci.com,注册地在广东,注册机构和地址都是拼音,留的电话也是0086的。这么家骗子竟然能存活这么多年,还存活的这么好?
January 10

如何读取CPU的频率?

如何读取CPU的频率?
 
公式:CPU频率=倍频*外频。
 
这三个数据,我们至少要得到两个,就可以计算出第三个数据了。
 
倍频总是可以非常容易的从寄存器里面读到的,比如AMD的CPU,直接从MSR寄存器里面读取即可。
 
自从Intel Pentium开始加了RDTSC指令之后,读取CPU的频率就变得非常简单了。调用RDTSC指令之后,就可以直接得到CPU频率。再除以倍频,就可以获取外频。
 
但是,在自动降频之类的节能技术出现之后,CPU的频率又变得飘忽不定了。进入节能状态之后,CPU的倍频会被降低。而RDTSC的读数,却总是对应POST时设置的固定倍频乘以即时的外频。这就需要将RDTSC的读数除以POST时设置的倍频,计算出外频,再乘以当前的倍频,计算出CPU当前频率。
 
公式:CPU频率=RDTSC频率/POST倍频*倍频
 
POST时设置的倍频,BIOS并没有记录下来供我们读取。所以这条路走不通了。
 
那么我只好将目光转向最麻烦的外频了,因为外频是由CPU外部的时钟发生器输入的,不同的主板上会有不同的时钟发生器,不同牌子不同型号的,常见的至少有七八种,读取方法都不一样。更要命的是,程序根本无法知道主板上装的是什么型号的时钟发生器。除非要用户拆开机箱,在密密麻麻的主板上,拿着放大镜找到那颗小小芯片,再到程序中选择正确的型号。这个几乎是不可能的了。。。
 
在研究了CPUZ的读取CPU频率的汇编代码之后,发现它是计算出外频,再乘以倍频来获得CPU频率的。外频的数值是从Local APIC的寄存器中获取,即0xFEE000000开始的几个寄存器,这个基地址基本是固定的,也可以从ACPI的MADT表中读到。在Linux中,这个Timer是用来触发进程调度器的,估计windows下应该也是这么搞的。因此,当我们利用这个Timer来计算外频的时候,还可以顺便保证了计算线程不会被切换走。此外,对于多核CPU,每个核心有自己的Local APIC,读取前要切换到对应的核心上。
 
仅仅可以读取外频的数值还不行,还需要计时。CPUZ里面调用了ACPI中定义的一个PM Timer来做计时器,该计时器的晶振频率是固定的:3.579545MHz,因此可以用来计算时间。该PM Timer是从IO端口读取的,端口号不同机器不一定相同,可以在ACPI的FADT表里读到。
 
这种做法在网上还没见到过,因此记录一下,以飨后人
November 11

转:水火:重庆“的哥”和骆驼祥子,谁惨?

水火:重庆“的哥”和骆驼祥子,谁惨?

 

   

   

一、重庆的哥的“份子钱”

   

   

 重庆出租车罢工,主要的原因的“份子钱”收得太多。  

“份子钱”是什么呢?司机买一辆车,政府规定必须挂靠一家出租车公司才能营运。这种上交给出租车公司的“挂靠费”,就叫“份子钱”;或者车的产权也是出租车公司的,司机承包经营,上交给公司的高额承包费,也叫“份子钱”。   

“份子钱”交多少呢?一天运营下来起码要占毛收入的70%80%(见人民日报《薄熙来对话重庆市出租车司机》)。  

 实际情况如何呢?重庆出租车每辆车两个“的哥”,分两班,24小时营运。平均每天毛收入650元,一个月毛收入2万元左右。根据挂靠和承包性质的不同,交“份子钱”8千到—1.5万元不等。扣除司机自付的燃料费、修理费、保险费、路桥费、违规罚单……一个起早贪黑,每天工作12小时的“的哥”,月收入不到1500元。  

 辛辛苦苦忙一年,一个面色憔悴、灰头土脸的“的哥”,收入不到1.8万。  

 可出租车公司从这台车上净赚多少呢?8万!  

 这些出租车公司干些什么“高级工作呢?1、从政府批发来出租车指标;2、每个月组织出租车司机学习一次——名曰“负责出租车司机的日常管理”;3、收“份子钱”。  

 恐怕没有比在中国开出租车公司更暴利的行业了。那么赶紧去投资一个出租车公司吧?开不了。为什么呢?要关系。  

 改开之初,买得起车的人不多,那时候有一台车跑出租,没人管。  

 渐渐地,这些人发了。曾几何时,说谁谁是开出租车的,就和现在说谁谁是房地产老板、谁谁是煤老板,或者谁谁是政府官员一样,会引起一片艳慕的惊叹。  

 出租车多了,出租车市场形成了,公共权力开始全面接管这个市场,借口是千篇一律的“规范行业管理。”  

 官员设计了这样一个管理方式:政府垄断出租车公司的经营权审批和出租车的营运权发放,将营运权“专卖”批发给出租车公司,出租车公司再将营运权零售给司机。  

 多数城市定价批发。譬如重庆2004年出租车改革,一辆出租车25年营运权,价格20万元,平均每年8千元。  

 出租车公司将8千元/年批发来的营运权,零售给“的哥”,收“份子钱”,每年纯利8万!这种投资收益率,实在让金三角的毒枭羞愧无地。  

 出租车公司的真正职能是什么?天知道。它象是在政府和司机之间凭空多出来的一个中介行,更象是依附在“的哥”身上的吸血鬼。  

 如果说加强职业技能管理,但国家对每个“的哥”要进行上岗的职业技能考试;  

 如果说加强日常经营管理,但街上有交警、城管,消费者有12315投诉电话,“运管处”也有相应的投诉电话。这些国家职能或者准国家职能的机构,每天监察着出租车的营运;  

 如果说方便方针政策的学习贯彻,但“的哥”车上的通讯设备可以让政府官员24小时不间断地对他们训话,怎么都比出租车公司每个月召集起来“学习”一次强啊。  

 为什么政府仍然要设计出一个出租车公司做“中介”呢?想不通,只好推理一下。  

 目前中国90%的出租车公司属于民营企业。进入这个行业,投资不多,更没有什么技术壁垒。关键是什么呢?需要行政权的“前置审批”。  

 假如鄙人是重庆出租车管理部门的实权派,我一定以我丈母娘或者八大姑的名义,成立一家出租车公司,自己审批一下,再卖给自己200辆车的指标,一天也不用营运,半年后将这个公司卖出去,能赚多少?1.6亿!——半年后重庆出租车指标就从20万炒到100万了!  

 即使自己不开公司,只要这套体制起作用,其他人要搞到出租车公司的经营权、营运指标,鄙人签的这个字,点的这个头,含金量也可想而知。  

 所以假如鄙人主管重庆或者任何一个其他城市的出租车进入权,那么“出租车公司”就会成为我和我的同僚们敛聚财富的一个“白手套”,这个城市“的哥”上交的“份子钱”,国家得小头,鄙人和同僚们以及“民营企业家”们,共享大头!  

 自然,鄙人的道德境界既不“代表”,也不“科学”,是没有办法和那些嘴上“执政为民”喊得山响的正人君子们相提并论的。但是马克思说,有了300%的利润,有人就践踏人间的一切法律,而重庆出租车指标的利润,可是达到500%了啊!况且,这些年大人们“践踏”的情况,老百姓看得还少吗?  

 政府制订的规则,已经一目了然地成了官员盘剥民众、侵蚀国库的罪恶,如同天花乱坠的各类“富民政策”一样,一实行,全是“富官政策”!  

 但是,在一天不“改”一下就没法活的“改革国度”,这一条却是万万改不得的!

   

   

二、骆驼祥子的“份子钱”

 

   

      

 “份子钱”这种说法,不属于“新时代”的“自主创新”,而是中国“的哥”的隔代继承。这点,从老舍先生上个世纪30年代的名作《骆驼祥子》,可以看出。  

 《骆驼祥子》是上世纪20年代北京“的哥”——人力车夫们,真实生活的记录。  

 主人公骆驼祥子是一个18岁的破产农民,父母双亡,为了生存,他来到北京做“农民工”。  

 和今天中国城市内人如潮涌的“农民工”中的任何一个相比,骆驼祥子都是最“弱势”的:他不识字,没有城市户口,没有老乡亲戚关系照应,没有任何一种“上岗证书”,“除了一身力气”,他什么也不会……  

 怎么办呢?他没有到人山人海的“劳务市场”,而是直接走进了“车厂”——上世纪20年代北京的“出租车公司”,租了一辆“洋车”,做起了“洋车夫”——20世纪初中国的“的哥”。从此这个“的哥”,风里雨里穿行在北京的大街小巷。  

 因为是从“吃人的资本家”车厂里租来的车,所以骆驼祥子少不得被资本家“敲骨吸髓地残酷剥削”,每天的“血汗钱”,要拿一份来交“份儿钱”——我为什么要加这么多引号呢?请各位去查当今执政党党史的经典论述,这些加引号的部分,都可以从中找到毫厘不差的原话。  

 骆驼祥子要交多少“份儿钱”呢?在当时黑暗的北京,骆驼祥子可以做“长包”,也可以做“散座”,每月平均收入10元左右,每天收入在3角到4角。交给车厂一角“份儿钱”,一角多钱吃饭、穿衣、坐宿,每天净赚1角钱。  

 我知道,见到这样的数据,央视或者《人民日报》一定欢呼雀跃,马上喊出“改革开放以来,运输产业工人纯收入比八十年前增长多少万倍”的“改革成果”。可惜这种“贺龙大胜赵子龙”的说法,老百姓是嗤之以鼻的。  

 实际情况如何呢?  

 根据史料:1920年前后的北京,一个中等收入的四口之家,每月12元,就生活得非常“小康”了。  

 而根据北京统计局资料:2007年,北京市城市居民人均生活费支出为14825元,据此,一个四口之家每月生活费用支出需要4941元。  

 所以,按照这个标准,骆驼祥子当年每月收入10元钱,相当于今天的4110元。  

 由于当时没有先进的“代表”,替骆驼祥子“维护人民群众的根本利益”,所以骆驼祥子就少不得被“吃人的资本家”压迫、剥削,一个月下来,他总收入的30%,约等于今天的1235元,被车厂老板压榨走;自己得70%,大约2875元。  

 这虽然不是一个惊人的数目,但是已经可以令当前重庆“的哥”羡慕了。  

 更关键的是,骆驼祥子并不需要花钱办居住证、务工证、体检证、驾驶证、计划生育证、职业资格证件,也不需要交纳车船税、营业税、教育附加费、城市维建税、治安联防费、所得税、路桥费、“洋车指标费”,更不需要车体改色、车辆年检、驾驶证年检、交通违章罚款、购买学习资料、向灾区“献爱心”……  

 所以,大字不识一个的18岁青年,光凭一身力气,在黑暗的旧中国,就能做起创业致富的梦。每天挣一角“份儿钱”给资本家,挣一角多钱养活自己,再挣一角钱存在车厂老板那里,经过三年的努力,他居然存够了100元钱,买来了一辆属于自己的新洋车!  

自己的车,自己的生活,都在自己手里,高等车夫。”用今天的话说,骆驼祥子拉车三年,已成为“进城务工人员”中的一位成功人士了。因为不用再交“份儿钱”了,每个月可以净剩6元钱。于是,他的梦想开始象春天的蓓蕾一样,不断绽放:花两年,再买一辆新车,再买一辆……开个车厂……

 须知,此时在骆驼祥子经常路过的北京大学图书馆,有一位瘦高的白领,正紧张地做着图书管理工作。在当时“三大差别”非常严重的情况下,这位高级白领的月薪,才区区8元钱。

 这位高级白领是谁呢?毛泽东!

 照例,骆驼祥子的成功,首先要感谢的是“党和政府的好政策”,然而,“吃人的资本家”缺乏今天“出租车公司”们的“市场经济意识”,不能不说也是骆驼祥子侥幸成功的一个重要原因。  

 为什么呢?车老板这样想:我出一台车,骆驼祥子的家庭出一个人——虽然祥子的父母全死了。二者结合,构成洋车的运营。  

 每天洋车的营业收入中,出人的骆驼祥子家庭理应得一份,“人份钱”;我老板出车该得一份,“车份钱”;还有一角多钱养活祥子,这是“动力成本”。  

“吃人的资本家”得30%,骆驼祥子得70%,这就是20世纪初“出租车公司”和“的哥”之间的分配比例。  

 假如骆驼祥子有幸生活在80年后伟大的改革开放时代,生活在高楼林立、霓红缤纷的“国际化大都市”重庆,那么他不但无法实现置产创业的美梦,而且能否养活自己,还是个问题——因为交70%80%的“份儿钱”后,自己只有不到1角钱了!换算成今天的货币,月收入只有1300元左右。  

 巧合的是,《第一财经日报》昨天发表文章《重庆出租车行业调查》,结论是:重庆出租车二级承包人的月收入为1450元,司机为1376元。  

 这和用今天的管理方式,推算出的骆驼祥子收入,相去无几!  

 这说明了什么?  

 这说明了,今天中国的出租车公司,比80多年前的车厂,剥削程度狠了一倍还多;今天中国“的哥”的绝对收入,比80多年前的人力车夫,少了一半还多!  

 中国人,越活越抽抽!

 

   

三、“半吊子”罢工

 

   

   

 80多年前的车厂老板,车一份、人一份、家一份的分配方式,放在今天的“市场经济”环境中,绝对是“道德楷模”、“雷锋老板”。  

 但是依然有人对“出租车公司”30%的不劳而获,愤懑不已。在北京大学图书馆的毛泽东,大吼一声“哪里有压迫,哪里就要反抗”,辞工上了井冈山。后来他真建立过一个没有“份子钱”的社会。  

 毛泽东为什么能成功呢?有一个重要的原因,就是他和他的一帮同志,非常善于搞“工运”、“农运”、“学运”、“军运”,一帮“骆驼祥子”们,如同干柴一样,被他们前仆后继地点燃了。  

 80多年后的重庆,“车厂”份子钱苛重了一倍还多,车夫的收入减少了一大半,“骆驼祥子”们的生存受到了威胁,于是他们罢工。  

 可惜,这是一场“半吊子”罢工。  

 为什么是“半吊子”罢工呢?  

 1、诉求目标未接触实质——未要求取缔“出租公司中介”这种残酷的剥削体制;  

 2、没有智慧勇敢的领导集体。在罢工开始时,没有主动出面将自己的诉求公告于媒体和送达政府,以取得全社会的同情和支持;在罢工过程中,没有采取说服劝导的方式,而是采取了砸车的行为,对不一致行动的工友进行阻止,引起了社会的误解;在罢工结束后,没有主动出面宣告复工的原因;  

 3、诉求目标没有包括全国200万出租车工友的共同利益。  

 当然,在当前罢工仍然为“非法”的情况下,重庆出租车司机勇敢地团结起来,争取自己被残酷剥夺的利益,已属难能可贵。  

 古人云:“天下未乱蜀先乱,天下已治蜀后治”。重庆出租车司机的罢工行为,是改开30多年后,中国人民觉醒行动的开始。站在历史的高度,如果中国的政治经济政策不作根本性的主动调整,不久的将来,罢工一定会成为中国新生的无产阶级,争取自己生存权的一种经常性现象。  

 为什么呢?因为规定罢工非法,是历史的倒退。  

 19561115日,毛泽东在中共八届二中全会指出:“以后修改宪法,我主张加上一个罢工自由,要允许工人罢工。这样,有利于解决国家、厂长同群众的矛盾。”所以,1975年和1978年的宪法,都规定了罢工自由。  

 1982年,邓小平先生主持下的中国,在《宪法》中取消了公民罢工的权利,理由是:在社会主义公有制条件下,职工的利益与企业的利益是一致的,劳动争议不可能存在。  

 今天,邓小平已经去世11年了,中国经济已经是国有、民营、外资三分天下,老国企对职工的“终身雇佣制”和“全面包养制”,已经成为遥远的历史,此时如果谁还说“职工的利益与企业的利益是一致的,劳动争议不可能存在”,就是睁着眼睛说瞎话!  

 牛马太累太饿或者生病,主人都宽厚地允许它们罢工,但是中国工人却不可以罢工;  

 资本家可以周天广告、集体招工,资本家也可以因亏损而大批解雇工人,甚至可以一跑了之,总之他们对工人可以召之即来、挥之即去,拥有绝对的自由,但是工人即使在“黑砖窑”中,依然不可以罢工,任凭资本家象“包身工”一样虐待他们,这世界还有天理吗?!  

 其实,重庆“的哥”并非当今中国被剥夺最深重的一个群体。  

 在重庆“的哥”一台车一年创造的24万“GDP”中,“的哥”大约取得了3.6万元的工资性收入,占其“GDP”总量的15%  

 而在中国去年人民创造出的24万亿GDP的财富总量中,工资性分配只占10%。这10%,还包括了数量庞大的几千万、几百万一年的“企业家”群体,还包括了唯恐不廉所以工资不断加码的公务员群体……当然也包括了获得15%GDP”的重庆“的哥”群体。  

 这说明,在中国有一个数量庞大的群体,正在遭受着比重庆的哥更深重的剥夺和侵占,正从相对贫困向绝对贫困飞速滑落!  

 令人骇异的是,数量众多的经济学家和政治家群体,从来不向人民解释另外90%的财富,被哪些社会成员占有了?  

 须知,在绅士们向往并刻意模仿的西方社会,这种工资性分配占整个社会GDP总量的70%啊!

   

   

四、牛顿定律

   

   

 

 堂堂一表的薄熙来书记,在对待重庆“的哥”罢工事件上的表现,既令人喜,又令人怨。  

 令人喜的是,罢工不久,薄熙来迅速和“的哥”对话,并立即满足了“的哥”们的合理要求。虽然其浸淫中国官场太久所固化了的些许威赫气度,和“的哥”们谦卑惶恐的态度对比鲜明,但也实在是中国官员中平民化的巅峰之作了。  

 令人生怨的是,罢工事件一发生,重庆当局首先没有考虑“的哥”为什么罢工?诉求是否合理?而是本能地在第一时间“全力调查操纵出租车罢工的人员”。  

 如果在其他城市,也许中国老百姓不以为然,因为这是改开以来中国政府处理类似事件的固定套路。但是在薄熙来主政的重庆发生,这就非常令人错愕。  

 为什么呢?因为薄熙来是中共元老薄一波的儿子。  

 薄一波同志是跟着毛主席一起打江山的人。年轻的薄一波,舍生忘死,发动山西的同学和市民,支援上海工人的“五卅运动”,从此走上了为劳苦人民争江山的革命道路。  

 当毛泽东的同志们逐渐凋零,中国在资改道路上越走越远的时候,人民大众将一部分渺茫的希望寄托在“红色后代”们的身上。而薄熙来主政重庆后,唱红歌、查贪官、铁腕整顿社会秩序等行为,更是深得民心,甚至使人民大众隐约对他产生了更多美好的期待。  

 虽然“全力调查操纵出租车罢工的人员”未必出自薄熙来书记的指令,极有可能是庞大复杂的官僚机构自动运行的结果,但是发生在重庆,依然令人不快:薄一波同志当年冒着被砍头的危险,支持上海罢工的“顾正红”们,薄熙来同志权力覆盖下的政府,却首先调查操纵出租车罢工的“顾正红”们,这是反差多么巨大的历史讽刺啊!  

 尤其令人不能接受的是,重庆“的哥”反映“份子钱”苛重的意见,最早有影响的可以追溯到2005年。这年,重庆“的哥”杨孝明提出行政诉讼,要求法院责令行政机关,批准“人民出租车公司”成立,将目前被出租车公司残酷剥削去的利益,由国家、的哥、消费者三方享受。三年多过去了,司法机关、行政机关一直对杨孝明的诉求置之不理,杨孝明也被逼得失业潦倒,以致酿成今天全市大罢工的事件。  

 这些司法机关、行政机关,难道不应该为这次罢工事件负责吗?难道不应该追究他们不作为的行政责任和渎职法律责任吗?  

 我常常想一个问题:为什么中国历史上每次革命都那么残酷呢?  

 譬如,项羽克秦,不但坑杀了20万降卒,而且将秦宫室烧了,“火三月不灭”;  

 再譬如,黄巢攻入长安,杀光唐宗室老小妇孺,屠8万男丁,将当时世界最大城市、1500年历史的长安城,“一炬成灰”;  

 我想,这大概是因为,历史上中国的统治阶级,权柄在手的时候,毫不节制,无度地将权力用于聚敛盘剥,无止境地对老百姓的财富抢夺侵吞,无人性地对老百姓虐待愚弄……  

 而中国的老百姓是世界上最能忍耐的一个群体,他们只要有一口饭吃,就苟且偷生,但是这仇恨和痛苦却默默在心中积蓄储藏,等到有一天没有饭吃了,他们轰然爆发,此时,长期积蓄的刻骨仇恨和深重痛苦,将全部宣泄出来,形成宏大的非人道复仇和非理性摧毁。  

 这种历史现象似乎印证了物理学上的牛顿第三定律:两个物体之间的作用力和反作用力,大小相等,方向相反,作用在同一条直线上。  

 今天在重庆,“份子钱”大家都叫“板板钱”,连薄熙来同志也称其为“板板钱”。  

 为什么叫“板板钱”呢?  

 四川有一个 “省骂”,叫“先人板板”。我认为,这“省骂”应该是国骂的变种,它省略了主语“我”和谓语“X”,完全的句式应该是“我X你先人板板”。  

 假如我的理解是正确的,那么这个“板”,应该是声母B开头的一种人类器官的通假性变称,而“板板”不过是川人淡化不雅色彩、赋予幽默气氛的一种同义叠加创作。  

“板板钱”!“板板钱”!  

 重庆人每天都用这种鄙俗的称谓,诅咒着一种歹毒罪恶的出租车管理体制,控诉着一群残忍贪婪的“管理人员”!

October 23

N/A

从这次就房地产来看,上海市和中央的政策根本不是一条心。
 
中央的政策是救银行,真正政府出的血并不多,契税和印花税都是小钱,真正的狠招是2成首付,7折利息和取消第二套房的限制,这些都是银行在放血,所以今天银行股都很萎靡。但是,银行应该还是喜欢这样的救市政策的,因为和开发商还不了开发贷款比,对付一大群想短供的房奴要简单得多。
 
上海市政府出的最重要的招,是把二手房营业税的年限,从五年减少到了两年,也就是说,除非是07年买在山顶的,其他都有逃生的机会了。而上海买新房最恶心的契税,倒是没有动静。因为按照上海市的规定,几乎市面上所有的房子,都不是普通住宅,而是高级住宅。契税都是按照3%来征收的,这次中央调整的90平米以下的普通住宅,契税从1.5%下降到1%,根本和上海没啥关系。这样就减少了新房和二手房的价格差距,便于炒家脱身。
 
这次救市价格可能有稍许反弹,但是绝不会就此反转,因为政府根本没想就房市,根本目的是救银行。今天又放出了不准许“再”造小产权房的说法,而且明确表示消费者在不知情的情况下买了小产权房,政府日后会加以解决。以后的小产权房,就是建立在农村土地自由流转的基础上了,也就不叫做小产权房了。而以前的小产权房,也还会按照类似的方法补办手续。在土地供应从地方政府垄断扩展到每个村都可以供地的情况下,房地产价格中短期内,是无望再创新高了。而且,到了2020年之后,80年代生育高峰的一代人,都完成了买房结婚的过程,90年人口出生数目达到了2600万的高峰后一路下行到2000年都不满1500万了。加上90年代中晚期房改房的空出,那时候的市场供给会更加多。
October 16

N/A

    今天再写一个奇怪的bug,是周一碰到的:free版的64位驱动读取pci header的时候,会少读3个设备;而check版本的64位驱动是好的。反汇编这两个driver看了一下,check版的复制过程memcpy是用rep movsw(记得是movsw,为什么不是movsd呢?),而free版是call了一个函数。这个函数很复杂,大致看了一下,用到了64位的寄存器优化了复制的效率,应该是个intrinsic函数。
    中午吃完饭上楼梯的时候,突然想到了前段时间看BKDG时候扫过的一段话:用MMIO访问PCI空间是有要求的,必须要4字节对齐访问,只能用到al/ax/eax之类的寄存读取1、2、4个字节。MMIO空间中所有的pci header肯定都是4字节对齐的,这个没问题,但是优化后8个字节一读肯定就出事情了。bug肯定是和这个有关,但是有不能全部解释通顺,因为如果是这个问题,不可能只有3个设备读不出来,应该都读不出来才对。专门写了一个循环,8个字节读取,果然是一个设备都没找到。看样子是那段优化过的intrinsic函数的奇怪行径了。当时很急要出版本再送测试,就直接写了个循环读取,没有再深究其原因。明天去把代码搞回来,周末没事分析下看看。所以是未完待续。。。

三体问题

    国庆前NN同学给我说起了这个问题,说是一个尚未解决的难题。于是google了一下,发现原来问题本身,在高中物理的基础上,就可以叙述清楚:空间中有3个质点,给定初始状态t0时的各自的位置P(x, y, z)、质量m和初速度v,它们之间只有万有引力的影响,求其后任意时刻t时的位置和速度。高中课本上只分析了地球绕太阳转这种最简单的情况,即只有两个质点,而且速度方向和引力方向垂直,一个的质量还可以小的忽略。当时从来没有想到过,在万有引力公式下,还可以推演出这么复杂的情况。。。据说这是个18阶的微分方程,初始条件微小的改变,会导致后来运动线路非常大的变化,即混沌现象或者说蝴蝶效应。
    记在这里,什么时候在笔记本上装个VS2005,写段程序推演一下看看。
September 24

N/A

      花了五十大洋,买了一小管arctic silver的纯银硅胶,才3.5克,折合14.25元每克。。。好贵。。。上次在电脑城买的便宜的,才10块钱一瓶。
      拆开笔记本,卸下风扇,发现上次蓝快的人装风扇的时候,竟然没有把GPU散热片上的橡胶保护皮撕下来。。。怪不得我玩3D游戏,比换风扇之前还要热,害得我这几年都没敢玩。。。在CPU和GPU的芯片上挤了一点点硅胶,再把机器装好,顺利开机。试用结果暂时如下:待机温度从52下降到44,看网页的温度从56下降到48。3D游戏暂时没试验,估计效果会不错。而且据说arctic silver要过200小时才会达到最佳状态。
      这钱花的很值,哈哈。
September 20

无耻的伊利,无耻的新浪

为了避免被搜索引擎收录,新浪新闻中凡是有伊利两个字的地方,均在中间加了空格。不久就被人识破了。于是,作假手段升级,在网页源文件中添加一个无意义的符号隔断,但是网页上却看不出来。详见下面的连接和截图,只有伊利两个字之间有<!>,蒙牛和光明都没有。
 
造假被捉,却不思悔改,继续造假掩盖罪行,这样的企业还能相信吗?
 
 
无耻的伊利

祝咏兰主任在中央国家机关特供产品授牌仪式上的讲话

祝咏兰主任在中央国家机关特供产品授牌仪式上的讲话
 
国务院机关老干部活动中心、国务院中央国家机关食品特供中心祝咏兰主任
 
各位领导、各位来宾、各位老年朋友们:
      大家好!很高兴代表国务院中央国家机关食品特供中心出席本次会议。
      国务院中央国家机关食品特供中心成立于2005年4月,是国务院机关老干部活动中心为国家机关特供有机食品的合作单位,依托国务院后勤基地、中央警卫局农场、武警边防后勤基地和遍布全国13个省市、直辖市、自治区的生产基地,一直为国家94个部委老干部们提供优质、放心的有机食品。中心全权代表国务院机关老干部活动中心臻选、评估、并生产(或授权生产)面向中央国家机关及国务院机关老干部的特供指定专用产品。
      基于对自身优势及对需求的客观判断,国务院中央国家机关食品特供中心率先投入到食品、茶、酒类等行业中来,被臻选为“中央国家机关特供”产品的著名品牌有十几个。所选用的有机食品均来自严格按照国际、国家食品生产规范和标准生产的有机食品生产企业及有机农业体系,并通过国家认可的认证机构的认证。对已经加入到国家机关特供体系中的企业中心还定期的进行评估考核及相关的认证,帮助企业加强行业自律,对加入国家机关特供体系之后没有完全按照国家规定的标准及对特供体系的承诺标准进行生产的企业,坚决予以取缔。目前,东北的大米基地、武汉的水产品养殖基地、云南的茶叶种植基地、内蒙古牛羊肉等基地等全国最优良的品种均已经成为中心重点培养和采购的原材料基地。
      我们臻选“中央国家机关特供”产品条件非常严格,要求重点在其 “安全性”和“营养性”。当前最为安全的食品当属有机食品,用返朴归真这四个字来形容它一点都不过分。大家都知道目前常规种植业大量施用农药和化肥;在常规畜禽养殖过程中则普遍使用抗生素和激素;常规淡水或近海养殖的水产品又被各种水污染所侵蚀。这些成分残留在最终产品(各类蔬菜、肉类、奶制品)中,人食用了这些产品后对身体造成的危害是不言而喻的。有机食品的生产必须完全按照作物、牲畜在自然环境中的生长规律进行,在生产加工过程中,不使用化肥、农药、生长激素、无污染,不使用化学添加剂、防腐剂,不使用基因工程技术,并经过有机食品认证机构认证。我国绿色食品的AA级就是参照有机食品的标准而生产的。凡是上述环节有一项不达标就不能算是真正的有机食品,更不能入选为“中央国家机关特供”产品。
      再说“营养性”。有机食品无污染无任何添加剂,保持了天然营养成分,因此比常规食品更有营养,含有更丰富的食物纤维、微量元素及矿物质。为了保证特供产品的营养性,对每一入选产品都有详实的数据纪录,这些数据则是通过国家食品检测中心和绿色食品检测中心营养成分分析与安全性评价得来的。<BR>;;; 为满足中央国家机关老干部的健康需求,我们将保健食品列为一个新的特供品种。保健食品是介于普通食品和药品的特殊食品,其要求更高于其它有机食品,所以我们在选择的时候格外的慎重。在“安全性”方面要求产品组方理论科学、有国家相关权威机构和专家安全性论证,产品必须经过动物安全实验,并得到国家食品药品监督管理局许可,工艺上要求先进、完善,原料及辅助材料安全可靠无污染,不得含有任何激素或化学成分,同时对原料供应商的产地证明及其相关质量认证材料进行审核,特别要求保健食品生产企业必须是通过国家GPM认证、ISO9000质量体系认证企业;除了“安全性”,入选保健食品必须具有显著的功效性,在这一点上我们要求入选产品必须通过国家相关权威机构功能实验论证以及人体功能实验,要求有权威专家论证和综合评述。此外,我们还要对该产品的市场美誉度和满意度进行大量调研,最后由我们的专家团综合各项数据给予评定。
      为国务院老干部活动中心臻选特供保健食品工作是由国务院中央国家机关有机食品特供中心、中安质环认证中心两家权威部门承担,在全国范围内上千种保健食品中,经过一番严格的调查和审核程序。从安全、功效、售后服务、外观造型、用户口碑、质量管理体系六大方面进行了充分的调研,覆盖全面的调查项目,保证了报告的科学性和客观性。通过六个方面的综合评定,历时半年,“科尔益康胶囊”、“金多莱壳寡糖复合胶囊”最终获选
      在此,我代表国务院机关老干部活动中心、国务院中央国家机关食品特供中心对山东科尔公司表示由衷的祝贺。
September 05

N/A

这几天试了下用MMIO方式访问PCI配置空间,原本是不知道有统一的方法获取基地址,最后总算在ACPI的spec里面找到了。大致流程如下:
PCI的MMIO的初始化工作是由SBIOS负责的,在POST的时候,SBIOS会去配置MMIO相关的寄存器,然后将相关信息填写在ACPI table中供OS使用。
问题就在于SBIOS填写的ACPI table经常会有问题,还有就是MMIO的初始化也经常会有问题。因为这两项有问题,一般情况下不影响系统的使用。比如我的工作机器是HP的,SBIOS在初始化MMIO的时候,就没有映射CPU中HTLink和DCT的PCI空间。还有在很多测试用的BIOS中,ACPI table根本就不符合规范,很多table的长度甚至是0xFFFFFFFF。
不过,如果ACPI table和MMIO可以使用,好处也是很多的。首先,不会出现冲突的现象了,因为读写都是原子操作;其次,我将整个PCI scan过程包入driver中,使得scan的过程非常快,原本超过3秒,现在1秒不到了。
August 09

格鲁吉亚局势

先上地图(放最下面了)。地图比例尺1:5300000,即一厘米等于53公里。
南奥塞梯自治区首府茨欣瓦利,离格俄边境不到50公里,离格鲁吉亚首都第比利斯不到一百公里。最新消息,俄军装甲部队已进入该城市。格鲁吉亚北面相对的,是俄罗斯北高加索军区,司令部驻地在顿河畔的罗斯托夫。进入茨欣瓦利的第58集团军即隶属该军区。
从俄方北奥塞梯首府弗拉季高加索到第比利斯,有一条19世纪修的军用公路相连,距离150公里,该公路穿过格俄边境最高峰。很明显,格俄边境是最高点,往两边都是往下的坡,所以一旦俄军越过该点布防,格鲁吉亚就是门户大开,俄军应当可以在24小时之内推进到其首都。
这就好比天津被划为美国的租界,哪天美国人一高兴,就可以在24小时内把坦克开到天安门广场。
此外,格鲁吉亚的西边是黑海, 阿布哈兹自治共和国。其首府苏呼米是重要的港口和铁路枢纽,俄军对该地区垂涎已久。
 
未命名
 
August 08

奥运开幕式评论新鲜出炉

先说四个很有创意的点:
1 开场倒计时,声光效果完美结合
2 足迹烟火,沿中轴线迈向鸟巢
3 画卷作为舞台
4 地球
当然,也有很多败笔:
1 最明显的就是那首没听懂的主题歌。。。
2 很多烟火放得毫无主题,至多烘托了气氛而已
3 摇船桨主题不清,没意思
4 傀儡戏+京剧,镜头根本没法拉
5 很多个人形式的演出,放在那么大的体育场中毫不起眼
 
June 03

单向链表改双向链表

今天无聊中逛csdn,看到一道有趣的题目。原有一个单向链表,每个节点8个字节,4个字节指针指向下个节点,4个字节指向数据块。要求不改变每个节点的大小,还是保持8个字节,使该链表可以双向遍历。
答案是这样的,指向数据块的指针当然是不能动的啦,另外4个字节改成存储前一个节点地址和后一个节点地址的异或值。
这样改了之后,遍历是没有问题了,但是如果单单只有其中某个节点,是不能知道其前后节点的。这点和双向链表还是有区别的。
这个和不用第三变量,交换数据,其实是一个道理。
May 14

汶川地形图

汶川位于岷江分叉点,只有三个方向有路进入,都是沿江的公路,一边是深沟激流,一边是高度差达1000米以上的高山。这个鬼地方地震之后再加上暴雨,不塌方是不可能的。
 
 
ge
ge2
 
汶川
May 13

淘宝可刷卡捐款,适合俺们这种手头没现金的穷人

顺便说一下,这次政府表现不错,值得表扬。
今年实在是多灾多难,奥运会不开也罢。
昨天消息来源比较多,今天似乎有统一控制,虽然避免了很多谣言,但是又致使信息不畅通.
地震
April 17

关于西藏事件的若干点意见

1.如果藏人想独立,可以,请移民去印度搞独立;在中国境内搞独立,那么解决方案可参照白人对付印第安人的方法,大规模灭绝后划一块自留地给他们.
2.无论藏人是不是想独立,都要有计划的向西藏移民,和鼓励藏汉通婚.
3.西方人对于西藏的看法基本可以忽略,不应该理睬他们.如果在外交中有西方国家以此作为协商条件,现在的中国已经有足够多的手段反制.更不要说英国有北爱,法国有科西嘉,西班牙有巴斯克...再说了,没有也可以制造出来.
4.即便中国有13亿人,同时叫喊,欧洲和美洲也是听不到的.所以,国外的同学们要努力,国内外语好的可以上网逛逛,至于在家门口抵制家乐福,我觉得意义不大,里面卖的都是中国货,而且还是合资的;但是抵制纯进口奢侈品,却是很有意义的,不过有钱人们未必有这个心情.
5.过于关注西方国家的态度,反而是示弱.如果非洲刚果的议会通过藏独议案,估计根本没人报道.
6.警惕借此机会否定西方民主制度的阴谋,基里巴斯国的人大委员长已经借此机会发文了.
7.在这个事件中,ZF的表现愚昧至极.刚开始的一周,封锁了很多国外网站.一周之后才想明白,原来国内人民和ZF是一边的,才解了封.说明ZF的一贯作风,就是出了问题先捂起来.所以俺这样的低素质人士,就懒得掺合这件事情了,反正这也不是敌国入侵之类的实质性侵害.
8.ZF在后来的反抵制和保护圣火的活动中犹犹豫豫,的确,民族主义这剂药很猛很好用,但是说不定养大了反受其害.
9.网民们有组织的搞抵制活动是非常好的演练,这次抵制法国人,下次就可以抵制伟光正.这也是ZF犹犹豫豫的原因.伟光正维持专制统治的一大法宝,就是保持国内只有他一个合法组织.所以,不管是黑社会,上访,群体事件,只要有组织,一定要破坏掉.
10.奥运会不开也没啥大不了的,俺不觉得这丢了俺的脸,可能国外的同学们会有这种感觉,反正在国内俺只觉得ZF在浪费俺缴的税打肿脸充胖子.
December 22

N/A

今天一次性发两篇。

 

最近遇到一个很有趣的bug,还没有最终解决。问题很简单,我们的程序需要访问pci配置空间,在windows下有5种方法:

 

1 读写IO端口CFC/CF8,和OS无关,可读写pcie的4k空间。
2 MMIO,和OS无关,也可读写pcie空间,但是有些烂bios没有设置好mmio映射的基地址,需要自己去cpu的寄存器里面去初始化,这些都是和cpu的型号相关的
3 HalGetBusData和HalSetBusData函数,这是DDK里面的函数,Win2000之后就变成obsolete了,但是居然到Vista都还是可以用。这个函数用起来很简单,非常好用,但是不支持pcie空间。
4 IRP_MN_READ_CONFIG和IRP_MN_WRITE_CONFIG,这个MS推荐在win2000之后替代HAL函数的。用起来很麻烦,需要挂在pci bus上,然后向下发irp请求,还要写回调函数等返回。这个请求只能在DISPATCH_LEVEL及更低的level下使用
5 IRP_MN_QUERY_INTERFACE,这是另一个IRP请求,也需要挂在pci bus上向下发请求,和上面第四个不同的是,这个请求在DISPATCH_LEVEL之下找到bus interface的对象,之后的使用没有IRP Level的限制。

 

好吧,方法真是多阿,让我们开始挑一下。。。我们的driver只是一个kernel service,不会挂在任何设备上,所以4和5都不好用。我们需要访问pcie空间,所以3不能满足所有需求。2需要知道基地址,这和cpu类型相关,维护起来很麻烦,而且有时候遇到烂bios会失效。所以,我们就把目光投向了1号方案。

 

BIOS中就是使用一号方案的,因为它用起来简单可靠。但是,到了OS下,就有了一系列怪问题。最早是QA报了一个bug,我们的程序和Power Moniter、FACT同时运行,会导致死机。查看log记录,发现是扫描pci设备的时候挂的。而且,扫描pci设备时,经常会发现若干莫名其妙的设备,比如vendor id为0啦,bus number特别大啦,总之看起来像是乱码,而且每次都不一样。原因很简单,用一号方案读pci空间的有两个步骤:先朝CF8端口写入要访问的pci空间的地址,再对CFC端口进行读取或者写入操作。在BIOS下,因为就BIOS自己在运行BSP上,中断也不用处理,代码是一条直线往下走。到了OS下,OS会切换线程,可能向CF8写入地址后就被切走了,然后别的代码又一次改写了CF8端口,等到切回来读取的时候,地址早就不对了,这就很好的解释了那些莫名其妙的pci设备的由来;至于会死机,很可能别的程序正准备写入pci空间,填好了地址,被切走了,切回来的时候cf8被人改过了,朝错误的地址写入了数据,就很有可能挂了。

 

好了,问题明了了,那么我们只要保证不被切走就好了。首先,是屏蔽所有中断,这个在windows下可以通过提高irp level来实现,直接提升到32。然后保存原来cf8里面的地址,接着就可以干自己的事情了,干完之后记得将原来的地址放回去,再把irp level降下来。这个过程看起来很完美,但是到了机器上一运行,还是挂了。。。

 

在单核的机器上,这样做的确是足够了,但是到了多核时代,仅仅屏蔽中断是不够的,其他的核心上仍然有代码在运行,还得想办法让他们停下来。。。但是让四个核心都暂停,这个代价也太大了一点,特别是IO端口的操作可能很慢,损失就更大了。。。(未完待续)

N/A

简历上几乎每个人都会写自己善与团队合作,但是到底团队是怎样合作的,我很久以来都没有认

真考虑过。对于像我这么懒的人来说,我最喜欢的是扮演一个只有单一入口和出口的函数,领导

扔个活进来,我干完再扔出去。

 

但是在公司里面,要做成一件事情,是不可能一个人从头到尾做完的,在干活的期间,总会需要

调用点其他函数去寻求别人的帮助。和编程序不一样的是,这些函数几乎都不是立即返回能得到

结果的。那么就有两种办法:定期问一下对方是不是做完了,这就是轮询;等别人做完了通知你

,这就是事件和回调函数了。在程序里后一种方案的效率高,但是在实际工作中,却是轮询的效

率高。因为你实际调用的,不是一个函数,而应该看作另外一台电脑。你发过去的请求会被对方

排序,那台电脑上可能同时在处理很多件请求。你的程序阻塞在某个请求上了,这个请求对你来

说优先级非常高,但是对那台电脑来说,可能优先级非常低,你必须通过不断的轮询,去促使对

方提高优先级。

 

更复杂的模型是这样的,你发送了一个请求给A,A要完成你请求的服务时,需要发送一个请求给

B,而B要完成A的请求时,又需要C的帮助。。。对于研发人员,这个链条通常不会很长,但是两

级请求的情况是很常见的。这时对于A来说,他并没有很强的动力去轮询B,因为A可能有很多类

似的工作要做,每个请求对他来说优先级都是一样的,一个请求阻塞了,可以处理其他请求,这

样对他来说单位时间内完成的工作量更大,但是对于整个系统来说,并不一定是最优解。这时你

应该绕过A,直接去轮询B,这样才能使你自己按时完成工作。

 

对于售后服务之类直接面对客户的工作来说,这个请求的传导链条就会很长很恐怖了,能找到关

键的阻塞点,并推动他,估计就是这类工作的核心内容吧。而对于一个制定业绩考核标准的领导来说,

应该调整衡量A工作绩效的方案,不应该以工作量最大为考核标准,应该以所有请求的平均等待

时间为考核标准。甚至可以为A收到的每个请求设定优先级别,所有的紧急请求需要A尽快完成,这样A就知道在什么情况下需要去轮询B。

November 15

N/A

      本来想再写一篇关于Cache的文章的,是在搞定Prime95的那个稳定性检测算法之后。但是,花了三天的时间,最后还是不能在不死机的状态下检测出系统不稳定,所以还是再等等吧。。。等我的HDT邮寄到了,我就写一篇。HDT是一个可以直接在硬件层面中断CPU并单步调试的黑盒子,可以查看各级cache中的数据,强大吧^_^
      本人编写的有史以来最强大的超频软件,最近总算可以拿出来show了:
      这个其实还不是正式版本,还有很多很好很强大的功能没有放出,敬请期待^_^
      有兴趣并且有钱的,可以考虑买个RD790的板子,配上4块HD2900的显卡,接上8个显示器,玩微软模拟飞行。
October 15

N/A

      以前一直以为CPU的cache就和软件层面的差不多,里面可以放任何想放入的内存片断。今天在准备一个讲座的时候,才发现原来CPU的cache并不是我原先想象的那样的。举例说明如下:
      假设一个cache有128KB,主存的容量是256MB。cache中的最小存储单位是行(cache line),我们假设每行存储32个字节。
      对于直接映射(Direct Map)模式的cache,主存会按照地址被划分成若干个区域,每个区域对应一行。按照假设的数据,主存会被划分成128KB÷32B=4096个区域,每个区域对应一行cache和256MB÷4096=64KB的主存。每一块主存中,只能有32Byte的连续数据被记录在对应的cache中。这种模式的cache遍历效率非常高,根据地址,直接就能找到那一行cache line,再比较一次那行cache line在区域中的偏移和请求的地址是否一致即可。但是,很明显,即便有数据预取,这样的cache的命中率也会很低。
      还有一种叫做完全关联(Full Associativity)模式的cache,每个cache line都可以对应主存的任何位置。这就是我原先想象中的那种模式,但是这种模式的效率很低,因为每次在cache中查找,如果是未命中的数据,都需要遍历完整个cache,在例子中就是4096次比较,如果是命中的数据,平均是2048次比较。这就会造成cache的响应延时变大,实现的电路变复杂。只有容量很小,而且很重要的cache才会用这种方法实现。比如AMD最新4核CPU的L1 Data TLB 和Instruction TLB就是完全关联的,其中L1 Data TLB只有48项,L1 Instruction TLB只有32项。
      最常用的是一种折中的方案,一般写作N路关联(N-way Associtivity)模式。这种模式中,主存仍然会被按照地址划分成若干区域,但是每个区域不在只有一行cache line,而是有N行。每次查找cache时,直接根据地址找到对应的那N行cache line遍历即可,遍历的开销小了很多。一般的L1 Instruction Cache、L1 Data Cache、L2 Cache等都会采用这种模式。其实,上面两种模式可以看作这种模式的特殊情况,N=1和N=Cache Line总数。
September 01

美国《公民读本》的第一课:“你”

      从不转载,今天破例一次,顺便除草。
      转自猫眼。
==========================
美国《公民读本》的第一课:“你”        
 
作者:林达
 
假如政府做错事,你严厉批评政府,那是希望它改善,这就是建设性。假如你明明发现国家在走向错误的道路,你却还是说,走得好走得好。那是一种毁坏的态度。
 
    公民教育是个一直在谈的话题,许多中国学者都意识到,建立公民社会,要从公民教育做起,要写出高质量的《公民读本》来。美国很多学校有公民教育课程,《 公民读本》的教材很多,一般是学者写的,各地学校的老师从中选挑。可是,他们的大原则在那里,课本也就大同小异。我随意挑了一本看看。那是密歇根大学的教育学教授写的。
 
    前言里引了一个伟大哲学家的话:“了解你自己。”课本认为,你要做个好公民,先要了解你自己。这一部分,一共谈了四章。从第一章,“你:一个人”开始,谈“一个健康的人”、“你和你的个性”、“和他人相处”,直到“做个好公民”。第二章是“你:一个学生”,谈“学习能力的不同”、“改善你的学习”、“清醒的思考”。第三章是“你:一个家庭成员”,谈的是“家庭是不同的”、“家庭的问题”、“做一个好的家庭成员”。第四章才是“你:一个公民”,谈“你生活中的政府”、“政府存在的理由”。
 
    《公民读本》如此开端的原因,是此书在开篇第一句话就告诉孩子们的,这个国家“建立在这样的一个理念之上,就是每一个人都是重要的。它的政府制度、经济体系、人与人之间的关系,都建立在这样一个理念之上”。你作为一个人,是最重要的,所以,在这个制度下,你必须能“自由买卖和拥有,你自己决定做什么”。而政府只是为你服务的机构:“当政府是你的仆人,你是自由的;当政府成为你的主人,你就像一个奴隶那样,不再重要了。”课本还告诉孩子,由于“个人是最重要的”,政府就不能把自己的意志强加给生意人,生意人就不能欺骗顾客,工会才必须要代表它每个成员的利益。因为“个人的尊严是至高无上的”。
 
    课本同时让孩子们认识自己,尊重个人,不是惟我独尊。作为个人,人都是有不同弱点的,而自己的弱点是需要认识和改善的。一个好的公民是有民主性格的。课本对民主性格的总结,我觉得简直就是中国人的老话,译成中文很准确的就是:“己所不欲,勿施于人。”你不愿意被伤害吧?那么,你不要伤害他人。因此,课本教育孩子,必须学会控制自己,“一个好公民是一个善于调节自己的人”、“是一个善于学习的人”、“善于思考的人”,在以上前提下,才应该是“一个能够行动的人”。
 
    一个好的公民是忠于自己国家的,这意味着你对国家是取建设性、而不是毁坏的态度。假如政府做错事,你严厉批评政府,那是希望它改善,这就是建设性。假如你明明发现国家在走向错误的道路,你却还是说,走得好走得好。那是一种毁坏的态度。
 
    作为一个准公民的学生,《公民读本》告诉你,学科“分数对于精神活动的衡量,是非常有限的”,好分数只在测定“学校的成就”,而不是在测定你“人生的成就”。“智商是在改变的”,而“智力是不同能力的组合”。作为准公民,要学会“清醒地思考”。课本认为,能够清醒思考,是做个好公民的最基本品质之一。假如不能清醒思考,给你民主权利,你照样可能被人操纵和利用。
 
那么,如何才能清醒地思考呢?
 
    首先是,“你的思考必须在事实的基础上”。所以,非常简单的前提是,你有权利知晓全部事实。作为一个为公民社会服务的政府,就必须让信息自由流动,让公民们能够得到全部事实。没有这个前提的社会,就很难有合格的公民。课本还建议学生,不仅知晓事实,还要“不断认识最新发现的事实”,知晓事实之后,一个清醒的思考者“要能够解决问题”。
 
    课本向孩子们指出了最容易陷入的“思路不清”的误区。首先是不能有理想化倾向的“愿望思考”,例如,不能在心里希望一个理想社会实现,就认定它一定能实现。还有,要避免“情绪化的思维”,课本告诉孩子们,“我们每个人都是有偏见的。我们都有自己喜欢的和不喜欢的事情,可是我们不要让它影响我们的清醒思考”。否则,难免走极端。而那些走极端的思路,“对个人和国家都会造成最大伤害”。课本还告诉孩子们,不要轻易下结论,思考要从事实出发,就是说“不要从观念出发”,不要从主义出发。
 
    课本还对这些孩子,未来的丈夫和妻子、父亲和母亲们说:做个好的家庭成员,是做个好公民的基础。课本告诉孩子们,有各种不同的家庭,家庭是有种种问题的,解决家庭中的问题是多么地不容易,而幸福取决于你的生活方式、取决于你对家庭成员的关心和爱。虽然课本不能解决孩子们未来将面临的复杂生活,可是它给了你思想准备,让你懂得,重视“家庭价值”是一个好公民的基本条件。在关心国家、社会、他人之前,先要关心和爱护自己的家人。
 
    然后,课本才对孩子们推出“自治”的概念。自治建立在公民具有民主性格的基础上,霸道的管理不是民主的自治。在家里有家庭管理的问题,在学校有学校管理的问题,课本鼓励孩子,你们可以从小尝试,学会组成各种社团,在“人民定规则”之前,每一个个人,要认识和改善自己,敢于承担责任、学会平等地和他人相处。
 
    《公民读本》在告诉“你”,民主很具体。要改造社会吗?先从把自己改造成一个好公民做起。而最后,你会发现,这样的公民准备,又是在使“你”和他人的生活,都变得更容易。它和最初的出发点是一致的,那就是,个人的幸福,是最重要的。所以,《公民读本》第一课,谈的就是“你”。
 
July 01

N/A

      8区是无尽的排队,上了两个老号,送了点荣誉出去,最后还是下了。贴点老照片:
      1 我在美服的图不小心都删了,这是胡子的图,还有在一边捣乱的小凡凡:
      2 孙强送的法师号,当年真是拉风啊,蓝军装奥山、战歌杀人无数。接手时杀人数是35000,后来我两个多月又杀了10000多,要是后面不停,估计很容易上10w吧。
      3 国服练的第一个Druid,美服练的也是Druid,现在在8区还是练的Druid,好吧,我承认我比较变态。不过Diablo的Druid我不喜欢,Diablo里还是法师km效率高啊。这是在Zul' Garab的留念,我拿了第一个280法伤的耳环,可惜从来不练平衡德,只能当奶妈的时候用。
June 24

N/A

      十年砍柴在南都连载《晚明余晖》,记一下,等连载完了看。