第一章 初识Java7
1.1Java编译流程

从图中可以看出,Java既是编译性语言,也是解释性语言。编译型语言是值Java类变为class文件,实际上javac和c与c++的编译有区别,更多的是一种类文件生成工具。解释型语言是说转换后的.class文件需要被解释为可执行代码。动态编译时指可执行代码转换为机器码。所以从不同的角度看,Java属于不同的类型的语言。
1.2何为语法糖
语法糖是描述一种语言特性的短语,是一种语法冗余——已经存在同样的特性,但是却更加便捷。语法糖一般在编译的时候就会去掉。
1.3异常处理
1.3.1多异常处理
try{
}catch(FileNotFoundException|ParseException e){
}
主要用在异常归类处理上
1.3.2异常抛出
try{
}catch(final Exception e){
throw e;
}
主要用在对运行时异常不确定,但是又想捕获所有异常,且在抛出时不丢失原有异常信息的情况。例如运行时发生IOException,那么抛出的也就是IOExcepiton。
1.3.3 try-with-resources
try(){
}catch(Exception e){}
主要用在资源管理上,在try()代码块中声明资源性对象,然后不管是否发生异常,都会自动关闭。但是对声明的资源必须依赖AutoCloseable接口。Java自带接口基本都已经实现,一般在自己写的时候需要实现。
第二章 新NIO
1nio变迁
1.1-1.3 io;1.4-1.6nio;1.7-nio.2。Java7对io有了新的实现
第三章 依赖注入
1依赖注入和控制反转
是控制反转的一种形式。依赖注入(DI)技术可以让对象从别处得到依赖项,而不用自己创建,降低代码耦合度等。控制反转(IOc)是一种机制,而注入依赖是一种具体实现。IOC的实现方式有多种,包括工厂模式,服务器定位模式,依赖注入等。
控制反转是指把控制权交给别人,而业务代码只处理业务。例如依赖注入这种实现中,创建一类对象本来是自己的功能,但是通过依赖注入交给别人去创建,自己只处理核心业务。就是一种控制权的转让。
第四章 现代并发
4.1 synchronized
synchronized可以作用在代码块或者方法上,表明在执行这段代码的时候必须取得合适的锁。对于方法,要取得对象实例锁(静态方法取得类锁);代码块,由开发人员指定取得哪个对象的锁。
4.2Java同步的常识
1、只能锁定对象,不能锁定原始类型;
2、被锁定的对象数组中的单个对象不会被锁定;
3、同步方法可以视为包含整个方法代码块的同步;
4、静态同步方法会锁定他的Class对象,因为没有实例对象可以锁定;
5、如果要显示锁定一个类对象,请慎重考虑是显示锁定,还是用getClass,两种方式对子类的影响不一样;
6、内部类的同步是独立于外部类的;
7、synchronized不是方法签名,所以不能用来声明接口;
8、非同步方法不查看或关心任何锁的状态,而且在同步方法运行时人能继续运行;
9、Java的线程是可以重入的。
4.3到底同步什么?
被同步的是在不同线程表示被锁定对象的内存块,就是把表示锁定对象的内存卡进行同步。获取线程锁之后,被锁定对象的任何修改都是从主内存中读出来的,释放线程锁之前,所有的改动都写会主内存。所以锁定区域代码开始执行之前,持有锁的线程就和锁定对象内存中的视图同步了。
4.4 volatile
volitile修饰变量,每次修改都是从内存中读,然后在写会内存。线程安全,但是只有写入时不依赖当前状态的变量才应该声明为volatile变量,要关注当前状态的写入值,要使用线程锁保证绝对安全性。
总结
这本书看到了第四章,感觉啥都讲,但不讲透。定位一本教科书不对,定位为一本经验书,感觉也不对。可能真想序言里面写的那样,这本书的起点就是公司招人时培训用,提到一些规范等。感觉对我作用不大,只看到了前四章,后面的没有去看。
网友评论