为艺术而技术

Written by Qingfei Yuan who builds useful things.

JS写CSV

12 July, 2019

在JS框架盛行的现在,临时输出一个CSV文件让用户下载,是个很平常的需求。我遇到了一点问题。 问题 你有一个json对象的数组,需要输出作为csv供用户下载。 通常模式 在加上如下的html即可。 高级模式 可是,如果你的csv文件内容太大,Chrome…

常见开源软件License列表

04 July, 2019

名字 网址 License Apache Axis http://axis.apache.org/ Apache License 2.0 Apache Xmlbeans https://xmlbeans.apache.org/ Apache License 2.0 Apache…

快速排序面面观

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, 2019

JS本身是单线程的,默认当然就是同步的。具体实现原理,请阅这篇文章。但是可以很方便的实现异步函数。同步函数异步化以及异步函数同步化是我们经常遇到的问题,下面逐一解释。 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的子类),如果TA <: TB,那么我们就说T是协变的(covariant)。如果TB <: TA,那么我们说T是逆协变的(contravariant)。如果TB和TA没有从属关系,我们就说T是非协变的(invariant)。 Java Java…

Spring Test

06 May, 2019

Spring有spring-test, 加之Mockito和Junit,使得Test变得容易。 @RunWith(SpringJUnit4ClassRunner.class) 和 @ContextConfiguration(locations…

© 2019 - 2020 yuanqingfei
Creative Commons License