实战Java高并发程序设计葛一鸣计算机与互联网pdf下载pdf下载

实战Java高并发程序设计葛一鸣计算机与互联网百度网盘pdf下载

作者:
简介:本篇主要提供实战Java高并发程序设计葛一鸣计算机与互联网pdf下载
出版社:创品世纪图书专营店
出版时间:
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

  商品基本信息,请以下列介绍为准
商品名称:实战Java高并发程序设计
作者:葛一鸣著
定价:89.0
出版社:电子工业出版社
出版日期:2018-10-01
ISBN:9787121350030
印次:1
版次:2
装帧:
开本:小16开

  内容简介
span id="content-all"/span在单核CPU时代,单任务在一个时间点只能执行单一程序,随着多核CPU的发展,并行程序开发变得尤为重要。本书主要介绍基于Java的并行程序设计基础、思路、方法和实战。*,立足于并发程序基础,详细介绍Jav行并行程序设计的基本方法。第二一步详细介绍了JDK对并行程序的强大支持,帮助读者快速、稳健行并行程序开发。第三,详细讨论了“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍了并行的基本设计模式,以及Java 8/9/10对并行程序的支持和。第五,介绍了高并发框架Akka的使用方法。第六,详细介绍了并行程序的调试方法。第七,分析Jetty代码并给出一些其在高并发优化方面的例子。本书内容丰富,实例典型,实用性强,适合有一定Java基础的技术开发人员阅读。

  目录
目  录br /br /br /br /第1章 走入并行1br /1.1 何去何从的并行计算1br /1.1.1 忘掉那该死的并行2br /1.1.2 可怕的现实:摩尔定律的失效4br /1.1.3 柳暗花明:不断地5br /1.1.4 光明或是黑暗6br /1.2 你必须知道的几个概念7br /1.2.1 同步(Synchronous)和异步(Asynchronous)7br /1.2.2 并发(Concurrency)和并行(Parallelism)8br /1.2.3 临界区9br /1.2.4 阻塞(Blo)和非阻塞(Non-Blo)9br /1.2.5 死锁(Deadlock)、饥饿(Starvation)和活锁(Livelock)10br /1.3 并发级别11br /1.3.1 阻塞11br /1.3.2 无饥饿(Starvation-Free)11br /1.3.3 无障碍(Obstruction-Free)12br /1.3.4 无锁(Lock-Free)13br /1.3.5 无等待(Wait-Free)13br /1.4 有关并行的两个重要定律14br /1.4.1 Amdahl定律14br /1.4.2 Gustafson定律16br /1.4.3 是否相互矛盾17br /1.5 回到Java:JMM18br /1.5.1 原子性(Atomicity)18br /1.5.2 可见性(Visibility)20br /1.5.3 有序性(Ordering)22br /1.5.4 哪些指令不能重排:Happen-Before规则27br /第2章 Java并行程序基础29br /2.1 有关线程你必须知道的事29br /2.2 初始线程:线程的基本作32br /2.2.1 新建线程32br /2.2.2 终止线程34br /2.2.3 线程中断38br /2.2.4 等待(wait)和通知(notify)41br /2.2.5 挂起(suspend)和继续执行(resume)线程45br /2.2.6 等待线程结束(join)和谦让(yeild)49br /2.3 volatile与Java内存模型(JMM)50br /2.4 分门别类的管理:线程组53br /2.5 驻守后台:守护线程(Daemon)54br /2.6 先做重要的事:线程优先级56br /2.7 线程的概念与关键字synchronized57br /2.8 程序中的幽灵:隐蔽的错误61br /2.8.1 无提示的错误案例62br /2.8.2 并发下的ArrayList63br /2.8.3 并发下诡异的HashMap64br /2.8.4 初学者常见的问题:错误的加锁67br /第3章 JDK并发包71br /3.1 多线程的团队协作:同步控制71br /3.1.1 关键字synchronize能扩展:重入锁72br /3.1.2 重入锁的好搭档:Condition81br /3.1.3 允许多个线程同时访问:信号量(Semaphore)85br /3.1.4 ReadWriteLock读写锁86br /3.1.5 倒计数器:CountDownLatch89br /3.1.6 循环栅栏:CyclicBarrier91br /3.1.7 线程阻塞工具类:LockSupport94br /3.1.8 Guava和RateLimiter限流98br /3.2 线程复用:线程池101br /3.2.1 什么是线程池102br /3.2.2 不要重复发明轮子:JDK对线程池的支持102br /3.2.3 刨根究底:核心线程池的内部实现108br /3.2.4 超负载了怎么办:拒绝策略112br /3.2.5 自定义线程创建:ThreadFactory115br /3.2.6 我的应用我做主:扩展线程池116br /3.2.7 合理的选择:优化线程池线程数量119br /3.2.8 堆栈去哪里了:在线程池中寻找堆栈120br /3.2.9 分而治之:Fork/Join框架124br /3.2.10 Guava中对线程池的扩展128br /3.3 不要重复发明轮子:JDK的并发容器130br /3.3.1 超好用的工具类:并发集合简介130br /3.3.2 线程的HashMap131br /3.3.3 有关List的线程132br /3.3.4 读写的队列:深度剖析ConcurrentLinkedQueue类132br /3.3.5 读取:不变模式下的CopyOnWriteArrayList类138br /3.3.6 数据共享通道:BloQueue139br /3.3.7 随机数据结构:跳表(SkipList)144br /3.4 使用JM行性能测试146br /3.4.1 什么是JMH147br /3.4.2 Hello JMH147br /3.4.3 JMH的基本概念和配置150br /3.4.4 理解JMH中的Mode151br /3.4.5 理解JMH中的State153br /3.4.6 有关性能的一些思考154br /3.4.7 CopyOnWriteArrayList类与ConcurrentLinkedQueue类157br /第4章 锁的优化及注意事项161br /4.1 有助于提高锁性能的几点建议162br /4.1.1 减少锁持有时间162br /4.1.2 减小锁粒度163br /4.1.3 用读写分离锁来替换独占锁165br /4.1.4 锁分离165br /4.1.5 锁粗化168br /4.2 Java虚拟机对锁优化所做的努力169br /4.2.1 锁偏向169br /4.2.2 轻量级锁169br /4.2.3 自旋锁170br /4.2.4 锁消除170br /4.3 人手一支笔:ThreadLocal171br /4.3.1 ThreadLocal的简单使用171br /4.3.2 ThreadLocal的实现原理173br /4.3.3 对性能有何帮助179br /4.4 无锁182br /4.4.1 与众不同的并发策略:比较交换182br /4.4.2 无锁的线程整数:AtomicInteger183br /4.4.3 Java中的指针:Unsafe类185br /4.4.4 无锁的对象引用:AtomicReference187br /4.4.5 带有时间戳的对象引用:AtomicStampedReference190br /4.4.6 数组也能无锁:AtomicIntegerArray193br /4.4.7 让普通变量也享受原子作:AtomicIntegerFieldUpdater194br /4.4.8 挑战无锁算法:无锁的Vector实现196br /4.4.9 让线程之间互相帮助:细看SynchronousQueue的实现201br /4.5 有关死锁的问题205br /第5章 并行模式与算法209br /5.1 探讨单例模式209br /5.2 不变模式213br /5.3 生产者-消费者模式215br /5.4 高性能的生产者-消费者模式:无锁的实现220br /5.4.1 无锁的缓存框架:Disruptor221br /5.4.2 用Disruptor框架实现生产者-消费者模式的案例222br /5.4.3 提高消费者的响应时间:选择合适的策略225br /5.4.4 CPU Cache的优化:解决伪共享问题226br /5.5 Future模式230br /5.5.1 Future模式的主要角色232br /5.5.2 Future模式的简单实现233br /5.5.3 JDK中的Future模式236br /5.5.4 Guava对Future模式的支持238br /5.6 并行流水线240br /5.7 并行搜索244br /5.8 并行排序246br /5.8.1 分离数据相关性:奇偶交换排序246br /5.8.2 的插入排序:希尔排序250br /5.9 并行算法:矩阵乘法254br /5.10 准备好了再通知我:网络NIO258br /5.10.1 基于Socket的服务端多线程模式259br /5.10.2 使用NI行网络编程264br /5.10.3 使用NIO来实现客户端272br /5.11 读完了再通知我:AIO274br /5.11.1 AIO EchoServer的实现275br /5.11.2 AIO Echo客户端的实现277br /第6章 Java 8/9/10与并发281br /6.1 Java 8的函数式编程简介281br /6.1.1 函数作为一等公民282br /6.1.2 无副作用283br /6.1.3 声明式的(Declarative)283br /6.1.4 不变的对象284br /6.1.5 易于并行284br /6.1.6 更少的代码284br /6.2 函数式编程基础285br /6.2.1 FunctionalInterface注释285br /6.2.2 接口默认方法286br /6.2.3 lambda表达式290br /6.2.4 方法引用291br /6.3 一步一步走入函数式编程293br /6.4 并行流与并行排序298br /6.4.1 使用并行流过滤数据298br /6.4.2 从集合得到并行流299br /6.4.3 并行排序299br /6.5 增强的Future:CompletableFuture300br /6.5.1 完成了就通知我300br /6.5.2 异步执行任务301br /6.5.3 流式调用303br /6.5.4 CompletableFuture中的异常处理303br /6.5.5 组合多个CompletableFuture304br /6.5.6 支持timeout的 CompletableFuture306br /6.6 读写锁的:StampedLock306br /6.6.1 StampedLock使用示例307br /6.6.2 StampedLock的小陷阱308br /6.6.3 有关StampedLock的实现思想310br /6.7 原子类的增强313br /6.7.1 更快的原子类:LongAdder314br /6.7.2 LongAdd能的增强版:LongAccumulator320br /6.8 ConcurrentHashMap的增强321br /6.8.1 foreach作321br /6.8.2 reduce作321br /6.8.3 条件插入322br /6.8.4 search作323br /6.8.5 其他新方法324br /6.9 发布和订阅模式324br /6.9.1 简单的发布订阅例子326br /6.9.2 数据处理链328br /第7章 使用Akka构建高并发程序331br /7.1 新并发模型:Actor332br /7.2 Akka之Hello World332br /7.3 有关消息投递的一些说明336br /7.4 Actor的生命周期337br /7.5 监督策略341br /7.6 选择Actor346br /7.7 消息收件箱(Inbox)346br /7.8 消息路由348br /7.9 Actor的内置状态转换351br /7.10 询问模式:Actor中的Future354br /7.11 多个Actor同时修改数据:Agent356br /7.12 像数据库一样作内存数据:软件事务内存359br /7.13 一个有趣的例子:并发粒子群的实现363br /7.13.1 什么是粒子群算法364br /7.13.2 粒子群算法的计算过程364br /7.13.3 粒子群算法能做什么366br /7.13.4 使用Akka实现粒子群367br /第8章 并行程序调试375br /8.1 准备实验样本375br /8.2 正式起航376br /8.3 挂起整个虚拟机379br /8.4 调入ArrayList内部380br /第9章 多线程优化示例—Jetty核心代码分析385br /9.1 Jetty简介与架构385br /9.2 Jetty服务器初始化387br /9.2.1 初始化线程池387br /9.2.2 初始化ScheduledExecutorScheduler389br /9.2.3 初始化ByteBufferPool390br /9.2.4 维护ConnectionFactory393br /9.2.5 计算ServerConnector的线程数量394br /9.3 启动Jetty服务器394br /9.3.1 设置启动状态394br /9.3.2 注册ShutdownMonitor395br /9.3.3 计算系统的线程数量395br /9.3.4 启动QueuedThreadPool396br /9.3.5 启动Connector396br /9.4 处理HTTP请求399br /9.4.1 Accep399br /9.4.2 请求处理401

  编辑推荐
span id="abstract-all"/span结构清晰。总体上循序,逐步提升。每一章都各自有鲜明的侧,有利于读者快速抓住。
br理论结合实战。本书注重实战,书中重要的知识点都安排了代码实例,帮助读者理解。同时也不忘记对系统的内部实现原行深度剖析。
br通俗易懂。尽量避免采用过于理论的描述方式,简单的白话文风格贯穿全书,配图基本上为手工绘制,降低了理解难度,并尽量做到读者在阅读过程中少盲点、无盲点。
br读者评价:脉络清晰,查阅方便,讲解到位,通俗易懂,多线程和高并发专业必备。
br
br 

  媒体评论
span id="mediaFeedback-all"/span