JDK 的广泛分支
Oracle Hospot JDKjava 8 特定版本以后就不再免费了。 现有的JDK8,2019.1之前的更新都可以免费获取正常使用。 Oracle JDK11是一个长期支持的版本,用于商业环境需要付费。 Azul Zulu builds of OpenJDKZulu 是Azul公司基于OpenJDK发布的Java SE产品,它没有Oracle JDK对使用场景上的诸多限制,可以放心免费下载和使用。它的核心部分就是原汁原味的OpenJDK,没有任何额外的改动——Azul有时候也会对OpenJDK做bug fix,但这些都是通过提交回到OpenJDK去然后再进入到Zulu Java SE产品中的。它与“自己下载OpenJDK源码,自己build”的最大区别是:Azul会在每次发布Zulu产品之前进行充分的测试,build出来的二进制版本符合Java的兼容性测试;同时,Azul有与Oracle签订合作协议,在critical security...
Java 并发编程笔记
写在前面的话并发编程最早的实践都在操作系统里。 理论和实践之间是有鸿沟的,要弥合这种鸿沟,通常需要我们去学习别人的实践。比如并发的标准设计思想来自于操作系统里的管程,我们应当学习管程,进而了解标准的并发模型。 juc.xmind Java 线程状态 线程状态列举NEW没有启动过的线程。 RUNNABLE 正在执行的线程。 可以被执行但没有拿到处理器资源。 BLOCKEDblocked 其实是 blocked waiting。1 等待 monitor,进入 synchronized method/block2 或者等 wait()/await()以后再次进入 synchronized method/block(注意这一点,解除 wait 以后以后不是直接 runnable,而是进入 blocked,但这一步非常短暂,几乎不可能用程序观察到)。 WAITING在调用这三种不计时方法以后,线程进入 waiting 态: Object.wait Thread.join LockSupport.park 我们经常在文档里看到的 thread lies dormant...
SRE-谷歌运维揭秘
SRE-谷歌运维揭秘.xmind
Unix 与 coredump
coredump 是什么当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。 我们可以认为 core dump 是“内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。 core dump 对于编程人员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而 core dump...
基本编程范式、模型和风格
盒子模型表达式由一系列盒子组成,这些盒子相互决定位置和大小。 流水线模型模式-动作范式一系列的输入会被每个模式所检查,模式匹配时,执行相应的输入。 复杂流程总-分架构流程被分为:step1、step2、step3;stage1、stage2、stage3;phase1、phase2、phase3。 数据只要可以在同层内串联,每一层就可能被抽象成 step。如果 step 的输入输出是无关的,则需要使用 context 模式;否则使用 stream 模式,每个 step 可以由指定输入输出类型,每个 step 的输出会成为下一个阶段的输入。。每一步如果可以在实现上变化,可以使用策略模式,如果需要实现差异化的聚合,需要使用组合模式。 我们使用 Step 的时候最好先指定。
蔡康永的说话之道
...
基本业务架构设计方法
如何实现自己的 validation123456789101112131415161718192021222324252627282930313233343536373839// 抛出异常private void validateParam(Map<String, String> paramValues) { boolean validate = MapUtils.isEmpty(paramValues) || !paramValues.containsKey(ParamConstant.CUSTOMER_N0) || StringUtils.isEmpty(paramValues.get(ParamConstant.CUSTOMER_N0)); if (validate) { throw new DataBusinessException(ResultCodeEnum.PARAM_NULL); } ...
如何写系统规划
列出背景 列出现状。 列出当前组织的 okr,分析机会和挑战。 将当前系统的视图勾勒出来,要能理解信息流和资金流。 列出痛点,分析需要实现的技术能力。 对标 对标其他团队的成功经验。 分析背景和成功原理。 要有架构图。 解决方案 要有目标架构图 有问题拆解:什么服务,是什么问题域的解空间,拥有什么能力,建设路径分几期,需要多少人力成本。 全团队分工: 本团队产品怎么分工 本团队后端怎么分工 本团队前端怎么分工 本团队数据怎么分工 本团队算法怎么分工 其他团队怎么分工 里程碑 按照绝对时间拆解 按照任务事件拆解 如何画简单的架构图 水平分层极其重要,每一层左边在层次里会有层次说明。 要用圆角都用圆角,要用直角都用直角。 重点:要填满整个空间: 深底色配白字。 模块之间的应该要直,不然应该优美、松弛。 图像应该紧凑,不留缝隙。 越处于背景之中,颜色越浅。 有时候,利用立体图形是好的。 要有阴影。 要玻璃化。
如何排查线上问题
cpu 偏高问题排查cpu偏高问题排查.xmind 数据库问题排查数据库问题排查.xmind
如何做一个优秀的系统 owner
协同 勇气 务实 细节 坚持 科技 担当 创新