图书介绍

Java程序员修炼之道pdf电子书版本下载

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 7 2

1.1语言与平台 2

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

1.3 Coin项目中的修改 7

1.3.1 switch语句中的String 7

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/O 17

2.1 Java 1/O简史 18

2.1.1 Java 1.0到1.3 19

2.1.2在Java 1.4中引入的NIO 19

2.1.3下一代I/O-NIO.2 20

2.2文件I/O的基石:Path 20

2.2.1创建一个Path 23

2.2.2从Path中获取信息 23

2.2.3移除冗余项 24

2.2.4转换Path 25

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/O 28

2.4.1创建和删除文件 29

2.4.2文件的复制和移动 30

2.4.3文件的属性 31

2.4.4快速读写数据 34

2.4.5文件修改通知 35

2.4.6 SeekableByteChannel 37

2.5异步I/O操作 37

2.5.1将来式 38

2.5.2回调式 40

2.6 Socket和Channel的整合 41

2.6.1 NetworkChannel 42

2.6.2 MulticastChannel 42

2.7小结 43

第二部分 关键技术 46

第3章 依赖注入 46

3.1知识注入:理解IoC和DI 46

3.1.1控制反转 47

3.1.2依赖注入 48

3.1.3转成DI 49

3.2 Java中标准化的DI 53

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 3 59

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为什么是synchronized 77

4.2.6关键字volatil 78

4.2.7不可变性 79

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

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

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

4.3.3 CountDownLatch 85

4.3.4 ConcurrentHashMap 86

4.3.5 CopyOnWriteArrayList 87

4.3.6 Queue 90

4.4控制执行 95

4.4.1任务建模 96

4.4.2 ScheduledThread-PoolExecutor 97

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 MethodHandle 112

5.2.2 MethodType 112

5.2.3查找方法句柄 113

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

5.2.5为什么选择MethodHandle 116

5.3检查类文件 117

5.3.1介绍javap 117

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 invokedynamic 129

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 jmap 152

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新的收集器:G1 161

6.6 HotSpot的JIT编译 162

6.6.1介绍HotSpot 163

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 GroovyBean 199

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调用Java 207

8.5.2从Java调用Groovy 208

8.6小结 211

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

9.1走马观花Scala 213

9.1.1简约的Scala 213

9.1.2 match表达式 215

9.1.3 case类 217

9.1.4 actor 218

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

9.2.1 Scala和Java的比较 219

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

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

9.3让代码因Scala重新绽放 221

9.3.1使用编译器和REPL 221

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 List 235

9.5.2 Map 238

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 World 246

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中调用Java 262

10.5.2 Clojure值的Java类型 263

10.5.3使用Clojure代理 264

10.5.4用REPL做探索式编程 264

10.5.5在Java中使用Clojure 265

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 JUnit 283

11.2测试替身 285

11.2.1虚设对象 286

11.2.2存根对象 287

11.2.3伪装替身 290

11.2.4模拟对象 295

11.3 ScalaTest 296

11.4小结 298

第12章 构建和持续集成 300

12.1与Maven 3相遇 302

12.2 Maven 3入门项目 303

12.3用Maven 3构建Java7developer项目 305

12.3.1 POM 305

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 Leiningen 325

12.6.1 Leiningen入门 326

12.6.2 Leiningen的架构 326

12.6.3 Hello Lein 327

12.6.4用Leiningen做面向REPL的TDD 329

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深入Grails 347

13.5.1日志 347

13.5.2 GORM:对象关系映射 348

13.5.3 Grails插件 349

13.6 Compojure入门 350

13.6.1 Hello Compojure 350

13.6.2 Ring和路由 352

13.6.3 Hiccup 353

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 POM 390

精品推荐