Java业务开发常见错误100例
朱晔
贝壳金服资深架构师
立即订阅
8913 人已学习
课程目录
已完结 47 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 业务代码真的会有这么多坑?
免费
代码篇 (23讲)
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框架:框架帮我们做了很多工作也带来了复杂度
答疑篇:代码篇思考题集锦(三)
设计篇 (7讲)
21 | 代码重复:搞定代码重复的三个绝招
22 | 接口设计:系统间对话的语言,一定要统一
23 | 缓存设计:缓存可以锦上添花也可以落井下石
24 | 业务代码写完,就意味着生产就绪了?
25 | 异步处理好用,但非常容易用错
26 | 数据存储:NoSQL与RDBMS如何取长补短、相辅相成?
答疑篇:设计篇思考题答案合集
安全篇 (5讲)
27 | 数据源头:任何客户端的东西都不可信任
28 | 安全兜底:涉及钱时,必须考虑防刷、限量和防重
29 | 数据和代码:数据就是数据,代码就是代码
30 | 如何正确保存和传输敏感数据?
答疑篇:安全篇思考题答案合集
加餐 (8讲)
31 | 加餐1:带你吃透课程中Java 8的那些重要知识点(一)
32 | 加餐2:带你吃透课程中Java 8的那些重要知识点(二)
33 | 加餐3:定位应用问题,排错套路很重要
34 | 加餐4:分析定位Java问题,一定要用好这些工具(一)
35 | 加餐5:分析定位Java问题,一定要用好这些工具(二)
36 | 加餐6:这15年来,我是如何在工作中学习技术和英语的?
答疑篇:加餐篇思考题答案合集
37 | 加餐7:程序员成长28计
结束语 (3讲)
结束语 | 写代码时,如何才能尽量避免踩坑?
结课测试 | 关于Java业务开发的100个常见错误,你都明白其中缘由了吗?
结课问卷获奖用户名单
Java业务开发常见错误100例
15
15
1.0x
00:00/00:00
登录|注册

答疑篇:设计篇思考题答案合集

朱晔 2020-05-15
你好,我是朱晔。
今天,我们继续一起分析这门课“设计篇”模块的第 21~26 讲的课后思考题。这些题目涉及了代码重复、接口设计、缓存设计、生产就绪、异步处理和数据存储这 6 大知识点。
接下来,我们就一一具体分析吧。

21 | 代码重复:搞定代码重复的三个绝招

问题 1:除了模板方法设计模式是减少重复代码的一把好手,观察者模式也常用于减少代码重复(并且是松耦合方式),Spring 也提供了类似工具(点击这里查看),你能想到观察者模式有哪些应用场景吗?
答:其实,和使用 MQ 来解耦系统和系统的调用类似,应用内各个组件之间的调用我们也可以使用观察者模式来解耦,特别是当你的应用是一个大单体的时候。观察者模式除了是让组件之间可以更松耦合,还能更有利于消除重复代码。
其原因是,对于一个复杂的业务逻辑,里面必然涉及到大量其它组件的调用,虽然我们没有重复写这些组件内部处理逻辑的代码,但是这些复杂调用本身就构成了重复代码。
我们可以考虑把代码逻辑抽象一下,抽象出许多事件,围绕这些事件来展开处理,那么这种处理模式就从“命令式”变为了“环境感知式”,每一个组件就好像活在一个场景中,感知场景中的各种事件,然后又把发出处理结果作为另一个事件。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Java业务开发常见错误100例》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥29.9
立即订阅
登录 后留言

精选留言(3)

  • 老师您好,一直想请教个问题:我们现在的项目目前正在将原来的老项目拆分为多个微服务,随之而来的一个就是分布式事务问题,一直没找到好的解决方案,请问老师您们是如何来处理分布式事务或者使用什么开源框架,能否提供几种选择。多谢老师!

    作者回复: 专栏不涉及架构,给你一个大方向:

    分布式事务:
    - 数据库层面 2PC/XA(直接使用中间件,比如Seata)
    - 应用层 TCC(服务接口需要实现三接口)
    - 微服务场景:Saga模式(针对状态机建模)
    数据库 + MQ的一致性:
    - 本地消息表
    - 事务消息
    涉及外部服务整体一致性:
    - 补偿 + 最终一致
    - 以外部服务为主,内部服务为辅思想

    2020-07-22
    1
  • Jeff.Smile
    老师,线程池的监控有没有什么好的方式?

    作者回复: 非bean自己写组件监控或者通过javaagent实现 bean的话就简单了

    2020-08-04
  • Michael
    老师,你好!
    redis集群模式下,根据模糊key删除缓存有什么好的办法?scan命令在集群下不行

    作者回复: https://paluch.biz/blog/162-iterate-over-all-keys-in-a-redis-cluster.html

    2020-07-31
收起评论
3
返回
顶部