- 博客(8)
- 资源 (9)
- 收藏
- 关注
原创 lucene评分-相似度算法的优化
lucene评分里使用的默认相似度算法是BM25,官方文档对BM25的参数(k1,b)调节有专门的介绍。 但是在短文本的场景下,就算是调节k1(一般调到0.3),也不能避免经常出现错误的评分排序。 研读lucene源码,在 BM25Similarity 这个类里,计算tfNorm的时候,公式是 (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * field...
2019-04-25 08:59:25 1145
原创 喜新厌旧:从Java到.Net
c#: Cool得完全超出我的意料。我以为当我看懂它后,只是多知道一种Java而已,谁知道Microsoft抛弃了过去的观念,把这么多丰富的特性嵌入到语言语法中。但是,肯定也有很多人不喜欢这种设计。呵呵,我倒是比较喜欢的。 ADO.Net: 比ADO复杂一点,但也没什么了。有空再对比一下几种数据库框架的大不同在哪。 Asp.Net: 也是Cool得掉渣。像我这种讨厌看HT
2009-02-22 14:16:00 614
原创 深入探讨Java枚举的实现
/* * 测试学习后我认识到以下几点: * 1、枚举基类Enum定义为 Enum> 只是为了对getDeclaringClass的返回值Class做支持,否则定义为Enum更简单明了。 * 呵呵,要不是认识学习了泛型定义,还真被这个定义吓到。 * 2、编译器对枚举类处理也很简单,就是把枚举体内每个枚举值定义为static的枚举具体类的实例 */public class StudyEnum {
2008-10-23 22:08:00 943
原创 readObject writeObject为什么这么暧昧
大家都知道,定制自己的类的Serialization行为的方式是自己的类实现2个过程readObject和writeObject。我想不明白的是,为什么这个地方框架设计者没有设计成一个接口,接口里包含这两个重要的过程。相反,设计者用了最令人疑惑的方式,在类里加入这2个Private的过程,然后框架用Reflection来调用这2个过程。
2008-10-23 08:18:00 934
原创 Integer 包装类句柄的隐形变化
Integer i = new Integer(8);Integer i2 = i;System.out.println(i==i2); //truei2++;System.out.println(i==i2); //false可见执行完 ++操作()后i2的句柄已经改变。如果你的代码依赖于i2的句柄,那就麻烦了。我就很不幸做过这个事,private static Integer g_i = n
2008-10-22 11:20:00 720
原创 最合理的异常代码格式
这段时间读 《Core Java 2》,读到“异常处理”的章节。书中有以下这样的“强烈建议”的异常写法,我深为认同。try {Object mustCloseObj = new MustCloseObj();try{//do things}finally{mustCloseObj.close(); }} catch (Exception e) {// handle exception here}
2008-10-22 11:19:00 925
原创 String.format在多线程下不可用
经过我认真验证,证实在多线程模式下 String.format有严重问题,原因未完全明确,我猜想有2可能:1、使用StringBuilder来实现,该类非线程安全2、可能使用了全局数据区,但没加锁定该数据区就读写 private static class MyReader extends Thread { @Override public synchronized void run() {
2008-10-22 11:16:00 2788
编程卓越之道_第二卷_运用底层语言思想编写高级语言代码_中文版
2008-09-10
关于c语言指针最好最详尽的解说
2008-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人