Skip to content

Latest commit

 

History

History
157 lines (87 loc) · 8.68 KB

202006.md

File metadata and controls

157 lines (87 loc) · 8.68 KB

“系统架构部”周刊2020年06期

0. 目录

读完本期周刊,大概需要花费您15分钟的宝贵时间,不过超值哦。

周刊每周五准时发布,欢迎您提交Issue或者联系主编黄老邪(wx: bingoohuang),向本周刊投递有值得分享的内容哦,简短的一张图一段文亦可。

1. 从R0理解为什么新冠病毒这么厉害

在传染病学里面,我们通常用一个指数R0(基本传染数, Basic reproduction number)来评估一种疾病的传染力。这个指标的意思是,一个得病的人平均会传染几个人。

R0值越大,说明疾病的传染性越强。 新冠病毒的R0高达3.7,意味着在某些特殊情况下(比如邮轮这样的密闭空间),其传染率甚至有机会达到100%,只要有接触就会得病。

  1. 若R0 < 1,传染病将会逐渐消失。
  2. 若R0 > 1,传染病会以指数方式扩展,成为流行病(epidemic)。一般不会永远持续。部分人口可能死于该传染病,部分则可能病愈后产生免疫力。
  3. 若R0 = 1,传染病会变成人口中的地方性流行病。

image

2. 码代码也得懂的定律之帕金森琐碎定理

Parkinson's Law of Triviality,又译为帕金森氏凡俗法则,或称芝麻蒜皮定律、芝麻绿豆定律。

由英国历史学者与政治学者西里尔·诺斯古德·帕金森(Cyril Northcote Parkinson)于1957年在批评英国海军部(在其管理下的水手和船只数量下降的同时,海军部的规模越来越大)时开玩笑提出。

最初的意思: 一个足够大的官僚机构将产生足够的内部工作来保持自己的“忙碌”,从而证明其继续存在而没有相称产出的合理性。现在指一个组织中的成员往往会把过多的精力,花费在一些琐碎的事情上。

案例1:

提交 10 行代码的 PR,前后收到团队成员 500 条 comments; 提交 500 行代码的 PR,10 秒就通过了;

案例2:

如果要修个核电站,项目组的许多人可能对核电技术细节找不出问题,但很可能会因电站旁边的自行车棚提出许多意见。

帕金森定律中最常被引用的一句是 "Work expands to fill the time available for its completion.” 中文意思是“你可以用来完成工作的时间有多少,你的工作就会拖延、膨胀、复杂到让你足以填满那段时间为止。”

image

帕金森琐碎定律应用的场景非常广泛,也有不少推论。具体到软件开发要注意哪些问题呢?

  1. 减少不必要的争论
  2. 有效的项目管理
  3. 高效地开会
  4. 认清轻重缓急
  5. 更多百度谷歌一下,能找到很多战胜帕氏定律的法,再结合自身实际,一般都能有效果。

参考自:https://cloud.tencent.com/developer/article/1531166

3. 2020年JVM生态系统报告之JDK8绝对的JDK版本钉子户

完整报告

OpenJDK使用

随着ORACLE修改了JDK的授权,相比2018年,OpenJDK增长了36%,OracleJDK下降了36%。

image

JDK版本选择

JDK8,绝对的JDK版本钉子户,意外的是,JDK11的用户比例竟然达到了25%。

image

Web框架选择

我们先看客户端Web框架占比,各有千秋,没有哪个Web框架有绝对的统治地位。用的最大的3个客户端Web框架分别是:Angular,React,jQuery。如下图所示:

image

4. 惊现指针的指针以及GOTO不能忍

黄老邪的观念是,使用指针的指针和GOTO,会用就好,但是尽量忍住不要用,没忍住,就容易得上“慢性病”。

为了统一重置一个指针变量,不小心用上了指针的指针,然后想想,需求本身就不合理,沟通后确实不需要,于是赶紧重构,重构前截图留证:

image

双重循环,里层循环中想直接跳到外层循环继续,没有细考虑,直接上了goto,重构前截图留证:

image

5. GO语言首次闯入TIOBE排行榜TOP10

公司里GO语言用的也越来越多了,说明“英雄所见略同”啊。想当年,JAVA流行的时候,从C++转JAVA的人感觉就是,“真爽啊”。现在从JAVA转GO,妥妥的也是“真爽啊”。

欢迎加入企业微信中的K吧:GO语言精进,大家一起成长,享受GO的真爽。

TIOBE 指数是一个受到很多批评的尝试,试图根据编程语言的相对受欢迎程度对其进行索引,但是它已经存在了很长时间,因此 Go 最终闯入前10名(一年前是18名) ,相对于其他语言而言仍然是显著的。

image

社区指数:

image

6. 一图看懂DAO与Repository什么区别

一句话:Repository是面向领域的,DAO是面向数据持久的

image

来自领域驱动设计(DDD)实践之路(一)

7. 高扩展性之开闭原则与依赖倒置原则

话不多说,直接看图吧:

image

image

来源用面向对象设计原则理解 Go 中 interface

8. 多么痛的领悟之为什么需要取消

英文可以直接忽略,看图就能明白,有了Context后的取消,才是真的取消。

image

Using context cancellation in Go

9. 三种Git分支模型之我钟爱GitlabFlow

看文章,顺便就做个总结,方便其他人,我觉得是个好习惯。

image

image

image

image

10. 历史周刊回顾-1分钟不到轻轻松松给MySQL表造个百万数据

这是小编使用GO写的一个小工具pump,目前支持MySQL的UTF8字符集和LATIN1字符集,随机给表造数据。开源在https://github.com/bingoohuang/pump上。

image