V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cfz
V2EX  ›  Java

唯品会 Java 核心项目 VJTools 开源了

  •  1
     
  •   cfz ·
    cfz · 2018-06-06 12:19:38 +08:00 · 4071 次点击
    这是一个创建于 2391 天前的主题,其中的信息可能已经有所发展或是发生改变。

    VJTools,是主力于 Java 的唯品会,关于 Java 的一些小家底:《唯品会 Java 开发手册》,核心基础类库 ,问题排查小工具。各位看官看着是好的,烦请拨冗“ Star ” :

    https://github.com/vipshop/vjtools

    1.《唯品会 Java 开发手册》

    《阿里巴巴 Java 开发手册》,是首个对外公布的企业级 Java 开发手册, 意义重大。

    我们结合唯品会的内部经验,参考《 Clean Code 》、《 Effective Java 》等重磅资料,增补了一些条目,同时删减了一些相对不那么通用的规则,让规范更精炼易记。

    比如:《注释规约》中“所有的类都必须添加创建者和创建日期”,我们觉得一份代码必然经过很多人的维护,修改者纪录交给 GIT 更好。

    在不断的改写中,规范变得更暗,更亮,更薄,更厚,更浑浊,更清澈,更混合,更纯粹...感谢阿里授权我们的修改。

    2. 核心类库 VJKit

    综合众多开源类库的精华而成, 让开发人员避免底层代码的重复开发,默认就拥有最佳实践,尤其在性能的方面。

    针对“文本,数字,日期,文件,集合,并发,反射”这些开发人员的日常,VJKit 做了两件事情:

    一是对 Guava 与 Common Lang 中最常用 API 的提炼归类,避免了大家直面茫茫多的 API。

    二是对各门各派的精华的借鉴移植,比如一些大项目的附送基础库如 Netty,ElasticSearch,一些专业的基础库如 Jodd,一些大厂的基础库如 Facebook 和 Twitter。

    3. 工具集- VJMap

    分代版的 jmap (新生代,存活区,老生代),是排查内存缓慢泄露,老生代增长过快原因的利器。

    jmap -histo PID 打印的是整个 Heap 的对象统计信息,而为了定位上面的问题,我们需要专门查看 OldGen 对象,和 Survivor 区大龄对象的工具。

    致敬 R 大,思路来源于 TBJMap,翻新后支持 JDK8,支持 Survivor 区大龄对象过滤,以及大天秤对输出结果不要看歪脖子的执着。

    此处有一实战: [唯实践] JVM 老生代增长过快问题排查,最后定位到是 Jedis 的锅。

    4. 工具集- VJTop

    若你习惯以 Top 观察 “ OS 指标及繁忙的进程”,也推荐以 VJTop 观看 “ JVM 指标及 CPU 最繁忙,占用内存最多的线程”。

    另一用途,是监控系统发现指标超阈值时,钩子脚本调 VJTop 纪录事发地状况。

    在 jvmtop 之上二次开发,又结合 SJK 的思路,从 /proc,PerfData,JMX 等处,以更高的性能,获取更多的信息。

    1 条回复    2018-06-12 08:50:48 +08:00
    skyJ
        1
    skyJ  
       2018-06-12 08:50:48 +08:00 via Android
    哪里下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1118 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:36 · PVG 07:36 · LAX 15:36 · JFK 18:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.