Java避坑宝典《Java业务开发常见错误100例》上线了
写这个专栏的缘起
之前我写过一篇博客:《朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑》,引起的关注还是挺多的。后来和极客时间的编辑一拍即合决定以这个为题写一个专栏。其实所谓坑就是容易忽略但是不容易发现的问题,大部分生产事故都是发布、运维相关的配置引起,真正代码中的问题上线后产生问题的坑并不多,虽然我接触过很多生产事故,但是能提炼出写代码的坑的点不多。所以在内容整理方面我花了很多时间,最终我总结出100+的点,形成了这样一个30+文章的专栏。
专栏名字叫《Java业务开发常见错误100例》,点击这里可以进入专栏。不仅仅涉及代码,还涉及设计方面的思考以及安全方面的误区。在这个课程中,每节课都是Java业务开发的一个核心关注点,每个知识点对应2~5个案例,并按照“知识介绍->还原业务场景->错误实现->正确实现->原理分析->小总结”来讲解每个案例,不仅帮你避开这个知识点的常见坑,更让你能知道产生坑的根本原因,提升自己的技术能力。这些内容不仅可以帮助你写出更好的代码,同时也有助于你进一步补全你的知识网增加面试的信心。你甚至可以把这些案例当作代码审核的Checklist,帮助别的项目一起避坑,帮助团队一起成长。
专栏的内容
目录
开篇词
开篇词 | 业务代码真的会有这么多坑?
代码篇
01 | 使用了并发工具类库,线程安全就高枕无忧了吗?
02 | 代码加锁:不要让“锁”事成为烦心事
03 | 线程池:业务代码最常用也最容易犯错的组件
04 | 连接池:别让连接池帮了倒忙
05 | HTTP调用:你考虑到超时、重试、并发了吗?
06 | 20%的业务代码的Spring声明式事务,可能都没处理正确
07 | 数据库索引:索引不是万能药
08 | 判等问题:程序里如何确定你就是你?
09 | 数值计算:注意精度、舍入和溢出问题
10 | 集合类:坑满地的List列表操作
11 | 空值处理:分不清楚的null和恼人的空指针
12 | 异常处理:别让自己在出问题的时候变为瞎子
13 | 日志:日志记录真没你想象的那么简单
14 | 文件IO:实现高效正确的文件读写并非易事
15 | 序列化:一来一回,你还是原来的你吗?
16 | 用好Java 8的日期时间类,少踩一些“老三样”的坑
17 | 别以为“自动挡”就不可能出现OOM
18 | 当反射、注解和泛型遇到OOP时,会有哪些坑?
19 | Spring框架:IoC和AOP是扩展的核心
20 | Spring框架:帮我们做了很多工作也带来了复杂度
设计篇
21 | 代码重复:搞定代码重复的三个绝招
22 | 接口设计:系统间对话的语言,一定要统一
23 | 缓存设计:缓存可以锦上添花也可以落井下石
24 | 业务代码写完,就意味着生产就绪了?
25 | 异步处理好用,但非常容易用错
26 | 数据存储:NoSQL与RDBMS如何取长补短、相辅相成?
安全篇
27 | 数据源头:任何客户端的东西都不可信任
28 | 安全兜底:涉及钱时,必须考虑防刷、限量和防重
29 | 数据和代码:数据就是数据,代码就是代码
30 | 敏感数据:如何正确保存和传输敏感数据?
不定期加餐
加餐1:带你吃透课程中Java 8的那些重要知识点
加餐2:定位应用问题,排错套路很重要
加餐3:分析定位Java问题,一定要用好这些工具(一)
加餐4:分析定位Java问题,一定要用好这些工具(二)
加餐5:这15年来,我是如何在工作中学习技术和英语的?
结束语
结束语 | 写代码时,如何才能尽量避免踩坑?
知识点脑图
你将获得
- 130 个代码坑点及其解决方案
- 100 个场景化案例解读
- 25 次源码深度解析
- 使用 10 个工具定位问题根因
专栏有下面的六个特点
- 全面性:我们经常可以在一些公众号中看到有关Java代码踩坑的一些文章,这些内容比较零散,看过之后不会留下深刻印象,本专栏中的100个案例可谓是Java代码避坑的大全,内容完整且连续,并且有因有果,这些内容不仅仅可以帮助你写出更好的代码,同时也有助于你进一步补全你的知识网增加面试的信心。你甚至还可以把二级目录当作代码审核的Checklist,帮助别的项目一起成长和避坑。
- 不仅仅是代码层面的坑:《Effective Java》和《码出高效:Java 开发手册》是两本非常不错的主要介绍Java代码坑的书。但前者注重Java语言、后者更注重规范,而本课程覆盖使用Java进行业务开发涉及的各种常用框架和技术,不会局限于Java或者JDK本身,且设计篇、安全篇会从更高的视角去看开发时遇到的各种误区。因此,这个课程的讲授思路和内容,和这两本书有较大区别。
- 深入浅出:专栏中有一部分案例涉及到一些比较复杂的场景,或是一些高级Java特性,对于这些案例,我会尝试使用通俗的语言配合一些示意图帮助你理解。
- 知所以然也知其所以然:对于代码中的坑,我不仅仅会给出一个甚至多个解决方案,并且我还会分析其根本原因,只要篇幅允许大部分案例我都会进行相关源码剖析,让你不仅仅知道怎么避坑,更知道其中的原理。
- 授人以鱼也授人以渔:有许多坑来自实际生产案例的总结,在遇到问题的时候,我们一定是先通过经验加上使用工具来定位分析问题,然后才定位到坑,并不是一开始就知道为什么的。在专栏中,我会尽可能把分析问题的过程完整呈现给你,而不是直接告诉你为什么,这样以后遇到问题你也有解决问题的思路。专栏中,我们会涉及到jclasslib、jvisuamlvm、jconsole、MAT、阿里Arthas、wireshark等工具。
- 贴近实际有场景:不同于一般教科书式的编程书籍,只是在讲述语法。专栏的大多数案例来自实际真实的案例,并且在专栏中我还会经常分享一些最佳实践,体现的是我多年工作经验的总结和思考。
赶紧点击这里进入专栏吧
Java避坑宝典《Java业务开发常见错误100例》上线了的更多相关文章
- WCF分布式开发常见错误解决(1):An error occurred while attempting to find services at...添加服务引用出错
WCF分布式开发常见错误解决(1):An error occurred while attempting to find services at...添加服务引用出错 当我们在客户端添 ...
- 开发常见错误解决(6)WSE3.0未处理的WebException,未处理的Web异常,基础连接以及关闭...
开发常见错误解决(6)WSE3.0未处理的WebException,未处理的Web异常,基础连接以及关闭. 我们在调试WSE服务端服务的时候会抛出,未处理的Web异常,基础连接以及关闭的异常信息.如图 ...
- 前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?
传统混合移动App开发模式,通常会使用WebView作为桥接层,但随着iOS和Android应用商店审核政策日趋严格,有时会被错误判定为简单网页打包成App,上架容易遭到拒绝. 既然可能存在风险,那我 ...
- 盘点 2021|「避坑宝典」为大家分享一下笔者在 2021 年所遇到“匪夷所思”的 Bug 趣事(上)
正版内容:https://xie.infoq.cn/article/3145cd5f525fe26ce9d574c8d 2021尾声想跟大家说的话 虚则实之 引用 https://xie.infoq. ...
- Android开发常见错误汇总
[错误信息] [2011-01-19 16:39:10 - ApiDemos] WARNING: Application does not specify an API level requireme ...
- 开发常见错误之 : Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar
SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackO ...
- 避坑手册 | JAVA编码中容易踩坑的十大陷阱
JAVA编码中存在一些容易被人忽视的陷阱,稍不留神可能就会跌落其中,给项目的稳定运行埋下隐患.此外,这些陷阱也是面试的时候面试官比较喜欢问的问题. 本文对这些陷阱进行了统一的整理,让你知道应该如何避免 ...
- 【Java】3到5年开发常见的Java面试题
一.Java基础和高级 String类为什么是final的. HashMap的源码,实现原理,底层结构. 反射中,Class.forName和classloader的区别 session和cookie ...
- HR面试:过五关斩六将后,小心阴沟翻船!(史上最全、避坑宝典)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
随机推荐
- django框架进阶-CSRF认证
############################################### """ django中csrf的实现机制 #第一步:django第一次响应 ...
- 对Java8新的日期时间类的学习(二)
示例11 在Java中如何判断某个日期是在另一个日期的前面还是后面 这也是实际项目中常见的一个任务.你怎么判断某个日期是在另一个日期的前面还是后面,或者正好相等呢?在Java 8中,LocalDate ...
- Office Lens:口袋中的扫描仪
Lens:口袋中的扫描仪" title="Office Lens:口袋中的扫描仪"> 编者按:开会时,你是否觉得白板上天马行空的讨论记录誊抄起来费时费事又难以共享- ...
- MSSS攝影大賽計劃書(第三版)
比賽內容:對香港的城市風景以及自然風光的攝影 預期成果: 提升同學對香港的認識,鼓勵學生走出大學學園去瞭解香港,同時豐富會員的課餘活動,培養同學的興趣愛好 比賽時間:4月1-15日 最後作品提交時間: ...
- 第十六届“二十一世纪的计算”学术研讨会 牛津大学肿瘤成像学教授Michael Brady主题演讲
Computing and Healthcare 牛津大学肿瘤成像学教授Michael Brady主题演讲" title="第十六届"二十一世纪的计算"学术研讨 ...
- 用JSON报的一个错误java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeExcep
以前在做项目的时候就曾接触过JSON的技术,但那个时候是项目经理把所有该配制的都配了,工具类也提供了,如何使用也跟我们说了,那个时候只是觉得很好用,倒没有研究过. 今天自己写了一个JSON的例子,可以 ...
- apache和tomcat的关系
apache和tomcat的关系: 举个例子:apache是一辆卡车,上面可以装一些东西如html等.但是不能装水,要装水必须要有容器(桶),tomcat就是一个桶(装像JAVA这样的水),而这个桶也 ...
- zabbix配置文件详解--服务(server)端、客户(agent)端、代理(proxy)端
在zabbix服务(server)端.客户(agent)端.代理(proxy)端分别对应着一个配置文件,即:zabbix_server.conf,zabbix_agentd.conf,zabbix_p ...
- ZOJ-4089-Little Sub and Isomorphism Sequences
给定你个数组,以及一些单点修改,以及询问,每次询问需要求得,最长的字串长度,它在其他位置存在同构. 当存在两个不相交的区间同构时,如: 1.2.…….n -1.n.n + 1.…….m.m + 1.m ...
- Java IO: 网络
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 校对:方腾飞 Java中网络的内容或多或少的超出了Java IO的范畴.关于Java网络更多 ...