0 0 0

Java实战.第2版.pdf

女孩不可爱矜持在作怪
1月前 290
我用夸克网盘分享了「 Java实战.第2版.pdf」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。
作者: [英] 拉乌尔-加布里埃尔 • 乌尔玛/[意] 马里奥 • 富斯科/[英] 艾伦 • 米克罗夫特 出版社: 人民邮电出版社 出品方: 图灵教育 原作名: Modern Java in Action 译者: 陆明刚/劳佳 出版年: 2019-11 页数: 508 定价: 119.00元 装帧: 平装 丛书: 图灵程序设计丛书·Java系列 ISBN: 9787115521484

内容简介

作者简介: 拉乌尔–加布里埃尔•乌尔玛(Raoul-Gabriel Urma) 剑桥大学计算机科学博士,软件工程师,培训师,现任Cambridge Spark公司CEO。在谷歌、eBay、甲骨文和高盛等大公司工作过,并参与过多个创业项目。活跃在技术社区,经常撰写技术文章,多次受邀在国际会议上做技术讲座。 马里奥•富斯科(Mario Fusco) Red Hat高级软件工程师,负责JBoss规则引擎Drools的核心开发。拥有丰富的Java开发经验,曾领导媒体公司、金融部门等多个行业的企业级项目开发。对函数式编程和领域特定语言等有浓厚兴趣,并创建了开放源码库lambdaj。 艾伦•米克罗夫特(Alan Mycroft) 剑桥大学计算机实验室计算学教授,剑桥大学罗宾逊学院研究员,欧洲编程语言和系统协会联合创始人,树莓派基金会联合创始人和理事。发表过大约100篇研究论文,指导过20多篇博士论文。他的研究主要关注编程语言及其语义、优化和实施。他与业界联系紧密,曾于学术休假期间在AT&T实验室和英特尔工作,还创立了Codemist公司,该公司设计了最初的ARM C编译器Norcroft。 译者简介: 陆明刚 毕业于四川大学,目前在Dell EMC中国卓越研发集团任高级主管工程师,曾任趋势科技中国软件研发中心技术经理,在信息科学和工程领域有十余年的实践和研究经验,拥有多项中国及美国专利。关注JVM性能调优和大数据及其实践,喜欢挖掘技术背后的内幕并乐此不疲。 劳佳 上海交通大学硕士,现任SAP(美国)高级软件支持顾问。业余爱好语言、数学、设计,英、法双语译者,近年翻译出版了《咨询的奥秘》《卓越程序员密码》《计算进化史:改变数学的命运》等书。

作者简介

作者简介: 拉乌尔–加布里埃尔•乌尔玛(Raoul-Gabriel Urma) 剑桥大学计算机科学博士,软件工程师,培训师,现任Cambridge Spark公司CEO。在谷歌、eBay、甲骨文和高盛等大公司工作过,并参与过多个创业项目。活跃在技术社区,经常撰写技术文章,多次受邀在国际会议上做技术讲座。 马里奥•富斯科(Mario Fusco) Red Hat高级软件工程师,负责JBoss规则引擎Drools的核心开发。拥有丰富的Java开发经验,曾领导媒体公司、金融部门等多个行业的企业级项目开发。对函数式编程和领域特定语言等有浓厚兴趣,并创建了开放源码库lambdaj。 艾伦•米克罗夫特(Alan Mycroft) 剑桥大学计算机实验室计算学教授,剑桥大学罗宾逊学院研究员,欧洲编程语言和系统协会联合创始人,树莓派基金会联合创始人和理事。发表过大约100篇研究论文,指导过20多篇博士论文。他的研究主要关注编程语言及其语义、优化和实施。他与业界联系紧密,曾于学术休假期间在AT&T实验室和英特尔工作,还创立了Codemist公司,该公司设计了最初的ARM C编译器Norcroft。 译者简介: 陆明刚 毕业于四川大学,目前在Dell EMC中国卓越研发集团任高级主管工程师,曾任趋势科技中国软件研发中心技术经理,在信息科学和工程领域有十余年的实践和研究经验,拥有多项中国及美国专利。关注JVM性能调优和大数据及其实践,喜欢挖掘技术背后的内幕并乐此不疲。 劳佳 上海交通大学硕士,现任SAP(美国)高级软件支持顾问。业余爱好语言、数学、设计,英、法双语译者,近年翻译出版了《咨询的奥秘》《卓越程序员密码》《计算进化史:改变数学的命运》等书。

网友热评

admin: 很赞超级赞!一直在用stream和lambda语法,但始终感觉有点不顺手,读完这本书后感觉顺溜很多啦!毕竟百度上全是cv的东西,没一点有用的。学新技术还是看书老的全面系统。 usc3l: #馆 #享 用第一版的源码学习了jdk8,再看看第二版,变动比较小,加了一些jdk9等内容。jdk8和jdk5一样,注定就是一个“xp”样的存在。

图书目录

第一部分基础知识 第1章 Java8、9、10以及11的变化  2 1.1为什么要关心Java的变化  2 1.2Java怎么还在变  4 1.2.1Java在编程语言生态系统中的位置  5 1.2.2流处理  6 1.2.3用行为参数化把代码传递给方法  7 1.2.4并行与共享的可变数据  8 1.2.5Java需要演变  9 1.3Java中的函数  9 1.3.1方法和Lambda作为一等值  10 1.3.2传递代码:一个例子  11 1.3.3从传递方法到Lambda  13 1.4流  14 1.5默认方法及Java模块  17 1.6来自函数式编程的其他好思想  19 1.7小结  20 第2章 通过行为参数化传递代码  22 2.1应对不断变化的需求  23 2.1.1初试牛刀:筛选绿苹果  23 2.1.2再展身手:把颜色作为参数  23 2.1.3第三次尝试:对你能想到的每个属性做筛选  24 2.2行为参数化  25 2.3对付啰唆  30 2.3.1匿名类  30 2.3.2第五次尝试:使用匿名类  31 2.3.3第六次尝试:使用Lambda表达式  32 2.3.4第七次尝试:将List类型抽象化  33 2.4真实的例子  33 2.4.1用Comparator来排序  33 2.4.2用Runnable执行代码块  34 2.4.3通过Callable返回结果  35 2.4.4GUI事件处理  35 2.5小结  36 第3章 Lambda表达式  37 3.1Lambda管中窥豹  37 3.2在哪里以及如何使用Lambda  40 3.2.1函数式接口  40 3.2.2函数描述符  42 3.3把Lambda付诸实践:环绕执行模式  44 3.3.1第1步:记得行为参数化  44 3.3.2第2步:使用函数式接口来传递行为  45 3.3.3第3步:执行一个行为  45 3.3.4第4步:传递Lambda  46 3.4使用函数式接口  47 3.4.1Predicate  47 3.4.2Consumer  47 3.4.3Function  48 3.5类型检查、类型推断以及限制  52 3.5.1类型检查  52 3.5.2同样的Lambda,不同的函数式接口  53 3.5.3类型推断  55 3.5.4使用局部变量  56 3.6方法引用  57 3.6.1管中窥豹  57 3.6.2构造函数引用  60 3.7Lambda和方法引用实战  62 3.7.1第1步:传递代码  62 3.7.2第2步:使用匿名类  62 3.7.3第3步:使用Lambda表达式  62 3.7.4第4步:使用方法引用  63 3.8复合Lambda表达式的有用方法  63 3.8.1比较器复合  64 3.8.2谓词复合  64 3.8.3函数复合  65 3.9数学中的类似思想  66 3.9.1积分  66 3.9.2与Java  8的Lambda联系起来  68 3.10小结  68 第二部分使用流进行函数式数据处理 第4章 引入流  72 4.1流是什么  72 4.2流简介  76 4.3流与集合  78 4.3.1只能遍历一次  79 4.3.2外部迭代与内部迭代  80 4.4流操作  82 4.4.1中间操作  83 4.4.2终端操作  84 4.4.3使用流  84 4.5路线图  85 4.6小结  85 第5章 使用流  86 5.1筛选  87 5.1.1用谓词筛选  87 5.1.2筛选各异的元素  87 5.2流的切片  88 5.2.1使用谓词对流进行切片  88 5.2.2截短流  90 5.2.3跳过元素  90 5.3映射  91 5.3.1对流中每一个元素应用函数  91 5.3.2流的扁平化  92 5.4查找和匹配  95 5.4.1检查谓词是否至少匹配一个元素  95 5.4.2检查谓词是否匹配所有元素  96 5.4.3查找元素  96 5.4.4查找第一个元素  97 5.5归约  98 5.5.1元素求和  98 5.5.2最大值和最小值  100 5.6付诸实践  103 5.6.1领域:交易员和交易  103 5.6.2解答  104 5.7数值流  106 5.7.1原始类型流特化  107 5.7.2数值范围  108 5.7.3数值流应用:勾股数  108 5.8构建流  111 5.8.1由值创建流  111 5.8.2由可空对象创建流  111 5.8.3由数组创建流  112 5.8.4由文件生成流  112 5.8.5由函数生成流:创建无限流  113 5.9概述  116 5.10小结  116 第6章 用流收集数据  118 6.1收集器简介  119 6.1.1收集器用作高级归约  119 6.1.2预定义收集器  120 6.2归约和汇总  121 6.2.1查找流中的最大值和最小值  121 6.2.2汇总  122 6.2.3连接字符串  123 6.2.4广义的归约汇总  124 6.3分组  127 6.3.1操作分组的元素  128 6.3.2多级分组  130 6.3.3按子组收集数据  131 6.4分区  134 6.4.1分区的优势  135 6.4.2将数字按质数和非质数分区  136 6.5收集器接口  138 6.5.1理解Collector接口声明的方法  139 6.5.2全部融合到一起  143 6.6开发你自己的收集器以获得更好的性能  144 6.6.1仅用质数做除数  145 6.6.2比较收集器的性能  148 6.7小结  150 第7章 并行数据处理与性能  151 7.1并行流  152 7.1.1将顺序流转换为并行流  52 7.1.2测量流性能  154 7.1.3正确使用并行流  158 7.1.4高效使用并行流  159 7.2分支/合并框架  161 7.2.1使用RecursiveTask  161 7.2.2使用分支/合并框架的最佳做法  164 7.2.3工作窃取  165 7.3Spliterator  166 7.3.1拆分过程  167 7.3.2实现你自己的Spliterator  168 7.4小结  173 第三部分使用流和Lambda进行高效编程 第8章 CollectionAPI的增强功能  176 8.1集合工厂  176 8.1.1List工厂  177 8.1.2Set工厂  178 8.1.3Map工厂  179 8.2使用List和Set  180 8.2.1removeIf方法  180 8.2.2replaceAll方法  181 8.3使用Map  181 8.3.1forEach方法  182 8.3.2排序  182 8.3.3getOrDefault方法  183 8.3.4计算模式  183 8.3.5删除模式  184 8.3.6替换模式  185 8.3.7merge方法  185 8.4改进的ConcurrentHashMap  187 8.4.1归约和搜索  187 8.4.2计数  188 8.4.3Set视图  188 8.5小结  188 第9章 重构、测试和调试  189 9.1为改善可读性和灵活性重构代码  189 9.1.1改善代码的可读性  190 9.1.2从匿名类到Lambda表达式的转换  190 9.1.3从Lambda表达式到方法引用的转换  191 9.1.4从命令式的数据处理切换到Stream  193 9.1.5增加代码的灵活性  193 9.2使用Lambda重构面向对象的设计模式  195 9.2.1策略模式  196 9.2.2模板方法  197 9.2.3观察者模式  198 9.2.4责任链模式  201 9.2.5工厂模式  202 9.3测试Lambda表达式  204 9.3.1测试可见Lambda函数的行为  204 9.3.2测试使用Lambda的方法的行为  205 9.3.3将复杂的Lambda表达式分为不同的方法  205 9.3.4高阶函数的测试  206 9.4调试  206 9.4.1查看栈跟踪  206 9.4.2使用日志调试  208 9.5小结  209 第10章 基于Lambda的领域特定语言  210 10.1领域特定语言  212 10.1.1DSL的优点和弊端  212 10.1.2JVM中已提供的DSL解决方案  214 10.2现代JavaAPI中的小型DSL  217 10.2.1把StreamAPI当成DSL去操作集合  219 10.2.2将Collectors作为DSL汇总数据  220 10.3使用Java创建DSL的模式与技巧  221 10.3.1方法链接  224 10.3.2使用嵌套函数  226 10.3.3使用Lambda表达式的函数序列  228 10.3.4把它们都放到一起  230 10.3.5在DSL中使用方法引用  232 10.4Java  8DSL的实际应用  234 10.4.1jOOQ  235 10.4.2Cucumber  236 10.4.3SpringIntegration  238 10.5小结  239 第四部分无所不在的Java 第11章 用Optional取代null  242 11.1如何为缺失的值建模  243 11.1.1采用防御式检查减少NullPointerException  243 11.1.2null带来的种种问题  245 11.1.3其他语言中null的替代品  245 11.2Optional类入门  246 11.3应用Optional的几种模式  248 11.3.1创建Optional对象  248 11.3.2使用map从Optional对象中提取和转换值  248 11.3.3使用flatMap链接Optional对象  249 11.3.4操纵由Optional对象构成的Stream  253 11.3.5默认行为及解引用Optional对象  254 11.3.6两个Optional对象的组合  255 11.3.7使用filter剔除特定的值  257 11.4使用Optional的实战示例  258 11.4.1用Optional封装可能为null的值  259 11.4.2异常与Optional的对比  259 11.4.3基础类型的Optional对象,以及为什么应该避免使用它们  260 11.4.4把所有内容整合起来  260 11.5小结  262 第12章 新的日期和时间API  263 12.1LocalDate、LocalTime、LocalDateTime、Instant、Duration以及Period  264 12.1.1使用LocalDate和LocalTime  264 12.1.2合并日期和时间  265 12.1.3机器的日期和时间格式  266 12.1.4定义Duration或Period  267 12.2操纵、解析和格式化日期  268 12.2.1使用TemporalAdjuster  270 12.2.2打印输出及解析日期–时间对象  272 12.3处理不同的时区和历法  274 12.3.1使用时区  274 12.3.2利用和UTC/格林尼治时间的固定偏差计算时区  275 12.3.3使用别的日历系统  276 12.4小结  277 第13章 默认方法  278 13.1不断演进的API  280 13.1.1初始版本的API  281 13.1.2第二版API  281 13.2概述默认方法  283 13.3默认方法的使用模式  285 13.3.1可选方法  285 13.3.2行为的多继承  286 13.4解决冲突的规则  289 13.4.1解决问题的三条规则  289 13.4.2选择提供了最具体实现的默认方法的接口  290 13.4.3冲突及如何显式地消除歧义  291 13.4.4菱形继承问题  293 13.5小结  294 第14章 Java模块系统  295 14.1模块化的驱动力:软件的推理  295 14.1.1关注点分离  295 14.1.2信息隐藏  296 14.1.3Java软件  296 14.2为什么要设计Java模块系统  297 14.2.1模块化的局限性  297 14.2.2单体型的JDK  298 14.2.3与OSGi的比较  299 14.3Java模块:全局视图  300 14.4使用Java模块系统开发应用  301 14.4.1从头开始搭建一个应用  302 14.4.2细粒度和粗粒度的模块化  303 14.4.3Java模块系统基础  303 14.5使用多个模块  304 14.5.1exports子句  304 14.5.2requires子句  305 14.5.3命名  306 14.6编译及打包  306 14.7自动模块  310 14.8模块声明及子句  311 14.8.1requires  311 14.8.2exports  311 14.8.3requires的传递  311 14.8.4exportsto  312 14.8.5open和opens  312 14.8.6uses和provides  313 14.9通过一个更复杂的例子了解更多  313 14.10小结  314 第五部分提升Java的并发性 第15章 CompletableFuture及反应式编程背后的概念  316 15.1为支持并发而不断演进的Java  318 15.1.1线程以及更高层的抽象  319 15.1.2执行器和线程池  320 15.1.3其他的线程抽象:非嵌套方法调用  322 15.1.4你希望线程为你带来什么  324 15.2同步及异步API  324 15.2.1Future风格的API  326 15.2.2反应式风格的API  327 15.2.3有害的睡眠及其他阻塞式操作  328 15.2.4实战验证  329 15.2.5如何使用异步API进行异常处理  330 15.3“线框–管道”模型  331 15.4为并发而生的CompletableFuture和结合器  332 15.5“发布–订阅”以及反应式编程  335 15.5.1示例:对两个流求和  337 15.5.2背压  341 15.5.3一种简单的真实背压  341 15.6反应式系统和反应式编程  342 15.7路线图  342 15.8小结  343 第16章 CompletableFuture:组合式异步编程  344 16.1Future接口  344 16.1.1Future接口的局限性  346 16.1.2使用CompletableFuture构建异步应用  346 16.2实现异步API  347 16.2.1将同步方法转换为异步方法  348 16.2.2错误处理  350 16.3让你的代码免受阻塞之苦  352 16.3.1使用并行流对请求进行并行操作  353 16.3.2使用CompletableFuture发起异步请求  353 16.3.3寻找更好的方案  355 16.3.4使用定制的执行器  356 16.4对多个异步任务进行流水线操作  358 16.4.1实现折扣服务  358 16.4.2使用Discount服务  359 16.4.3构造同步和异步操作  360 16.4.4将两个CompletableFuture对象整合起来,无论它们是否存在依赖  363 16.4.5对Future和Completable-Future的回顾  364 16.4.6高效地使用超时机制  365 16.5响应CompletableFuture的completion事件  366 16.5.1对最佳价格查询器应用的优化  367 16.5.2付诸实践  368 16.6路线图  369 16.7小结  369 第17章 反应式编程  370 17.1反应式宣言  371 17.1.1应用层的反应式编程  371 17.1.2反应式系统  373 17.2反应式流以及FlowAPI  373 17.2.1Flow类  374 17.2.2创建你的第一个反应式应用  377 17.2.3使用Processor转换数据  381 17.2.4为什么Java并未提供FlowAPI的实现  383 17.3使用反应式库RxJava  384 17.3.1创建和使用Observable  385 17.3.2转换及整合多个Observable  392 第六部分函数式编程以及Java未来的演进 第18章 函数式的思考  396 18.1实现和维护系统  396 18.1.1共享的可变数据  397 18.1.2声明式编程  398 18.1.3为什么要采用函数式编程  399 18.2什么是函数式编程  399 18.2.1函数式Java编程  400 18.2.2引用透明性  402 18.2.3面向对象的编程和函数式编程的对比  402 18.2.4函数式编程实战  403 18.3递归和迭代  405 18.4小结  408 第19章 函数式编程的技巧  409 19.1无处不在的函数  409 19.1.1高阶函数  410 19.1.2柯里化  411 19.2持久化数据结构  412 19.2.1破坏式更新和函数式更新的比较  413 19.2.2另一个使用Tree的例子  415 19.2.3采用函数式的方法  416 19.3Stream的延迟计算  418 19.3.1自定义的Stream  418 19.3.2创建你自己的延迟列表  420 19.4模式匹配  425 19.4.1访问者模式  425 19.4.2用模式匹配力挽狂澜  426 19.5杂项  429 19.5.1缓存或记忆表  429 19.5.2“返回同样的对象”意味着什么  430 19.5.3结合器  431 19.6小结  432 第20章 面向对象和函数式编程的混合:Java和Scala的比较  433 20.1Scala简介  434 20.1.1你好,啤酒  434 20.1.2基础数据结构:List、Set、Map、Tuple、Stream以及Option  436 20.2函数  440 20.2.1Scala中的一等函数  441 20.2.2匿名函数和闭包  442 20.2.3柯里化  443 20.3类和trait  444 20.3.1更加简洁的Scala类  445 20.3.2Scala的trait与Java  8的接口对比  446 20.4小结  447 第21章 结论以及Java的未来  448 21.1回顾Java8的语言特性  448 21.1.1行为参数化(Lambda以及方法引用)  449 21.1.2流  449 21.1.3CompletableFuture  450 21.1.4Optional  450 21.1.5FlowAPI  451 21.1.6默认方法  451 21.2Java  9的模块系统  451 21.3Java  10的局部变量类型推断  453 21.4Java的未来  454 21.4.1声明处型变  454 21.4.2模式匹配  454 21.4.3更加丰富的泛型形式  455 21.4.4对不变性的更深层支持  457 21.4.5值类型  458 21.5让Java发展得更快  461 21.6写在最后的话  462 附录A其他语言特性的更新  463 附录B其他类库的更新  467 附录C如何以并发方式在同一个流上执行多种操作  475 附录DLambda表达式和JVM字节码  483

Java实战.第2版.pdf"网盘下载"

版权说明

1、本站不保存、不存储任何实质资源,以上二维码指向为网盘资源链接,其内容归对应版权方所有
2、如有侵犯版权的情况,请点击下面举报/反馈按钮反馈或发送邮件[email protected]投诉说明情况
3、我们核实后将第一时间删除相关页面内容,谢谢理解和配合

这些人下载过 (12)
  • 路过四月桃林
  • 奥利奥变薄了
  • 以眨眼干杯
  • 眸间的发红无力
  • 有翅膀就一定能飞吗
  • 无从弥补
  • 跟我熟的人都知道我很疯
  • 何其不幸
  • 余歌
  • 热情回应
  • 梦吹角
  • 几多欢颜
最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!