面向测试编程
什么是单元测试,什么是集成测试 单元测试是只测试一个特定单元的测试,如果测试需要启动多个层而不是只启动这个被测试单元,那它就是一个集成测试。 测试金字塔 测试金字塔描述了理想测试套件的结构:大量快速的单元测试构成底层,适量的集成测试构成中层,少量的端到端测试构成顶层。单元测试运行速度快、维护成本低,应占测试套件的70%以上;集成测试验证组件协作,约占20%;端到端测试验证完整用户场景,约占10%。遵循金字塔原则能保证测试反馈速度和成本效益的平衡。 测试策略选择 选择测试类型时需权衡速度、可靠性和成本。单元测试适合验证复杂业务逻辑和边界条件,应优先编写;集成测试适合验证组件协作和配置正确性,用于覆盖单元测试无法触及的边界;端到端测试适合验证关键用户路径,但维护成本高,应谨慎使用。 代码分类测试策略 一种比较前沿的观点认为:访问代码、管理者代码、存储代码和业务代码里,只有第四种需要测试,其他的逻辑的正确性只要由顺序执行保证就行了。这第四种测试,是不需要mock的,尽量使用main就能启动。这就要求把业务逻辑和输入输出解耦。和输入解耦比较简单,和输出解耦需要一定的巧思——把业务逻辑写成...
日程管理模板
分类 本日 明天 本周 本月 本半年 本年 个人+组织 换行换行 个人:需要消费的东西 个人:对别人的承诺/责任 个人:需要干掉的东西 个人:生活上的下一步 个人:需要掌握的技能 组织:基本任务 个人:基本功锻炼
领导梯队笔记
何谓领导梯队 定义 领导梯队:英文(leadership pipeline)应该更合适,不同层级更像是一个管道,会流转会转弯。这个转弯非常重要,每个人不是通过走直线,而是需要通过转折完成转变。在每一层级都需要不同的工作技能、时间分配方式、价值导向。如果你不能很好地意识到这个转变,就不利于完成这个转变。在公司里面如果某个层级出现问题,这级管道堵塞了,那么剩下的都会出问题。因为人才培养除了自己努力,直接上级是起很重要作用的,不然会阻碍下级的提升,所以有一级管道堵住了后面就会没有水。 比较科学的组织结构,是Enterprise-BG-BU。 管理自己——管理他人——管理管理者——管理职能(FM)——管理事业部(BM)——管理事业群(BGM)——管理企业(EM) 德鲁克说过:没有能力或者不愿意因新职位的需求而做出改变。管理者继续沿用先前的成功方法二不能进化,几乎是注定要失败的。 德鲁克还说:管理本质上不是science(科学),而是practice(实践)。没有实践并不能真的学会。所以实践是关键。但理论框架体系的支撑也很重要,它决定了最终成就的高度。《领导梯队》提高了认知起点,不用在...
What is the best comment in source code you have ever encountered? [closed]
What is the best comment in source code you have ever encountered? [closed]
MyBatis 关键代码分析
如何创建 SqlSession org.apache.ibatis.session.defaults.DefaultSqlSessionFactory 12345678910111213141516171819202122232425262728// 在应用程序中通过sqlSessionFactory获取一个SqlSession对象执行CRUD操作SqlSession sqlSession = sqlSessionFactory.openSession(true);// 在DefaultSqlSessionFactory中获取SqlSession对象@Overridepublic SqlSession openSession(boolean autoCommit) { return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, autoCommit);}// 通过MyBatis配置参数构建SqlSession对象private SqlSession open...
JDBC 问题
JDBC URL参数解析 参考《mysql JDBC URL参数解析》 JDBC数据源配置.xmind jdbc 调用层次 在创建事务的时候,调用 createTransaction 会先 getConnection。一开始的时候先试用发出两条语句:select 1;set autocommit=1;测试连接可用性。 12345678910112 = {StackTraceElement@24652} "com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)"3 = {StackTraceElement@24653} "com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2482)"4 = {StackTraceElement@24654} "com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.j...
《2021年上半年互联网财产保险市场研究报告》解读
《2021年上半年互联网财产保险市场研究报告》 背景:新冠疫情、平台经济反垄断。 特点:业务恢复性增长、产品业态丰富化、市场发展规范化。 业务恢复性增长 行业只有70余家财产保险公司。 上半年互联网财产保险保费规模排名,前三名为【众安保险】、泰康在线和人保财险。 产品业态丰富 **互联网车险凭借其优于线下传统渠道的运营效率和客户服务体验,有效吸引了客户。**这是互联网的技术优势。 互联网意外健康险(也被算在财产险里?):规模占比超40%,产品创新迫在眉睫。尤其是短期健康险,由于其价格低、保额高、保障范围相对较广等特点,在近三年呈现高速增长。以百万医疗险、城市定制型补充医疗保险(以下简称“惠民保”)等为代表的短期健康险的逐步普及,为提高大众风险保障意识起到了积极作用。 互联网信用保证险:助力实体经济,保费实现高速增长。 场景保险值得注意的有: 酒店取消险。 退货运费险。 宠物保险。 这些保险要解决数据积累、风险识别、理赔标准建立、反欺诈管控、服务提升等问题。特别要小心逆选择。 《互联网保险业务监管办法》下发后,行业经营更加规范化,专业中介机构保费占比上升。2021年上半年,互联...
JDK 的广泛分支
Oracle Hospot JDK java 8 特定版本以后就不再免费了。 现有的JDK8,2019.1之前的更新都可以免费获取正常使用。 Oracle JDK11是一个长期支持的版本,用于商业环境需要付费。 Azul Zulu builds of OpenJDK Zulu 是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 fix的方面会比公开发布的OpenJDK源码要更早获得补丁,提前做好build与测试工作,基本上可以跟Oracle在同一时...
SRE-谷歌运维揭秘
SRE-谷歌运维揭秘.xmind
Unix 与 coredump
coredump 是什么 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”)。 我们可以认为 core dump 是“内存快照”,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时 dump 下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。 core dump 对于编程人员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而 core dump 文件可以再现程序出错时的情景。 为什么会产生coredump文件 core产生的原因很多,比如过去一些Unix的版本不支持现代Linux上这种gdb直接附着到进程上进行调试的机制,需要先向进程发送终止信号,然后用工具阅读core文件。在Linux上,我们就可以使用kill向一个指定的进程发送信号或者使用gcore命令来使其主动出core并退出。 如果从浅层次的原因上来讲,出core意味着当前进程存在BUG,需要程序员修复。 从深层次的原因上讲,是当前进程...



![What is the best comment in source code you have ever encountered? [closed]](/img/wall-paper-9.jpg)











