0%

ClassViewer是我最近开发的一个用于展示jvm class字节码的小工具。它是一个单纯的静态网页,完全使用浏览器端的Javascript开发。之所以开发这款工具,是因为我在开发ToyJVM的时候,需要常常校验class文件某一部分的字节码, 所以如果一款工具能够很方便的显示class文件各个部分的信息和字节码,对于ToyJVM的开发将会是一个非常大的帮助。

在开始写代码之前调研了一些类似的产品,主要有jdk自带的javap、国外的Java-Class-Viewer以及国人开发的classpy,它们都是非常不错的class文件分析工具,但是也存在着一些算不上缺陷的小问题。所以最终还是决定自己写一个适合自己小工具,同时也加深下class结构的理解。

在调研了目前的产品后,我也更加清晰了自己的目标。首先它的受众应该是有兴趣研究jvm的程序员,而它应该有这些特性:

  • 不依赖于特定操作系统平台
    它应该具备基本的跨平台的能力,因为程序员的Mac和Linux使用率很高。
  • 无需复杂的安装和编译,无需用户有特定的知识背景
    我不太希望用户拿到我的代码后,还需要安装相应的环境、了解一堆无关知识。

最终实现出来的工具是这样的:

阅读全文 »

4月9号,在武汉参加了人生第一次半程马拉松,风里雨里的21.0975公里。虽然已时隔一周,但想到那天一路的奔跑、疲惫、欣喜,还是想记记这半马的流水账。

阅读全文 »

介绍

BloomFilter(布隆过滤器)是一种可以高效地判断元素是否在某个集合中的算法。

在很多日常场景中,都大量存在着布隆过滤器的应用。例如:检查单词是否拼写正确、网络爬虫的URL去重、黑名单检验,微博中昵称不能重复的检测等。

在工业界中,Google著名的分布式数据库BigTable也用了布隆过滤器来查找不存在的行或列,以减少磁盘查找的IO次数;Google Chrome浏览器使用BloomFilter来判断一个网站是否为恶意网站。

对于以上场景,可能很多人会说,用HashSet甚至简单的链表、数组做存储,然后判断是否存在不就可以了吗?

当然,对于少量数据来说,HashSet是很好的选择。但是对于海量数据来说,BloomFilter相比于其他数据结构在空间效率和时间效率方面都有着明显的优势。

但是,布隆过滤器具有一定的误判率,有可能会将本不存在的元素判定为存在。因此,对于那些需要“零错误”的应用场景,布隆过滤器将不太适用。具体的原因将会在第二部分中介绍。

阅读全文 »

2016年过去了。真的是转瞬即逝,一眨眼的功夫,365个日夜。总结2016年,平平凡凡但踏踏实实。

阅读全文 »

2016年总共阅读了25本书,其中计算机相关书籍5本,小说和传记类15本,其他类型的5本。阅读介质大部分为kindle电子书和微信读书APP。
2016年时间匆匆,感谢我看过的每一本书。

阅读全文 »

前两天把实验室的一台旧台式机装上了Ubuntu Server,打算当作测试服务器使用着玩。
装上之后意识到一个严重的问题:实验室电脑连接外网时候需要打开浏览器输入学号进行认证。

阅读全文 »

2015年都做了什么?

学习

很忙碌的一年。
2015年1月份到2月份
基本是在忙数学建模的美赛,最后碰运气拿到了二等奖,加上2014年拿到的国赛二等奖。推免的资格基本没什么问题了。
大三下学期
踏踏实实的做了回学霸,认真上课,做实验和课设。在此期间参加了腾讯及阿里巴巴的暑期实习生校园招聘,两次一面跪,备受打击,同时发现了自己在技术上的诸多不足。

阅读全文 »

为什么会想到建立一个博客:

在此博客之前,我其实也用过新浪博客、CSDN、博客园,作为个人博客的载体,但对每个博客都并不是特别的满意。原因大概有下面几条:

  • 没有美观友好的支持代码。
  • 广告多。
  • 管理复杂,但可控性差。

目前该博客是使用hexo+Next主题+Github进行搭建。
事实上,当开始接触使用hexo时,我觉得满足了我对博客的诸多要求。我对它的为程序员而生、高度可定制性非常喜欢。而且,如有机会,可以自己写出满意的主题使用。

阅读全文 »