2011年4月7日

  这些天事情很多,事情不太如意。昨天和身边的人的约定也没能做到。

  究竟是为什么,要做的事情很多,我并不在意,但是总是交杂着纷纷绕绕的琐事,心一直想着很多事情,是因为假期的时候休息的太久,一下子忘记怎么做事了么。

  想认真的把事情做好,却老是静不下心来,尤其是这两天开始接触C#, SQL Server, LINQ, 很多细节用的虽然方便,但是完全不能一览全局,四处找文档,也没有发现,到了后面甚至连现在操作的类是什么都不清楚了,这种迷失在封装,接口,实现中的感觉一点都不好。

  想起以前的一句话,用一个东西,不明白它的道理,实在让人很郁闷。

  写了一个简单的Socket的多线程聊天室软件,Win32下面的线程比较难写,不过用C#实现的话又方便很多,只是互相通信需要一个特殊的集合。

  写了一个简单的监听程序,但是过滤有点问题,抓到的数据包奇奇怪怪的。

  一直在听《风雨无阻》,好好做事,积累人品。

发表在 唠叨 | 标签为 | 留下评论

【转】这七句话被中国人误传了数千年

这一篇是写给那些迷茫孩子的,如果你理解错了这句话,你会陷入自己的监狱,不能自拔。如果你知道这句话的真正意思,我恭喜你,孩子,这时你才真正长大。

 

发信人: fqyspring (思考者), 信区: WHU
标  题: 【转】这七句话被中国人误传了数千年
发信站: 珞珈山水 (Sun Apr  3 11:31:17 2011), 站内
这七句话被中国人误传了数千年
在中国崇尚权威的文化氛围中,名人名言占的地位是很重的,很多名家说的话,往往被人民当成指导自己人生观世界观的不二准则,但这些几千年流传下来的名言中,也有一些话被人刻意或无知地曲解,背离了话语者本身的意旨与初衷,迷惑了天下万千受众。影不才,试举数例解析一二,以还世情真相与大众……好了我再文诌诌地说话大家估计要扔鸡蛋,虚荣心也满足了,下面开始举例开讲。
1、以德抱怨
原句:“或曰:‘以德报怨,何如?’子曰:“以德报怨,何以报德?以直报怨,以德报德”————《论语宪问》
以德抱怨,是我们常听到的一句话了,人们通常理解的“以德抱怨”什么意思呢?就是说:孔老夫子教我们,别人欺负你了,你要忍,被打碎牙齿也要往肚子里吞,别人来欺负你,你反而应该对他更好,要用你的爱心去感化他,用你的胸怀去感动他。这就让人感觉很有点肃然了。想想看,如果我一巴掌呼过去那个被打的人还笑笑说打得好啊,你越打我我就要对你越好……遇到这种情况我也会感动到傻眼,这多好一孩子,多伟大的情操啊……
但事实上,我们根本曲解了孔子的原意,我当初,也万万没想到原来在孔子这句“以德抱怨”的后边还跟着另外一段话,什么话呢?子曰:“以德抱怨,何以报德?以直报怨,以德报德!”看完以后,幡然醒悟,原来我们都被某个断章取义的孔子FANS给玩了一把!当时的真实情况是怎么样的呢?孔子的一个弟子问他说:师傅,别人打我了,我不打他,我反而要对他好,用我的道德和教养羞死他,让他悔悟,好不好?孔子就说了,你以德抱怨,那“何以报德?”别人以德来待你的时候,你才需要以德来回报别人。可是现在别人打了你,你就应该“以直抱怨”,拿起板砖飞他!看!就因为被人故意省略了一句话,刚烈如火的孔老夫子一下就被扭曲成了现在这个温婉的受气包形象。
与西方文化相比,东方文明一向被认为是谦逊坚忍的,同样是被人欺负,西方的带头大哥耶稣在圣经里就叫嚣要:“以眼还眼,以牙还牙。”小弟们!别人瞪了你一眼,你就要瞪回去,别人咬了你一口,你就要咬回来!而东方呢?佛家的精神领袖释迦牟尼说“我不入地狱,谁入地狱?”一副逆来顺受的样子。而且他可不是说说而已的,大鹰来欺负他,要吃他的肉,他也真从自己身上一刀刀帮大鹰割下肉来,这就伟大得有点近乎BT了。说完了国外的几位大领导,再回到中国,孔老宗师的这句话为什么会被别人有意地曲解呢?根源还是当时封建统治者的需要,他们的心思,无外乎就是要信仰孔子的万千民众成为“以德抱怨”的顺民,只有“以德抱怨”的民众,才会老老实实地服从他们的剥削和压迫。我们再来看看影响吧,孔老先生这句被曲解了的“以德抱怨”,在中国文化史上起的压迫作用,可真是大到了天上。皇帝残暴,我们要“以德抱怨”,地主剥削,我们要“以德抱怨”,八国联军都打到北京了,还是要“以德抱怨”,要卑躬屈膝,要割地称臣,要想尽一切办法彰现自己的“德”,要“量中华之物力,结大国之欢心”……就是没想过反抗。试想,如果中国的文化里,没有这种把正确的思想东篡西改来为封建统治阶级服务的恶习,如果孔子这句原话没有被刻意地曲解成这样子,我们中国人会养成这样一种懦弱的思维惯性吗?有人说西方人的骨子里本性是狼性,而东方人的骨子里的本性是羊性,这里如月影倒想问问了,是什么原因让我们变成了这样?如果我们从古以来信奉的是西方那种“以眼还眼,以牙还牙”的训诫,近代史上的中国,会给世界留下那么一个任人鱼肉的印象吗?
以德抱怨。
原句:以德抱怨,何以报德?以直报怨,以德报德。
歪曲程度:8
反面影响:9

 

继续阅读

发表在 网摘, 网络 | 标签为 , , | 留下评论

悲剧是怎么炼成的

晚上写了一个简单的Sniffer,  发现报错 ( 无效的参数 )。

怀疑是平台不兼容的问题,四处找答案,从读源码到Google,  从晚上折腾到早上,最后发现是:

if ( sock = Socket() < 0 )

原先还在纳闷socket怎么会返回0, 看了书上 socket()错误会返回-1 就没怎么在意了。

早上仔细一看原来自己真的2了,经常在Blog里面说的,比较的优先级大于赋值,最后还是忘记了,哎。

杯具啊。

既然来说了,顺便贴一下代码吧。

继续阅读

发表在 C, Linux, 唠叨, 编程 | 标签为 , | 留下评论

Unix 网络编程 小结(1)

前天放话出来,昨天更新一下CS:APP第五章,虽然一直惦记着,但是还是没能看完,这里先整理一下《Unix网络编程》的心得吧,目前看到第三章,重新整理一二章。

关于《Unix 网络编程》(简称UNP): 提起Unix编程,当然要《Advanced Programming in the UNIX Environment》(APUE), 被誉为UNIX编程“圣经”。然而Unix网络编程一点也不逊色,反而我更喜欢看这本书,APUE虽然也在看,但是内容繁多而且需要大量实践,看了一章往往要消化很久,但是现在已经基本完成了网络的学习,继续深入学习Unix网络编程是很好的。

1. 关于异步回调(Asynchronous callback), 经典的Unix网络编程一般使用"客户端请求,服务器端响应"的交互模式,但是特殊情况会需要异步回调的使用(PS: Windows Phone 7 里消去了网络同步交互,几乎都使用异步回调来替代原始的请求响应模型),在后面的文章里会详细介绍。

2.  Web –> Tcp –> IP 这是前面看书时候写下来的,想体现的是协议的链接调用情况。

3. 主机 –> LAN(区域网) –>WAN(广域网) 体现的是物理的链接情况。PS: 最大的广域网是Internet。

4. 比较优先级高于赋值。

5. TCP endpoint,TCP接口又被称为TCP终结点,之所以写下来是因为WCF里面也有相似的概念,看来命名上是炒冷饭了。

6. 应用程序 –> C库函数 –>系统调用

   关于系统调用,和库函数的关系,APUE第一章(侥幸看完了)里有详细的解释,系统调用多而繁杂,用于最基础的实现,而库函数封装了系统调用,整理和划分了同类的实现。

但是在层次看来,系统调用在内核层,而库函数在应用层和内核层两者直接(当然书上是分在应用层里),也不排除内核层的函数直接暴露在应用层让程序调用,三者的关系在书上的连接是用双向的。

7. SYN, FIN, RST, ACK, PSH, URG, 最后一个是紧急情况的序号传递,以上是TCP连接控制消息。

8. PDU ( Protocol Data Unit) 在UNP里,译者花了一大版来描述在不同协议层下的PDU。而

PDU: 计算机网络对等实体间交换的单位信息称为协议数据单元(PDU)。

image

 

10 . Thread 线程调用出错返回Error值。

11. \r\n \r = 0x0D \n = 0x0A

12. call 指令把当前eip压栈并跳转,如果从多线程考虑,他应该是原子指令,可以确定的是他只有一条机器码。

发表在 Linux, 系统, 网络 | 标签为 , , | 留下评论

[转载]Twitter到底有多大?

在CNBeta上看到的数据,很有意思。

另外前些天看到新闻报道,巴菲特认为那些没有上市的社交网站价值被高估了,有兴趣可以去查查。

当然,第二句话和360没有关系。

1532230482217114

发表在 博客, 唠叨, 网络 | 标签为 , , | 留下评论

WCF 基础实例实现的注意细节

clip_image001

小心添加多个Service的时候出现配置文件重复,会导致不能调用。

多重绑定

clip_image002

手动配置 App.config文件

clip_image003

WCF简单上手也不是很难,照着入门书敲一遍就行。

只是深入学习要了解的知识点比较多,例如 SOA,SOAP ,基础协议 net.TCP, 命名管道等等,托管细节,安全实现都需要很多的知识面。

发表在 C#, Windows, 编程 | 标签为 , | 留下评论

深入理解计算机系统——第五章小结(1)

中午装Server 2008, 顺便找来CS:APP看了一会。以后弄创新杯的事情,中间抽空看一看吧。

5.1-5.7 描述了一个内容,即通过代码优化来不断减少CPE(cycles per element, 每元素的周期数)度量

 
首先要理解CPE 
例如 1.4GHZ表示CPU频率 1400兆赫兹,而一个2GHZ的CPU时钟周期为0.5纳秒。

详细的解释看这里:http://www.seenthewind.com/?p=1088
下面两个程序

void vsum1(int n)
{
    int i;
    for (i = 0; i < n; i++)
       c[i] = a[i] + b[i];
}


void vsum2(int n)
{
    int i;
    for (i = 0; i < n; i+=2) {
      c[i] = a[i] + b[i]
      c[i+1] = a[i+1] + b[i+1]
    }
}

其中,vsum1大约消耗 80+4.0n,而vsum2大约消耗83.5+3.5n。 即 80~84的常数周期加上 3.5或者4.0的线性因子。

而这时候,我们我们的CPE定义为,vsum1为 4.0, vsum2为3.5.


接下来谈一谈代码优化。

1. 消除循环的低效率。

    for (i = 0; i < vec_length(v); i++){

    // ....
    }

    将vec_length(v)移出循环式,改为常量,我们一般成为代码移动(Code motion)。可以降低10~20的CPE.
    也许你会觉得并不太明显,但是如果是

    for (i=0; i < serlen(s); i++) {
    // ....
    }

    这样的话,在长度为262144的字符串时,整整需要3.1分钟完成对字符串的大小写反转,而使用常数只需要0.006秒。

2. 减少调用过程

    如果出现在循环中调用检查是否越界的函数。如:

    for (i = 0; i < length; i++) {
    //....

    get_vec_element(v, i, &val); // 获得v向量中第i位元素,存入val
    
    }

    可以改为

    data_t *data = get_vec_start(v);

     for (i = 0; i < length; i++) {
    //....

    *dest = *dest OPER data[i;]
    
    }

    虽然看起来会有些损害模块性和抽象性,但是改进最高可以达到3.5X(即3.5倍,X表示相对性能 = Told/Tnew)

3. 消除不必要的寄存器引用。

    开启 -o2开关时,编译器会主动帮助你优化代码,但是大部分时候他会严格保证程序的正确执行,包括某些特殊情况
    (比如你想让两个指针指向的值相加,但有时你传入了相同的指针)。

    这种时候我们需要稍微研究机器码,分析不必要的寄存器引用,可以优化代码。

    例如

    movl (%edi), %eax
    imull (%ecx, %edx, 4), %eax
    movl %eax (%edi)
    incl %edx
    .....

    截取自以下代码的一部分:
    for (i = 0; i < length; i++) {
    // ....
    *dest = *dest OPER data[i];

    }

    汇编指令1,3对存放在dest中的值频繁读写,看上去是种浪费,所以我们改为:

    data_t x = IDENT;
    for (i = 0; i < length; i++) {
    // ....
    x = x OPER data[i];

    }
    *dest = x;


   得到的汇编码:
    imull (%eax, %edx, 4), %ecx
    incl %edx


    这样的好处在 data_t 类型为浮点数的时候尤其明显。CPE下降了100~120。

    将会在下一小结继续讨论这个问题。


发表在 C, 编程, 读书 | 标签为 , | 留下评论

使用VIM修正网络文章格式

-1. Vim 替换 :%s /\n\n\n / \r\r   把隔两行换成隔一行,至于为什么前面是\n匹配,而后面写\r , 从网上下载的文本会有全角的回车符,而\n可以匹配,但是在vim里替换成\n就变成^@这样的符号,使用\r正常。

0. 余下正文,有些意思,不过在折腾装服务器,就没弄了。

 

继续阅读

发表在 网摘 | 标签为 , | 留下评论

密码保护:我不明白。

这是一篇受密码保护的文章,您需要提供访问密码:

发表在 唠叨 | 标签为 , | 要查看留言请输入您的密码。

[3月26日] 近期小结

1. 最近又开始翻《编程珠玑》, "72定律" 表明:如果 x*y = 72 那么 x%的增益进行y时间差不多会翻倍。

打个比方,如果你在银行里存入 1k RMB, 利息 8%, 那么9年后你差不多有2K的存款。

粗略计算放在工程角度很有用处,例如 : N =10时,时间消耗 K=1k, 而 if  N + = 1,K = (1+ 12%) * K,那么也就是说,当 N+=6 ,K 差不多要翻倍,而 N+=60时,K 约等于 1000 * K  (2^10 = 1024 )

2. 去参加了一回笔试,以后笔试要认真做了,不能一时想不起来的就连蒙带骗的,实在不靠谱。

3. 配好了 Gvim for Windows, vim的配置文件依旧还是那么强大..

4. 开始看Python, 但是却没有比较想用脚本做的事情,琢磨下,看看有什么需求,也许我只是还不够懒。

5. 去上了摄影课,外出实习拍樱花。(PS: 我觉得人拍的倒不错…)

6. 申请俱乐部的活动室失败。

7. 后天就出 Windows Phone 7 的初赛成绩了。

8. 去霸面了..

9. 走的路不少,脚也有些疼,但是怎么吃饭就吃的比他们都少点点呢。。

10. 想买单反 囧。

11. 就到这里吧。

发表在 唠叨 | 标签为 | 留下评论