2019年

Survivor的作用

当没有Survivor时,如果增加老年代空间,需要更多存活对象才能填满老年代,这样可以降低Full GC的频率;但是,随着老年代空间加大,一旦发生Full GC,执行所需要的时间更长。

如果减少老年代空间,虽然Full GC所需时间减少;但是,老年代很快被存活对象填满,Full GC频率增加。

因此,Survivor的存在意义,就是减少被送到老年代的对象,进而减少Full GC的发生。

阅读全文

前言

做久了LeetCode,感觉快被LeetCode给惯坏了。LeetCode体验很好,不用处理输入输出,可以在线调试代码,出错时给出用例数据和正确结果。但是,很多OJ(比如HDOJ、ZOJ等)就只有极其有限的反馈。当好不容易写完代码,结果提交上去Wrong Answer,努力找代码中的错误也找不出来,这时该怎么办?

如果能找到AC的代码,那么,可以写一个测试用例数据生成器,然后将自己写的代码的运行结果与AC的代码的运行结果进行对比,这个过程叫“对拍”。对拍是在做OJ时很常用的手段,不过,往往需要进行多次的对拍,如果每次都手动执行对拍,无疑是件很繁琐的事情。如果一件事做起来很繁琐,那么就很难坚持下去,也难以享受其中的乐趣。所以,可以编写对拍器来自动进行对拍。

阅读全文

在之前的 撸了个LeetCode题解仓库自动生成与发布的工具 中,我提到我撸了个LeetCode题解仓库自动生成与发布的工具。不过,这个工具有个遗憾:代码里的中文注释会显示为乱码。这个问题说小也小,但是,这样一来就不能写中文注释了,有时还是挺不方便的。

这个问题搁置了许久,今天终于想着把这一BUG给解决掉,顺便解决下其它的问题,像减少等待、优化页面等。这里说下代码里的中文乱码的BUG。

也许是为了安全吧,LeetCode在submission详情里将代码中的一些符号使用了其Unicode码进行转换。例如,\n会转为\\u000A>会转为\\u003E等。

阅读全文