快速排序面面观
19 June, 2019偶遇一个有趣网站,把quick-sort的各种语言实现都呈现出来,很有趣,分享之。 快排序 快排序是比较好的排序方法,平均性能是O(nlogn)。 基本思路如下: 在数组中找一个元素,称之为 pivot 分片:把所有小于 pivot…
如何提高单元测试覆盖率
23 May, 2019最近把项目打扫了下,代码行数从18万减少到14万,代码覆盖率从65%提高到7…
Git Pull, Merge and Rebase
22 May, 2019三种操作都可以进行代码的整合。 Merge Merge by Fast-forward Fast-forward 这种类型就相当于把主线直接提前到和merge近来的支线的位置(master -> hotfix),是最简单的。 Merge by Three-way…
JS同步与异步
17 May, 2019JS本身是单线程的,默认当然就是同步的。具体实现原理,请阅这篇文章。但是可以很方便的实现异步函数。同步函数异步化以及异步函数同步化是我们经常遇到的问题,下面逐一解释。 Update on 20190620: 增加async/await 同步函数异步化 setTimeout…
SQL Server主键最大之后
16 May, 2019通常数据库的主键都有一个最大值,如果你有一个产品有幸运行足够长的时间,那么你也将“有幸”遇到这个问题 错误 预防 以下这个脚本可以让你知道你的数据库中有那些表的主键已经到达其类型的百分比了。比如如果到达95%,你就要准备了。 方法 先做备份 创建新表,这次注意使用bigint…
懒评估
09 May, 2019懒评估(Lazy Evaluation,下面简称LE)顾名思义就是和紧评估(Strict Evaluation, SE)对应,是指延迟计算直到需要的时候,如果只是这样,我们称它为“按名”(by name…
协变与逆协变
06 May, 2019假定A <: B (A是B的子类),如果T[A] <: T[B],那么我们就说T是协变的(covariant)。如果T[B] <: T[A],那么我们说T是逆协变的(contravariant)。如果T[B]和T[A]没有从属关系,我们就说T是非协变的(invariant…
Spring Test
06 May, 2019Spring有spring-test, 加之Mockito和Junit,使得Test变得容易。 @RunWith(SpringJUnit4ClassRunner.class) 和 @ContextConfiguration(locations…
Hello World
04 May, 2019前情提要 两年前(2017)搞了一个, 也就是这里,采用的当时流行的Jekyll,它是基于Ruby语言的。但是它有个很诱人的特点就是可以很方便的免费使用Github Pages来做静态网站 。步骤如下: 选择一个theme,Jekyllthemes里有很多,我采用的是Minimal…
