狮子的魂

Results 33 comments of 狮子的魂

> > 全部binding的各个search接口都不是线程安全的实现,不同线程可以通过创建不同的查询对象来使用。 > > 文中所说的线程不安全,是指构建出来的DbSearcher对象就是不安全的,不能使用全局DbSearcher对象,每个线程都需要构建DbSearcher对象吗?我看DbSearcher对象的构造,需要加载6M多的db文件,那岂不是效率很慢。 > 想请问下,如何构造线程安全的用法? 信息有误,每次构造DbSearcher对象,不需要加载6M的文件的,每次构造不会有IO操作,当进行查询的时候,才会有IO操作,btree算法的话,最多3次IO操作,8K左右的数据读取。

@fly-china @zhongyueming1121 建议按照现在的方式去用,每个线程构造一个DbSearcher查询对象。如果想要预先加载资源,然后全局使用,建议使用DbSearcher的传入byte[]的构造方法,预先查询一次,就可以安全的用于并发,而且性能也非常高,缺点就是db文件更新了,服务的重启或者需要主动的更新byte[]数据。

> 就拿memorySearch这个方法来说吧, > > ``` > dbBinStr = new byte[(int) raf.length()]; > raf.seek(0L); > raf.readFully(dbBinStr, 0, dbBinStr.length); > ``` > > 这个文件指针偏移,多线程会影响文件读取,可以改成这样: > > ``` > if (dbBinStr == null)...

组成最终格式看/data/ip.merge.txt,之前旧版本的大概流程如下:https://www.oschina.net/news/83725/ip2region-1-2-4 新版本大致一样!

升级程序和算法目前尚未开源,介于版权问题这个暂时不会开源!

这个取决于原始的IP库了,如果把腾讯的数据合并进来是有可能的。 我需要合适下腾讯的IP是否有对外开放的API以及是否有版权问题等。

openresty通常用的是luajit,你切回到纯lua是可以用的,建议使用lua_c模块来代替。

Thanks for ur advice. If you try to embed ip2region to a complex C project this do will be a problem, i will make a change in the next release.

这个得问下 @RocherKong ,C#的版本是他贡献的。

修改NLP里面的代码,增加模式判断和返回就好,默认不支持的。另外这些功能建议用正则会更方便。