Quantcast
Channel: 阮一峰的网络日志
Browsing all 693 articles
Browse latest View live

Image may be NSFW.
Clik here to view.

进程与线程的一个简单解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 2. 假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。...

View Article


Image may be NSFW.
Clik here to view.

字符串匹配的KMP算法

字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。...

View Article


Image may be NSFW.
Clik here to view.

字符串匹配的Boyer-Moore算法

上一篇文章,我介绍了KMP算法。但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。 Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。 下面,我根据Moore教授自己的例子来解释这种算法。 1....

View Article

Image may be NSFW.
Clik here to view.

如何做到 jQuery-free?

jQuery是现在最流行的JavaScript工具库。据统计,目前全世界57.3%的网站使用它。也就是说,10个网站里面,有6个使用jQuery。如果只考察使用工具库的网站,这个比例就会上升到惊人的91.7%。 虽然jQuery如此受欢迎,但是它臃肿的体积也让人头痛不已。jQuery 2.0的原始大小为235KB,优化后为81KB;如果是支持IE6、7、8的jQuery...

View Article

Image may be NSFW.
Clik here to view.

如何理解当代中国----《十亿消费者》读后感

前几天,我读完的美国人 James McGregor 写的《十亿消费者》(One Billion Customers)。 James McGregor 本来是《华尔街日报》和道琼斯集团在华负责人,后来辞职经商。为了对记者生涯做总结,他就写了这本书,让西方人了解如何在中国做生意。...

View Article


Image may be NSFW.
Clik here to view.

HTML代码简写法:Emmet和Haml

HTML代码写起来很费事,因为它的标签多。 一种解决方法是采用模板, 在别人写好的骨架内,填入自己的内容。还有一种就是我今天想要介绍的方法----简写法。 常用的简写法,目前主要是Emmet和Haml两种,本文都将加以介绍。 这两种简写法,功能相近,各有特点。考虑到Haml基于Ruby语言,我建议Ruby/Rails项目使用Haml,其他项目使用Emmet。 一、Emmet的用法...

View Article

Image may be NSFW.
Clik here to view.

HTML Email 编写指南

今天,我想写一个"低技术"问题。话说我订阅了不少了新闻邮件(Newsletter),比如JavaScript Weekly。每周收到一封邮件,了解本周的大事。 有一天,我就在想,是不是我也能做一个这样的邮件? 然后,就发现这事不那么容易。抛开后台和编辑工作,单单是设计一个Email样板,就需要不少心思。 因为这种带格式的邮件,其实就是一张网页,正式名称叫做HTML...

View Article

Image may be NSFW.
Clik here to view.

RSA算法原理(一)

如果你问我,哪一种算法最重要?我可能会回答"公钥加密算法"。 因为它是计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被破解的后果。 进入正题之前,我先简单介绍一下,什么是"公钥加密算法"。 一、一点历史 1976年以前,所有的加密方法都是同一种模式:   (1)甲方选择某一种加密规则,对信息进行加密;   (2)乙方使用同一种规则,对信息进行解密。...

View Article


Image may be NSFW.
Clik here to view.

RSA算法原理(二)

上一次,我介绍了一些数论知识。有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥生成的步骤 我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢? 第一步,随机选择两个不相等的质数p和q。 爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。) 第二步,计算p和q的乘积n。 爱丽丝就把61和53相乘。   n =...

View Article


Image may be NSFW.
Clik here to view.

GPG入门教程

前两篇文章,我介绍了RSA算法。今天,就接着来看,现实中怎么使用这个算法,对信息加密和解密。这要用到GnuPG软件(简称GPG),它是目前最流行、最好用的加密工具之一。 一、什么是GPG 要了解什么是GPG,就要先了解PGP。 1991年,程序员Phil...

View Article

Image may be NSFW.
Clik here to view.

如何让搜索引擎抓取AJAX内容?

越来越多的网站,开始采用"单页面结构"(Single-page application)。整个网站只有一张网页,采用Ajax技术,根据用户的输入,加载不同的内容。 这种做法的好处是用户体验好、节省流量,缺点是AJAX内容无法被搜索引擎抓取。举例来说,你有一个网站。   http://example.com 用户通过井号结构的URL,看到不同的内容。   http://example.com#1...

View Article

Image may be NSFW.
Clik here to view.

Linux 的启动流程

半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。 这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切。...

View Article

Image may be NSFW.
Clik here to view.

人类的心理行为模式----《影响力》笔记

网上流传一份查理·芒格(Charlie Thomas Munger)的推荐书单。其中有一本心理学著作《影响力》,芒格是这么说的:   "这本了不起的书,解释了我们如何被他人操控,可别犹豫把它推荐给你的朋友。" 据说,芒格特别喜欢这本书,还向它的作者罗伯特·西奥迪尼(Robert B.Cialdini)赠送了一股伯克希尔哈撒韦公司的股票(价值10万美元)。...

View Article


Image may be NSFW.
Clik here to view.

JavaScript与有限状态机

有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。 简单说,它有三个特征:   * 状态总数(state)是有限的。   * 任一时刻,只处在一种状态之中。   * 某种条件下,会从一种状态转变(transition)到另一种状态。 它对JavaScript的意义在于,很多对象可以写成有限状态机。...

View Article

Image may be NSFW.
Clik here to view.

梁漱溟:做学问的八个境界

本周,我读完了梁漱溟先生的自传文集《我生有涯愿无尽》。 这本书的前半部分,讲述梁先生如何从一个中学生成长为国学大师,闪光点很多。比如,北大校长蔡元培只因读过梁漱溟的一篇论文,便邀请他担任北大讲师,完全不顾梁没有读过大学。 出乎意料的是先生随即表示希望我到北大任教。先生说:"我是喜爱哲学的。我此次来北大重点要办好文科。文科中又以哲学系为重点,你就来哲学系讲印度哲学好了。"...

View Article


Image may be NSFW.
Clik here to view.

为什么寄存器比内存快?

计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。 同样都是晶体管存储设备,为什么寄存器比内存快呢? Mike Ash写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。下面就是我的简单翻译。 原因一:距离不同 距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远,所以要耗费更长的时间读取。...

View Article

Image may be NSFW.
Clik here to view.

什么是 Event Loop?

Event Loop 是一个很重要的概念,指的是计算机系统的一种运行机制。 JavaScript语言就采用这种机制,来解决单线程运行带来的一些问题。 本文参考C. Aaron Cois的《Understanding The Node.js Event Loop》,解释什么是Event Loop,以及它与JavaScript语言的单线程模型有何关系。 想要理解Event...

View Article


Image may be NSFW.
Clik here to view.

比特币的用途

这两周,比特币(bitcoin)的价格大幅上涨,我也凑热闹关注了一阵。 首先说明,我对比特币所知甚少,从未参与过生产/交易,对它的了解仅限于新闻报道和维基百科,但我有一些不成熟的想法。 看着比特币的价格节节上升,我就在想,它有什么用? 想来想去,我突然悟到,比特币的最佳用途是转移资产!...

View Article

Image may be NSFW.
Clik here to view.

柯文哲《生死的智慧》

三天前,柯文哲医师在今年Ted Taipei的演讲《生死的智慧》,放上了Youtube。 这段短短18分钟的演讲,异常精彩,发人深思。我忍不住把它整理出来,希望更多的人看到。 ================================================= 生死的智慧 演讲人:柯文哲 时间地点:2013年9月28日 / 台北 视频:Youtube / 优酷 / 土豆 [介绍]...

View Article

Image may be NSFW.
Clik here to view.

向着未来而生----《黑客与画家(精装本)》序言

《黑客与画家》再版了,刚刚上架。 内容没变,但是升级成了精装本,纸张好了许多。 想要收藏和送人的朋友,可以考虑购买(京东,当当,亚马逊,china-pub)。 下面是我为再版写的序言。另外,《软件随想录》有希望明年再版。 ============================================= 向着未来而生 阮一峰 / 2013-03-29...

View Article
Browsing all 693 articles
Browse latest View live