进程与线程的一个简单解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。...
View Article字符串匹配的KMP算法
字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。...
View Article字符串匹配的Boyer-Moore算法
上一篇文章,我介绍了KMP算法。但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。 Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。 下面,我根据Moore教授自己的例子来解释这种算法。 1....
View Article如何做到 jQuery-free?
jQuery是现在最流行的JavaScript工具库。据统计,目前全世界57.3%的网站使用它。也就是说,10个网站里面,有6个使用jQuery。如果只考察使用工具库的网站,这个比例就会上升到惊人的91.7%。 虽然jQuery如此受欢迎,但是它臃肿的体积也让人头痛不已。jQuery 2.0的原始大小为235KB,优化后为81KB;如果是支持IE6、7、8的jQuery...
View Article如何理解当代中国----《十亿消费者》读后感
前几天,我读完的美国人 James McGregor 写的《十亿消费者》(One Billion Customers)。 James McGregor 本来是《华尔街日报》和道琼斯集团在华负责人,后来辞职经商。为了对记者生涯做总结,他就写了这本书,让西方人了解如何在中国做生意。...
View ArticleHTML代码简写法:Emmet和Haml
HTML代码写起来很费事,因为它的标签多。 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容。还有一种就是我今天想要介绍的方法----简写法。 常用的简写法,目前主要是Emmet和Haml两种,本文都将加以介绍。 这两种简写法,功能相近,各有特点。考虑到Haml基于Ruby语言,我建议Ruby/Rails项目使用Haml,其他项目使用Emmet。 一、Emmet的用法...
View ArticleHTML Email 编写指南
今天,我想写一个"低技术"问题。话说我订阅了不少了新闻邮件(Newsletter),比如JavaScript Weekly。每周收到一封邮件,了解本周的大事。 有一天,我就在想,是不是我也能做一个这样的邮件? 然后,就发现这事不那么容易。抛开后台和编辑工作,单单是设计一个Email样板,就需要不少心思。 因为这种带格式的邮件,其实就是一张网页,正式名称叫做HTML...
View ArticleRSA算法原理(一)
如果你问我,哪一种算法最重要?我可能会回答"公钥加密算法"。 因为它是计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被破解的后果。 进入正题之前,我先简单介绍一下,什么是"公钥加密算法"。 一、一点历史 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密; (2)乙方使用同一种规则,对信息进行解密。...
View ArticleRSA算法原理(二)
上一次,我介绍了一些数论知识。有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥生成的步骤 我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢? 第一步,随机选择两个不相等的质数p和q。 爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。) 第二步,计算p和q的乘积n。 爱丽丝就把61和53相乘。 n =...
View ArticleGPG入门教程
前两篇文章,我介绍了RSA算法。今天,就接着来看,现实中怎么使用这个算法,对信息加密和解密。这要用到GnuPG软件(简称GPG),它是目前最流行、最好用的加密工具之一。 一、什么是GPG 要了解什么是GPG,就要先了解PGP。 1991年,程序员Phil...
View Article如何让搜索引擎抓取AJAX内容?
越来越多的网站,开始采用"单页面结构"(Single-page application)。整个网站只有一张网页,采用Ajax技术,根据用户的输入,加载不同的内容。 这种做法的好处是用户体验好、节省流量,缺点是AJAX内容无法被搜索引擎抓取。举例来说,你有一个网站。 http://example.com 用户通过井号结构的URL,看到不同的内容。 http://example.com#1...
View ArticleLinux 的启动流程
半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。 这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切。...
View Article人类的心理行为模式----《影响力》笔记
网上流传一份查理·芒格(Charlie Thomas Munger)的推荐书单。其中有一本心理学著作《影响力》,芒格是这么说的: "这本了不起的书,解释了我们如何被他人操控,可别犹豫把它推荐给你的朋友。" 据说,芒格特别喜欢这本书,还向它的作者罗伯特·西奥迪尼(Robert B.Cialdini)赠送了一股伯克希尔哈撒韦公司的股票(价值10万美元)。...
View ArticleJavaScript与有限状态机
有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。 简单说,它有三个特征: * 状态总数(state)是有限的。 * 任一时刻,只处在一种状态之中。 * 某种条件下,会从一种状态转变(transition)到另一种状态。 它对JavaScript的意义在于,很多对象可以写成有限状态机。...
View Article梁漱溟:做学问的八个境界
本周,我读完了梁漱溟先生的自传文集《我生有涯愿无尽》。 这本书的前半部分,讲述梁先生如何从一个中学生成长为国学大师,闪光点很多。比如,北大校长蔡元培只因读过梁漱溟的一篇论文,便邀请他担任北大讲师,完全不顾梁没有读过大学。 出乎意料的是先生随即表示希望我到北大任教。先生说:"我是喜爱哲学的。我此次来北大重点要办好文科。文科中又以哲学系为重点,你就来哲学系讲印度哲学好了。"...
View Article为什么寄存器比内存快?
计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。 同样都是晶体管存储设备,为什么寄存器比内存快呢? Mike Ash写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。下面就是我的简单翻译。 原因一:距离不同 距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远,所以要耗费更长的时间读取。...
View Article什么是 Event Loop?
Event Loop 是一个很重要的概念,指的是计算机系统的一种运行机制。 JavaScript语言就采用这种机制,来解决单线程运行带来的一些问题。 本文参考C. Aaron Cois的《Understanding The Node.js Event Loop》,解释什么是Event Loop,以及它与JavaScript语言的单线程模型有何关系。 想要理解Event...
View Article比特币的用途
这两周,比特币(bitcoin)的价格大幅上涨,我也凑热闹关注了一阵。 首先说明,我对比特币所知甚少,从未参与过生产/交易,对它的了解仅限于新闻报道和维基百科,但我有一些不成熟的想法。 看着比特币的价格节节上升,我就在想,它有什么用? 想来想去,我突然悟到,比特币的最佳用途是转移资产!...
View Article柯文哲《生死的智慧》
三天前,柯文哲医师在今年Ted Taipei的演讲《生死的智慧》,放上了Youtube。 这段短短18分钟的演讲,异常精彩,发人深思。我忍不住把它整理出来,希望更多的人看到。 ================================================= 生死的智慧 演讲人:柯文哲 时间地点:2013年9月28日 / 台北 视频:Youtube / 优酷 / 土豆 [介绍]...
View Article向着未来而生----《黑客与画家(精装本)》序言
《黑客与画家》再版了,刚刚上架。 内容没变,但是升级成了精装本,纸张好了许多。 想要收藏和送人的朋友,可以考虑购买(京东,当当,亚马逊,china-pub)。 下面是我为再版写的序言。另外,《软件随想录》有希望明年再版。 ============================================= 向着未来而生 阮一峰 / 2013-03-29...
View Article