移动设备电池白皮书

资源来自:金山网络 我比较认真的读完了这本小册子,确实收获还是蛮大的。前几天有个朋友问我电池的事情,我以前看过电池的一些保养的。当时就知道锂电池是首次使用是不需要进行12小时充电的。。看到这本小册子的时候,证实了我没乱讲哈。。 然后里面还说道一个就是很多人不相信软件能够保养电池。其实真的是可以的。。理由不赘述。你可以自己读一读。。我自己感觉对普通用户很有用的是30页的那一节。讲到的问题有; 电池管理类软件对电池寿命没用? 充电习惯对电池寿命没有用? 一块电池都只够安卓撑一天? 提示电池充满就可以马上拔掉电源 ? 不管怎么用待机时间都一样? 手机还有一半电量的时候不必担心? 新电池前3次需充满12小时? 涓流充电有用吗? 手机电池充一夜也没什么危害? 边充电边使用对电池无伤害? 突然断电再立刻充上会伤害电池吗? 充电不饱和会伤害电池吗? iPhone和iPad的充电器可以混用吗? 经常把电用光再充对电池好不好? 书籍下载:[移动设备电池使用白皮书](http://115.com/file/ancame68# 移动设备电池白皮书.pdf)

2012-07-07 · 1 min · bystander

Unable to read file Data_EGCITest解决方法

 今天做的是使用matlab进行协整检验,好吧。。听起来似乎很厉害的样子,其实,我也不太清楚协整到底是干嘛呢。不过经管的各位很给力。 想来协整检验matlab是可以做的。所以就去查matlab是不是有这个函数,结果是有的。egcitest,但是具体的参数还是景观的朋友看懂的。 早上3点多起床,看matlab的书,然后早上看完了。基本上熟悉了matlab的操作。然后就开始写这个。大致的流程和昨天的那篇文章是一致的。但是matlab生成的dll文件在C#里面调用始终会提示这样一个错误。: MWMCR::EvaluateFunction error ... Error using ==> load Unable to read file Data_EGCITest: No such file or directory. Error in => test.m 组合了几个关键字进行搜索,发现了这篇文章,翻译过来很简单。 错误提示说的那个Data_EGCITest是一个名为Data_EGCITest.mat的文件,位于$MATLABROOT/toolbox/econ/econ/Data_EGCITest.mat目录下,$MATLABROOT指的是你matlab的安装路径。在你build 工程的时候,在下图中,记得添加这个文件。 然后build生成的dll文件就可以正常在C#里使用了。 中间走了很多弯路。因为我想既然matlab都编译生成了dll,那么dll应该没问题。然后我就把精力放在了C#那边。。结果后来折腾了很长时间,才发现是这边的问题。。坑爹。。 协整检验的代码就不发了。和题目没关系。。 参考: http://www.mathworks.cn/help/toolbox/econ/egcitest.html

2012-07-03 · 1 min · bystander

C#中的静态与非静态

为什么要分静态和非静态 在面向对象的世界里,大部分的情况都是实例特征主宰天下,类相当于一个类型模板,而对象则是类特征的拷贝,并且独立于其他对象来操作这些特征,但是在某些情况下,需要某些特征被所有的对象共公有,因此有必要实现一种基于类的特征,而不是基于实例对象的特征机制,这就是静态特征。 1.静态类和非静态类 一个类如果包含静态成员和静态方法,那么该类就可以定义为静态类,定义方法是在类定义前加上static,比如 static class MyClass { //define the class } 比较: 静态类只能包含静态成员和静态方法,否则会抛出编译错误,而非静态类既可以包含非静态成员和非静态方法,还可以包含静态成员和静态方法。但不能作用于静态只读字段。 静态类不可实例化,非静态类可以实例化,不管是静态类还是非静态类,对静态成员和静态方法的调用都必须通过类来实现访问。 相对于非静态类来说,静态类有一些特点值得应用,比如System.Console这个典型的静态类。 如果一个类只包含静态成员和静态方法,就应该将该类标记为static,并提供私有的构造函数来避免用户实例创建对象,这也是MonoState模式的体现。 2.静态构造函数和实例构造函数 静态构造函数,只能用于初始化类中的静态成员,包括静态字段和静态属性,静态构造函数不能带参数,不能有访问修饰符也不能被手工调用,通过是在.net运行库第一次调用类成员之前执行。其中,实例构造函数中也是可以初始化静态成员的。 比较 静态构造函数,可以和无参的构造函数共存。虽然参数列表相同,但是二者的执行顺序不同,静态构造函数在运行库加载类时执行,而实例构造函数在实例创建时执行。 静态构造函数,只能对静态成员进行初始化操作,不能作用于非静态成员,而实例构造函数二者都可以,当然如前面所说,对静态只读字段就不可以了。 静态构造函数只被执行一次,而且.net运行库也不知道什么时候会被执行,而实例构造函数可以在多次实例创建时被执行多次。 一个类只能有一个静态构造函数,但是可以有多个实例构造函数。 一般来说,简单的静态成员可以在声明时就进行初始化,而复杂的静态成员则选择在静态构造函数中进行初始化较佳。 3.静态成员和实例成员 静态成员主要包括静态字段和静态属性,静态成员可以实现在类中能够被所有实例对象共享的数据。例如一个缴费登记系统中,消费总额作为所以消费的综合,静态成员来实现就有很好。没有不必要的数据冗余。 比较 静态成员包括静态字段和静态属性,静态字段一般实现为private,而静态属性一般为public,以体现类的封装原则。 静态成员和类关联,不依赖对象存在,只能由类访问,而不能由对象访问,实例成员和具体的对象关联,只能由对象访问,不能由类访问。 静态成员属于类所有,不论创建多少个实例对象,静态成员在内存中只有一份,实例成员属于对象实例所有,每个都有其对应的内存区域。 4.静态方法和实例方法 类似于静态成员共享数据段,静态方法共享代码段,静态方法以static标识。 比较 性能上,静态方法和实例方法差别不大,所有方法,不管是静态的还是非静态的,都是在JIT加载类时分配内存,不同的是静态方法以类名引用,而静态方法以对象引用,创建实例时,不会再为类的方法分配内存,所有的实例对象公用一个类的方法代码,因此,静态方法和实例方法的调用,区别仅在于实例方法需要当前对象指针指向该方法,而静态方法可以直接调用,性能上差异微乎其微。 静态方法只能访问静态成员和静态方法,可以间接通过创建实例对象来访问实例成员和实例方法,而实例方法可以直接全部。。 静态方法只能由类来访问,实例方法只能由对象来访问。 静态方法中不能使用this关键字,否则编译错误,而实例方法中可以引用。 静态方法不能被标记为virtual,abstract或是override,静态方法可以被派生类访问,但是不能被覆写。 Main方法是静态的,因此Main方法不能直接访问Main所在类的实例方法和成员。 鉴于线程处理的安全性,应该避免提供改变静态状态的静态方法,因为,如果多线程同时访问该段代码,可能造成线程处理错误,因此,静态状态必须是线程安全的。 静态方法适合系统中边缘性的非业务需要,例如通用的工具类。

2012-07-02 · 1 min · bystander

C#中的is和as

is和as都是用作类型转换的,类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下: 基本规则 任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成; 任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名; 使用GetType可以取得任何对象的精确类型; 基本类型可以使用Covert类实现类型转换; 除了string以外的其他类型都有Parse方法,用于将字符串类型转换为对应的基本类型; 值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。 is和as操作符,是C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制。 is的模式如下: 检查对象类型的兼容性,并返回结果,true或者false; 不会抛出异常; 如果对象为null,则返回值永远为false。 使用很简单,用于条件判断中. 举例: object o=new object(); if(o is ISSsample) { //转换 ISSample a =(ISSample)o; } as的模式如下: 检查对象类型的兼容性,并返回转换结果,如果不兼容就返回null; 不会抛出异常; 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。 as必须和引用类型一起使用 举例: object o =new object(); ASSample a=o as ASSample; if(a!=null) //do some work 参考:http://www.cnblogs.com/anytao/archive/2007/04/07/must_net_01.html

2012-07-01 · 1 min · bystander

C#WinForm实现不规则窗体

这个纯属娱乐,因为其实用的不是太多,因为非主流,非标准的界面不符合用户的体验,不符合可用性功能的某一条HE规则。 为了完成这个效果,首先需要自己动手画个你需要的界面出来,界面边缘需要是一种可以很好区别的颜色,比如纯蓝色,因为实现不规则窗体是让C#使边缘颜色透明化来实现的,所以需要唯一识别。因为我用的图是一张灰色的图,我然后圈了一个蓝色的边缘。 刚开始的图; 然后新建windows应用程序。创建windows窗体并设置窗体基本属性。 (1)将 FormBorderStyle 属性设置为 None。 (2)将窗体的 BackgroundImage 属性设置为先前创建的位图文件。不必将文件添加到项目系统中;这将在指定该文件作为背景图像时自动完成。 (3)将 TransparencyKey 属性设置为位图文件的背景色,本例中为蓝色。(此属性告诉应用程序窗体中的哪些部分需要设置为透明。 ) 上面两个步骤已经完成了不规则窗体自身显示效果的制作。 有人说在24位色以下的环境中可以显示正常,但在24位色以上时黄色背景不能消失,所以上述不能胜任24位色以上环境。但我看到了一种解决方法,那就是先将背景图片添加到资源文件,然后在窗体构造时为窗体设置背景图片: private void Form1_Load(object sender, EventArgs e){ Bitmap bmp = Properties.Resources.form2; bmp.MakeTransparent(Color.Blue); // bmp.MakeTransparent(Color.FromArgb(2,2,2));如果rgb则是这样用 this.BackColor = Color.Blue; this.BackgroundImage = bmp; this.TransparencyKey = Color.Blue; } 实测是可以的。 然后就是为窗体添加移动、关闭、最大最小化的事件。代码直接给出 private bool isMouseDown = false; //记录鼠标是否被按下 private Point position; //记录鼠标位置 private void Form1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { int x = -e.X; int y = -e.Y; position = new Point(x, y); isMouseDown = true; } } private void Form1_MouseMove(object sender, MouseEventArgs e) { if (isMouseDown) { Point newPosition = Control.MousePosition; newPosition.Offset(position); this.Location = newPosition; } } private void Form1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { isMouseDown = false; } } 还有其他一些比如关闭按钮的添加,都很简单,直接添加一个button,事件里写,两个选一个。 this.Close();//关闭此窗体 Application.Exit();//退出应用程序 我最终的效果是个圆,可以看到,锯齿很明显,我想要效果好的话,那个位图得好好设计。这个只是演示。。所以。。还有一种方法是链接1中提供的,有兴趣的可以试试。 工程源码下载:IrregularForm.7z 参考: http://www.cnblogs.com/KissKnife/archive/2006/10/02/520116.html http://allancandy.cnblogs.com/archive/2005/09/01/227814.html

2012-06-21 · 1 min · bystander

你为什么会说是?-[影响力]

 今天早上把这本书读完了,短短的300页,绝对是今年读到的又一本经典之作,书摘什么的因为是读的纸质版,所以没有写什么笔记,但是还是简单的总结下书中的内容。顺带谈谈自己的感受。 就像昨天文章中提到的,这本书讲的不是成功学,而是心理学,讲我们在生活中为什么有时候会受到他人,或者是一些定律的影响,不知不觉中做了后来后悔的事情。或者是明明已经后悔了,却无法反悔。 影响力的几个武器; 第1种武器:互惠 互惠原理认为,我们应该尽量以相同的方式来回报他人为我们所作的一切。接受往往和偿还联系在一起,尽管互惠原理经常带给人们以负债感,但是总体而言,我们从中得利的时候还是占多数的,相比而言还是划算的。从而,相信并服从这个原理成为人们日常生活中一个十分重要的准则,而违背它则要付出严重的代价。人们普遍对那种只求索取不知偿还的人感到不信任,并尽量远离避免与之接触。往深里讲,互惠原理是人类社会形成的一大助力,是群体协作的默认基础。 在商业上最经典的案例则体现在商场里的“免费试用”中。很多人觉得,如果从那个笑容可掬的小姐手中接受了可以免费品尝的食物,就不好意思把杯子一还转身离开,总得买点什么吧,即时他们对那种商品并不是那么感兴趣。 第2种武器:承诺与一致 一旦我们做出了一个决定,或选择了一种立场,就会有发自内心以及来自外部的压力来迫使我们与此保持一致。在这种压力下,我们总是希望以实际行动来证明我们以前的决定是正确的。我们要让自己相信,自己作出了明智的抉择,而且毫无疑问地,自我感觉良好。 一个例子是安利公司就要求每个销售人员都要定下一个销售目标,而且不是光说说而已,必须得写下来。书面声明之所以特别有效,原因之一是它能使目标和方向都更明确,更重要的是,它能够轻易地公之于众。一旦个人公开选择某种立场之后,马上就会有一种维持这种立场的压力,因为他想在别人眼里显得前后一致。我承认我非常讨厌这家公司,有个笑话是这样的,十年后,我们不经意间再次相遇,她低声问我:“这些年过得好吗?她对你好吧。”我很伤感,说:“我还没结婚,一直等你。”她眼圈红了红,说:“你晚上7点来宾馆找我吧。”七夕夜,月如钩,我手捧鲜花,提前半小时来到宾馆,她迎我进去,招呼我坐下,幽幽问道:“你听说过安利吗?” 要想戒烟或者减肥成功,这种方法是非常有效的。给自己在乎的人说自己一定要减肥成功,并且勇敢说出来,这种压力会迫使你减肥成功 第3种武器:社会认同 有点像是从众,但不完全是,社会认同原理指出,我们进行是非判断的标准之一就是看别人是怎么想的,尤其是当我们要决定什么是正确的行为的时候。如果我们看到别人在某种场合做某件事情,我们就会断定这样做是有道理的。一个很有趣的实验可以证实这一点,站在一条繁忙的人行道上,选定天空中的某一快空白,盯着看上1分钟,在这段时间里你的身边大概不会发生什么事情;第二天,你带上四五个朋友到同一地点一起往上看,不出1分钟,就会有大群路人停下来,把脖子伸得长长的,跟你们几个一起往天上看;即使是那些没有加入你们的行人,也无法阻抗那种至少往上瞄一眼的压力。 在形势模糊不清的时候,每个人都希望看一看别人正在做什么,从而致使一个极为重要的现象的出现――“多元无知”。这个可以很好的解释小悦悦事件,因为路人多了以后,前一个的人的行为影响了后一个人,大家都在看别人在做什么,并且人多了以后,每个人的责任感被分散,因此,施救的概率降下来了,我不是要辩护什么,而是反对喜欢扣标签的人,这件事并不能说明社会道德什么下降及其厉害,虽然有下降,这件事只是很典型的一个社会心理学实例罢了。 书中做出指出,如果你遇到了危难,很可能出现人很多,但没人施救。。 本书作者的建议是,当你遇到突发灾难时,直接从人群中挑出一个人来,注视着他,指着他,直接对他说:“你,蓝夹克的先生,我需要帮助,请叫一辆救护车来”,总之,在紧急状态中需要帮助时,最有效的策略是减少周围人对你的处境和他们和责任的不确定性,尽量把你所需要的帮助表达精确。不要让旁观者自己去下结论,因为社会认同原理和多元无知效应很可能使他们对你的处境作出错误的诊断,在人群中尤其如此。 这样说了以后,被指定的那个人有了一种责任感,进行施救,其他人会因为确定了状况加入救助的行列。 第4种武器: 喜好 一句话就是:人们总是比较愿意答应自己认识和喜爱的人提出的请求 ,产生喜好的来源主要有外表的吸引力,这个不多解释,美女得到的帮助在陌生的时候必其他人要多,相似性,指对和自己相似的人,比如外貌,衣着,爱好的相同都会产生;称赞,是指人们会奉承话通常来之不拒,并对奉承者产生好感,接触和合作,指一般经历了一起合作的人之间会产生明显的好感,一个有意思的例子是人们对和他们一起吃饭的人好感尤其强烈;关联,指人们会爱屋及乌,比如中国古代的近朱者赤,近墨者黑,表示的有点这个意思,人们会把你交往的人的品质关联到你自己身上,也会把你传递的消息关联上你的身上,如果你经常传递不好的消息,,你懂的。 要对付这么多赢取我们好感的手段,不是一件容易的事。一个有效的方法是,将注意力集中在效果而不是原因上。当我们在和那些老练的推销员打交道时,我们只需要注意一件事,我们是不是过于迅速地对这个人产生了过多的好感。一旦答案为“是”的时候,我们就该反击了。不过这个只针对于商业上的,在真实的社交中,我还是很相信一见钟情,相见恨晚的。嘻嘻。 第5种武器:权威 密歇根大学的心理学教授Mligram (1974)主持了一个实验,结果表明,具有独立思考能力的成年人也会为了服从权威的命令而做出一些完全丧失理智的事情。这可以解释那些利用各种假头衔,衣着(比如警服)来骗人的人。如何克服,两步,第一步,问自己对方是不是会真的专家,第二步问自己他是不是会为自己考虑,同时还要提防有些专家通过抛出一些自己的小缺点来增强”诚实“,表明自己的可信度。这里面有个说法是我以前在社会心理学里看到的,讲到一个演讲的成功与否很大程度上取决于权威的权威,和主题没什么太大关系,这可以解释为什么有时候听专家演讲觉得跟没听似的。。 第6种武器:短缺 短缺原理在现实生活中最常见的运用就是商家所策划的“限量版”商品。不管数量有限的信息是真的还是伪造的,商家的用意都是让顾客相信某种东西不可多得,从而立刻觉得它身价百倍。与数量有限技巧相对应得是“截止时间”策略,也就是对顾客获得推销从业者提供得商品的机会加上时间限制,所谓的“最后三天,清仓甩卖”即源于此。我家附近的最后三天已经for循环了N次了。。。 最后作者也认为世界还是很复杂的,有时候被影响影响也无伤大雅,因为事情太多,不可能完全兼顾,但是对于一些很重要的事情还是要注意避免这类影响。我在读的过程中,也就是书的前半段,讲到利用对比原理和喜好原理来审问犯人,一个好警察一个坏警察,来套取犯人的口供,这在法律上是许可的 ,可我却有些不好的感受,对犯人来说,他受到了心理学的影响,他以为那个警察真的关心他,他以为这个好警察真的好,可是事实上,这只是一种策略罢了,这是多么残忍的一件事啊,所以,昨天我想到了一个词,叫做反心理学,我也不知道具体想表达什么意思,可能当时想的就是避免受到这类心理学应用的影响,不被残忍对待吧。

2012-06-07 · 1 min · bystander

比较HE和Think Aloud可用性测试

首先,HE和Think Aloud 都是两用可用性测试的方法,HE,也就是这个启发式评估可以在设计的早期阶段(比如草稿)就开始使用,并且不需要太多的其他步骤。而Think Aloud则更多建立在已经设计出来的原型系统上。需要更多的步骤。这两个各有利弊。互相协作。才能更好嘛,有些问题,HE可以发现,有些则只有Think Aloud可以发现。 1.Many Usability Aspects Identified in HE are Confirmed in Think-Aloud Usability Tests 许多可用性方面的问题可以在HE中识别。然后在Think Aloud测试中被确认。 2.When HE Predictions are not Confirmed by Think-Aloud Usability Tests 当HE预测了问题但是Think Aloud中,并没有发现。这种情况下。请相信Think Aloud测试。因为用户是王道。数据比预测更准确。 3.“False Alarms” vs. True Problems 假警告vs真问题,这个举个例子,在对话框中,有三个按钮。OK ,Apply和Cancel ,虽然HE规则预测了这个迷惑性。但是进行Think Aloud测试的时候,并没有这个问题,原因是用户就没想过这个事,他只按ok,但这并不能避免问题,或者说似乎这个问题并不是个问题,还有一种情况,比如HE规则中的文档帮助的问题,可能用户在测试的时候就没打开文档。这就需要HE来评估了。所以,这种情况下,还是应该好好分析一下HE给出的评估来改进系统。 4.Think-Aloud Usability Tests Can Show Things HEs Can’t Show Think Aloud测试可以展示HE没有发现的问题。 HE规则因为是建立在早期草稿原型上的。并不是真实情况,他只是在早期给出设计上的问题,他不能预测真实系统的问题,比如程序运行速度非常慢,以至于用户难以忍受。这就需要Think Aloud才能发现了。 基本上SSD4就讲了这么些东西了。四篇文章四点写到7点。。基本上算是写完了。工科男求安慰。。

2012-05-29 · 1 min · bystander

10条可用性准则(Heuristics)

SSD4第二单元其实就讲了这么一点东西,包括一点VB的控件常识 可用性测试(Usability testing),是一项通过用户的使用来评估产品的技术,由于它反应了用户的真实使用经验,所以可以视为一种不可或缺的可用性检验过程[1]。也就是说,可用性测试是指让用户使用产品(服务)的设计原型或者成品,通过观察,记录和分析用户的行为和感受,以改善产品(服务)可用性的一系列方法。它适用于产品(服务)前期设计开发,中期改进和后期维护完善的各个阶段,是用户中心设计的思想的重要体现。 10条可用性准则(Heuristics) These are ten general principles for user interface design. They are called “heuristics” because they are more in the nature of rules of thumb than specific usability guidelines. 1.Visibility of system status——系统状态的可见性 The system should always keep users informed about what is going on, through appropriate feedback within reasonable time. 系统应该始终在合理的时间以适当的反馈信息让用户知道系统正在做什么。 2.Match between system and the real world——系统和现实世界之间的吻合 The system should speak the users’ language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. 系统应该用用户熟悉的词,短语和概念来说用户的语言,而不是用面向系统的术语。遵循现实世界中的惯例,让信息以自然的合乎逻辑的次序展现在用户面前。 3.User control and freedom——用户控制和自由 Users often choose system functions by mistake and will need a clearly marked “emergency exit” to leave the unwanted state without having to go through an extended dialogue. Support undo and redo. 用户经常错误地选择系统功能,所以在不需要查看由于误操作而延伸出来地对话的情况下有一个明显地标志为“紧急退出”的操作来离开不想要的状态。另外,系统需要支持“撤销操作”和“重做”的功能。 4.Consistency and standards——一致性和标准 Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions. ...

2012-05-29 · 2 min · bystander

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. //第六条没有新的I产生。 I4=GO(I1, S)=CLOSURE({S→aS•})={S→aS•} //这第七条在I1找右侧包含.S的项目,只有S→a•S,右移后求闭包,同第四条,无B,所以直接如此。 GO(I2, a)= CLOSURE({S→a•S , S→a•})=I1 GO(I2, b)=CLOSURE({S→b•S})=I2 I5=GO(I2, S)=CLOSURE({S→bS•})={S→bS•} 此时应该继续求GO(I3, a),GO(I3, b)和,GO(I3, S),但显然I3中没有.a,没有.b也没有.S,所以不用多此一举了, 继续求GO(I4, a),GO(I4, b)和,GO(I4, S),显然同上,也没有。所以也不用求了, 继续求GO(I5, a),GO(I5, b)和,GO(I5, S),理由同上,没有任何必要了 最终,项目集I0,I1,I2,I3,I4和I5构成了该文法的LR(0)项目集规范族。 编译原理真是博大精深啊。就一个简单的三个推导式就得这么多步骤才构造了一个规范族,还要利用规范族来构造LR分析表,这。。手工果断不是事啊。今天看了几个小时才完全弄清楚LR(0)项目集规范族的构造。例题的步骤是我自己写的。这篇文章写了2个小时。。太费脑子了。。慢慢再写产生活前缀的DFA和LR分析表吧。 参考: http://metc.gdut.edu.cn/compile/nandian/n-7.htm

2012-05-12 · 1 min · bystander

《乌合之众》笔记下部

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

2012-05-11 · 1 min · bystander