代码精进之路
范学雷
Oracle首席软件工程师,Java SE安全组成员,OpenJDK评审成员
立即订阅
6350 人已学习
课程目录
已完结 47 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你写的每一行代码,都是你的名片
免费
第一模块:代码“规范”篇 (16讲)
01 | 从条件运算符说起,反思什么是好代码
02 | 把错误关在笼子里的五道关卡
03 | 优秀程序员的六个关键特质
04 | 代码规范的价值:复盘苹果公司的GoToFail漏洞
05 | 经验总结:如何给你的代码起好名字?
06 | 代码整理的关键逻辑和最佳案例
07 | 写好注释,真的是小菜一碟吗?
08 | 写好声明的“八项纪律”
09 | 怎么用好Java注解?
10 | 异常处理都有哪些陷阱?
11 | 组织好代码段,让人对它“一见钟情”
12丨组织好代码文件,要有“用户思维”
13 | 接口规范,是协作的合约
14 | 怎么写好用户指南?
15 | 编写规范代码的检查清单
16丨代码“规范”篇用户答疑
第二模块:代码“经济”篇 (14讲)
17 | 为什么需要经济的代码?
18丨思考框架:什么样的代码才是高效的代码?
19 | 怎么避免过度设计?
20 | 简单和直观,是永恒的解决方案
21 | 怎么设计一个简单又直观的接口?
22丨高效率,从超越线程同步开始!
23 | 怎么减少内存使用,减轻内存管理负担?
24 | 黑白灰,理解延迟分配的两面性
25 | 使用有序的代码,调动异步的事件
26 | 有哪些招惹麻烦的性能陷阱?
27 | 怎么编写可持续发展的代码?
28 | 怎么尽量“不写”代码?
29 | 编写经济代码的检查清单
30丨“代码经济篇”答疑汇总
第三模块:代码“安全”篇 (14讲)
31 | 为什么安全的代码这么重要?
32 | 如何评估代码的安全缺陷?
33 | 整数的运算有哪些安全威胁?
34 | 数组和集合,可变量的安全陷阱
35 | 怎么处理敏感信息?
36 | 继承有什么安全缺陷?
37 | 边界,信任的分水岭
38 | 对象序列化的危害有多大?
39 | 怎么控制好代码的权力?
40 | 规范,代码长治久安的基础
41 | 预案,代码的主动风险管理
42 | 纵深,代码安全的深度防御
43 | 编写安全代码的最佳实践清单
44 | “代码安全篇”答疑汇总
加餐 (1讲)
Q&A加餐丨关于代码质量,你关心的那些事儿
结束语 (1讲)
结束语|如何成为一个编程好手?
代码精进之路
登录|注册

25 | 使用有序的代码,调动异步的事件

范学雷 2019-03-01
同步和异步,是两个差距很大的编程模型。同步,就是很多事情一步一步地做,做完上一件,才能做下一件。异步,就是做事情不需要一步一步的,多件事情,可以独立地做。
比如一个有小鸟的笼子,如果打开笼门,一个一个地放飞小鸟,就是同步。如果拆了整个鸟笼,让小鸟随便飞,爱怎么飞就怎么飞,这就是异步。

为什么需要异步编程?

如果我们观察身边的事物,现实中有很多事情是以异步的方式运营的。我们挤地铁的时候,从来都是好几个人一起挤进去的。当我们正在挤地铁时,外面的风照旧吹,雨照旧下,天坛的大爷大妈们正在秀着各种绝活。没有任何事情会因为我们正在挤地铁就停止活动,等我们挤完地铁再恢复运转。
可是,要是说到其中的任何一个人,就不能同时做两件事情了。在挤地铁的时候,就不能在天坛秀绝活。我们写的程序也是这样,先执行第一行,再执行第二行。哪怕第二行再怎么费周折,第三行代码也要等着。
第二行代码可能需要执行大量的计算,需要很多的 CPU;也可能需要大量的传输,占用 I/O 通道。可是,它不一定会把所有的计算机资源都占用了。
如果第二行代码占用了 I/O,我们能不能把多余的 CPU 用起来?如果第二行代码占用了 CPU,我们能不能把空闲的 I/O 用起来? 也就是说,能不能把计算机整体资源更有效地使用起来?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《代码精进之路》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(4)

  • 黄智勇
    这就体现了我用nodejs来做开发的优势了,async/await 的方式,还可以开发异步程序像开发同步程序,开发效率一样高
    2019-03-02
    3
  • 正在减肥的胖籽。
    范老师您好,在Java项目中,tomcat的线程一般开多少个线程比较好?这块有好的心德吗?在项目开发过程中一直对线程池的个数拿捏不准。

    作者回复: 一般的,线程个数和很多因素相关,比如软件架构、用户数等。线程数和CPU数匹配是一个常见的设置,但是也仅适用于少数场景,比如每个计算任务都很快。性能参数选择,一般可以做成可配置的,然后反复测试,找到合适的组合。

    很抱歉,我不了解tomcat的细节,没有办法给你建议。留言区的小伙伴们帮帮忙!

    2019-03-01
    2
  • 轻歌赋
    其实我更想知道异步编程的一些编码规范,来帮助我少些一些多线程异常代码

    作者回复: 异步编程的编码模式吗? 编码规范,如果你指的是代码规范,和普通的代码规范区别不大。

    2019-03-06
    1
  • William
    异步处理,优点不阻塞当前线程.
    前提是当前的请求不要求及时返回结果数据,可以采用异步方式.

    2019-06-18
收起评论
4
返回
顶部