搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
Java开发坑点解析(从根因分析到最佳实践)
0.00     定价 ¥ 119.80
图书来源: 浙江图书馆(由浙江新华配书)
此书还可采购25本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787115630568
  • 作      者:
    作者:朱晔|责编:杨海玲
  • 出 版 社 :
    人民邮电出版社
  • 出版日期:
    2024-01-01
收藏
畅销推荐
内容介绍
本书从整个Java后端研发的视角,通过大量的案例分析日常开发过程中可能遇到的150多个坑点及其解决方案,并讨论一些best实践。这些坑点涵盖编码(不仅涉及Java语法层面,还涉及多线程、连接池、数据库索引、事务、日志、Spring框架等层面)、系统设计、代码安全等方面。本书在剖析这些坑点时还会讲解排查思路和相关工具的使用,让读者不仅能了解常见的坑点,还能具备一定的问题分析能力,以便日后自行排查更多的坑点。
展开
目录
第1章 Java 8中常用的重要知识点
1.1 在项目中使用Lambda表达式和流操作
1.2 Lambda表达式
1.3 使用Java 8简化代码
1.3.1 使用流操作简化集合操作
1.3.2 使用可空类型简化判空逻辑
1.3.3 使用Java 8的一些新类、新方法获得函数式编程体验
1.4 并行流
1.5 流操作详解
1.5.1 创建流
1.5.2 filter
1.5.3 map
1.5.4 flatMap
1.5.5 sorted
1.5.6 distinct
1.5.7 skip和limit
1.5.8 collect
1.5.9 groupingBy
1.5.10 partitioningBy
1.6 小结
1.7 思考与讨论
第2章 代码篇
2.1 使用了并发工具类库,并不等于就没有线程安全问题了
2.1.1 没有意识到线程重用导致用户信息错乱的bug
2.1.2 使用了线程安全的并发工具,并不代表解决了所有线程安全问题
2.1.3 没有充分了解并发工具的特性,从而无法发挥其威力
2.1.4 没有认清并发工具的使用场景,因而导致性能问题
2.1.5 小结
2.1.6 思考与讨论
2.2 代码加锁:不要让锁成为烦心事
2.2.1 加锁前要清楚锁和被保护的对象是不是一个层面的
2.2.2 加锁要考虑锁的粒度和场景问题
2.2.3 多把锁要小心死锁问题
2.2.4 小结
2.2.5 思考与讨论
2.3 线程池:业务代码中最常用也最容易犯错的组件
2.3.1 线程池的声明需要手动进行
2.3.2 线程池线程管理策略详解
2.3.3 务必确认清楚线程池本身是不是复用的
2.3.4 需要仔细斟酌线程池的混用策略
2.3.5 小结
2.3.6 思考与讨论
2.3.7 扩展阅读
2.4 连接池:别让连接池帮了倒忙
2.4.1 注意鉴别客户端SDK是否基于连接池
2.4.2 使用连接池务必确保复用
2.4.3 连接池的配置不是一成不变的
2.4.4 小结
2.4.5 思考与讨论
2.5 HTTP调用:你考虑超时、重试、并发了吗
2.5.1 配置连接超时和读取超时参数的学问
2.5.2 Feign和Ribbon配合使用,你知道怎么配置超时吗
2.5.3 你知道Ribbon会自动重试请求吗
2.5.4 并发限制了爬虫的抓取能力
2.5.5 小结
2.5.6 思考与讨论
2.5.7 扩展阅读
2.6 20%的业务代码的Spring声明式事务可能都没处理正确
2.6.1 小心Spring的事务可能没有生效
2.6.2 事务即便生效也不一定能回滚
2.6.3 请确认事务传播配置是否符合自己的业务逻辑
2.6.4 小结
2.6.5 思考与讨论
2.6.6 扩展阅读
2.7 数据库索引:索引不是万能药
2.7.1 InnoDB是如何存储数据的
2.7.2 聚簇索引和二级索引
2.7.3 考虑额外创建二级索引的代价
2.7.4 不是所有针对索引列的查询都能用上索引
2.7.5 数据库基于成本决定是否走索引
2.7.6 小结
2.7.7 思考与讨论
2.8 判等问题:程序里如何确定你就是你
2.8.1 注意equals和==的区别
2.8.2 实现一个equals没有这么简单
2.8.3 hashCode和equals要配对实现
2.8.4 注意compareTo和equals的逻辑一致性
2.8.5 小心Lombok生成代码的坑
2.8.6 小结
2.8.7 思考与讨论
2.8.8 扩展阅读
2.9 数值计算:注意精度、舍入和溢出问题
2.9.1 “危险”的Double
2.9.2 考虑浮点数舍入和格式化的方式
2.9.3 用equals做判等,就一定是对的吗
2.9.4 小心数值溢出问题
2.9.5 小结
2.9.6 思考与讨论
2.9.7 扩展阅读
2.10 集合类:坑满地的List列表操作
2.10.1 使用Arrays.asList把数据转换为List的3个坑
2.10.2 使用List.subList进行切片操作居然会导致OOM
2.10.3 一定要让合适的数据结构做合适的事情
2.10.4 小结
2.10.5 思考与讨论
2.11 空值处理:分不清楚的null和恼人的空指针
2.11.1 修复和定位恼人的空指针问题
2.11.2 POJO中属性的null到底代表了什么
2.11.3 小心MySQL中有关NULL的3个坑
2.11.4 小结
2.11.5 思考与讨论
2.12 异常处理:别让自己在出问题的时候变为盲人
2.12.1 捕获和处理异常容易犯的错
2.12.2 小心finally中的异常
2.12.3 需要注意JVM针对异常性能优化导致栈信息丢失的坑
2.12.4 千万别把异常定义为静态变量
2.12.5 提交线程池的任务出了异常会怎样
2.12.6 小结
2.12.7 思考与讨论
2.12.8 扩展阅读
2.13 日志:日志记录真没你想象得那么简单
2.13.1 为什么我的日志会重复记录
2.13.2 使用异步日志改善性能的坑
2.13.3 使用日志占位符就不需要进行日志级别判断了吗
2.13.4 小结
2.13.5 思考与讨论
2.13.6 扩展阅读
2.14 文件I/O:实现高效正确的文件读写并非易事
2.14.1 文件读写需要确保字符编码
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证