五年程序员人生的点点滴滴(旧文)

      和大家一样,我也是一名普通的程序员,很快工作五年了。现在依然记得大学时软件工程老师曾说过的一句话,大概是这样的:“工作五年之后,就基本可以分出大家的区别了”,这句话大概有两层意思,第一,大家都基本确定了自己的工作或职业方向;第二,一个人的能力如何基本已经确定了。先抛开这句话的真理性,至少它本身是有些道理的,当然随着时间的迁移,当初的五年时间对于现在可能已经不太准确了。但这句话一直陪伴着我,每过一段时间,我就会想起这句话,因为自己很想知道五年之后自己是什么样子,总告诫自己一定要找准方向,要努力学习,让自己在合适的时间能有质的飞跃,能够在同行同辈之中脱颖而出,在工作或事业上形成一个转折点。愿望总是美好的,而正因为有了美好的愿望,人类才能够不断向前走。 … [阅读文章]

Linux下查找文件的一些应用场景

在实际应用中,我们经常会遇到各种查找文件的需求,比如:
查找最新的n个文件
查找包含某字符串的文件
查找昨天修改的文件
查找同级目录下,不同文件的最新一个文件(类似于数据库的分组查询场景:按名称分组,查询最新的文件)
等等
有木有?
 
 
 … [阅读文章]

程序员必备:Linux日常维护命令

    对于程序员来说,掌握一些基本的Linux命令是必不可少的,即使现在用不到,在不久的将来也应该会用到。由于Linux有很多命令,每个命令基本可以用一篇文章介绍,所以本文仅总结一些常用命令的常用用法,如有明显的遗漏或错误,请各位帮忙指出,谢谢!
 … [阅读文章]

JVM之卡表(Card Table)

我们知道,JVM在进行垃圾收集时,需要先标记所有可达对象,然后再清除不可达对象,释放内存空间。那么,如何快速的找到所有可达对象呢?

最简单粗暴的实现,就是每次进行垃圾收集时,都对整个堆中的所有对象进行扫描,找到所有存活对象。逻辑是简单,但性能比较差。 … [阅读文章]

HotSpot的7种垃圾收集器组合

HotSpot共有7种垃圾收集器,3个新生代垃圾收集器,3个老年代垃圾收集器,以及G1,一共构成7种可供选择的垃圾收集器组合。

新生代与老年代垃圾收集器之间形成6种组合,每个新生代垃圾收集器都对应2种组合。

Serial Old(MSC)可以与所有新生代收集器进行组合,共3种组合 … [阅读文章]

Java之CMS GC的7个阶段

CMS收集器的主要设计目标是:低应用停顿时间。它通过两种方式实现这一目标:

不压缩老年代,而是使用空闲列表来管理回收空间。 大部分标记清理工作与应用程序并发执行。

主要问题:由于不压缩带来的老年代堆碎片,或者在对象分配率高的情况下,都可能导致Full … [阅读文章]

一篇总结二叉树的4种遍历方式(含模板)

万丈高楼平地起,正所谓地基打得好,百年不会倒。

计算机程序如同高楼的建造,也是要先打好地基,再一层层往上盖。

程序是由数据结构和算法组成的,核心是数据结构和算法。

本篇我们要总结的,是二叉树这种数据结构的遍历方式,提供一些基本的模板,以便随时查阅与套用,快速的搭建程序。 … [阅读文章]

32个问题,学习Java虚拟机的运行时数据区

学习JVM虚拟机是一个比较枯燥无味的过程,刚开始基本是看不懂学不懂,然后就是似懂非懂,最后觉得好像懂了一些,到后来又觉得还是没懂,反正就是懵懵懂懂,过目就忘,一问就卡住,说也说不清,其实说的就是我自己。

我觉得在学习了相关理论知识之后,除了进行实操之外,通过提问和回答的方式,也能更好的理解所学知识,并检验自己是否真的理解了。 … [阅读文章]

保持好奇心,把时间花在刀刃上

保持好奇心

如果你自己或身边有小孩,你会发现,小孩对未曾接触过的东西都会非常好奇,而且时常会问为什么,这是我们认识世界的方式。

随着年龄的增长,日常的东西见多了,好奇心也会随之减弱,能激起你好奇心的东西会越来越少。

之所以会出现这种情况,一方面是因为已经习以为常,环境的限制使你很少接触到更新鲜的事物;另一方面是由于人的懒惰,凡事容易浮于表面,体会不到深入了解一件事物之美。 … [阅读文章]