虚树对于多次询问的时候有这优化复杂度的好处,其原理就是只保留有用节点和必须保留的有用节点的lca 先求一遍dfs序后,用栈模拟操作,根据lca是否在栈中确定是否要将lca加入栈,因为重构了树,因此原来的边的信息需要进行更换 对于本题,新的边其实就是路径上的边权的最小值,这是因为随便切掉一个边就能把他 ...
分类:
其他好文 时间:
2020-07-22 16:20:10
阅读次数:
75
摘要:本文尝试对Mongo的复制和分布式事务的原理进行描述,在必要的地方,对实现的正确性进行论证,希望能为MongoDB内核爱好者提供一些参考。 1.前言 MongoDB基于wiredTiger提供的泛化SI的功能,重构了readHistory(readMajority)的能力 基于wiredTig ...
分类:
数据库 时间:
2020-07-22 16:14:52
阅读次数:
78
6.1 Extract Method(提炼函数) 你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 动机: 如果每个函数的粒度都很小,那么函数被复用的机会就更大;这会使高层函数读起来就像一系列注释;如果函数都是细粒度,那么函数的覆写也会更容易些。 ...
分类:
其他好文 时间:
2020-07-21 01:03:09
阅读次数:
100
Web优化的对象包括页面性能、用户体验、开发效率、代码优化、网络延迟等,本系列会列举出众多常用的优化技巧,每个技巧都可深入分析,在此只做抛砖引玉。 本系列优化内容提炼于《前端面试宝典》、《高效前端》、《高性能JavaScript》、《CSS重构》等书籍,以及《2020前端性能优化清单》等网络资源。 ...
分类:
Web程序 时间:
2020-07-20 10:48:52
阅读次数:
87
3.1 Duplicated Code(重复代码) 3.2 Long Method(过长函数) 让小函数容易理解的真正关键在于一个好名字。 每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)命名。 条件表达式和循环常常也是提炼的信号。 3.3 ...
分类:
其他好文 时间:
2020-07-19 23:48:56
阅读次数:
84
4.1 自测试代码的价值 编写代码其实只占非常小的一部分。有些时间用来决定下一步干什么,另外一些时间花在设计上,最多的时间则是用来调试。 类应该包含它们自己的测试代码。 确保所有测试都完全自动化,让它们检查自己的测试结果。 一套测试就是一个强大的bug侦测器,能够大大缩减查找bug所需要的时间。 编 ...
分类:
其他好文 时间:
2020-07-19 23:37:39
阅读次数:
77
2.1 何谓重构 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。 添加新功能时,你不应该修改既有代码,只管添加新功能。重构时就不能再添加功能,只管改进程序结构。 2.2 为何重构 重构 ...
分类:
其他好文 时间:
2020-07-19 23:14:47
阅读次数:
66
MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据
分类:
数据库 时间:
2020-07-19 11:25:24
阅读次数:
78
参考文档: 码农翻身-从零开始造Spring 中的《介绍TDD开发方式, 重构的方法》 TDD的流程是: 写一个测试用例->运行:失败->写Just enough的代码,让测试通过->重构代码保持测试通过,然后循环往复。 下面,我们通过一个简单的例子来说明TDD的流程 需求:写一个方法,返回小于给定 ...
分类:
其他好文 时间:
2020-07-18 22:55:27
阅读次数:
86
1.1、你的态度也许倾向于尽量少修改程序,但是 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。 1.2 重构第一步:为即将修改的代码建立一组可靠的测试环境 重构之前,首先检查自己是否有一套可靠的测试机制。这些测 ...
分类:
其他好文 时间:
2020-07-18 22:46:04
阅读次数:
65