
读书笔记
文章平均质量分 78
Andy
这个作者很懒,什么都没留下…
展开
-
Minix内存管理(1)
Minix内存管理 1概述 Minix 在设计时被分成了四层,如下图所示,第1层和第2层是进程管理和I/O任务,合称为Minix的核心(kernel), 内存管理(Memory Manager,下文简称MM) 并不是内核的一部分,它位于内核之上的第三层,主要处理的是FORK,EXEC,BRK等涉及到内存访问的系统调用。它和内核之间通过消息来通信。 本文首先介绍内存管理最基本的部分:物理内原创 2003-09-15 09:25:00 · 2981 阅读 · 1 评论 -
《黑客与画家》读后感之二: 百年后的编程语言
接前一篇 《黑客与画家》读后感之一 3. 百年后的编程语言 Paul是一个LISP的启蒙家,他认为100年后编程语言进化的主线,应该以少量公理为基础的”最小最简洁核心的语言“。 现有的编程语言中,最具这一特征的莫过于他最喜欢的Lisp了,所以他的主张实际上就是说,Lisp才是100年后编程语言的进化方向。 ”任何一种编程语言都可以分成两大组成部分:基本运算符的集合(扮演公理的角原创 2014-01-16 21:37:43 · 2875 阅读 · 0 评论 -
《黑客与画家》读后感之一
0.为什么你应该看一看这本书? 本书是硅谷创业之父Paul Graham 的文集,主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等所有对计算机时代感兴趣的人的一些话题。 Paul Graham被称为创业之父,自然不是一般人,他在1995年,创办了Viaweb,帮助个人用户在网上开店,这是世界上第一个互联网应用程序。 1998年夏天,原创 2013-12-25 22:01:30 · 4176 阅读 · 0 评论 -
面向对象的设计原则(1):SRP
SRP 就一个类而言,应该仅有一个引起它变化的原因 什么是职责?我们把职责定义为“变化的原因”(a reason for change),如果你能想到多于一个的动机去改变 一个类,那么这个类就具有多于一个的职责 如果一个类的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会抑止这个类完成其他职责的能力。例子: interface Modem { public void dial(S原创 2004-07-07 22:05:00 · 1177 阅读 · 0 评论 -
包的设计原则(2)
包的设计原则:2.稳定性:包的耦合性原则(1) 无环依赖原则??? 很好理解,包的依赖关系中不能出现环,否则等着看好戏吧(例如晨后综合症)??? 怎么解除依赖环呢?很简单!使用DIP(依赖倒置)原则(2) 稳定依赖原则??? 什么是稳定性?稳定性和更改所需要的工作量相关,例如竖立的硬币是不稳定的,??? 但是桌子是稳定的。若有很多包依赖于包X,那么X就是稳定的??? 稳定性度量:I=Ce/(Ca+原创 2004-07-07 21:58:00 · 1196 阅读 · 0 评论 -
面向对象的设计原则(3):LSP
子类型必须能够替换掉他们的基类型 假设有一个函数f,它的参数为指向某个基类B的指针或引用,同样假设存在B的某个派生类D,如果把D的对象作为 B类型传给f,会导致f出现错误的行为,那么D就违反了LSP Martin 举了个例子: public class Rectangle() { private int width; private int height; public void set原创 2004-07-07 22:06:00 · 1430 阅读 · 0 评论 -
包的设计原则(1)
包的设计原则:1.内聚性原则(1) 重用发布等价原则 重用的粒度就是发布的粒度(不是很理解)(2) 共同重用原则 一个包中的所有类应该是共同重用的,如果重用了包中的一个类, 那么就要重用包中的所有类,例如容器类以及与他关联的迭代器类 但是在实际项目中,能真正的做的这一点吗?(3) 共同封闭原则 包中对于同一性质的变化应该是共同封闭的,一个变化若对一个包产生 影响原创 2004-07-07 21:57:00 · 1450 阅读 · 0 评论 -
面向对象的设计原则(2):OCP
太出名了,不再多谈。主要有两点 (1) Open for extension (2) Closed for modification Robert.C.Martin举了一个Shape的例子来说明问题。关键的思想是,如果我们预测到了变化,就可以设计一个抽象来隔离它。但是无论模块是如何得"封闭",都会存在一些无法对之封闭得变化。这需要设计人员对于他设计得模块应该对那种变化封闭作出选择,他必须猜测出最有原创 2004-07-07 22:05:00 · 1128 阅读 · 0 评论