<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個還不錯的離線 IP 地址定位庫,99.9% 準確率!

          共 3710字,需瀏覽 8分鐘

           ·

          2020-07-28 12:09

          點擊上方“JAVA”,星標公眾號
          重磅干貨,第一時間送達
          • Ip2region特性
          • ip2region快速測試
          • ip2region安裝
          • ip2region 并發(fā)使用
          • ip2region.db的生成

          ip2region - 準確率99.9%的離線IP地址定位庫,0.0x毫秒級查詢,ip2region.db數(shù)據(jù)庫只有數(shù)MB,提供了java,php,c,python,nodejs,golang,c#等查詢綁定和Binary,B樹,內(nèi)存三種查詢算法。

          Ip2region特性

          99.9%準確率

          數(shù)據(jù)聚合了一些知名ip到地名查詢提供商的數(shù)據(jù),這些是他們官方的的準確率,經(jīng)測試著實比經(jīng)典的純真IP定位準確一些。ip2region的數(shù)據(jù)聚合自以下服務商的開放API或者數(shù)據(jù)(升級程序每秒請求次數(shù)2到4次): 01, >80%, 淘寶IP地址庫, http://ip.taobao.com/ 02, ≈10%, GeoIP, https://geoip.com/ 03, ≈2%, 純真IP庫, http://www.cz88.net/ **備注:**如果上述開放API或者數(shù)據(jù)都不給開放數(shù)據(jù)時ip2region將停止數(shù)據(jù)的更新服務。

          標準化的數(shù)據(jù)格式

          每條ip數(shù)據(jù)段都固定了格式:

          _城市Id|國家|區(qū)域|省份|城市|ISP_

          只有中國的數(shù)據(jù)精確到了城市,其他國家有部分數(shù)據(jù)只能定位到國家,后前的選項全部是0,已經(jīng)包含了全部你能查到的大大小小的國家(請忽略前面的城市Id,個人項目需求)。

          體積小

          包含了全部的IP,生成的數(shù)據(jù)庫文件ip2region.db只有幾MB,最小的版本只有1.5MB,隨著數(shù)據(jù)的詳細度增加數(shù)據(jù)庫的大小也慢慢增大,目前還沒超過8MB。

          查詢速度快

          全部的查詢客戶端單次查詢都在0.x毫秒級別,內(nèi)置了三種查詢算法

          1. memory算法:整個數(shù)據(jù)庫全部載入內(nèi)存,單次查詢都在0.1x毫秒內(nèi),C語言的客戶端單次查詢在0.00x毫秒級別。
          2. binary算法:基于二分查找,基于ip2region.db文件,不需要載入內(nèi)存,單次查詢在0.x毫秒級別。
          3. b-tree算法:基于btree算法,基于ip2region.db文件,不需要載入內(nèi)存,單詞查詢在0.x毫秒級別,比binary算法更快。

          任何客戶端b-tree都比binary算法快,當然memory算法固然是最快的!

          多查詢客戶端的支持

          已經(jīng)集成的客戶端有:java、C#、php、c、python、nodejs、php擴展(php5和php7)、golang、rust、lua、lua_c, nginx。

          binding描述開發(fā)狀態(tài)binary查詢耗時b-tree查詢耗時memory查詢耗時
          cANSC c binding已完成0.0x毫秒0.0x毫秒0.00x毫秒
          c#c# binding已完成0.x毫秒0.x毫秒0.1x毫秒
          golanggolang binding已完成0.x毫秒0.x毫秒0.1x毫秒
          javajava binding已完成0.x毫秒0.x毫秒0.1x毫秒
          lualua實現(xiàn)的binding已完成0.x毫秒0.x毫秒0.x毫秒
          lua_clua的c擴展已完成0.0x毫秒0.0x毫秒0.00x毫秒
          nginxnginx的c擴展已完成0.0x毫秒0.0x毫秒0.00x毫秒
          nodejsnodejs已完成0.x毫秒0.x毫秒0.1x毫秒
          phpphp實現(xiàn)的binding已完成0.x毫秒0.1x毫秒0.1x毫秒
          php5_extphp5的c擴展已完成0.0x毫秒0.0x毫秒0.00x毫秒
          php7_extphp7的c擴展已完成0.0毫秒0.0x毫秒0.00x毫秒
          pythonpython bindng已完成0.x毫秒0.x毫秒0.x毫秒
          rustrust binding已完成0.x毫秒0.x毫秒0.x毫秒

          ip2region快速測試

          請參考每個binding下的README說明去運行cli測試程序,例如C語言的demo運行如下:

          cd?binding/c/
          gcc?-g?-O2?testSearcher.c?ip2region.c
          ./a.out?../../data/ip2region.db

          會看到如下cli界面:

          initializing??B-tree?...
          +----------------------------------+
          |?ip2region?test?script????????????|
          |?Author:?chenxin619315@gmail.com??|
          |?Type?'quit'?to?exit?program??????|
          +----------------------------------+
          p2region>>?101.105.35.57
          2163|中國|華南|廣東省|深圳市|鵬博士?in?0.02295?millseconds

          輸入IP地址開始測試,第一次會稍微有點慢,在運行命令后面接入binary,memory來嘗試其他算法,建議使用b-tree算法,速度和并發(fā)需求的可以使用memory算法,具體集成請參考不同binding下的測試源碼。

          ip2region安裝

          具體請參考每個binding下的README文檔和測試demo,以下是一些可用的快捷安裝方式:

          maven倉庫地址


          ????org.lionsoul
          ????ip2region
          ????1.7.2

          nodejs

          npm?install?node-ip2region?--save

          nuget安裝

          Install-Package?IP2Region

          php composer

          #?插件來自:https://github.com/zoujingli/ip2region
          composer?require?zoujingli/ip2region

          ip2region 并發(fā)使用

          1. 全部binding的各個search接口都不是線程安全的實現(xiàn),不同線程可以通過創(chuàng)建不同的查詢對象來使用,并發(fā)量很大的情況下,binary和b-tree算法可能會打開文件數(shù)過多的錯誤,請修改內(nèi)核的最大允許打開文件數(shù)(fs.file-max=一個更高的值),或者使用持久化的memory算法。
          2. memorySearch接口,在發(fā)布對象前進行一次預查詢(本質(zhì)上是把ip2region.db文件加載到內(nèi)存),可以安全用于多線程環(huán)境。

          ip2region.db的生成

          從1.8版本開始,ip2region開源了ip2region.db生成程序的java實現(xiàn),提供了ant編譯支持,編譯后會得到以下提到的dbMaker-{version}.jar,對于需要研究生成程序的或者更改自定義生成配置的請參考${ip2region_root}/maker/java內(nèi)的java源碼。

          從ip2region 1.2.2版本開始里面提交了一個dbMaker-{version}.jar的可以執(zhí)行jar文件,用它來完成這個工作:

          1. 確保你安裝好了java環(huán)境(不玩Java的童鞋就自己谷歌找找拉,臨時用一用,幾分鐘的事情)
          2. cd到${ip2region_root}/maker/java,然后運行如下命令:
          java?-jar?dbMaker-{version}.jar?-src?文本數(shù)據(jù)文件?-region?地域csv文件?[-dst?生成的ip2region.db文件的目錄]

          #?文本數(shù)據(jù)文件:db文件的原始文本數(shù)據(jù)文件路徑,自帶的ip2region.db文件就是/data/ip.merge.txt生成而來的,你可以換成自己的或者更改/data/ip.merge.txt重新生成
          #?地域csv文件:該文件目的是方便配置ip2region進行數(shù)據(jù)關系的存儲,得到的數(shù)據(jù)包含一個city_id,這個直接使用/data/origin/global_region.csv文件即可
          # ip2region.db文件的目錄:是可選參數(shù),沒有指定的話會在當前目錄生成一份./data/ip2region.db文件
          1. 獲取生成的ip2region.db文件覆蓋原來的ip2region.db文件即可
          2. 默認的ip2region.db文件生成命令:

          來源:gitee.com/lionsoul/ip2region



          ?--END--


          ? 推薦

          公眾號ID|javabaiwen

          小編微信|619531440


          每天分享技術干貨

          視頻|電子書|面試題|開發(fā)經(jīng)驗

          瀏覽 76
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产色情电影在线观看 | 99成人视频免费观看 | 精品人妻无码一区二区三区91电影 | 大香蕉1区 | 亚洲三级片大全 |