修改Windows系统软件默认安装路径

作为一个完全不能容忍windows默认程序都往C:\Program Files\目录里安装的人。每次安装软件的时候,都得手动一个个改到D:\Program Files里。安装软件多了。就hold不住了。  其实可以通过注册表使得所有安装程序默认安装到其他盘的。将下列内容保存到一个文本文件里,命名为Mo.reg。然后运行即可。以后安装的程序就会默认安装到D盘的Program Files目录了。你也可以根据需要自行修改   Windows Registry Editor Version 5.00  ;修改Windows系统软件默认安装路径  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]  “ProgramFilesDir”=“D:\Program Files”  效果如下图,安装程序已经默认到D盘了 update:已知后遗症,我在这样实践了以后,发现vs2010的.net framework 4将会丢失。也就是说就不能新建.net framework 4项目了,具体不明,可能是我当初把VS一部分安装到D盘的缘故,应该可以通过重新安装vs解决,如果你不想折腾。把注册表改回去就可以了。

《亲密行为》书评

 首先说说感受。本书是《裸猿》三部曲之一,因为貌似是属于人类学和社会学的部分,更多的讨论了人类亲密行为的原因,基本上归结在动物性上。认为很多亲密行为其实是婴儿时期对母亲的感受形成的。而作者德斯蒙德的确是一位非常伟大的生物学家和作家。强大的生物学就在轻松的仿似“洽谈”的文字间给予人一种神秘的力量。我们的祖先留给我们的生物本能被他很强大的讨论了。但是。。如果你对人类这生物什么的完全没兴趣。比如像我。那么这本书就不用看了。纯粹是浪费时间。如果你是初为人母或是初为人父,那么前几章都可以看,了解一下婴儿的行为,可以更好的育儿。。观点如有偏颇。请海涵。  然后给出一些摘抄吧,  摇动婴儿以每分钟60-70下的速度可以减少婴儿的啼哭。  教育孩子早期应该亲密,爱护,稍微大一点就可以放开一些。而不是想法。到了孩子大了的时候反而溺爱,即先爱后自由。  用包裹婴儿的方式模拟子宫环境,但几个月后不宜过长。可能会阻碍他的肌肉和体格的发育。  婴儿啼哭不仅仅是饥饿或是不舒服,有时候也是希望母亲到这里来。  人类恋爱行为的几个阶段  1.眼对身 2.眼对眼 3.话对话 4.手对手 5.臂对肩 6.臂对腰 7.嘴对嘴 8.手对头 9.手对身 10嘴对乳房 11手对生殖器 12,生殖器对生殖器  一方面,科学研究沉重打击了我们何谓温馨关爱的亲密行为的观念,所以我们禁不住觉得反感;  另一方面,我们生病时急忙到药房买药,并急忙吞药丸的时候,却尽量不去想那些信赖我们却被我们背叛的实验动物:它们遭受痛苦,但是给我们带来了防病治病的抗生素。

从hash函数到王小云的MD5破解

以前一直纳闷不是说md5是不可逆的吗,那王小云怎么能破解呢。看到此文,豁然开朗,所谓的破解只是可以获得一个碰撞,使得两个文件的md5值一样。并不是说给定一个md5,能够得到原文。  密码学是理论计算机的一个很大的方向。之前准备先写密码学概论再提在hash函数破解上做出重大贡献的王小云教授的工作,不过前两天王小云获得求是杰出科学家奖以及100万奖金,在媒体上又掀起了一轮宣传狂潮,但是有些报道极端弱智,错误百出,所以我趁机纠正一下,并介绍密码学的一个组成部分——hash函数,以及王小云在这上面的工作。  王小云的主要工作是关于hash函数的破解工作。她在2005一个密码学会议上宣布破解了SHA-1,震惊了全世界。所以要介绍和理解她的工作,先看一下hash函数具体是怎么回事。  简单的说,hash函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数。通俗得说,hash函数用来生成信息的摘要。输出字符串的长度称为hash函数的位数。  目前应用最为广泛的hash函数是**SHA-1和MD5**,大多是128位和更长。  hash函数在现实生活中应用十分广泛。很多下载网站都提供下载文件的MD5码校验,可以用来判别文件是否完整。另外,比如在WordPress的数据库,所有密码都是保存的MD5码,这样即使数据库的管理员也无法知道用户的原始密码,避免隐私泄露(很多人在不同地方都是用的同一个密码)。  如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以,必有一个输出串对应无穷多个输入串,碰撞是必然存在的。  一个“优良”的hash函数 _f _应当满足以下三个条件:  1.任意y,找x,使得f(x)=y,非常困难。2.给定x1,找x2,使得f(x1)=f(x2),非常困难。3.找x1,x2,使得f(x1)=f(x2),非常困难。 上面的“非常困难”的意思是除了枚举外不可能有别的更快的方法。比如第3条,根据生日定理,要想找到这样的x1,x2,理论上需要大约2^(n/2)的枚举次数。  几乎所有的hash函数的破解,都是指的破坏上面的第三条性质,即找到一个碰撞(前两条都能被破坏的hash函数也太弱了点,早就被人抛弃了)。在密码学上还有一个概念是理论破解,指的是提出一个算法,使得可以用低于理论值得枚举次数找到碰撞。  王小云的主要工作是给出了MD5,SHA-0的碰撞,以及SHA-1的理论破解,她证明了160位SHA-1,只需要大约2^69次计算就能找出来,而理论值是2^80次。她的寻找MD5碰撞的方法是极端高效的。传说王小云当时在会议上把碰撞写出来,结果被下面的人验证发现不对,原来她把MD5算法的一个步骤弄错了。但是她立马联系她的当时留在中国的学生,修正算法,并找到一个新的碰撞。这一个是对的。  看到这里,那些认为中国国安局应该将这些结果封存作为秘密武器甚至幻想用这些成果来袭击美国之徒可以停住你们的YY了。这种形式上的破解,在大多数情况下没有实际性的作用。更别提MD5早就被美国人抛弃了。  但是,说这种破解一点实际意义都没有,那就侮辱了广大密码学家的智商,密码学家不会无缘无故的弄出碰撞这么一个概念来。下面简单的介绍一下在特定情况下,怎么利用给定的碰撞来做坏事(翻译自Attacking Hash Functions):  Caesar给实习生Alice叫写了一封推荐信(letter)。同一天,Alice叫Caesar在推荐信上数字签名,并提供了一份推荐信的电子板。Caesar打开文件,发现和原件一模一样。所以他在文件上签了名。  几个月后,Caesar发现他的秘密文件被非法察看。这到底是怎么回事呢?   a25f7f0b 29ee0b39 68c86073 8533a4b9  事实上,Alice要求Caesar签名的文件letter已经被Alice做了手脚,准确地说,Alice还准备了另外一个文件order,它们的MD5码完全一致。而Caesar的数字签名还依赖于MD5算法,所以Alice用order文件替换Letter文件之后,Caesar的数字签名依然有效。那封order给Alice提供了察看秘密文件的权限。  具体的实现方法可见Hash Functions and the Blind Passenger Attack。我在这里简单的解释一下(只是大致思路,具体实现方式,需要对文件结构信息有所了解):  letter文件的内容是: if(x1==x1) show “letter” else show “order” order文件的内容是: if(x2==x1) show “letter” else show “order” 其中字符串"letter"和"order"代表两封信实际显示的内容。x1,x2是一个MD5的碰撞。  上面的方法,只供参考和学术用途,实际使用所引起的后果概不负责。 参考: 1.Attacking Hash Functions by Poisoned Messages “The Story of Alice and her Boss” 2.Hash function, wikipedia 3.SHA, wikipedia 4.Interview with Yiqun Lisa Yin concerning the attack on SHA-1  原文来自:http://zhiqiang.org

一个简单实例的LR分析过程

经过前面两篇文章。已经讲清楚了LR语法分析中最重要的分析表的构造过程。先补充一个小问题,就是LR(0)项目的分类  根据圆点所在的位置和圆点后是终结符还是非终结符或为空把项目分为以下几种:  移进项目: 形如 A→α .a β ,a是终结符, a ,b∈V* 以下同 待约项目:A→α .B β , 其中B是非终结符 归约项目:A→α . 表明产生式已分析完成。 接受项目:形如 S’→S . 特别的。A→ε的LR(0)项目只有A→ • 是归约项目  因为LR分析表的构造前面两篇文章已经讲的很清楚了,所以这个题目重要是解释一下如何使用分析表来构造,分析表的构造也许你得自己参考前面两篇文章来构造了。题目来自网络。  好,下面看题目,已知文法G[S]:  (1) S → aAcBe (2) A → b (3) A → Ab (4) B → d  写出对输入串 abbcde#的LR分析 过程。  在分析的时候,因为我们的手工分析,所以还需要一个表来记录我们的步骤。否则记不住啊。该表共需7列。行数不定。做到哪是哪。  步骤 符号栈 输入符号栈 动作 状态栈 ACTION GOTO  其中,步骤就是从1向下递增。符号栈用来保存运算中的结果,初始为#,输入符号栈保存输入串,初始值为给定的。动作里面就是用来注释是进行移进,还是规约。状态栈就是保持LR分析表的那个状态了。Action 和Goto同理  通过前两篇文章的步骤,此题可以构造出如下的一张LR分析表    分析表中有Si和rj大家都知道的。s是shift的缩写,也就是移进,r是reduce的缩写,也就是规约。规约是推导的逆操作,大家都懂。  先来看看在进行分析的时候s和j操作的规则  Si:移进,把i移入到状态栈,把a移入到文法符号栈。其中i,j表示状态号。  ri:归约,用第i个产生式归约,同时状态栈与符号栈退出相应个符号,并把GOTO表相应状态和第i个产生式的左部非终结符入栈。  文法中有A→β的产生式,若β的长度为r(即|β|=r),则从状态栈和文法符号栈中自栈顶向下去掉r个符号,即栈指针P减去r。并把A移入文法符号栈内,Sj=GOTO[Si,A]移进状态栈,其中Si为修改指针后的栈顶状态。  当归约到文法符号栈中只剩文法的开始符号S时,并且输入符号串已结束即当前输入符是'#',则为分析成功。  然后使用我们将要使用的辅助表来分析吧,为了简单。我还是直接给出答案。然后分析一下典型的情况。    第一步,符号栈中是#,输入符号串就是给定的要分析的串,状态栈因为从0开始,所以状态栈直接填0,大家都知道,LR分析是从左到右扫描的。所以心里想着一根指针p,p首先指向输入串的a,然后我们查分析表的(0,a),0就是状态0,a就是指针的当前字符。分析表中的(0,a)是s2,填入第一步的action,并且动作列填入移进,根据规则,将2入状态栈,a入符号栈,  进入第二步,指针p肯定要前进一步了,所以输入符号串就进入b了。此步同上一步,不多解释。  关键是进入第三步后,此时,符号栈中为#ab,输入符号串是bcde#,状态栈是024,此时去查表,差的是(4,b),4是状态栈顶,b是p指针的当前位置。发现是r2,根据规则,用第二条产生式(2) A → b来规约。把动作栏先填了,同时状态栈与符号栈退出相应个符号,也即是说,把状态栏的栈顶4,退出来,同时符号栈的b也退出,心里想着,不填表,并把GOTO表相应状态和第i个产生式的左部非终结符入栈。Goto表需要查的是(2,A)=3,2是r2的2,A是第二个产生式的左部嘛。所以,就把3入状态栈,A入符号栈。  后面的都是一样的。不解释了。要想学懂编译原理。多动手是必需的。你也手工试试吧。 参考: http://leaver.me/archives/574.html http://leaver.me/archives/548.html

LR(0)和SLR分析表的构造

上篇文章中,我已经说到了,LR(0)分析表是LR(0)分析器的重要组成部分,它是总控程序分析动作的依据,他是由LR(0)项目集规范族来进行构造的。他的结构主要有两个部分ACTION 和GOTO  先看看指导原则,可以直接跳过,看例题的时候可以返回来对照参考。  假设已构造出LR(0)项目集规范族为:C={I0,I1, … , In},其中Ik为项目集的名字,k为状态名,令包含S′→·S项目的集合Ik的下标k为分析器的初始状态。那么分析表的ACTION表和GOTO表构造步骤为:  ① 若项目A→α·aβ属于Ik且转换函数GO(Ik,a)= Ij,当a为终结符时则置ACTION[k,a]为Sj。 ② 若项目A→α· 属于Ik,则对任何终结符a 和'#‘号置ACTION[k,a]和ACTION[k,#]为"rj",j为在文法G′中某产生式A→α的序号。 ③ 若GO(Ik,A)=Ij,则置GOTO[k,A]为"j",其中A为非终结符。 ④ 若项目S′→S·属于Ik,则置ACTION[k,#]为"acc",表示接受。 ⑤ 凡不能用上述方法填入的分析表的元素,均应填上"报错标志"。为了表的清晰我们仅用空白表示错误标志。  上篇文章的例题是这样的:LR(0)项目集规范簇也已经算出来了,共有6个I,从I0-I5,最终构造的LR(0)的分析表共7行,包括标题行,也就是ACTION和GOTO,然后是状态行,状态行和ACTION的交处分割成三列,分别是终结符号,和#终结符。也就是分割多少列取决于终结符的数目,GOTO列是非终结符,分割多少列也取决于非终结符的数目。,然后就是具体的6个状态了,画出表的结构后,如下,先不用管表的内容怎么写。    然后对照构造原则来填写表,这时你会发现要一个个从那么多的GO函数和I项目组中找对应的式子实在太难了,看不清楚,这时候,我们用GO函数把LR(0)项目集规范族连成一个识别该文法所产生的活前缀的DFA,有点像流程图了,首先把各个I项目画出来,然后需要把他们的关系表示出来,关系由GO函数确定,比如I5=GO(I2, S),则在I2和I5之间画一个箭头,由I2指向I5,线上写上S,由括号里的第二个值确定,此题构造的DFA如下图,很简单吧。    然后我们正式开始吧。第一条指导规则说到, 若项目A→α·aβ属于Ik且转换函数GO(Ik,a)= Ij,当a为终结符时则置ACTION[k,a]为Sj,我们先考察对于I0,发现S->·aS属于I0,且GO(I0,a)=I1,所有我们ACTION[0,a]置为S1.同理S->·bS属于I0,GO(I0,b)=I2,所以ACTION[0,b]置为S2。 再来看第二条规则,若项目A→α· 属于Ik,则对任何终结符a 和’#‘号置ACTION[k,a]和ACTION[k,#]为"rj",j为在文法G′中某产生式A→α的序号,也就是说这里的j可不是I项目的标号,而是增广文法  (0)S’→S (1)S→aS (2)S→bS (3)S→a  的标号,从0-3啦。我们考察I1,发现S→·aS属于I1,且GO(I1,a)=I1,所以应该置1和a的交的格子为S1,但是此时运用第二条规则会发现S->a·也属于I1,则又应该置ACTION[1,a]为=r3,ACTION[1,#]为r3,这样就发生了冲突。这是因为大多数文法不能满足LR(0)文法的条件,对于此冲突,我们不能确定看到S->a的时候是规约还是移进,有些文法是可以直接构造的,为此,此处不能够早LR(0)分析表了,我们构造经过改进后得到了一种新的SLR(1)文法,并没有什么太大差别,主要就是解决冲突。  解决冲突的指导原则如下:  * 假设一个LR(0)项目集规范族中有如下项目集合:  {X → α.bβ,A → γ.,B → δ.}  即存在移进-归约冲突和归约-归约冲突  * 如果FOLLOW(A)∩ FOLLOW(B)∩ {b} =ф,则可以如下来解决冲突(假设当前符号是 a ): 1、若 a = b,则移进 2、若 a∈ FOLLOW(A),则用产生式 A → γ归约 3、若 a∈ FOLLOW(B),则用产生式 B → δ归约 4、否则,报错  此处的冲突发生时,当前符号是a,并且此时项目集中无B推导式,且指导规则中的b在此处其实是S->.aS中的a,所以计算Follow(S)∩ {a} ,发现为空,所以可以解决冲突,因为此时,当前符号是a,此处规则中的b也是a,所以,移进,也就是置ACTION[1,a]为=S1,运用分析表的ACTION表和GOTO表构造步骤的第一步,而不是置为r3,所以冲突解决。  然后再看构造步骤中的第三步,若GO(Ik,A)=Ij,则置GOTO[k,A]为"j",其中A为非终结符。此题中,只有S为非终结符,看DFA中的I0,发现GO(I0,S)=I3,所以置GOTO[0,S]为3,ok  第四个步骤,若项目S′→S·属于Ik,则置ACTION[k,#]为"acc",很简单,DFA中,I3符合,所以置ACTION[3,#]为"acc"。到此解释完了  反复运用,直到填完表。  完成后的表如图一所示。太复杂了。脑子烧糊了都,下篇有机会的话介绍如何使用来进行分析。其实剩下的部分不怎么难了。应该可以看得懂了  参考:  http://metc.gdut.edu.cn/compile/nandian/n-7.htm  http://jpkc.hdu.edu.cn/computer/byyl/online/4-3.htm

LR(0)项目集规范族的构造

此文略长。我也没想到这写起来这么多,但对构造过程绝对清楚,一步步慢慢看吧。  LR的第一个L和LL的第一个L含义相同,即从左到右扫描句子 ,第二个R表示Right most最右推导。  在通常的描述中,后面还有一个括号里面的数字如,LR(0)、LR(1)这样,括号里面的数字表示用于决策所需的后续token分词数。  首先看一下LR分析器的模型图    可惜看出,LR分析器最关键的部分就是 LR分析表了,而LR分析表的构建是由已构造出的LR(0)项目集规范族来进行构造的。LR分析法貌似是不要求掌握的,而且这部分比我想象的还要复杂,今天看了好多。才勉强搞清楚这个项目集规范族的构造,但是用来锻炼思维确实不错啊。  项目集,那么字面上看就是项目的集合了,项目是什么呢。这个也确实不好说,书上是说在文法G中每个产生式的右部适当位置添加一个圆点构成LR(0)项目,举个例子吧。  比如对于  A->xyz  这条产生式可以构造的LR(0)项目就有4个  A->.xyz A->x.yz A->xy.z A->xyz.  这样很清楚了吧,就是用.分割。这个分割产生的四个项目在进行真正的语法分析的时候对应不同的操作,比如规约还是移位。这里不讨论。重点是项目集规范族的构造,  在知道了LR(0)项目后,可以来看看项目集规范族的定义,  对于构成识别一个文法活前缀的DFA项目集(状态)的全体我们称之为这个文法的LR(0)项目集规范族。至于什么是活前缀呢,定义如下  对于任一文法G[S],若S’经过任意次推导得到αAω,继续经过一次推导得到![]}/images/6b23dd171a1f672514a2dbb29175df032a1f63d4.gif)αβω,若γ是αβ的前缀,则称γ是G的一个活前缀。  现在知道了LR(0)项目,了解了活前缀,和项目集规范族的定义,还须引入LR(0)项目集的闭包函数CLOSURE和状态转换函数GO两个概念,先给出数学上的定义,如果你觉得麻烦可以跳过,后面会给出一道例题。  ① 闭包函数CLOSURE(I)的定义如下:  a)I的项目均在CLOSURE(I)中。  b)若A→α·Bβ属于CLOSURE(I),则每一形如B→·γ的项目也属于CLOSURE(I)。  c)重复b)直到不出现新的项目为止。即CLOSURE(I)不再扩大。  ② 转换函数GO(I,X)的定义:  GO(I,X)=CLOSURE(J)  其中:I为包含某一项目的状态,就是前面我们说的那四个了。,X为一文法符号,X∈(VN∪VT),J={任何形如A→αX·β的项目| A→α·Xβ属于I}。  这样就可以使用闭包函数和转换函数构造文法G′的LR(0)项目集规范族,其步骤如下:  a)置项目S′→·S为初态集的核,然后对核求闭包,CLOSURE({S′→·S})得到初态的项目集。 b)对初态集或其它所构造的项目集应用转换函数GO(I,X)=CLOSURE(J),求出新状态J的项目集。 c)重复b)直到不出现新的项目为止。  开始拿个例题来说明,定义没例题看起来看难了。  例题:对于下列文法,S→aS|bS|a,构造该文法的LR(0)项目集规范族  思路就是利用闭包函数CLOSURE和转换函数GO来构造。通过计算函数CLOSURE和GO得到文法的LR(0)项目集规范族,而GO函数则把LR(0)项目集规范族连成一个识别该文法所产生的活前缀的DFA。DFA大家都知道,有穷自动机。  (1)将文法G(S)拓广为G(S’)也就是该文法的增广文法,目的是使语法分析器知道何时应该停止并接受该串,也就是说当使用S'->S进行规约的时候,就结束。  (0)S’→S (1)S→aS (2)S→bS (3)S→a  构造该文法的LR(0)项目集规范族,I就是产生式,至于I0 I1就是往下递增就可以了。没什么特别的意思。:  I0=CLOSURE({S' →•S})={S’ →•S, S→•aS, S→•bS, S→•a}  //第一条是固定的,都是求S' →•S的闭包。而因为右侧的S又可以推导出后面三个,所以后面三个式子是属于该闭包的。在闭包的规则中可以看出,若A→α·Bβ属于CLOSURE(I),此时S' →•S属于闭包,S相当于规则中的B,则每一形如B→·γ的项目也属于CLOSURE(I),此处相当于S->后面的三个推导式。加上.就可以了  I1=GO( I0 , a)=CLOSURE({S→a•S , S→a•})={S→a•S , S→a• , S→•aS, S→•bS, S→•a }  //第二条你可能已经看出来了,其实就是把转换函数GO反过来用,在GO函数中,X为一文法符号,J={任何形如A→αX·β的项目| A→α·Xβ属于I}。也就是在I0中,找到右侧包含a的项目,然后将.右移一位来求他们的闭包函数,此处,I0中包含.a的项目为 S→•aS和 S→•a,.右移一位变成S→a•S , S→a•,求闭包函数的规则和上面那条是一样的,继续找推导式右边可以推导出来的式子就可以了,此处,右边同样是S可以推导出三个式子,前面加上.就可以了。  I2=GO(I0 , b)=CLOSURE({S→b•S })={ S→b•S, S→•aS, S→•bS, S→•a }  //第三条仿照第二条进行推导,先在I0中找有.b的,然后右移一位,然后推导式右侧的S继续用题目给出的推导,然后前面加上.  I3=GO(I0 , S)=CLOSURE({S’ →S•})={ S’ →S•}  //第四条因为右侧包含.S的只有一项。必须是.S。所以只有一个,右移后求闭包即可。因为S是右侧的第一位,所以不用再向下推导了,规则是:A→α·Bβ属于CLOSURE(I),此处是S’ →S•,则B→·γ的项目也属于CLOSURE(I),此处S相当于规则中的α,无B。。。。  因为GO(I1, a)=CLOSURE({S→a•S , S→a•})=I1,  //第五条同理,在I1中找有右侧有.a的项目,右移一位。进行求闭包,发现和I1求闭包的变量是一样的。所以结果必然也和I1是一样的。  GO(I1, b)=CLOSURE(S→b•S)=I2.

《乌合之众》笔记下部

看完了下部,本书绝对是群体心理学的经典。没有废话,180多页的小册子讲的非常非常好。 执政府和帝国的具体工作就是用新的名称把过去大多数的制度重新包装一遍,用新名词代替那些能够让群众想起不利形象的名称。因为新鲜能够防止这种联想。  统治者的艺术,就像律师的艺术,首先在于驾驭辞藻的学问。  推动各民族演化的主要因素,永远不是真理,而是谬误。  社会主义的谬误,群众从来不渴求真理,他们需要对他们有诱惑力的谬误,凡是能供应幻觉的,都是他们的主人,使他们幻灭的。都将成为牺牲品。  尽管存在着理性,文明的动力仍然是各种感情–譬如尊严,自我牺牲,宗教信仰,爱国主义以及对荣誉的爱  只要有一些生物聚集在一起,不管是人还是动物,都会本能的让自己处在一个头领的统治之下。  头脑敏锐,深谋远虑的人往往不能成为群体领袖,因为他们这种品质会让人犹疑不决,而那些有毛病的,兴奋的人则可能。  在群体的灵魂中,占上风的,不是对自由的追求,而是当奴才的欲望。  领袖的动员手段:断言,重复和感染。  传染的威力很大,不但能迫使个人接受某些意见,而且能让他接受一些感情模式。  名望是某个人,某本著作,或是某种观念对我们头脑的支配力。会麻痹我们的批判能力。让我们充满惊奇和敬畏。名望的特点就是阻止我们看到事物的本来面目。  用一时的意见影响群众的头脑不难,想让一种信念在其中长久扎根却极为不易。  一种信念开始衰亡的确切时刻很容易辨认-他的价值开始受到质疑。不过即使已经摇摇欲坠,根据他建立的制度依然会保持其力量,消失的十分缓慢  需要一种普遍信念来支持一个国家。实干家一心要让这种普遍接受的信仰变成现实,立法者一心想把他付诸实行,哲学家,艺术家和文人全都醉心于如何以各种不同的方式表现他。  今天的社会主义信念虽然有明显的破绽,但并没有阻止他赢得群众。他的力量的增长只能到他获得胜利,掌权的那一天为止。  报纸媒体不断把对联意见带给人们,由于受到对立意见的暗示作用的破坏,结果任何意见都难以普及,他们全都成了过眼烟云。一种意见还没来得及被足够多的人接受。就已经寿终正寝。  报业既然成了仅仅提供信息的部门,也就放弃了让人接受某种观念或学说的努力。  如果有什么事情能够推迟一种文明的毁灭的话,那就是极不稳定的群众意见,以及他们对一切普遍信仰的麻木不仁。  两类群体:异质性,街头,议会。同质性,派别,身份  杰出律师的主要用心在于,打动陪审团的感情,不需要太多论证,留心他们,得出自己的结论,确定那些人赞同,转向不赞同的人。  选民群体属于异质性群体,他们极少推理,没有批判精神,轻信,易怒而且头脑简单。  选民的心理和其他群体一样:既不更好,也不更差。  文明是少数智力超常的人的产物,他们构成了金字塔的顶点,随着金字塔各个层次加宽,智力越来越少,如果一个伟大的文明仅仅以人多势众自夸的低劣成员的选票。是无法让人放心的。  领袖的影响力只在很小的程度上是因为他们提出的论据,而在很大程度上来自他们的名望,一旦他们不知道什么原因威信扫地,他们的影响力也将随之消失。  在政治集会中,才华横溢者无任何作用。伟大的民众领袖头脑的狭隘令人瞠目  演讲者演说的成功与否很大程度上也取决于自己的名望。  由法律专家制定的法律是最好的法律,因为他是个人的产物,只有当一系列修正案把他们变成集体努力的产物的时候,才可能产生灾难性的后果。  表面自由的增加,必然伴随着真正自由的减少。  各国被一种谬见所蒙蔽,就是认为保障自由与平等的最好办法就是制定法律,结果使人变成奴才。  人们似乎热爱自由,其实只是痛恨主子 -托克维尔。

《乌合之众》笔记上部

今天本来是打算写篇关于LR型语法分析的总结的。结果因为各种原因错过了。可能我还是有轻微的拖延症吧。但是还是非常给力的。今天在读这本书-乌合之众-大众心理研究,本来就想着也就不到200页的书,几个小时就看完了,结果真正看了以后,一阵惊叹啊。信息量很大,现在才看到84页。不过笔记已经写了2000字了。为了避免文章太长。先分享这两千字。明天看完了后半部分,再分享。  群体的无意识行为代替了个人的有意识行为,是目前这个时代的主要特征之一。  社会组织就像一切生命有机体一样复杂,我们还不具备强迫他们在突然之间发生深刻变革的智力。  对于一个民族有致命危险的,莫过于他热衷于重大的变革。无论这些变革从理论上来说多么的出色。如果它能够使民族气质即刻产生变化,才能说他是有用的,只有时间才具备这样的力量,  如果有关某种形态的知识只有少数有学问的人才能掌握,那他也没有多少意义了。  造成文明洗心革面的唯一重要的变化,是影响到思想,观念和信仰的变化,令人难忘的历史事件,不过是人类思想不露痕迹的变化所造成的可见后果而已。  群体的力量会成为唯一无可匹敌的力量,我们要进入的时代,就是一个群体的时代。  群体不善推理,却急于采取行动,他们目前的组织赋予他们巨大的力量。  科学为我们许诺的是真理,从未许诺过和平或幸福,他对我们的感情无动于衷,对我们的哀怨不闻不问。  历史告诉我们,当文明赖以建立的道德因素失去威力时,他的最终解体总是有无意识的野蛮群体完成的,  创造和领导着文明的,历来就是少数知识贵族而不是群体,群体只具有强大的破坏力。  不管情况如何,我们注定要屈从于群体的势力,这是因为群体的目光短浅,使得有可能让他守规矩的所有障碍已经被一一清除。  一个心理群体表现出来的最惊人的特点是:不论他们是谁,他们变成了一个群体这个事实,使他们获得了一种集体信息,这是他们的感情,思想和行为变得与他们独自一人时颇为不同,  群体一般只有很普通的品质,他削弱了个人的优秀品质,这一事实解释了为何他不能完成需要高智力的工作,群体中累加在一起的只有愚蠢而不是天生的智慧。  从数量上来看,群体的个人会感觉到一种势不可挡的力量,使他敢于发泄出自己本能的欲望。而独自一人时,则必须克制欲望,因为他觉得:群体是个无名氏,不许承担责任。  还有就是群体的传染性,每种感情和行动都有传染性,其程度足以使个人随时准备为群体利益牺牲他的个人利益。这与人的天性相对立,如果不是群体的一员,很少具备这样的能力  长时间融入群体行动的个人,不就会发现,或许是因为在群体发挥催眠影响的作用下,自己进入一种特殊状态,类似于被催眠,变成了受人支配的无意识的努力,有意识的人格消失的无影无踪,意识和辨别力也不复存在。  1989年8月4日,的晚上,法国的贵族一时激情澎湃,毅然投票放弃了自己跌特权。所以说,群体有时候也是英雄群体。  群体容易被暗示,会随时听命于一切暗示。失去了批判能力。  不要相信童言无忌,儿童一直就在撒谎。  群体情绪的简单和夸张所造成的结果是,他全然不知怀疑和不确定性为何物,他就像女人一样,一下子就会陷入极端,怀疑一说出口,立刻就会变成不容辩驳的证据。  群体只知道简单而极端的感情;提供给他们的各种意见,想法和信念,他们或者全盘接受,或者一概拒绝,将其视为绝对真理或绝对谬论。  群体中只要有人在他们之间山东,他们随时都会付诸行动,群体对强权俯首帖耳,却很少为仁慈心肠所动,他们认为那不过是软弱可欺的另一种形式。他们的同情心从而不听命于作风温和的主子,而是只向眼里欺压他们的暴君低头。他们总是为这种人塑其最壮观的雕像。  群体强烈的守着无意识因素的支配,因此很容易屈从于世俗的等级制,难免会十分保守,对他们撒手不管,很快他们就会对混乱感到厌倦,本能的变成奴才。  观念只有采取简单明了的形式,才能被群体所接受,因此它必须经过一番彻底的改造,才能变得通俗易懂。  就观念来说,群体总是落后于博学之士和哲学家好几代人。  群体形象化的想象力不但强大而活跃,并且非常敏感。历史上,表相总比真相起着更重要的作用,不现实的因素总比现实的因素更加重要。  不管刺激群体想象力的是什么,采取的形式都应该具有鲜明形象。没有任何多余的解释。比如死亡人数。  如果一个民族使自己的习俗变得过于牢固,他便不会再发生变化,于是就像中国一样,变得没有改进能力。在这种情况下,暴力革命也没有多少用处,因此由此造成的结果,或者是打碎的锁链被重新拼接在一起,让整个过去原封不动的再现,或者是对被打碎的事务撒手不管,衰败很快被无政府状态所取代。因此对于一个民族来说,理想的状态是保留过去的制度,用一种不易察觉的方式一点点的加以改进。  群体具有保守主义精神,即使被狂暴的反叛最终也只会造成一些嘴皮子上的变化。  各民族是受着自己的性格支配的,凡是与这种性格不合的模式,都不过是借来的外套,一种暂时的伪装。  教育既不会使人变得更加道德,也不会使人更幸福,他既不能改变他的本能,也不能改变他的热情。。。害处远大于好处。  掌握一些派不上用场的知识,是让人造反的不二法门  生活中取得成功的条件是判断力,经验,开拓精神,和个性。非课本能带来。  大学毕业,一个充分发展的人诞生,但筋疲力尽,成家立业,落入生活的俗套,只要落入这种俗套,他就会把自己封闭在狭隘的职业中,工作还算本分,但仅此而已,这就是平庸的生活。  因为各种词语和套话的力量而死去的人,只要用他们的尸骨,就能建造一座比古老的齐奥普斯更高的金字塔。

C++回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。  也就是说,回调函数它首先是一个函数,然后有一个指针指向它(该指针称为函数指针),在别的代码块中,通过这个函数指针调用了这个函数,仅此而已。  下面给出一个例子,我写出了比较详细的注释。希望足够清晰。这个例子说明了,回调函数可以把调用者和被调用者分开,对于调用者来说,只需要知道自己要调用一个函数,该函数有一个string类型的参数,至于具体调用哪个,被调用的函数到底怎么执行,怎么解释该参数,是完全不用关心的。  回调函数的一个很实用的例子就是泛型算法中的max算法,具体可以参见本文末尾的第一篇参考文档, 如果你在自行写代码中发生了 error C2679: 二进制“«”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)错误 说明你没有把string头文件导入,导入即可 个人能力有限,错误之处请留言指正,不胜感激。 参考: http://learn.akae.cn/media/ch24s05.html http://baike.baidu.com/view/414773.htm

GSM,GPRS,WCDMA,HSDPA,3G 等名词解释

今天想起这个事,发现自己其实一直对这个也分不清楚。查了下资料。总算是搞清楚了。整理了一下资料。删除了没太大意义的文字。结构也重新设计了下,总体看起来比较明了了。首先解释最热门的3G概念3G是英文The Third Generation mobile communication Systems的缩写,指第三代移动通信技术。相对第一代模拟制式手机(1G)和第二代GSM、CDMA等数字手机 (2G),第三代手机(3G)一般地讲,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。实际上,2G时代并没有2G这个名称,2G名称的出现是在行动通讯系统出现3G之后,才将过去使用GSM网路的行动通讯时代取名为2G,然而,2G演变到3G之间的过渡时期则被称为2.5G时代。同理,1G也是这么来的。就跟咱们做题是一样的。看到答案以后来推前面的过程。在2G时代,GSM、CDMA领导市场,他们是2G通信时代的两个实现。GSM(Global System for Mobile communications)系统,中文名称为「全球数位手机系统」,它是1990年在欧洲发展出来,所以又称泛欧式行动电话系统。GSM系统是2G时代在全球最被广泛应用的行动通讯技术,至今全球GSM用户数远远超过CDMA系统用户数。CDMA(Code Division Multiple Access)中文全名又称分码多工撷取,是相对于GSM的另一种无线通讯技术,CDMA系统只在美、韩、中、澳洲等国被使用,而全球多达200多个国家地区采用GSM系统_两者的差异:虽然GSM与CDMA二者都是先将语音讯号数位化,受话者接收时再将数位讯号转变回语音,但由于CDMA系统使用的800MHz频谱,讯号在空中的遗失率较GSM采用的900或1800MHz频谱来得少,所以相较于GSM系统有通话不稳定的问题,CDMA可以提供更清晰的声音品质。在网路容量方面,CDMA的容量是GSM的3倍;CDMA的网路覆盖范围最远可达200公里,而GSM的网路覆盖范围则不会超过35公里。此外,CDMA的传输速率最高可达64Kbps,远高于GSM的9.6Kbps。至于内容应用方面,GSM与CDMA都可以提供包括语音、简讯、数据、来电显示、三方通话等服务。但是由于全球采用CDMA系统的国家较少,所以CDMA系统可以漫游的国家地区也就较GSM来得少。CDMA系统只在美、韩、中、澳洲等国被使用,而全球多达200多个国家地区采用GSM系统。GSM向3G的发展路线◆GSM→GPRS→EDGE→WCDMA→HSDPA泛欧式的WCDMA系统演变过程相当复杂。行动通讯技术从GSM迈入GPRS时,可说是2G时迈向3G时代过程的第一步,这个时期被定位为2.5G时代,在2.5G时代,手机用户虽然已经可以享受较高速的无线上网,不过,内容应用仍然只限于收发e-mail、片段视讯下载等服务。(所谓GPRS(General Packet Radio Ser-vice),全名为整合封包无线电服务,它可说是新一代的GSM技术标准,相对于GSM是采取拨接方式传送资料,GPRS则是以封包无线方式传输资料,它可以在全球的GSM系统中运行。GPRS较GSM能更有效地利用无线网路,可以特别使用于突发性、频繁的小流量资料传输,传输速率高达115Kbps。从GSM到GPRS,速度提升10倍)为了提供更多、更高品质的服务给用户,行动通讯业者与设备提供商接着又开发出EDGE技术,EDGE是英文Enhanced Data Rate for GSM Evolution 的缩写,即增强型数据速率GSM演进技术。EDGE系统大大增强了GSM、GPRS等无线技术的频宽,虽然3G时代已经来到,但是,目前EDGE系统仍在全球被广泛的应用。使用EDGE技术,传输速率最高可达384Kbps,此外EDGE并将现有的GSM/GPRS等网路整合,在取得3G服务之前,EDGE可说提供了价格低廉、传输速度又快的服务,所以它也被认定为WCDMA系统的补充技术。WCDMA(英文Wideband Code Division Multiple Access)一种宽频无线技术,又称宽频分码多工多重撷取,它可以让第三代移动通讯最佳化,传输速率最高可达2Mbps.至于HSDPA(High Speed ​​Downlink Packet Access)中文名称为高速下行链路封包接取技术,它是WCDMA系统的进阶技术。HSDPA被认为是迈向3G蜂巢式网路的重要起步,其下载速度可以达到14Mbps,而系统资料容量是WCDMA网路的3倍,这项技术被宣称为将在未来对行动电话记忆体市场格局带来重大变革。CDMA向3G的发展路线_◆CDMA→CDMA2000→CDMA2000 1x→CDMA2000 1x EV-DO至于泛美式的CDMA2000(Code Division Multiple Access 2000 是一个3G移动通讯标准,CDMA2000与另一个3G标准WCDMA不兼容。),则是CDMA的升级技术。而CDMA2000的第一阶段技术称为CDMA 2000 1X,传输数率达144Kbps,较CDMA高出两倍;至于第二阶段的CDMA2000 1x EV-DO,最高传输数率可达1.4Mbps。还在向后发展已经到了CDMA2000 3.x,不过是在不断优化了。了解即可参考:https://lex0912.wordpress.com/2010/05/21/gsmgprswcdmahsdpahttps://zh.wikipedia.org/wiki/CDMA2000https://zh.wikipedia.org/wiki/3G