《乌合之众》笔记下部

看完了下部,本书绝对是群体心理学的经典。没有废话,180多页的小册子讲的非常非常好。   执政府和帝国的具体工作就是用新的名称把过去大多数的制度重新包装一遍,用新名词代替那些能够让群众想起不利形象的名称。因为新鲜能够防止这种联想。

  统治者的艺术,就像律师的艺术,首先在于驾驭辞藻的学问。

  推动各民族演化的主要因素,永远不是真理,而是谬误。

  社会主义的谬误,群众从来不渴求真理,他们需要对他们有诱惑力的谬误,凡是能供应幻觉的,都是他们的主人,使他们幻灭的。都将成为牺牲品。

  尽管存在着理性,文明的动力仍然是各种感情–譬如尊严,自我牺牲,宗教信仰,爱国主义以及对荣誉的爱

  只要有一些生物聚集在一起,不管是人还是动物,都会本能的让自己处在一个头领的统治之下。

  头脑敏锐,深谋远虑的人往往不能成为群体领袖,因为他们这种品质会让人犹疑不决,而那些有毛病的,兴奋的人则可能。

  在群体的灵魂中,占上风的,不是对自由的追求,而是当奴才的欲望。

  领袖的动员手段:断言,重复和感染。

  传染的威力很大,不但能迫使个人接受某些意见,而且能让他接受一些感情模式。

  名望是某个人,某本著作,或是某种观念对我们头脑的支配力。会麻痹我们的批判能力。让我们充满惊奇和敬畏。名望的特点就是阻止我们看到事物的本来面目。

  用一时的意见影响群众的头脑不难,想让一种信念在其中长久扎根却极为不易。

  一种信念开始衰亡的确切时刻很容易辨认-他的价值开始受到质疑。不过即使已经摇摇欲坠,根据他建立的制度依然会保持其力量,消失的十分缓慢

  需要一种普遍信念来支持一个国家。实干家一心要让这种普遍接受的信仰变成现实,立法者一心想把他付诸实行,哲学家,艺术家和文人全都醉心于如何以各种不同的方式表现他。

  今天的社会主义信念虽然有明显的破绽,但并没有阻止他赢得群众。他的力量的增长只能到他获得胜利,掌权的那一天为止。

  报纸媒体不断把对联意见带给人们,由于受到对立意见的暗示作用的破坏,结果任何意见都难以普及,他们全都成了过眼烟云。一种意见还没来得及被足够多的人接受。就已经寿终正寝。

  报业既然成了仅仅提供信息的部门,也就放弃了让人接受某种观念或学说的努力。

  如果有什么事情能够推迟一种文明的毁灭的话,那就是极不稳定的群众意见,以及他们对一切普遍信仰的麻木不仁。

  两类群体:异质性,街头,议会。同质性,派别,身份

  杰出律师的主要用心在于,打动陪审团的感情,不需要太多论证,留心他们,得出自己的结论,确定那些人赞同,转向不赞同的人。

  选民群体属于异质性群体,他们极少推理,没有批判精神,轻信,易怒而且头脑简单。

  选民的心理和其他群体一样:既不更好,也不更差。

  文明是少数智力超常的人的产物,他们构成了金字塔的顶点,随着金字塔各个层次加宽,智力越来越少,如果一个伟大的文明仅仅以人多势众自夸的低劣成员的选票。是无法让人放心的。

  领袖的影响力只在很小的程度上是因为他们提出的论据,而在很大程度上来自他们的名望,一旦他们不知道什么原因威信扫地,他们的影响力也将随之消失。

  在政治集会中,才华横溢者无任何作用。伟大的民众领袖头脑的狭隘令人瞠目

  演讲者演说的成功与否很大程度上也取决于自己的名望。

  由法律专家制定的法律是最好的法律,因为他是个人的产物,只有当一系列修正案把他们变成集体努力的产物的时候,才可能产生灾难性的后果。

  表面自由的增加,必然伴随着真正自由的减少。

  各国被一种谬见所蒙蔽,就是认为保障自由与平等的最好办法就是制定法律,结果使人变成奴才。

  人们似乎热爱自由,其实只是痛恨主子 -托克维尔。

《乌合之众》笔记上部

今天本来是打算写篇关于LR型语法分析的总结的。结果因为各种原因错过了。可能我还是有轻微的拖延症吧。但是还是非常给力的。今天在读这本书-乌合之众-大众心理研究,本来就想着也就不到200页的书,几个小时就看完了,结果真正看了以后,一阵惊叹啊。信息量很大,现在才看到84页。不过笔记已经写了2000字了。为了避免文章太长。先分享这两千字。明天看完了后半部分,再分享。

  群体的无意识行为代替了个人的有意识行为,是目前这个时代的主要特征之一。

  社会组织就像一切生命有机体一样复杂,我们还不具备强迫他们在突然之间发生深刻变革的智力。

  对于一个民族有致命危险的,莫过于他热衷于重大的变革。无论这些变革从理论上来说多么的出色。如果它能够使民族气质即刻产生变化,才能说他是有用的,只有时间才具备这样的力量,

  如果有关某种形态的知识只有少数有学问的人才能掌握,那他也没有多少意义了。

  造成文明洗心革面的唯一重要的变化,是影响到思想,观念和信仰的变化,令人难忘的历史事件,不过是人类思想不露痕迹的变化所造成的可见后果而已。

  群体的力量会成为唯一无可匹敌的力量,我们要进入的时代,就是一个群体的时代。

  群体不善推理,却急于采取行动,他们目前的组织赋予他们巨大的力量。

  科学为我们许诺的是真理,从未许诺过和平或幸福,他对我们的感情无动于衷,对我们的哀怨不闻不问。

  历史告诉我们,当文明赖以建立的道德因素失去威力时,他的最终解体总是有无意识的野蛮群体完成的,

  创造和领导着文明的,历来就是少数知识贵族而不是群体,群体只具有强大的破坏力。

  不管情况如何,我们注定要屈从于群体的势力,这是因为群体的目光短浅,使得有可能让他守规矩的所有障碍已经被一一清除。

  一个心理群体表现出来的最惊人的特点是:不论他们是谁,他们变成了一个群体这个事实,使他们获得了一种集体信息,这是他们的感情,思想和行为变得与他们独自一人时颇为不同,

  群体一般只有很普通的品质,他削弱了个人的优秀品质,这一事实解释了为何他不能完成需要高智力的工作,群体中累加在一起的只有愚蠢而不是天生的智慧。

  从数量上来看,群体的个人会感觉到一种势不可挡的力量,使他敢于发泄出自己本能的欲望。而独自一人时,则必须克制欲望,因为他觉得:群体是个无名氏,不许承担责任。

  还有就是群体的传染性,每种感情和行动都有传染性,其程度足以使个人随时准备为群体利益牺牲他的个人利益。这与人的天性相对立,如果不是群体的一员,很少具备这样的能力

  长时间融入群体行动的个人,不就会发现,或许是因为在群体发挥催眠影响的作用下,自己进入一种特殊状态,类似于被催眠,变成了受人支配的无意识的努力,有意识的人格消失的无影无踪,意识和辨别力也不复存在。

  1989年8月4日,的晚上,法国的贵族一时激情澎湃,毅然投票放弃了自己跌特权。所以说,群体有时候也是英雄群体。

  群体容易被暗示,会随时听命于一切暗示。失去了批判能力。

  不要相信童言无忌,儿童一直就在撒谎。

  群体情绪的简单和夸张所造成的结果是,他全然不知怀疑和不确定性为何物,他就像女人一样,一下子就会陷入极端,怀疑一说出口,立刻就会变成不容辩驳的证据。

  群体只知道简单而极端的感情;提供给他们的各种意见,想法和信念,他们或者全盘接受,或者一概拒绝,将其视为绝对真理或绝对谬论。

  群体中只要有人在他们之间山东,他们随时都会付诸行动,群体对强权俯首帖耳,却很少为仁慈心肠所动,他们认为那不过是软弱可欺的另一种形式。他们的同情心从而不听命于作风温和的主子,而是只向眼里欺压他们的暴君低头。他们总是为这种人塑其最壮观的雕像。

  群体强烈的守着无意识因素的支配,因此很容易屈从于世俗的等级制,难免会十分保守,对他们撒手不管,很快他们就会对混乱感到厌倦,本能的变成奴才。

  观念只有采取简单明了的形式,才能被群体所接受,因此它必须经过一番彻底的改造,才能变得通俗易懂。

  就观念来说,群体总是落后于博学之士和哲学家好几代人。

  群体形象化的想象力不但强大而活跃,并且非常敏感。历史上,表相总比真相起着更重要的作用,不现实的因素总比现实的因素更加重要。

  不管刺激群体想象力的是什么,采取的形式都应该具有鲜明形象。没有任何多余的解释。比如死亡人数。

  如果一个民族使自己的习俗变得过于牢固,他便不会再发生变化,于是就像中国一样,变得没有改进能力。在这种情况下,暴力革命也没有多少用处,因此由此造成的结果,或者是打碎的锁链被重新拼接在一起,让整个过去原封不动的再现,或者是对被打碎的事务撒手不管,衰败很快被无政府状态所取代。因此对于一个民族来说,理想的状态是保留过去的制度,用一种不易察觉的方式一点点的加以改进。

  群体具有保守主义精神,即使被狂暴的反叛最终也只会造成一些嘴皮子上的变化。

  各民族是受着自己的性格支配的,凡是与这种性格不合的模式,都不过是借来的外套,一种暂时的伪装。

  教育既不会使人变得更加道德,也不会使人更幸福,他既不能改变他的本能,也不能改变他的热情。。。害处远大于好处。

  掌握一些派不上用场的知识,是让人造反的不二法门

  生活中取得成功的条件是判断力,经验,开拓精神,和个性。非课本能带来。

  大学毕业,一个充分发展的人诞生,但筋疲力尽,成家立业,落入生活的俗套,只要落入这种俗套,他就会把自己封闭在狭隘的职业中,工作还算本分,但仅此而已,这就是平庸的生活。

  因为各种词语和套话的力量而死去的人,只要用他们的尸骨,就能建造一座比古老的齐奥普斯更高的金字塔。

C++回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。  也就是说,回调函数它首先是一个函数,然后有一个指针指向它(该指针称为函数指针),在别的代码块中,通过这个函数指针调用了这个函数,仅此而已。  下面给出一个例子,我写出了比较详细的注释。希望足够清晰。这个例子说明了,回调函数可以把调用者和被调用者分开,对于调用者来说,只需要知道自己要调用一个函数,该函数有一个string类型的参数,至于具体调用哪个,被调用的函数到底怎么执行,怎么解释该参数,是完全不用关心的。 #include #include using namespace std; typedef void (*PF)(string s); //定义一个名为PF的函数指针,该指针指向一类函数,该类函数有一个string类型的参数,返回值为void。 void funcOne(string s) //回调函数1 { cout << s+” One”<< endl; } void funcTwo(string s) //回调函数2 { cout << s+” Two”<< endl; } void caller( PF pf, string s) //调用函数 { cout << “I am Caller Function” << endl; pf(s); } int main() { string str = “Test CallBack Function”; PF pf1 = funcOne; //实例化一个函数指针,指向func函数 [Read More]

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/gsmgprswcdmahsdpa

       https://zh.wikipedia.org/wiki/CDMA2000

       https://zh.wikipedia.org/wiki/3G

windows下vim闪烁问题

今天打开我的vim才发现,界面隔几秒会闪烁。虽说貌似能够起到防止眼睛疲劳的效果,但我实在是hold不住啊。不行,搜索。。 首先有这个问题的人不多。首先找到了这篇文章,但是作者不知道怎么想的。只说了原因,没有给出解决方法。继续搜索关键字cursorcolumn,结果找到了这篇文章,按着说明来了一下

set cursorline cursorcolumn
没效果。依然闪烁。   好吧。如果是插件的问题。于是我删掉了所有的插件包括写入的配置。依然不行。于是还是采用排除法,一行行删掉配置文件。最后定位到
set guifont=Arial_monospaced_for_SAP:h9:cANSI 
  这是设置字体的,不太明白为什么会出现这样的情况。怀疑是字体的原因,于是换个字体,依然闪烁。。好吧。就这样吧。删掉算了。

四种I/O控制方式

基本上原文照搬过来吧。主要是原文排版太乱。不利于传播。 随着计算机技术的发展,I/O控制方式也在不断地发展。I/O控制的发展经历了以下四个阶段:  一.程序I/O控制方式  在早期的计算机系统中,由于无中断机构,处理机对I/O设备的控制,采取程序I/O方式(Programmed I/O方式)。在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU 的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构,使 I/O设备无法向CPU报告它已完成了一个字符的输入操作。如下图所示:  图1.![]}/images/c83bce26670bc565b0fb2eaa4984e5b7575b618a.jpg)  程序I/O方式又称忙–等待方式,即在处理机向设备控制器发出一条I/O指令启动输入设备、输出数据时,要同时把状态寄存器中的忙/闲标志busy置为1,然后便不断地循环测试busy。当busy=1时,表示输入机尚未输完一个字(符),处理机应继续对busy进行测试;直至busy=0,表明输入机已将输入数据送入控制器的数据寄存器中,于是处理机将数据寄存器中的数据取出,送入内存指定单元中,接着,再启动去读下一个数据,并置busy=1。 △ 此方式造成对CPU的极大浪费。  二.中断驱动I/O控制方式  在现代计算机系统中,对I/O设备的控制,广泛采用中断驱动(Interrupt—Driven)方式。在I/O设备输入每个数据的过程中,由于无须CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。如下图所示:  图2  当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备。此时,CPU与I/O设备并行操作。 例如,从终端输入一个字符的时间约为 100ms , 而将字符送入终端缓冲区的时间小于 0.1ms 。 若采用程序 I/O 方式, CPU 约有 99.9ms 的 时间处于忙 — 等待中。 采用中断驱动方式后, CPU 可利用这 99.9 ms 的时间去做其它事情,而仅用 0.1 ms 的时间来处理由控制器发来的中 断请求 。 可见,中断驱动方式可以成百倍地提高 CPU 的利用率。△ 中断驱动方式可以成百倍地提高CPU的利用率。  三.直接存储器访问DMA控制方式  –>DMA控制方式的引入  虽然中断驱动I/O比程序I/O方式更有效,但它是以字(节)为单位进行I/O的,若将这种方式用于块设备的I/O,显然将会是极其低效的。为了进一步减少CPU对I/O的干预,而引入了直接存储器访问(Direct Memory Access)方式。如下图:  图3![]}/images/ee3e0c3ca8d998d2a84488f01d3ca4d6e642f217.jpg)  此方式的特点是: 数据传输的基本单位是数据块;所传输的数据是从设备直接送入内存的,或者相反;整块数据的传送是在控制器的控制下完成的;  可见,DMA方式较之中断驱动方式,又是成百倍地减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。 [Read More]

.Net三层架构

本文来源:http://www.cnblogs.com/gaoweipeng/archive/2009/01/18/1377855.html 老规矩。因为是非常不错的文章。所有有必要收藏下来备用。推荐。 **三层体系结构的概念 ** 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则 各层的作用 1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务. 2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。 3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。 具体的区分方法 1:数据数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作。而不必管其他操作。 2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。 3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。 三层结构解释 所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交换. 开发人员可以将应用的商业逻辑放在中间层应用服务器上,把应用的业务逻辑与用户界面分开。在保证客户端功能的前提下,为用户提供一个简洁的界面。这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修改,而不用修改成千上万的客户端应用程序。从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了应用系统的开发、更新和升级工作。 那么为什么要应用“中间业务层”呢?举些例子: 我们假设有一段登录代码,则可以这样处理Web程序,外观层负责接收前台页面的数据,然后传给中间层,中间层对数据进行处理,比如格式化,防SQL注入等等一些,这样的数据再传给数据访问层然后与数据库进行操作,比如与数据库的用户名和密码匹配等等一些代码。** ** * “中间业务层”的用途有很多,例如:验证用户输入数据、缓存从数据库中读取的数据等等……但是,“中间业务层”的实际目的是将“数据访问层”的最基础的存储逻辑组合起来,形成一种业务规则。例如:“在一个购物网站中有这样的一个规则:在该网站第一次购物的用户,系统为其自动注册”。这样的业务逻辑放在中间层最合适: > 在“数据访问层”中,最好不要出现任何“业务逻辑”!也就是说,要保证“数据访问层”的中的函数功能的原子性!即最小性和不可再分。“数据访问层”只管负责存储或读取数据就可以了。 > ** > ** ASP.NET中的三层结构说明 完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层。否则你的应用是不是多层结构,或者说是层结构的划分和组织上是不是有问题就很难说.不同的应用有不同的理解,这只是一个概念的问题. 理解ASP.NET中的三层结构——为什么要分三层? 我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级。它未必会提升性能,因为当子程序模块未执行结束时,主程序模块只能处于等待状态。这说明将应用程序划分层次,会带来其执行速度上的一些损失。但从团队开发效率角度上来讲却可以感受到大不相同的效果。 需要说明一下,三层结构不是.NET的专利,也不是专门用在数据库上的技术。它是一种更加普适的架构设计理念。 此种架构要在数据库设计上注意表之间的关系,尽力满足主与子的关系。在功能上对用户要有一定的限制,不要表现在对于子表的删除操作一定要慎重,以免造成主表与子表的数据在逻辑上出现的主表的外键在子表中没有相对应的值。 对于表的综合查询方法是: 先对主表查询,调用主表所对应的DL。再根据主表的记录分别对每一个子表进行查询。将自表的查询结果添加的主表后,形成一个大的查询集合。 对于表的操作(增删改): 此时只对主表进行操作,调用主表对应的DL中的操作方法。 RL层是逻辑判断层,主要是对页面上传入的数据进行逻辑判断。RL层之上就是UI 如何建立一个三层体系结构解决方案 新建一个空白解决方案。然后: “添加”-“新建项目”-“其他项目”-“企业级模版项目”-“C#生成块”-“数据访问”(数据层,下简称D层) “添加”-“新建项目”-“其他项目”-“企业级模版项目”-“C#生成块”-“业务规则”(业务层,下简称C层) “添加”-“新建项目”-“其他项目”-“企业级模版项目”-“C#生成块”-“Web用户界面”(界面层,下简称U层) 右键点“解决方案”-“项目依赖项”,设置U依赖于D、C,C依赖于D。 对U添加引用D、C,对C添加引用D。 到此为止,一个三层的架子建立起来了。我上面说的很具体很“傻瓜”,知道的人觉得我废话,其实我这段时间很强烈的感觉到非常多的人其实对这个简单的过程完全不了解。虽然不反对建2个“空项目”和1个“Asp net Web应用程序项目”也可以作为3层的框架,而且相当多的人认为其实这些“企业级模板项目”其实就是个空项目,这是一个误区。没错,企业级模板项目你从解决方案资源管理器里看它是个什么也没有的,但是你可以用记事本打开项目文件,看见不同了吧??有些东西在背后,你是看不见的,不过系统已经做好了。也就是说,如果你在C层里的某个类里“using System Data SqlClineit”,或者使用一个SqlConnection对象,编译时候不会出错,但是会在“任务列表”里生成一些“策略警告”,警告你在C层里不要放应该放在D层的东西(虽然就程序来说没错,但是可读性可维护性就打了折扣)而这种功能,空项目是无法給你的。 [Read More]

你会用计算器吗?

今天早上在用windows自带的计算器转换进制的时候,看到了下图所示的按钮。MS MR之类的。

  这些个按钮在简单的计算器上也有。我从小时候到现在都没搞清楚。当然也没搞过。。不学总是不会的。于是,找找资料。学会了也分享一下,英文是我猜的。。不过估计差不多

  首先明确的一点是这类计算器内部有一个小的记忆芯片,可以用来存储一个数,类似于内存吧。所以M的意思就是Memory,下面先给出这几个的总体说明

  “MS”,英文 Memory Store,用来存储输入栏显示的数字。

  “MR”,英文 Memory Read, 再次显示调用存储的数字。

  “M+”,英文 Memory Plus, 存储器里的值加上输入栏的值,结果又存入存储器

  “M+”,英文 Memory Minus, 存储器里的值减去输入栏的值,结果又存入存储器

  “MC”,英文 Memory Clear,用于清除存储器中的数值,默认为0

  “C”, 英文 Cancel,就是全部撤销;

  “CE”, 英文 Cancel Error,也就是撤销错误输入。

  现在来说个例子,比如我要计算100*2+11*3因为一些计算器不支持整个式子输入。也是为了演示这些功能。我们可以这样输入,

  先输入100,然后 * ,然后 2 ,按下等号,这时候输入栏变成了200,我们按下MS 或者M+,按下MS的话把200存到了存储器,而按下M+呢,因为存储器默认是0,所以就相当于0+200,存储器里就是200了。然后我们继续输入11 ,输入 +,输入3 ,按下等号,输入栏变成了33.我们按下M+,这时候输入栏并没有改变。因为M+将存储器里的200加上了33.则存储器里变成了233.我们按下MR就是读取存储器的值,这样输入栏就可以看到233了。我们就可以继续用233来运算了。MC就是清除233.恢复为0.

  例如:想要9*6,如果按6按错按成5了, 按C就是从头来过, 这时就要重新按9了, 但是如果你按CE的话, 就只要输入6就行了, 不必输入前面的了。

  我个人感觉M存储器就相当于一个草稿。吧计算中的一些临时值存储起来,就不用手记了。我记得我那时候有时候算值还得先把一些临时值写在纸上,后面重新输入。没文化真可怕。

图片压缩工具源码(C#)

以前在用一个破解版的图片压缩工具。今天早上想想自己也试着做一个吧。查了一些资料。参考了一些代码。总算是写出来了。其实关键代码很简单。主要还是画界面,处理边界。。 看下效果图 处理图像的关键代码是这样的:

    bmp = new Bitmap(width, height);  //创建一张空白画布
    grap = Graphics.FromImage(bmp);  //以该画布创建一个绘图对象
 //平滑的高品质,抗锯齿
    grap.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
 //HighQualityBicubic 是质量最好的绘图模式
    grap.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    grap.DrawImage(img, new Rectangle(0, 0, width, height)); //用选中的原图在画布上绘图
    bmp.Save(topath, System.Drawing.Imaging.ImageFormat.Jpeg);  //对图像压缩后保存

另外一个就是空间的tip功能,vs2010中貌似已经不支持直接使用属性来设置tip了。所以用到了ToolTip类,使用方法如下,你也可以先导入库,然后简写,ToolTip对象可以给窗体的控件设置提示。主要是第二句话,第一个参数是控件名,第二个参数是提示文本,最好将这两句放入窗体的Load方法中

ToolTip toolTip = new System.Windows.Forms.ToolTip();
toolTip.SetToolTip(this.lboxPicPath, “双击可删除不需要的图片”);

还有一些边界,比如只接受数字数字之类的,我在代码里给出了详细的说明。实用工具的效果自行测试。对大图片效果最好。

源码下载:图片压缩工具源码

C#  总结 

说说邮件中的抄送和密送

一直是分不太清楚,或者说是不知道具体的应用场合,于是,今天早上查了一下资料。总算是搞清楚了

  不论你是用什么邮箱服务提供商,可能是126.或是Gmail,或是Qmail。在发送邮件的时候会看到如下类似的选项

  抄送的英文缩写为CC,来源于Carbon Copy,如果一份邮件需要发送给多个人阅读,只要在“抄送”或“CC”一栏填上相关人员的信箱地址即可。如果是抄送多人,同样的直接添加到抄送栏就可以了。

  密送的英文缩写为BCC,来源于Blind Carbon Copy,由于某种原因或出于某种考虑,你不希望收信人知道你把这封邮件还发送给了另外的人,则可将这位幕后的人的信箱地址放在密送一栏。

  具体的规则是怎么呢。如果我密送给了多个人,那么多个人会互相看到彼此吗?下面我将使用一个例子来说明

  如果:A 发送邮件(To)给B1、B2,抄送(CC)给C1、C2,密送(BCC)给D1、D2。

  那么:

  A知道自己发送邮件给了B1、B2,并且抄送给了C1、C2,密送给了D1、D2。这相当于废话。。自己肯定知道自己给谁发了。    B1知道这封是A发送给B1、B2的邮件,并且抄送给了C1、C2、但不知道密送给了D1、D2。To的人能看到抄送,看不到密送    C1知道这封是A发送给B1、B2的邮件,并且抄送给了C1、C2,但不知道密送给了D1、D2。抄送的人看不到密送。     D1知道这封是A发送给B1、B2的邮件,并且抄送给了C1、C2,而且密送给了自己,但不知道密送给了D2。 密送的人权限比较大,可以看到最多的情况,但依然看不到密送

  具体的用法呢,一句话就是:一般抄送和密送是为了备份,知会,或者监督跟踪的作用。

  我先举个例子。有些个朋友过节什么的喜欢群发邮件。或是一些什么网页之类的。有这个心是好的。可是。对于收到的人来说,一看到是群发的。直接可能都删掉了。所以此时可以使用密送功能。对应于上面说的最后一种情况。具体使用时在To里写上自己的地址,这样邮件会发给自己。密送栏里写上其他人的邮件,这样就同时密送给其他人,并且每个人都会只看到发给自己。起码有看下去的心情。

  邮件在工作中用的非常多,美国人总结的中国人典型特征中有一条,“即使面对面坐着,也不直接交谈而要使用邮件。”而这在很多外企之中是非常流行的文化,和总部打交道,邮件往往是最快捷和便宜的方式,”

  说到抄送,简直是所有邮件灾难故事最有力的协助者。同事之间常有抄送行为,有时是为了工作方便,同事A同时将一封邮件抄送给B和C,只能说明他们之间需要互相协作完成一件事情,但如果A将邮件发送给了B,却抄送给了B的老板C,那意味就深远了,通常有可能的情况是,A和B在合作的过程中发生了一些不愉快,告知老板的目的只是为了给对方一些震慑,这一招在各大公司当中都屡试不爽,而且往往成为一件悬而不决的事情得到解决的最快速手段。

  抄送更多时候只是手段,而不是最终目的。看到一个某人A与其他部门同事B合作时发生的插曲,在某次急需同事B提供某文件支持时,B不慌不忙地一直以各种借口拖延工作,A忍无可忍,发了一封紧急邮件,同时抄送了B部门的领导和自己的领导,在这样一封邮件下,B在十分钟之内就将所需文件以附件形式传了过来,并回复了原邮件中的所有人。

  如果你看了觉得真麻烦。其实。最有效的交流就是面对面,但是在职场中这是最有效地证明你自己干过什么的工具,一旦出了什么问题,最容易发现在哪个环节出现了问题,该由谁承担什么样的责任。如果遇到打官司这样的严重情况,邮件甚至能够作为呈堂证供。

  没事给朋友写写邮件,那天看到一句话:维系友情的方法之一,是冷冰冰地写邮件。频率少得可怜,常常春暖花开发的邮件,秋叶飘零时收到回复。  

参考:

http://www.eeo.com.cn/2012/0328/223658.shtml

http://baike.soso.com/v3997479.htm

http://dudo.org/archives/2007123120184.html