From 905590aff5f9a79fb38f8f3c49b7cc00baf60e2b Mon Sep 17 00:00:00 2001 From: Lion Date: Wed, 29 Jun 2022 18:44:50 +0800 Subject: [PATCH] optimize the var define --- binding/java/ReadMe.md | 8 ++++---- binding/java/pom.xml | 2 +- .../java/org/lionsoul/ip2region/SearchTest.java | 4 ++-- .../java/org/lionsoul/ip2region/UtilTest.java | 4 +--- .../org/lionsoul/ip2region/xdb/Searcher.java | 17 ++++++++--------- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/binding/java/ReadMe.md b/binding/java/ReadMe.md index bf0d456..2e8ad58 100644 --- a/binding/java/ReadMe.md +++ b/binding/java/ReadMe.md @@ -49,7 +49,7 @@ public class SearcherTest { ### 缓存 `VectorIndex` 索引 -我们可以提前从 xdb 文件中加载出来 VectorIndex 数据,然后全局缓存,每次创建 Searcher 对象的时候使用全局的 VectorIndex 缓存可以减少一次固定的 IO 操作,从而加速查询,减少 IO 压力。 +我们可以提前从 `xdb` 文件中加载出来 `VectorIndex` 数据,然后全局缓存,每次创建 Searcher 对象的时候使用全局的 VectorIndex 缓存可以减少一次固定的 IO 操作,从而加速查询,减少 IO 压力。 ```java import org.lionsoul.ip2region.xdb.Searcher; import java.io.*; @@ -94,7 +94,7 @@ public class SearcherTest { } ``` -### 缓存整个 xdb 数据 +### 缓存整个 `xdb` 数据 我们也可以预先加载整个 ip2region.xdb 的数据到内存,然后基于这个数据创建查询对象来实现完全基于文件的查询,类似之前的 memory search。 ```java @@ -176,7 +176,7 @@ ip2region>> 1.2.3.4 ip2region>> ``` -输入 ip 即可进行查询测试,也可以设置 `cache-policy` 来分别测试 file/vectorIndex/content 三种不同缓存方式的查询效果。 +输入 ip 即可进行查询测试,也可以分别设置 `cache-policy` 为 file/vectorIndex/content 来测试三种不同缓存实现的查询效果。 # bench 测试 @@ -197,5 +197,5 @@ options: Bench finished, {cachePolicy: vectorIndex, total: 3417955, took: 8s, cost: 2 μs/op} ``` -可以通过设置 `cache-policy` 参数来分别测试 file/vectorIndex/content 三种不同缓存方式的性能。 +可以通过分别设置 `cache-policy` 为 file/vectorIndex/content 来测试三种不同缓存实现的效果。 @Note: 注意 bench 使用的 src 文件要是生成对应 xdb 文件相同的源文件。 diff --git a/binding/java/pom.xml b/binding/java/pom.xml index 60af6df..60b69b5 100644 --- a/binding/java/pom.xml +++ b/binding/java/pom.xml @@ -4,7 +4,7 @@ org.lionsoul ip2region - 2.6.1 + 2.6.2 jar ip2region diff --git a/binding/java/src/main/java/org/lionsoul/ip2region/SearchTest.java b/binding/java/src/main/java/org/lionsoul/ip2region/SearchTest.java index 8f3c819..179cb9f 100644 --- a/binding/java/src/main/java/org/lionsoul/ip2region/SearchTest.java +++ b/binding/java/src/main/java/org/lionsoul/ip2region/SearchTest.java @@ -156,7 +156,7 @@ public class SearchTest { long sip; try { - sip = Searcher.checkIpAddr(ps[0]); + sip = Searcher.checkIP(ps[0]); } catch (Exception e) { System.out.printf("check start ip `%s`: %s\n", ps[0], e); return; @@ -164,7 +164,7 @@ public class SearchTest { long eip; try { - eip = Searcher.checkIpAddr(ps[1]); + eip = Searcher.checkIP(ps[1]); } catch (Exception e) { System.out.printf("check end ip `%s`: %s\n", ps[1], e); return; diff --git a/binding/java/src/main/java/org/lionsoul/ip2region/UtilTest.java b/binding/java/src/main/java/org/lionsoul/ip2region/UtilTest.java index c526ec8..aba7779 100644 --- a/binding/java/src/main/java/org/lionsoul/ip2region/UtilTest.java +++ b/binding/java/src/main/java/org/lionsoul/ip2region/UtilTest.java @@ -8,15 +8,13 @@ package org.lionsoul.ip2region; import org.lionsoul.ip2region.xdb.Searcher; -import java.io.IOException; - public class UtilTest { public static void testIP2Long() { String ip = "1.2.3.4"; long ipAddr = 0; try { - ipAddr = Searcher.checkIpAddr(ip); + ipAddr = Searcher.checkIP(ip); } catch (Exception e) { System.out.printf("failed to check ip: %s\n", e); return; diff --git a/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java b/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java index 900942b..869b288 100644 --- a/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java +++ b/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java @@ -11,7 +11,6 @@ package org.lionsoul.ip2region.xdb; import java.io.IOException; import java.io.RandomAccessFile; -import java.util.Arrays; public class Searcher { // constant defined copied from the xdb maker @@ -72,9 +71,9 @@ public class Searcher { return ioCount; } - public String searchByStr(String ip) throws Exception { - long ipAddr = checkIpAddr(ip); - return search(ipAddr); + public String searchByStr(String ipStr) throws Exception { + long ip = checkIP(ipStr); + return search(ip); } public String search(long ip) throws IOException { @@ -94,7 +93,7 @@ public class Searcher { sPtr = getInt(contentBuff, HeaderInfoLength + idx); ePtr = getInt(contentBuff, HeaderInfoLength + idx + 4); } else { - final byte[] buff = new byte[8]; + final byte[] buff = new byte[VectorIndexSize]; read(HeaderInfoLength + idx, buff); sPtr = getInt(buff, 0); ePtr = getInt(buff, 4); @@ -245,23 +244,23 @@ public class Searcher { public static final byte[] shiftIndex = {24, 16, 8, 0}; /* check the specified ip address */ - public static long checkIpAddr(String ip) throws Exception { + public static long checkIP(String ip) throws Exception { String[] ps = ip.split("\\."); if (ps.length != 4) { throw new Exception("invalid ip address `" + ip + "`"); } - long ipAddr = 0; + long ipDst = 0; for (int i = 0; i < ps.length; i++) { int val = Integer.parseInt(ps[i]); if (val > 255) { throw new Exception("ip part `"+ps[i]+"` should be less then 256"); } - ipAddr |= ((long) val << shiftIndex[i]); + ipDst |= ((long) val << shiftIndex[i]); } - return ipAddr & 0xFFFFFFFFL; + return ipDst & 0xFFFFFFFFL; } } \ No newline at end of file