《深入分析Java Web技术内幕》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:许令波著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2012
  • ISBN:9787121179907
  • 页数:442 页
图书介绍:本书围绕Java Web相关技术从三方面全面深入地进行阐述。首先介绍前端知识,主要介绍Java Web开发中涉及的一些基本知识,包括Web请求过程、HTTP协议、DNS技术和CDN技术。其次深入介绍Java技术,包括I/O技术、中文编码问题、ClassLoader工作机制及JVM的内存管理等。最后介绍Java服务端技术,主要包括Servlet、Session与Cookie、Tomcat与Jetty服务器、Spring容器、iBatis框架和Velocity框架等原理介绍。

第1章 深入Web请求过程 1

1.1 B/S网络架构概述 2

1.2如何发起一个请求 4

1.3 HTTP协议解析 6

1.3.1查看HTTP信息的工具 8

1.3.2浏览器缓存机制 9

1.4 DNS域名解析 12

1.4.1 DNS域名解析过程 12

1.4.2跟踪域名解析过程 15

1.4.3清除缓存的域名 18

1.4.4几种域名解析方式 19

1.5 CDN工作机制 20

1.5.1 CDN架构 20

1.5.2负载均衡 21

1.6总结 24

第2章 深入分析JavaI/O的工作机制 25

2.1 Java的I/O类库的基本架构 25

2.1.1基于字节的I/O操作接口 26

2.1.2基于字符的I/O操作接口 27

2.1.3字节与字符的转化接口 28

2.2磁盘I/O工作机制 29

2.2.1几种访问文件的方式 29

2.2.2 Java访问磁盘文件 33

2.2.3 Java序列化技术 34

2.3网络I/O工作机制 36

2.3.1 TCP状态转化 37

2.3.2影响网络传输的因素 39

2.3.3 Java Socket的工作机制 39

2.3.4建立通信链路 40

2.3.5数据传输 41

2.4 NIO的工作方式 41

2.4.1 BIO带来的挑战 41

2.4.2 NIO的工作机制 42

2.4.3 Buffer的工作方式 45

2.4.4 NIO的数据访问方式 47

2.5 I/O调优 49

2.5.1磁盘I/O优化 49

2.5.2 TCP网络参数调优 50

2.5.3网络I/O优化 52

2.6设计模式解析之适配器模式 56

2.6.1适配器模式的结构 56

2.6.2 Java I/O中的适配器模式 57

2.7设计模式解析之装饰器模式 57

2.7.1装饰器模式的结构 58

2.7.2 Java I/O中的装饰器模式 58

2.8适配器模式与装饰器模式的区别 59

2.9总结 59

第3章 深入分析Java Web中的中文编码问题 60

3.1几种常见的编码格式 60

3.1.1为什么要编码 60

3.1.2如何“翻译” 61

3.2 Java中需要编码的场景 63

3.2.1 I/O操作中存在的编码 63

3.2.2内存操作中的编码 65

3.3 Java中如何编解码 66

3.3.1按照ISO-8859-1编码 68

3.3.2按照GB2312编码 69

3.3.3按照GBK编码 70

3.3.4按照UTF-16编码 70

3.3.5按照UTF-8编码 71

3.3.6 UTF-8编码代码片段 71

3.3.7几种编码格式的比较 73

3.4 Java Web中涉及的编解码 73

3.4.1 URL的编解码 75

3.4.2 HTTP Header的编解码 78

3.4.3 POST表单的编解码 78

3.4.4 HTTP BODY的编解码 79

3.5 JS中的编码问题 80

3.5.1外部引入JS文件 80

3.5.2 JS的URL编码 81

3.5.3其他需要编码的地方 83

3.6常见问题分析 83

3.6.1中文变成了看不懂的字符 83

3.6.2一个汉字变成一个问号 84

3.6.3一个汉字变成两个问号 84

3.6.4一种不正常的正确编码 85

3.7总结 86

第4章Javac编译原理 87

4.1 Javac是什么 88

4.2 Javac编译器的基本结构 88

4.3 Javac工作原理分析 90

4.3.1词法分析器 91

4.3.2语法分析器 98

4.3.3语义分析器 103

4.3.4代码生成器 113

4.4设计模式解析之访问者模式 116

4.4.1访问者模式的结构 117

4.4.2 Javac中访问者模式的实现 118

4.5总结 119

第5章 深入class文件结构 120

5.1 JVM指令集简介 120

5.1.1类相关的指令 122

5.1.2方法的定义 123

5.1.3属性的定义 124

5.1.4其他指令集 125

5.2 class文件头的表示形式 133

5.3常量池 137

5.3.1 UTF8常量类型 140

5.3.2 Fieldref、Methodref常量类型 141

5.3.3 Class常量类型 141

5.3.4 NameAndType常量类型 142

5.4类信息 142

5.5 Fields和Methods定义 143

5.6类属性描述 147

5.7 Javap生成的class文件结构 148

5.7.1 LineNumberTable 150

5.7.2 LocalVariableTable 151

5.8总结 153

第6章 深入分析ClassLoader工作机制 154

6.1 ClassLoader类结构分析 155

6.2 ClassLoader的等级加载机制 156

6.3如何加载class文件 159

6.3.1加载字节码到内存 159

6.3.2验证与解析 161

6.3.3初始化Class对象 161

6.4常见加载类错误分析 161

6.4.1 ClassNotFoundException 161

6.4.2 NoClassDefFoundError 162

6.4.3 UnsatisfiedLinkError 163

6.4.4 ClassCastException 164

6.4.5 ExceptionInlnitializerError 165

6.5常用的ClassLoader分析 166

6.6如何实现自己的C1assLoader 170

6.6.1加载自定义路径下的class文件 170

6.6.2加载自定义格式的class文件 172

6.7实现类的热部署 174

6.8 Java应不应该动态加载类 176

6.9总结 177

第7章JVM体系结构与工作方式 178

7.1 JVM体系结构 178

7.1.1何谓JVM 178

7.1.2 JVM体系结构详解 181

7.2 JVM工作机制 183

7.2.1机器如何执行代码 183

7.2.2 JVM为何选择基于栈的架构 184

7.2.3执行引擎的架构设计 185

7.2.4执行引擎的执行过程 186

7.2.5 JVM方法调用栈 191

7.3总结 195

第8章JVM内存管理 196

8.1物理内存与虚拟内存 197

8.2内核空间与用户空间 198

8.3 Java中哪些组件需要使用内存 199

8.3.1 Java堆 199

8.3.2线程 199

8.3.3类和类加载器 200

8.3.4 NIO 200

8.3.5 JNI 201

8.4 JVM内存结构 201

8.4.1 PC寄存器 202

8.4.2 Java栈 202

8.4.3堆 203

8.4.4方法区 203

8.4.5运行时常量池 204

8.4.6本地方法栈 204

8.5 JVM内存分配策略 204

8.5.1通常的内存分配策略 205

8.5.2 Java中内存分配详解 205

8.6 JVM内存回收策略 210

8.6.1静态内存分配和回收 210

8.6.2动态内存分配和回收 211

8.6.3如何检测垃圾 211

8.6.4基于分代的垃圾收集算法 213

8.7内存问题分析 222

8.7.1 GC日志分析 222

8.7.2堆快照文件分析 225

8.7.3 JVM Crash日志分析 225

8.8实例1 231

8.9实例2 233

8.10实例3 235

8.11总结 240

第9章Servlet工作原理解析 241

9.1从Servlet容器说起 241

9.1.1 Servlet容器的启动过程 242

9.1.2 Web应用的初始化工作 245

9.2创建Servlet实例 247

9.2.1创建Servlet对象 248

9.2.2初始化Servlet 248

9.3 Servlet体系结构 250

9.4 Servlet如何工作 253

9.5 Servlet中的Listener 255

9.6 Filter如何工作 257

9.7 Servlet中的url-pattern 259

9.8总结 260

第10章 深入理解Session与Cookie 261

10.1理解Cookie 262

10.1.1 Cookie属性项 262

10.1.2 Cookie如何工作 263

10.1.3使用Cookie的限制 266

10.2理解Session 267

10.2.1 Session与Cookie 267

10.2.2 Session如何工作 268

10.3 Cookie安全问题 271

10.4分布式Session框架 272

10.4.1存在哪些问题 272

10.4.2可以解决哪些问题 273

10.4.3总体实现思路 273

10.5 Cookie压缩 278

10.6表单重复提交问题 280

10.7总结 281

第11章Tomcat的系统架构与设计模式 282

11.1 Tomcat总体设计 282

11.1.1 Tomcat总体结构 283

11.1.2 Connector组件 289

11.1.3 Servlet容器Container 294

11.1.4 Tomcat中的其他组件 305

11.2 Tomcat中的设计模式 305

11.2.1门面设计模式 305

11.2.2观察者设计模式 307

11.2.3命令设计模式 309

11.2.4责任链设计模式 310

11.3总结 312

第12章 Jetty的工作原理解析 313

12.1 Jetty的基本架构 313

12.1.1 Jetty的基本架构简介 313

12.1.2 Handler的体系结构 315

12.2 Jetty的启动过程 316

12.3接受请求 317

12.3.1基于HTTP协议工作 317

12.3.2基于AJP工作 319

12.3.3基于NIO方式工作 322

12.4处理请求 323

12.5与Jboss集成 326

12.6与Tomcat的比较 327

12.6.1架构比较 327

12.6.2性能比较 328

12.6.3特性比较 328

12.7总结 329

第13章Spring框架的设计理念与设计模式分析 330

13.1 Spring的骨骼架构 330

13.1.1 Spring的设计理念 331

13.1.2核心组件如何协同工作 332

13.2核心组件详解 333

13.2.1 Bean组件 333

13.2.2 Context组件 335

13.2.3 Core组件 336

13.2.4 Ioc容器如何工作 338

13.3 Spring中AOP特性详解 348

13.3.1动态代理的实现原理 348

13.3.2 Spring AOP如何实现 351

13.4设计模式解析之代理模式 354

13.4.1代理模式原理 354

13.4.2 Spring中代理模式的实现 354

13.5设计模式解析之策略模式 357

13.5.1策略模式原理 357

13.5.2 Spring中策略模式的实现 358

13.6总结 358

第14章Spring MVC工作机制与设计模式 360

14.1 Spring MVC的总体设计 360

14.2 Control设计 365

14.2.1 HandlerMapping初始化 366

14.2.2 HandlerAdapter初始化 368

14.2.3 Control的调用逻辑 369

14.3 Model设计 370

14.4 View设计 371

14.5框架设计的思考 373

14.5.1为什么需要框架 373

14.5.2需要什么样的框架 373

14.5.3框架设计的原则 374

14.5.4“指航灯” 374

14.5.5最基本的原则 374

14.6设计模式解析之模板模式 375

14.6.1模板模式的结构 375

14.6.2 Spring MVC中的模板模式示例 376

14.7总结 377

第15章 深入分析Ibatis框架之系统架构与映射原理 378

15.1 Ibatis框架主要的类层次结构 378

15.2 Ibatis框架的设计策略 379

15.3 Ibatis框架的运行原理 381

15.4示例 383

15.5 Ibatis对SQL语句的解析 385

15.6数据库字段映射到Java对象 386

15.7示例运行的结果 388

15.8设计模式解析之简单工厂模式 388

15.8.1简单工厂模式的实现原理 388

15.8.2 Ibatis中的简单工厂模式示例 389

15.9设计模式解析之工厂模式 390

15.9.1工厂模式的实现原理 390

15.9.2 Ibatis中的工厂模式示例 391

15.10总结 392

第16章Velocity工作原理解析 394

16.1 Velocity总体架构 395

16.2 JJTree渲染过程解析 398

16.2.1 #set语法 402

16.2.2 Velocity的方法调用 403

16.2.3 #if、#elseif和#else语法 406

16.2.4 #foreach语法 407

16.2.5 #parse语法 409

16.3事件处理机制 410

16.4常用优化技巧 413

16.4.1减少树的总节点数量 413

16.4.2减少渲染耗时的节点数量 413

16.5与JSP比较 414

16.5.1 JSP渲染机制 414

16.5.2 Velocity与JSP 420

16.6设计模式解析之合成模式 420

16.6.1合成模式的结构 420

16.6.2 Velocity中合成模式的实现 421

16.7设计模式解析之解释器模式 422

16.7.1解释器模式的结构 422

16.7.2 Velocity中解释器模式的实现 423

16.8总结 423

第17章Velocity优化实践 424

17.1现实存在的问题 424

17.2优化的理论基础 425

17.2.1程序语言的三角形结构 425

17.2.2数据结构减少抽象化 426

17.2.3简单的程序复杂化 426

17.2.4减少翻译的代价 427

17.2.5变的转化为不变 427

17.3一个高效的模板引擎的实现思路 427

17.3.1 vm模板如何被编译 429

17.3.2方法调用的无反射优化 436

17.3.3字符输出改成字节输出 439

17.4优化的成果 440

17.4.1 char转成byte 440

17.4.2无反射执行 441

17.5其他优化手段 442

17.6总结 442