主页 详情

《Java程序员修炼之道》_BenjaminJ·Evans,MartijnVerburg_13341006_9787115321954

【书名】:《Java程序员修炼之道》
【作者】:BenjaminJ·Evans,MartijnVerburg
【出版社】:北京:人民邮电出版社
【时间】:2013
【页数】:396
【ISBN】:9787115321954
【SS码】:13341006

最新查询

内容简介

第一部分 用Java 7做开发

第1章 初识Java 7

1.1语言与平台

1.2 Coin项目:浓缩的都是精华

1.3 Coin项目中的修改

1.3.1 switch语句中的String

1.3.2更强的数值文本表示法

1.3.3改善后的异常处理

1.3.4 try-with-resources(TWR)

1.3.5钻石语法

1.3.6简化变参方法调用

1.4小结

第2章 新I/O

2.1 Java 1/O简史

2.1.1 Java 1.0到1.3

2.1.2在Java 1.4中引入的NIO

2.1.3下一代I/O-NIO.2

2.2文件I/O的基石:Path

2.2.1创建一个Path

2.2.2从Path中获取信息

2.2.3移除冗余项

2.2.4转换Path

2.2.5 NIO.2 Path和Java已有的File类

2.3处理目录和目录树

2.3.1在目录中查找文件

2.3.2遍历目录树

2.4 NIO.2的文件系统I/O

2.4.1创建和删除文件

2.4.2文件的复制和移动

2.4.3文件的属性

2.4.4快速读写数据

2.4.5文件修改通知

2.4.6 SeekableByteChannel

2.5异步I/O操作

2.5.1将来式

2.5.2回调式

2.6 Socket和Channel的整合

2.6.1 NetworkChannel

2.6.2 MulticastChannel

2.7小结

第二部分 关键技术

第3章 依赖注入

3.1知识注入:理解IoC和DI

3.1.1控制反转

3.1.2依赖注入

3.1.3转成DI

3.2 Java中标准化的DI

3.2.1 @Inject注解

3.2.2 @aQualifier注解

3.2.3 @Named注解

3.2.4 @Scope注解

3.2.5 @Singleton注解

3.2.6接口Provider﹤T﹥

3.3 Java中的DI参考实现:Guice 3

3.3.1 Guice新手指南

3.3.2水手绳结:Guice的各种绑定

3.3.3在Guice中限定注入对象的生命周期

3.4小结

第4章 现代并发

4.1并发理论简介

4.1.1解释Java线程模型

4.1.2设计理念

4.1.3这些原则如何以及为何会相互冲突

4.1.4系统开销之源

4.1.5一个事务处理的例子

4.2块结构并发(Java 5之前)

4.2.1同步与锁

4.2.2线程的状态模型

4.2.3完全同步对象

4.2.4死锁

4.2.5为什么是synchronized

4.2.6关键字volatil

4.2.7不可变性

4.3现代并发应用程序的构件

4.3.1原子类:java.util.concurrent.atomic

4.3.2线程锁:java.util.concurrent.locks

4.3.3 CountDownLatch

4.3.4 ConcurrentHashMap

4.3.5 CopyOnWriteArrayList

4.3.6 Queue

4.4控制执行

4.4.1任务建模

4.4.2 ScheduledThread-PoolExecutor

4.5分支/合并框架

4.5.1一个简单的分支/合并例子

4.5.2 ForkJoinTask与工作窃取

4.5.3并行问题

4.6 Java内存模型

4.7小结

第5章 类文件与字节码

5.1类加载和类对象

5.1.1加载和连接概览

5.1.2验证

5.1.3class对象

5.1.4类加载器

5.1.5示例:依赖注入中的类加载器

5.2使用方法句柄

5.2.1 MethodHandle

5.2.2 MethodType

5.2.3查找方法句柄

5.2.4示例:反射、代理与方法句柄

5.2.5为什么选择MethodHandle

5.3检查类文件

5.3.1介绍javap

5.3.2方法签名的内部形式

5.3.3常量池

5.4字节码

5.4.1示例:反编译类

5.4.2运行时环境

5.4.3操作码介绍

5.4.4加载和储存操作码

5.4.5数学运算操作码

5.4.6执行控制操作码

5.4.7调用操作码

5.4.8平台操作操作码

5.4.9操作码的快捷形式

5.4.10示例:字符串拼接

5.5 invokedynamic

5.5.1 invokedynamic如何工作

5.5.2示例:反编译invokedynamic调用

5.6小结

第6章 理解性能调优

6.1性能术语

6.1.1等待时间

6.1.2吞吐量

6.1.3利用率

6.1.4效率

6.1.5容量

6.1.6扩展性

6.1.7退化

6.2务实的性能分析法

6.2.1知道你在测量什么

6.2.2知道怎么测量

6.2.3知道性能目标是什么

6.2.4知道什么时候停止优化

6.2.5知道高性能的成本

6.2.6知道过早优化的危险

6.3哪里出错了?我们担心的原因

6.3.1过去和未来的性能趋势:摩尔定律

6.3.2理解内存延迟层级

6.3.3为什么Java性能调优存在困难

6.4一个来自于硬件的时间问题

6.4.1硬件时钟

6.4.2麻烦的nanoTime()

6.4.3时间在性能调优中的作用

6.4.4案例研究:理解缓存未命中

6.5垃圾收集

6.5.1基本算法

6.5.2标记和清除

6.5.3 jmap

6.5.4与GC相关的JVM参数

6.5.5读懂GC日志

6.5.6用VisualVM查看内存使用情况

6.5.7逸出分析

6.5.8并发标记清除

6.5.9新的收集器:G1

6.6 HotSpot的JIT编译

6.6.1介绍HotSpot

6.6.2内联方法

6.6.3动态编译和独占调用

6.6.4读懂编译日志

6.7小结

第三部分 JVM上的多语言编程

第7章 备选JVM语言

7.1 Java太笨?纯粹诽谤

7.1.1整合系统

7.1.2函数式编程的基本原理

7.1.3映射与过滤器

7.2语言生态学

7.2.1解释型与编译型语言

7.2.2动态与静态类型

7.2.3命令式与函数式语言

7.2.4重新实现的语言与原生语言

7.3 JVM上的多语言编程

7.3.1为什么要用非Java语言

7.3.2崭露头角的语言新星

7.4如何挑选称心的非Java语言

7.4.1低风险

7.4.2与Java的交互操作

7.4.3良好的工具和测试支持

7.4.4备选语言学习难度

7.4.5使用备选语言的开发者

7.5 JVM对备选语言的支持

7.5.1非Java语言的运行时环境

7.5.2编译器小说

7.6小结

第8章 Groovy: Java的动态伴侣

8.1 Groovy入门

8.1.1编译和运行

8.1.2 Groovy控制台

8.2 Groovy 101:语法和语义

8.2.1默认导入

8.2.2数字处理

8.2.3变量、动态与静态类型、作用域

8.2.4列表和映射语法

8.3与Java的差异——新手陷阱

8.3.1可选的分号和返回语句

8.3.2可选的参数括号

8.3.3访问限定符

8.3.4异常处理

8.3.5 Groovy中的相等

8.3.6内部类

8.4 Java不具备的Groovy特性

8.4.1 GroovyBean

8.4.2安全解引用操作符

8.4.3猫王操作符

8.4.4增强型字符串

8.4.5函数字面值

8.4.6内置的集合操作

8.4.7对正则表达式的内置支持

8.4.8简单的XML处理

8.5 Groovy与Java的合作

8.5.1从Groovy调用Java

8.5.2从Java调用Groovy

8.6小结

第9章 Scala:简约而不简单

9.1走马观花Scala

9.1.1简约的Scala

9.1.2 match表达式

9.1.3 case类

9.1.4 actor

9.2 Scala能用在我的项目中吗

9.2.1 Scala和Java的比较

9.2.2何时以及如何开始使用Scala

9.2.3 Scala可能不适合当前项目的迹象

9.3让代码因Scala重新绽放

9.3.1使用编译器和REPL

9.3.2类型推断

9.3.3方法

9.3.4导入

9.3.5循环和控制结构

9.3.6 Scala的函数式编程

9.4 Scala对象模型:相似但不同

9.4.1一切皆对象

9.4.2构造方法

9.4.3特质

9.4.4单例和伴生对象

9.4.5 case类和match表达式

9.4.6警世寓言

9.5数据结构和集合

9.5.1 List

9.5.2 Map

9.5.3泛型

9.6 actor介绍

9.6.1代码大舞台

9.6.2用mailbox跟actor通信

9.7小结

第10章 Clojure:更安全地编程

10.1 Clojure介绍

10.1.1 Clojure的Hello World

10.1.2 REPL入门

10.1.3犯了错误

10.1.4学着去爱括号

10.2寻找Clojure:语法和语义

10.2.1特殊形式新手营

10.2.2列表、向量、映射和集

10.2.3数学运算、相等和其他操作

10.3使用函数和循环

10.3.1一些简单的Clojure函数

10.3.2 Clojure中的循环

10.3.3读取器宏和派发器

10.3.4函数式编程和闭包

10.4 Clojure序列

10.4.1懒序列

10.4.2序列和变参函数

10.5 Clojure与Java的互操作

10.5.1从Clojure中调用Java

10.5.2 Clojure值的Java类型

10.5.3使用Clojure代理

10.5.4用REPL做探索式编程

10.5.5在Java中使用Clojure

10.6 Clojure并发

10.6.1未来式与并行调用

10.6.2 ref形式

10.6.3代理

10.7小结

第四部分 多语种项目开发

第11章 测试驱动开发

11.1 TDD概览

11.1.1一个测试用例

11.1.2多个测试用例

11.1.3深入思考红—绿—重构循环

11.1.4 JUnit

11.2测试替身

11.2.1虚设对象

11.2.2存根对象

11.2.3伪装替身

11.2.4模拟对象

11.3 ScalaTest

11.4小结

第12章 构建和持续集成

12.1与Maven 3相遇

12.2 Maven 3入门项目

12.3用Maven 3构建Java7developer项目

12.3.1 POM

12.3.2运行示例

12.4 Jenkins:满足CI需求

12.4.1基础配置

12.4.2设置任务

12.4.3执行任务

12.5 Maven和Jenkins代码指标

12.5.1安装Jenkins插件

12.5.2 用 Checkstyle保持代码一致性

12.5.3用FindBugs设定质量标杆

12.6 Leiningen

12.6.1 Leiningen入门

12.6.2 Leiningen的架构

12.6.3 Hello Lein

12.6.4用Leiningen做面向REPL的TDD

12.6.5用Leiningen打包和部署

12.7小结

第13章 快速Web开发

13.1 Java Web框架的问题

13.1.1 Java编译为什么不好

13.1.2静态类型为什么不好

13.2选择Web框架的标准

13.3 Grails入门

13.4 Grails快速启动项目

13.4.1创建域对象

13.4.2测试驱动开发

13.4.3域对象持久化

13.4.4创建测试数据

13.4.5控制器

13.4.6 GSP/JSP页面

13.4.7脚手架和UI的自动化创建

13.4.8快速周转的开发

13.5深入Grails

13.5.1日志

13.5.2 GORM:对象关系映射

13.5.3 Grails插件

13.6 Compojure入门

13.6.1 Hello Compojure

13.6.2 Ring和路由

13.6.3 Hiccup

13.7我是不是一只水獭

13.7.1项目设置

13.7.2核心函数

13.8小结

第14章 保持优秀

14.1对Java 8的期待

14.1.1 lambda表达式(闭包)

14.1.2模块化(拼图Jigsaw)

14.2多语言编程

14.2.1语言的互操作性及元对象协议

14.2.2多语言模块化

14.3未来的并发趋势

14.3.1多核的世界

14.3.2运行时管理的并发

14.4 JVM的新方向

14.4.1 VM的合并

14.4.2协同程序

14.4.3元组

14.5小结

附录A java7developer:源码安装

附录B glob模式语法及示例

附录C 安装备选JVM语言

附录D Jenkins的下载和安装

附录E java7developer:Maven POM


书查询(www.shuchaxun.com)本网页唯一编码:
2f268a954efc4c11406d2723fbdf0de9#96ba8f1024722448b4e02a86d8fff613#97486490#13341006.zip