放牧代码和思想
专注自然语言处理、机器学习算法
    正处于一个非常忙的阶段,抱歉不会经常回应任何联络

Java

Java动态修改Enum实例

Java动态修改Enum实例

hankcs阅读(1163)评论(2)

众所周知,enum类型实例数量是固定的,甚至还被用来设计单例。但有时候仍然存在需要动态增加Enum实例的场景,这也并非一定是设计失败,也可能是增加灵活性的实际需求,比如一些web框架,再比如HanLP  中的动态用户自定...

Lucene分类统计示例

Lucene分类统计示例

hankcs阅读(3771)评论(0)

需求 在检索系统中,遇到了分组统计(Grouping/GroupBy)的需求,比如将搜索结果按照栏目分类,统计每个栏目下各有多少条结果。以前的做法很愚蠢,先发起一次search统计出有多少组,然后在每个组里发起一次search;这样在有N组...

让Intellij IDEA显示Servlet文档

让Intellij IDEA显示Servlet文档

hankcs阅读(3227)评论(0)

问题 使用Intellij IDEA + Tomcat的时候,发现默认的Servlet相关类是不显示文档的: 原因 这是因为Tomcat的发行包里不含source jar或doc jar。 解决方法 下载Tomcat的源码包 下载地址是ht...

Intellij IDEA 配置 JRebel 自动热部署

Intellij IDEA 配置 JRebel 自动热部署

hankcs阅读(9628)评论(7)

目标 在Java Web开发中,更新了Java文件后,一般要手动进行Compile->Redeploy(或重启)这两个步骤,浪费不少生命。虽然最新的Intellij IDEA13已经支持热部署,不过依然需要按键。而对于效率至上者,必须...

Java读取文件加速

Java读取文件加速

hankcs阅读(2703)评论(2)

在执行IO时,Java的InputStream被广泛使用,比如DataInputStream.readInt等等。事实上,这些高度封装的接口奇慢无比。我有一个项目启动时需要读取90MB左右的词典文件,用DataInputStream耗时3秒...

调整VM Option优化JVM性能

调整VM Option优化JVM性能

hankcs阅读(4910)评论(0)

今天一个List大约要放入5万个对象,每个对象是对一篇语料的解析结果。语料库在磁盘里大约有200MB,读入内存后大小未知。当我解析了10000篇的时候,明显感觉速度降了下来,按理说LinkedList插入效率很高,但是换用数组之后一样慢,单...

Java多线程同步实例

Java多线程同步实例

hankcs阅读(3439)评论(5)

最近的NLP程序要处理的数据上十万,单线程力不从心。写一个小PlayGround来演示分割任务、多线程同步、合并任务。 目标 假设有12个数,对每个数执行一次加法耗时1秒。现在开4个线程,希望在3秒内完成任务。   &n...

Lucene高亮关键字与设置高亮串长度

Lucene高亮关键字与设置高亮串长度

hankcs阅读(3618)评论(3)

Lucene的Hightlight模块可以高亮搜索结果中的关键字,给搜索引擎自定义界面的自由。 如何创建Highlighter 为了创建一个Highlighter,需要一个Formatter和一个Scorer,如下所示: Highlight...

IntelliJ IDEA 打包Source Jar的方法

IntelliJ IDEA 打包Source Jar的方法

hankcs阅读(9077)评论(0)

Eclipse下打包源码jar还是很方便的,IDEA下就没有那么快捷的方法了,需要手动建立Artifact。对于我这种开源癖患者,断然无法接受看不到源码的binary。特别是遇到Lucene这样的重量级类库,总是好奇里面发生了些什么,并且时...

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机