java effective 读书笔记

java effective 读书笔记

【1】创建和销毁对象
1 静态工厂方法  就是“封装了底层  暴露出一个访问接口  ”  门面模式
2 多参数时 用构建器,就是用个内部类 再让内部类提供构造好的对象
3 枚举 singleton  不知道怎么操作,觉得意义不大   单例模式
4 私有化构造器不能实例化,也不可被子类继承
5 能用原生类的就尽量不用对象

【2】对于所有对象都通用的方法

reflexivity  自反性
symmetry  对称性

 【3】类成员 降低可访问性
   尽量把公有域 变成私有域,并提供 访问和修改的 get set 方法 ,这样便于 添加辅助功能
   公有类永远都不要暴露可变的域

 使可变性最小

decorator  warpper 包装

property 继承自hashtable  用 decorator 模式 遇到 property中有的而hashtable中没有 的 时候 就有问题了  比如(load 或 sotre)

要么为了继承设计  要么就不要继承

接口优于抽象类

若有标签域,最好重构到一个层次结构中。

策略模式strategy  如比较器的底层实现 

通过函数对象表示 表示策略      

优先考虑静态成员类

尽量使用泛型 以达到类型检察的目的

能不重载尽量不重载
尽量不使用变参方法

返回值类型为数组或者集合的方法 即使内容为空也没必要返回null

尽量些 文档注释  

把局部变量的作用域尽量缩小 便于阅读 和使用
对于装箱基本类型运用==操作符几乎总是错误的

使用 StringBuilder 代替 字符串连接符  提高效率。

 多用接口代替类,使程序比较灵活
 接口优先于反射
 谨慎使用本地方法 因为本地方法是不安全的,可能破坏内存 

如果数值范围没有超过9位十进制数字--->int
如果数值范围没有超过18位十进制数字--->long
如果数值范围超过18位十进制数字--->BigDecimal

有限制通配符
不要快 要好

命名 惯例
类名 接口名 单词首字母大写
方法名 域名称 首字母小写
常量域所有字母大写 字母间用下划线隔开 

异常
异常捕捉 在必要时候用,能不用尽量不用
异常为异常情况而设计,不需要用在普通控制流程中。

异常类越少越好  节约内存 。
异常信息应该针对关键点

并发不仅仅有互斥  它还提供了其它线程可以看到这个线程的机会 

在同步区域中调用外部方法  容易造成死锁。
尽量减少同步区工作量 

BigDecimal

<<Java Concurrency in Practice>>

java.util
java.lang
java.io
Random.nextInt();

CountDownLatch  Semaphore
CyclicBarrier Exchanger

Laffy is open source on http://laffy.dev.java.net
•http://download.java.net/javadesktop/laffy/Laffy.jnlp

Java™ for Programmers
By Paul Deitel, Harvey M. Deitel
时间: 2024-10-21 04:13:18

java effective 读书笔记的相关文章

Java NIO读书笔记

简介 NIO的作用就是改进程序的性能.因为有时候程序的性能瓶颈不再是CPU,而是IO.这时候NIO就派上用场了.NIO的原理就是尽量利用系统底层的资源来提高效率,比如利用DMA硬件减小CPU负荷,利用操作系统的epoll机制避免线程频繁切换.通过底层资源提高系统的吞吐量. 缓冲区 缓冲区就是一个固定大小的一组数据.缓冲区有四个非常重要的属性:容量,限制,位置,标记.容量就是一个缓冲区最大能容量的元素数量,限制就是对容量进行逻辑上的限制,位置用于跟踪get或者put方法的位置,标记用于reset函

《practical Java》读书笔记

题记: 花了一周把Peter Haggar的<practical Java>看了遍,有所感悟,年纪大了, 写下笔记,方便日后查看.也希望有缘之人可以看看,做个渺小的指路人. 不足之处还望指正. 概述: 全书分为六个部分,包括一般技术.对象与相等性.异常处理.性能.多线程.对象. 一般技术:举例了几个java常见错误用法的说明和解释,诸如array和vector的选择,多态与instanceof等等 对象和相等性则:针对equals的详细说明,是迄今本人见过对equals理解最深的一本书了,其中

深度理解java虚拟机读书笔记(二)HotSpot Java对象创建,内存布局以及访问方式

内存中对象的创建.对象的结构以及访问方式. 一.对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载.虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号代表的类是否被加载.解析并初始化.如果没有完成这个过程,则必须执行相应类的加载. (二)在堆上为对象分配空间.对象需要的空间大小在类加载完成后便能确定.之后便是在堆上为该对象分配固定大小的空间.分配的方式也有两种:

深入理解JAVA虚拟机--读书笔记

如上图,判断线段AB和线段CD相交. 分析:如果线段AB和线段CD相交,只能是图中的两种相交情况.可以用向量叉乘来判断.如果(向量AB叉乘向量AC)*(向量AB叉乘向量AD)<= 0 并且(向量CD叉乘向量CA)*(向量CD叉乘向量CB)<= 0,那么说明线段AB与线段CD相交. 设A(X1,Y1), B(X2, Y2), C(X3, Y3), D(X4, Y4),三角形ABC的面积为:2A =  = X1*Y2 + X3*Y1 + X2*Y3 - X3*Y2 - X1*Y3 - X2*Y1.

《Effective java》—–读书笔记

2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并发.JVM.分布式之类的.在今年面试的时候深受打击,到处都是问分布式.集群的?难道现在工作两三年的都这么牛逼了?都在搞分布式.集群之类的? 2016书单如下: 1.深入理解Java虚拟机:JVM高级特性与最佳实践-(已看,预计今年看三遍) 2.Oracle查询优化改写技巧与案例-(已看) 3.Eff

《Effective Java》读书笔记 - 最小化类的可变性

Item 15 最小化类的可变性 effective java 如何做到让类不可变? 不提供改变对象状态的方法.(mutators) 确保类不会被继承,即用final来限定类. 让所有的域(field)为final. 让所有的域private. 确保所有对可变组件的互斥访问(Ensure exclusive access to any mutable components) 例子: public final class Complex{ //final class private final d

《Effective Java》读书笔记

创建和销毁对象 静态工厂模式 构造器里未传参的成员不会被初始化.int类型是0,布尔类型是false,String类型是null,List<>也是null. 重叠构造器 进阶1:javabean模式,使用set方法来初始化成员,缺点是构造过程中javabean可能处于不一致状态(可以理解成该模式下成员的设置的分步进行的,可能某处使用到该类的某个成员时其还未被初始化),并且该模式阻止了把类变成不可能的可能,需要考虑线程安全. 进阶2: Builder模式:类里定义一个静态类builder(其实就

《Effective Java》读书笔记(一):用Builder模式代替含多个参数的构造器

当一个对象含有多个成员变量且创建对象时需要初始化时,直接使用构造器来初始化会造成使用上的不便.例如 public class BuilderDemo { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int carbohydrate; } 通常的

Java泛型读书笔记 (二)

关于Java泛型擦除后,继承一个泛型类带来的问题 有如下泛型类Pair: public class Pair<T> { private T second; private T first; public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second =second; } public T getFirst() { return fi