第659页
-
字符串匹配的KMP算法
字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解...
-
字符串匹配的Boyer-Moore算法
上一篇文章,我介绍了KMP算法。 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。 Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。 下面,我根据Moore教授自己的例子来解释这种算法。 1. 假定字符串为"HERE IS A SIMPLE EXAMPLE",搜索词为"EXAMPLE"。...
-
RSA算法原理(一)
如果你问我,哪一种算法最重要? 我可能会回答"公钥加密算法"。 因为它是计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被破解的后果。 进入正题之前,我先简单介绍一下,什么是"公钥加密算法"。 一、一点历史 1976年以前,所有的加密方法都是同一种模式: (1)甲方选择某一种加密规则,对信息进行加密; (2)乙方使用同一种规则,对信息进行解密。 由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symmetric-key algorithm...
-
HTTPS 升级指南
上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效。 为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我以前的文章。 《HTTPS 协议概述》 《图解 HTTPS 协议》 《HTTPS 协议的七个误解》 《HTTPS 协议的延迟有多大?》 本文介绍如何将一个 HTTP 网站升级到 HTTPS 。 一、获取证书 升级到 HTTPS 协议的第一步,就是要获得一张证书。 证书是一个二进...
-
RSA算法原理(二)
上一次,我介绍了一些数论知识。 有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥生成的步骤 我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢? 第一步,随机选择两个不相等的质数p和q。 爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。) 第二步,计算p和q的乘积n。 爱丽丝就把61和53相乘。 n = 61×53 = 3233 n的长度就是密钥长度。3233写成二进制是1100101000...
-
Linux 的启动流程
半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。 那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。 这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切。 我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统。下面的内容针对的是Debian发行版,因为我对其他...
-
程序员小测试:保守派 vs 自由派
最近,我在阅读 Steve Yegg 的文集《程序员的呐喊》。 这是一本非常有趣的书,里面甚至包含了一个小测试(原文),区分一个程序员到底是保守派还是自由派。 下面一共有十个问题,每个问题都有 A 和 B 两个选项,请选择你的答案。 问题一:Bug 还没修复,软件能不能上线? (A)软件发布前,应该编写完整测试,充分调试,尽量修复所有bug。 (B)不管多努力,bug 总是无法避免的,如果性质不是很严重,可以先上线,根据反馈再调试和修补。 问题二:容易出错的特性,是否应该用在程序中? (A)...
-
亚马逊如何变成 SOA(面向服务的架构)?
上一篇文章,我摘录了《程序员的呐喊》。这本书有趣的内容太多,今天再摘录一段。 1、 亚马逊公司不仅是世界最大的网络书店,还是世界最大的云服务商。它是怎么实现从电商到云商的转变呢? 一切都是CEO杰夫·贝索斯促成的,他对市场有着超乎常人的理解和预见。 2、 2000年前后,贝索斯有一次在员工大会上提到,各种办公工具、书籍、影音制品都可以数字化,所以也意味着很容易盗版。数字产品可能会利润越来越低,很快就不再产生任何收入了。 所有的民用工业品也都很不妙,服装和电子消费品的消费周期越来越短。连烤炉这种东...
最新留言
说:asdasd
2023-05-26 10:48:03说:I
2023-04-07 09:22:25说:2366
2023-03-30 09:40:21说:1
2023-03-30 09:40:16说:6
2023-03-03 17:48:00说:发的太多人
2023-02-27 15:34:13说:1
2023-02-02 19:12:01说:我靠
2023-01-26 10:55:41