图书介绍

Java程序员修炼之道PDF|Epub|txt|kindle电子书版本网盘下载

Java程序员修炼之道
  • BenjaminJ·Evans,MartijnVerburg 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115321954
  • 出版时间:2013
  • 标注页数:396页
  • 文件大小:146MB
  • 文件页数:418页
  • 主题词:JAVA语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Java程序员修炼之道PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第一部分 用Java 7做开发2

第1章 初识Java 72

1.1语言与平台2

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

1.3 Coin项目中的修改7

1.3.1 switch语句中的String7

1.3.2更强的数值文本表示法8

1.3.3改善后的异常处理9

1.3.4 try-with-resources(TWR)11

1.3.5钻石语法13

1.3.6简化变参方法调用14

1.4小结15

第2章 新I/O17

2.1 Java 1/O简史18

2.1.1 Java 1.0到1.319

2.1.2在Java 1.4中引入的NIO19

2.1.3下一代I/O-NIO.220

2.2文件I/O的基石:Path20

2.2.1创建一个Path23

2.2.2从Path中获取信息23

2.2.3移除冗余项24

2.2.4转换Path25

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

2.3处理目录和目录树26

2.3.1在目录中查找文件26

2.3.2遍历目录树27

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

2.4.1创建和删除文件29

2.4.2文件的复制和移动30

2.4.3文件的属性31

2.4.4快速读写数据34

2.4.5文件修改通知35

2.4.6 SeekableByteChannel37

2.5异步I/O操作37

2.5.1将来式38

2.5.2回调式40

2.6 Socket和Channel的整合41

2.6.1 NetworkChannel42

2.6.2 MulticastChannel42

2.7小结43

第二部分 关键技术46

第3章 依赖注入46

3.1知识注入:理解IoC和DI46

3.1.1控制反转47

3.1.2依赖注入48

3.1.3转成DI49

3.2 Java中标准化的DI53

3.2.1 @Inject注解54

3.2.2 @aQualifier注解55

3.2.3 @Named注解57

3.2.4 @Scope注解57

3.2.5 @Singleton注解57

3.2.6接口Provider﹤T﹥58

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

3.3.1 Guice新手指南59

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

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

3.4小结66

第4章 现代并发67

4.1并发理论简介68

4.1.1解释Java线程模型68

4.1.2设计理念69

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

4.1.4系统开销之源71

4.1.5一个事务处理的例子71

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

4.2.1同步与锁73

4.2.2线程的状态模型74

4.2.3完全同步对象74

4.2.4死锁76

4.2.5为什么是synchronized77

4.2.6关键字volatil78

4.2.7不可变性79

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

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

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

4.3.3 CountDownLatch85

4.3.4 ConcurrentHashMap86

4.3.5 CopyOnWriteArrayList87

4.3.6 Queue90

4.4控制执行95

4.4.1任务建模96

4.4.2 ScheduledThread-PoolExecutor97

4.5分支/合并框架98

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

4.5.2 ForkJoinTask与工作窃取101

4.5.3并行问题102

4.6 Java内存模型103

4.7小结104

第5章 类文件与字节码106

5.1类加载和类对象107

5.1.1加载和连接概览107

5.1.2验证108

5.1.3class对象108

5.1.4类加载器109

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

5.2使用方法句柄111

5.2.1 MethodHandle112

5.2.2 MethodType112

5.2.3查找方法句柄113

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

5.2.5为什么选择MethodHandle116

5.3检查类文件117

5.3.1介绍javap117

5.3.2方法签名的内部形式118

5.3.3常量池119

5.4字节码121

5.4.1示例:反编译类121

5.4.2运行时环境123

5.4.3操作码介绍124

5.4.4加载和储存操作码125

5.4.5数学运算操作码125

5.4.6执行控制操作码126

5.4.7调用操作码126

5.4.8平台操作操作码127

5.4.9操作码的快捷形式127

5.4.10示例:字符串拼接127

5.5 invokedynamic129

5.5.1 invokedynamic如何工作129

5.5.2示例:反编译invokedynamic调用130

5.6小结132

第6章 理解性能调优133

6.1性能术语134

6.1.1等待时间135

6.1.2吞吐量135

6.1.3利用率135

6.1.4效率135

6.1.5容量136

6.1.6扩展性136

6.1.7退化136

6.2务实的性能分析法136

6.2.1知道你在测量什么137

6.2.2知道怎么测量137

6.2.3知道性能目标是什么138

6.2.4知道什么时候停止优化139

6.2.5知道高性能的成本139

6.2.6知道过早优化的危险140

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

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

6.3.2理解内存延迟层级142

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

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

6.4.1硬件时钟144

6.4.2麻烦的nanoTime()144

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

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

6.5垃圾收集149

6.5.1基本算法149

6.5.2标记和清除150

6.5.3 jmap152

6.5.4与GC相关的JVM参数155

6.5.5读懂GC日志156

6.5.6用VisualVM查看内存使用情况157

6.5.7逸出分析159

6.5.8并发标记清除160

6.5.9新的收集器:G1161

6.6 HotSpot的JIT编译162

6.6.1介绍HotSpot163

6.6.2内联方法164

6.6.3动态编译和独占调用165

6.6.4读懂编译日志166

6.7小结167

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

第7章 备选JVM语言170

7.1 Java太笨?纯粹诽谤170

7.1.1整合系统171

7.1.2函数式编程的基本原理172

7.1.3映射与过滤器173

7.2语言生态学174

7.2.1解释型与编译型语言175

7.2.2动态与静态类型175

7.2.3命令式与函数式语言176

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

7.3 JVM上的多语言编程177

7.3.1为什么要用非Java语言178

7.3.2崭露头角的语言新星179

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

7.4.1低风险181

7.4.2与Java的交互操作181

7.4.3良好的工具和测试支持182

7.4.4备选语言学习难度182

7.4.5使用备选语言的开发者182

7.5 JVM对备选语言的支持183

7.5.1非Java语言的运行时环境183

7.5.2编译器小说184

7.6小结185

第8章 Groovy: Java的动态伴侣187

8.1 Groovy入门189

8.1.1编译和运行189

8.1.2 Groovy控制台190

8.2 Groovy 101:语法和语义191

8.2.1默认导入192

8.2.2数字处理192

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

8.2.4列表和映射语法195

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

8.3.1可选的分号和返回语句196

8.3.2可选的参数括号197

8.3.3访问限定符197

8.3.4异常处理198

8.3.5 Groovy中的相等198

8.3.6内部类199

8.4 Java不具备的Groovy特性199

8.4.1 GroovyBean199

8.4.2安全解引用操作符200

8.4.3猫王操作符201

8.4.4增强型字符串201

8.4.5函数字面值202

8.4.6内置的集合操作203

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

8.4.8简单的XML处理205

8.5 Groovy与Java的合作207

8.5.1从Groovy调用Java207

8.5.2从Java调用Groovy208

8.6小结211

第9章 Scala:简约而不简单212

9.1走马观花Scala213

9.1.1简约的Scala213

9.1.2 match表达式215

9.1.3 case类217

9.1.4 actor218

9.2 Scala能用在我的项目中吗219

9.2.1 Scala和Java的比较219

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

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

9.3让代码因Scala重新绽放221

9.3.1使用编译器和REPL221

9.3.2类型推断222

9.3.3方法223

9.3.4导入224

9.3.5循环和控制结构224

9.3.6 Scala的函数式编程225

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

9.4.1一切皆对象226

9.4.2构造方法228

9.4.3特质228

9.4.4单例和伴生对象230

9.4.5 case类和match表达式232

9.4.6警世寓言234

9.5数据结构和集合235

9.5.1 List235

9.5.2 Map238

9.5.3泛型239

9.6 actor介绍242

9.6.1代码大舞台242

9.6.2用mailbox跟actor通信243

9.7小结244

第10章 Clojure:更安全地编程245

10.1 Clojure介绍245

10.1.1 Clojure的Hello World246

10.1.2 REPL入门247

10.1.3犯了错误248

10.1.4学着去爱括号248

10.2寻找Clojure:语法和语义249

10.2.1特殊形式新手营249

10.2.2列表、向量、映射和集250

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

10.3使用函数和循环253

10.3.1一些简单的Clojure函数253

10.3.2 Clojure中的循环255

10.3.3读取器宏和派发器256

10.3.4函数式编程和闭包257

10.4 Clojure序列258

10.4.1懒序列260

10.4.2序列和变参函数261

10.5 Clojure与Java的互操作262

10.5.1从Clojure中调用Java262

10.5.2 Clojure值的Java类型263

10.5.3使用Clojure代理264

10.5.4用REPL做探索式编程264

10.5.5在Java中使用Clojure265

10.6 Clojure并发265

10.6.1未来式与并行调用266

10.6.2 ref形式267

10.6.3代理271

10.7小结272

第四部分 多语种项目开发274

第11章 测试驱动开发274

11.1 TDD概览275

11.1.1一个测试用例276

11.1.2多个测试用例280

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

11.1.4 JUnit283

11.2测试替身285

11.2.1虚设对象286

11.2.2存根对象287

11.2.3伪装替身290

11.2.4模拟对象295

11.3 ScalaTest296

11.4小结298

第12章 构建和持续集成300

12.1与Maven 3相遇302

12.2 Maven 3入门项目303

12.3用Maven 3构建Java7developer项目305

12.3.1 POM305

12.3.2运行示例311

12.4 Jenkins:满足CI需求314

12.4.1基础配置315

12.4.2设置任务316

12.4.3执行任务319

12.5 Maven和Jenkins代码指标320

12.5.1安装Jenkins插件321

12.5.2 用 Checkstyle保持代码一致性322

12.5.3用FindBugs设定质量标杆323

12.6 Leiningen325

12.6.1 Leiningen入门326

12.6.2 Leiningen的架构326

12.6.3 Hello Lein327

12.6.4用Leiningen做面向REPL的TDD329

12.6.5用Leiningen打包和部署330

12.7小结332

第13章 快速Web开发333

13.1 Java Web框架的问题334

13.1.1 Java编译为什么不好335

13.1.2静态类型为什么不好335

13.2选择Web框架的标准336

13.3 Grails入门338

13.4 Grails快速启动项目338

13.4.1创建域对象340

13.4.2测试驱动开发340

13.4.3域对象持久化342

13.4.4创建测试数据343

13.4.5控制器343

13.4.6 GSP/JSP页面344

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

13.4.8快速周转的开发347

13.5深入Grails347

13.5.1日志347

13.5.2 GORM:对象关系映射348

13.5.3 Grails插件349

13.6 Compojure入门350

13.6.1 Hello Compojure350

13.6.2 Ring和路由352

13.6.3 Hiccup353

13.7我是不是一只水獭353

13.7.1项目设置354

13.7.2核心函数357

13.8小结359

第14章 保持优秀361

14.1对Java 8的期待361

14.1.1 lambda表达式(闭包)362

14.1.2模块化(拼图Jigsaw)363

14.2多语言编程365

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

14.2.2多语言模块化366

14.3未来的并发趋势367

14.3.1多核的世界367

14.3.2运行时管理的并发367

14.4 JVM的新方向368

14.4.1 VM的合并368

14.4.2协同程序369

14.4.3元组370

14.5小结372

附录A java7developer:源码安装373

附录B glob模式语法及示例380

附录C 安装备选JVM语言382

附录D Jenkins的下载和安装388

附录E java7developer:Maven POM390

热门推荐