2015年07月13日
最近我为一个内核程序员的职位面试了十几个候选人。这些候选人都来自一些不错的大公司,这些公司在芯片或嵌入式操作系统领域十分有名。这些候选人大多声称自己在内核方面有着十年的在职工作经验。他们的简历看起来非常耀眼——各种相关的项目、术语和奖项......
但他们几乎无人能够回答一个非常基础的问题: 当我们调用标准的 malloc 函数时,内核中会发生什么?
先别吃惊。当我要求其中一位候选人基于 glib 的哈希函数写一个简单的 LRU 缓存框架时,他先是表示从来没用过 glib——如我所料——于是我帮他打开了 glib 哈希 API 的页面,并向他详细讲解了这些 API;然后大约一个小时以...
阅读更多
2015年07月09日
Linux 文件链接
文件系统中存储的最小单位是块(Block),块的大小在格式化时确定。Linux 的文件系统将磁盘的整个分区划成若干个同样大小的块组(Block Group),每个块组由 超级块,inode 表,数据块 等部分组成。
超级块(Super Block): 描述整个分区的文件系统信息,例如块大小、文件系统版本号、上次 mount 的时间等等。超级块在每个块组的开头都有一份拷贝。inode表(inode Table): 一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规、目录、符号链接等),权限,文件大小,创建/修改/访问时间等,这些信息存在 in...
阅读更多
2015年07月09日
进程是系统进行资源分配和调度的基本单位,是竟争计算机系统资源的基本单位。是程序执行流的最小单元,是被系统独立调度和分派的基本单位。
进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(...
阅读更多
2015年07月05日
Python 中的邮件发送主要用到 smtplib 和 email 这两个模块。smtplib 负责发送邮件,mail 负责构造邮件,使得处理邮件变得简单。
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过 SMTP 协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子...
阅读更多
2015年07月03日
Python 的 urllib 和 urllib2 模块都做与请求 URL 相关的操作,但他们提供不同的功能。他们两个最显着的差异如下:
urllib2 主要的功能是接受一个 Request 对象,并以此可以来设置一个 URL 的 headers,但 urllib 只接收一个 URL。这意味着不能伪装用户代理字符串等。
urllib 模块可以提供进行 urlencode 的方法,该方法用于 GET 查询字符串的生成,urllib2 的不具有这样的功能。这就是 urllib 与 urllib2 经常在一起使用的原因。urllib 模块也提供其他一些 url 的处理方法。
urlop...
阅读更多
2015年06月30日
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
应用正则表达式来处理文本信息和数据非常方便,Python 对正则表达式有很好的支持。在学习正则表达式的过程中,可将正则表达式的内容分为几个点来学习,这样便于学习和记忆。
正则表达式规则
1. 元字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字, 即构成词汇的...
阅读更多
2015年06月27日
最近在学习 Python,闲来无事就写了个爬虫,用于抓取糗事百科的段子。
在以前的学习和工作中的,我用到最多的是 C 语言,C++略懂一点,但是好像已经很长时间没有用 C++ 了,已经差不多忘了。可能很多人都认为,在大部分高级编程语言中,C语言是最难的。可能跟自己所学的专业有关,我并不觉得 C 语言有多难。或许这也是因为接触它的时间比较长,本来不明白的,也一点一点弄明白了。就比如指针,在编程的时候,每块内存我都了然于胸。我很喜欢 C 语言,它的性格跟我很相似,复杂而简单,逻辑,干练,严谨,事必躬亲。虽然在做 C 语言项目开发的时候,大部分时间不是在编码,而是再思考,为什么程序无缘无故 ...
阅读更多
2015年06月18日
anydbm, shelve 是对象持久化保存方法,将对象保存到文件里面,缺省的数据存储文件是二进制的。这两个模块允许我们将一个磁盘上的文件与一个“dict-like”对象(类字典对象)关联起来,操作这个“dict-like”对象,就像操作dict对象一样,最后可以将“dict-like”的数据持久化到文件。对这个"dict-like"对象进行操作的时候,anydbm的key和value的类型必须都是是字符串,而shelve的key要求必须是字符串,value则可以是任意合法的python数据类型。
使用这两个模块时,只需要使用open函数获取一个shelf对象,然...
阅读更多