| 作者 |
| 翟陆续计文柯 |
| 丛书名 |
| Java核心技术系列 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9781912231544 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------Java异步编程实战--------------------------- 内容简介 这是一部全面解析Java异步编程的著作,针对各种常见异步编程场景,从编程语言、开发框架等角度深入讲解了异步编程的原理和方法。作者是淘宝的资深Java技术工程师,在Java异步编程、并发编程领域有深厚的积累。 全书共9章,每章内容概括如下: 第1-2章主要介绍了异步编程的概念、适用场景,以及如何使用线程和线程池来实现异步编程; 第3章首先讲解JDK中的各种Future及其内部实现原理,然后讲解如何使用Future实现异步编程,以及如何结合JDK8 Stream 和Future实现异步编程; 第4章讲解了Spring框架中提供的异步执行能力,包含Spring中如何对TaskExecutor进行抽象,如何使用注解@Async实现异步编程,以及其内部实现原理; 第5章讲解了比较热门的反应式编程相关的内容,包含什么是反应式编程,如何使用反应式编程规范的库RxJava和Reactor库实现异步编程; 第6章讲解了Web Servlet的异步非阻塞处理,包含Servlet 3.0规范是如何提供异步处理能力的,Servlet 3.1规范是如何解决IO阻塞问题的,以及在Spring MVC中如何进行异步处理。 第7章讲解与Servlet技术栈并行存在的、由Spring5.0提出来的Spring WebFlux的异步非阻塞处理,包含Spring WebFlux的由来、Spring WebFlux的并发模型、两种编程模型,以及如何使用Spring WebFlux来进行服务开发、Spring WebFlux内部的实现原理。 第8章简要介绍了业界为方便实现异步编程而设计的一些框架和中间件,比如异步基于事件驱动的网络编程框架Netty,高性能RPC框架Apache Dubbo,高性能线程间消息传递库Disruptor,异步基、分布式、基于事件驱动的编程框架Akka,高性能分布式消息平台Apache RocketMQ 。 第9章介绍新兴的Go语言是如何从语言层面提供了强大的异步编程能力的。 本书注重理论与实践相结合,且每个异步技术点都附有代码实例,帮助读者加深理解。 . ---------------------------Spring技术内幕:深入解析Spring架构与设计原理(第2版)--------------------------- 《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》是国内唯一一本系统分析Spring源代码的著作,也是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔,Java开发者社区和Spring开发者社区联袂推荐。本书第1版不仅在内容上获得了读者的广泛好评,而且在销量上也摘取了同类书的桂冠,曾经一度掀起Java类图书的销售热潮。第2版不仅继承了第1版在内容组织和写作方式上的优点,而且还根据广大读者的反馈改进了若干细节上的不足。更为重要的是,结合Spring的最新版本对过时的内容进行了更新,并增加了大量新内容,使本书更趋近于完美。 《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的优秀架构和设计思想,还能从Spring优雅的实现源码中一窥Java语言的精髓。本书在开篇之前对Spring的设计理念和整体架构进行了全面的介绍,能让读者从宏观上厘清Spring各个功能模块之间的关系;第一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。 无论你是Java程序员、Spring开发者,还是平台开发人员、系统架构师,抑或是对开源软件源代码着迷的代码狂人,都能从本书中受益。 |
| 目录 |
---------------------------Java异步编程实战--------------------------- 前言 第1章 认识异步编程1 1.1 异步编程概念与作用1 1.2 异步编程场景2 1.3 总结9 第2章 显式使用线程和线程池实现异步编程10 2.1 显式使用线程实现异步编程10 2.2 显式使用线程池实现异步编程14 2.2.1 如何显式使用线程池实现异步编程14 2.2.2 线程池ThreadPoolExecutor原理剖析17 2.3 总结34 第3章 基于JDK中的Future实现异步编程35 3.1 JDK 中的Future35 3.2 JDK中的FutureTask37 3.2.1 FutureTask 概述37 3.2.2 FutureTask的类图结构41 3.2.3 FutureTask的run() 方法45 3.2.4 FutureTask的get()方法48 3.2.5 FutureTask的cancel(boolean mayInterruptIfRunning)方法50 3.2.6 FutureTask的局限性52 3.3 JDK中的CompletableFuture52 3.3.1 CompletableFuture 概述52 3.3.2 显式设置CompletableFuture结果54 3.3.3 基于CompletableFuture实现异步计算与结果转换56 3.3.4 多个CompletableFuture进行组合运算65 3.3.5 异常处理68 3.3.6 CompletableFuture概要原理70 3.4 JDK8 Stream & CompletableFuture76 3.4.1 JDK8 Stream76 3.4.2 当Stream遇见CompletableFuture79 3.5 总结81 第4章 Spring框架中的异步执行82 4.1 Spring中对TaskExecutor的抽象82 4.2 如何在Spring中使用异步执行84 4.2.1 使用TaskExecutor实现异步执行84 4.2.2 使用注解@Async实现异步执行89 4.3 @Async注解异步执行原理96 4.4 总结109 第5章 基于反应式编程实现异步编程110 5.1 反应式编程概述110 5.2 Reactive Streams规范120 5.3 基于RxJava实现异步编程123 5.4 基于Reactor实现异步编程133 5.5 总结136 第6章 Web Servlet的异步非阻塞处理137 6.1 Servlet概述137 6.2 Servlet 3.0 提供的异步处理能力138 6.3 Servlet 3.1 提供的非阻塞IO能力145 6.4 Spring Web MVC 的异步处理能力153 6.4.1 基于DeferredResult的异步处理154 6.4.2 基于Callable实现异步处理155 6.5 总结157 第7章 Spring WebFlux的异步非阻塞处理158 7.1 Spring WebFlux概述158 7.2 Reactive编程 & Reactor库159 7.3 WebFlux服务器160 7.4 WebFlux的并发模型163 7.5 WebFlux对性能的影响164 7.6 WebFlux的编程模型164 7.6.1 WebFlux注解式编程模型165 7.6.2 WebFlux函数式编程模型168 7.7 WebFlux原理浅尝171 7.7.1 Reactor Netty概述171 7.7.2 WebFlux服务器启动流程173 7.7.3 WebFlux一次服务调用流程182 7.8 WebFlux的适用场景185 7.9 总结186 第8章 高性能异步编程框架和中间件187 8.1 异步、基于事件驱动的网络编程框架—Netty187 8.1.1 Netty概述187 8.1.2 Netty的线程模型190 8.1.3 TCP半包与粘包问题196 8.1.4 基于Netty与CompletableFuture实现RPC异步调用198 8.2 高性能RPC框架—Apache Dubbo209 8.2.1 Apache Dubbo概述209 8.2.2 Dubbo的异步调用210 8.2.3 Dubbo的异步执行214 8.3 高性能线程间消息传递库—Disruptor217 8.3.1 Disruptor概述217 8.3.2 Disruptor的特性详解220 8.3.3 基于Disruptor实现异步编程223 8.4 异步、分布式、基于消息驱动的框架—Akka227 8.4.1 Akka概述227 8.4.2 传统编程模型存在的问题228 8.4.3 Actor模型解决了传统编程模型的问题232 8.4.4 基于Akka实现异步编程237 8.5 高性能分布式消息框架—Apache RocketMQ244 8.5.1 Apache RocketMQ概述244 8.5.2 基于Apache RocketMQ实现系统间异步解耦246 8.6 总结254 第9章 Go语言的异步编程能力255 9.1 Go语言概述255 9.2 Go语言的线程模型256 9.2.1 一对一模型256 9.2.2 多对一模型257 9.2.3 多对多模型258 9.2.4 Go语言的线程模型259 9.3 goroutine与channel261 9.3.1 goroutine261 9.3.2 channel265 9.3.3 构建管道实现异步编程269 9.4 总结273 ---------------------------Spring技术内幕:深入解析Spring架构与设计原理(第2版)--------------------------- 《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》 前言 第1章 Spring的设计理念和整体架构 / 1 1.1 Spring的各个子项目 / 2 1.2 Spring的设计目标 / 5 1.3 Spring的整体架构 / 7 1.4 Spring的应用场景 / 10 1.5 小结 / 12 第一部分 Spring核心实现篇 第2章 Spring Framework的核心:IoC容器的实现 / 16 2.1 Spring IoC容器概述 / 17 2.1.1 IoC容器和依赖反转模式 / 17 2.1.2 Spring IoC的应用场景 / 18 2.2 IoC容器系列的设计与实现:BeanFactory和ApplicationContext / 19 2.2.1 Spring的IoC容器系列 / 19 2.2.2 Spring IoC容器的设计 / 21 2.3 IC容器的初始化过程 / 28 2.3.1 BeanDefinition的Resource定位 / 29 2.3.2 BeanDefinition的载入和解析 / 37 2.3.3 BeanDefinition在IoC容器中的注册 / 52 2.4 IoC容器的依赖注入 / 54 2.5 容器其他相关特性的设计与实现 / 75 2.5.1 ApplicationContext和Bean的初始化及销毁 / 75 2.5.2 lazy-init属性和预实例化 / 81 2.5.3 FactoryBean的实现 / 82 2.5.4 BeanPostProcessor的实现 / 85 2.5.5 autowiring(自动依赖装配)的实现 / 88 2.5.6 Bean的依赖检查 / 90 2.5.7 Bean对IoC容器的感知 / 91 2.6 小结 / 92 第3章 Spring AOP的实现 / 94 3.1 Spring AOP概述 / 95 3.1.1 AOP概念回顾 / 95 3.1.2 Advice通知 / 98 3.1.3 Pointcut切点 / 102 3.1.4 Advisor通知器 / 105 3.2 Spring AOP的设计与实现 / 106 3.2.1 JVM的动态代理特性 / 106 3.2.2 Spring AOP的设计分析 / 108 3.2.3 Spring AOP的应用场景 / 108 3.3 建立AopProxy代理对象 / 109 3.3.1 设计原理 / 109 3.3.2 配置ProxyFactoryBean / 110 3.3.3 ProxyFactoryBean生成AopProxy代理对象 / 111 3.3.4 JDK生成AopProxy代理对象 / 116 3.3.5 CGLIB生成AopProxy代理对象 / 117 3.4 Spring AOP拦截器调用的实现 / 119 3.4.1 设计原理 / 119 3.4.2 JdkDynamicAopProxy的invoke拦截 / 120 3.4.3 Cglib2AopProxy的intercept拦截 / 121 3.4.4 目标对象方法的调用 / 122 3.4.5 AOP拦截器链的调用 / 123 3.4.6 配置通知器 / 124 3.4.7 Advice通知的实现 / 129 3.4.8 ProxyFactory实现AOP / 136 3.5 Spring AOP的高级特性 / 138 3.6 小结 / 140 第二部分 Spring组件实现篇 第4章 Spring MVC与Web环境 / 145 4.1 Spring MVC概述 / 146 4.2 Web环境中的Spring MVC / 148 4.3 上下文在Web容器中的启动 / 149 4.3.1 IoC容器启动的基本过程 / 149 4.3.2 Web容器中的上下文设计 / 151 4.3.3 ContextLoader的设计与实现 / 154 4.4 Spring MVC的设计与实现 / 158 4.4.1 Spring MVC的应用场景 / 158 4.4.2 Spring MVC设计概览 / 158 4.4.3 DispatcherServlet的启动和初始化 / 160 4.4.4 MVC处理HTTP分发请求 / 166 4.5 Spring MVC视图的呈现 / 178 4.5.1 DispatcherServlet视图呈现的设计 / 178 4.5.2 JSP视图的实现 / 182 4.5.3 ExcelView的实现 / 185 4.5.4 PDF视图的实现 / 187 4.6 小结 / 189 第5章 数据库操作组件的实现 / 191 5.1 Spring JDBC的设计与实现 / 192 5.1.1 应用场景 / 192 5.1.2 设计概要 / 192 5.2 Spring JDBC中模板类的设计与实现 / 193 5.2.1 设计原理 / 193 5.2.2 JdbcTemplate的基本使用 / 193 5.2.3 JdbcTemplate的execute实现 / 194 5.2.4 JdbcTemplate的query实现 / 196 5.2.5 使用数据库Connection / 197 5.3 Spring JDBC中RDBMS操作对象的实现 / 199 5.3.1 SqlQuery的实现 / 200 5.3.2 SqlUpdate的实现 / 204 5.3.3 SqlFunction / 206 5.4 Spring ORM的设计与实现 / 208 5.4.1 应用场景 / 208 5.4.2 设计概要 / 208 5.5 Spring驱动Hibernate的设计与实现 / 209 5.5.1 设计原理 / 210 5.5.2 Hibernate的SessionFactory / 210 5.5.3 HibernateTemplate的实现 / 215 5.5.4 Session的管理 / 219 5.6 Spring驱动iBatis的设计与实现 / 222 5.6.1 设计原理 / 222 5.6.2 创建SqlMapClient / 222 5.6.3 SqlMapClientTemplate的实现 / 224 5.7 小结 / 227 第6章 Spring事务处理的实现 / 228 6.1 Spring与事务处理 / 229 6.2 Spring事务处理的设计概览 / 229 6.3 Spring事务处理的应用场景 / 230 6.4 Spring声明式事务处理 / 231 6.4.1 设计原理与基本过程 / 231 6.4.2 实现分析 / 231 6.5 Spring事务处理的设计与实现 / 241 6.5.1 Spring事务处理的编程式使用 / 241 6.5.2 事务的创建 / 242 6.5.3 事务的挂起 / 249 6.5.4 事务的提交 / 251 6.5.5 事务的回滚 / 253 6.6 Spring事务处理器的设计与实现 / 255 6.6.1 Spring事务处理的应用场景 / 255 6.6.2 DataSourceTransactionManager的实现 / 256 6.6.3 HibernateTransactionManager的实现 / 259 6.7 小结 / 265 第7章 Spring远端调用的实现 / 267 7.1 Spring远端调用的应用场景 / 268 7.2 Spring远端调用的设计概览 / 268 7.3 Spring远端调用的实现 / 271 7.3.1 Spring HTTP调用器的实现 / 271 7.3.2 Spring Hession/Burlap的实现原理 / 282 7.3.3 Spring RMI的实现 / 295 7.4 小结 / 302 第三部分 Spring应用实现篇 第8章 安全框架ACEGI的设计与实现 / 307 8.1 Spring ACEGI安全框架概述 / 308 8.1.1 概述 / 308 8.1.2 设计原理与基本实现过程 / 308 8.1.3 ACEGI的Bean配置 / 309 8.2 配置Spring ACEGI / 310 8.3 ACEGI的Web过滤器实现 / 313 8.4 ACEGI验证器的实现 / 315 8.4.1 AuthenticationManager的authenticate / 315 8.4.2 DaoAuthenticationProvider的实现 / 318 8.4.3 读取数据库用户信息 / 320 8.4.4 完成用户信息的对比验证 / 323 8.5 ACEGI授权器的实现 / 324 8.5.1 与Web环境的接口FilterSecurityInterceptor / 324 8.5.2 授权器的实现 / 327 8.5.3 投票器的实现 / 329 8.6 小结 / 330 第9章 Spring DM模块的设计与实现 / 332 9.1 Spring DM模块的应用场景 / 333 9.2 Spring DM的应用过程 / 334 9.3 Spring DM设计与实现 / 338 9.4 小结 / 348 第10章 Spring Flex的设计与实现 / 350 10.1 Spring Flex模块的应用场景 / 351 10.2 Spring Flex的应用过程 / 353 10.3 Spring Flex的设计与实现 / 355 10.4 小结 / 362 附录A Spring项目的源代码环境 / 363 附录B 构建Spring项目的发布包 / 378 附录C 使用Spring IDE / 381 附录D Spring Pet Clinic应用实例 / 385 |