
读书笔记
文章平均质量分 72
chosen0ne
互联网码农,对Linux,分布式计算和存储,编译器,nginx,脚本语言感兴趣
展开
-
理解构建者模式(Builder)
构建者模式用于构造对象,适合于:当构造对象时需要大量的可选参数。在这方面静态工厂方法和构造器都不是很擅长,因为在这种情况下原本不想设置的参数,也必须传递值。随着参数的增加,这种问题会更加严重,尤其是当参数中包含相同的数据类型时,使用者必须详细阅读API才能防止误传参数。 对于大量可选参数的情况,通常习惯使用重叠构造器或者是使用JavaBeans模式。 场景:考虑使用一个类表示食品的营养成分标签。包含如下几个必需域:每份的含量、每罐的含量以及每份的卡路里;还包含多个可选域:总脂原创 2011-01-13 10:54:00 · 2153 阅读 · 0 评论 -
Object.clone()方法
Object.clone()方法用于对象的拷贝,它会把在堆上的对象所占用的内存空间拷贝一份然后返回,这样就形成一个新的对象(个人理解)。因为每个对象所占的空间内都有一个指向其类数据的指针,也就是指向方法区中类数据(这个类数据可以通过Class对象进行访问,可以简单、直接的理解为就是指向代表其类的Class对象)。JVM会通过这个指针来判断一个对象的类型,由于把整个对象空间拷贝,所以拷贝的对象的类指针也指向相同的类对象,这就确保了obj.clone().getClass()==obj.getCla原创 2011-03-30 22:27:00 · 6925 阅读 · 1 评论 -
类似位图的数据结构BitsSet
此数据结构最主要用途是对整数进行计数,通过将集合中每个元素指定为1,2或4个bit,以降低空间复杂率。实际使用的是int数组,通过位操作实现将1个int划分为多个包含1,2或4个bit的元素。当元素包含1个bit时退化为位图。 类似于Map,对整数进行计数。将1个int划分成32/(2^n)个包含 2^n 个bit的元素,从而实现对BitsMap的下标进行[0,2^(n+1) )的计数。例如,n=0,则1个int包含32个元素,每个元素包含1个bit。BitsMap中对应每个元素的值为原创 2011-05-30 16:05:00 · 1515 阅读 · 0 评论 -
关于编程语言的思考——编译型和解释型
我们知道,任何编程语言编写的程序归根到底都是由底层机器的机器代码(01序列)执行的,无论是编译型语言还是解释型语言。而任何高级编程语言程序的源代码都是一个字符序列,这个字符序列到底层的01序列是通过编译器或解析器经过多次转换完成的。图1 编程语言的层次结构 这个层次结构中,从高到低越来越接近于机器硬件。机器代码就是01序列,汇编语言就是描述本地机器的指令集体系结构,而原创 2011-12-21 15:24:45 · 9328 阅读 · 5 评论 -
Effective Java-Item13和Item 14
第13条 最小化类和成员的可访问性 降低类和成员的可访问性就是进行信息隐藏或者叫做封装,这可以保证模块之间持有对方最少的信息,降低模块之间的耦合度,使得模块可以独立的开发、测试、优化。这一点也符合面向对象设计原则中的最少知识原则。在实际开发过程中,尽可能使用最小的访问级别可以很好的做到信息隐藏。 类的访问级别按访问性由高到底分别为: 公开(public):可以被任何包原创 2011-05-03 15:49:00 · 1299 阅读 · 0 评论 -
Effective Java-Item15
第15条 使可变性最小化 相对于可变对象,不可变对象只拥有一个状态(即初始化对象时的状态),这样的对象更好理解,在出现bug时也容易调试,因为它自始至终都没有变化。在并发环境下,不可变对象不需要线程同步(这就是为什么Erlang——这个为并发而生的语言——中的变量只能被赋值一次),它们是线程安全的,可以被自由的共享。 不可变类的缺点就是每个值都需要一个单独的对象,所以就原创 2011-05-04 15:11:00 · 1204 阅读 · 0 评论 -
Linux下进程的文件访问权限
介绍linux下进程的文件访问权限原创 2013-08-31 22:05:21 · 7304 阅读 · 0 评论