【转】程序员的困境

最近我为一个内核程序员的职位面试了十几个候选人。这些候选人都来自一些不错的大公司,这些公司在芯片或嵌入式操作系统领域十分有名。这些候选人大多声称自己在内核方面有着十年的在职工作经验。他们的简历看起来非常耀眼——各种相关的项目、术语和奖项...... 但他们几乎无人能够回答一个非常基础的问题: 当我们调用标准的 malloc 函数时,内核中会发生什么? 先别吃惊。当我要求其中一位候选人基于 glib 的哈希函数写一个简单的 LRU 缓存框架时,他先是表示从来没用过 glib——如我所料——于是我帮他打开了 glib 哈希 API 的页面,并向他详细讲解了这些 API;然后大约一个小时以...

阅读更多

学习札记篇二

Linux 文件链接 文件系统中存储的最小单位是块(Block),块的大小在格式化时确定。Linux 的文件系统将磁盘的整个分区划成若干个同样大小的块组(Block Group),每个块组由 超级块,inode 表,数据块 等部分组成。 超级块(Super Block): 描述整个分区的文件系统信息,例如块大小、文件系统版本号、上次 mount 的时间等等。超级块在每个块组的开头都有一份拷贝。inode表(inode Table): 一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规、目录、符号链接等),权限,文件大小,创建/修改/访问时间等,这些信息存在 in...

阅读更多

进程与线程概念理解浅析

进程是系统进行资源分配和调度的基本单位,是竟争计算机系统资源的基本单位。是程序执行流的最小单元,是被系统独立调度和分派的基本单位。 进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(...

阅读更多

Python 邮件发送方法简介

Python 中的邮件发送主要用到 smtplib 和 email 这两个模块。smtplib 负责发送邮件,mail 负责构造邮件,使得处理邮件变得简单。 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过 SMTP 协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子...

阅读更多

Python 模块简介 -- urllib, urllib2

Python 的 urllib 和 urllib2 模块都做与请求 URL 相关的操作,但他们提供不同的功能。他们两个最显着的差异如下: urllib2 主要的功能是接受一个 Request 对象,并以此可以来设置一个 URL 的 headers,但 urllib 只接收一个 URL。这意味着不能伪装用户代理字符串等。 urllib 模块可以提供进行 urlencode 的方法,该方法用于 GET 查询字符串的生成,urllib2 的不具有这样的功能。这就是 urllib 与 urllib2 经常在一起使用的原因。urllib 模块也提供其他一些 url 的处理方法。 urlop...

阅读更多

Python 正则表达式简介

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 应用正则表达式来处理文本信息和数据非常方便,Python 对正则表达式有很好的支持。在学习正则表达式的过程中,可将正则表达式的内容分为几个点来学习,这样便于学习和记忆。 正则表达式规则 1. 元字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字, 即构成词汇的...

阅读更多

Python 简单爬虫程序 -- 抓取糗百段子

最近在学习 Python,闲来无事就写了个爬虫,用于抓取糗事百科的段子。 在以前的学习和工作中的,我用到最多的是 C 语言,C++略懂一点,但是好像已经很长时间没有用 C++ 了,已经差不多忘了。可能很多人都认为,在大部分高级编程语言中,C语言是最难的。可能跟自己所学的专业有关,我并不觉得 C 语言有多难。或许这也是因为接触它的时间比较长,本来不明白的,也一点一点弄明白了。就比如指针,在编程的时候,每块内存我都了然于胸。我很喜欢 C 语言,它的性格跟我很相似,复杂而简单,逻辑,干练,严谨,事必躬亲。虽然在做 C 语言项目开发的时候,大部分时间不是在编码,而是再思考,为什么程序无缘无故 ...

阅读更多

Python模块简介 -- anydbm, shelve

anydbm, shelve 是对象持久化保存方法,将对象保存到文件里面,缺省的数据存储文件是二进制的。这两个模块允许我们将一个磁盘上的文件与一个“dict-like”对象(类字典对象)关联起来,操作这个“dict-like”对象,就像操作dict对象一样,最后可以将“dict-like”的数据持久化到文件。对这个"dict-like"对象进行操作的时候,anydbm的key和value的类型必须都是是字符串,而shelve的key要求必须是字符串,value则可以是任意合法的python数据类型。 使用这两个模块时,只需要使用open函数获取一个shelf对象,然...

阅读更多