mirror of
https://github.com/lionsoul2014/ip2region.git
synced 2025-12-08 19:25:22 +00:00
auto close the handle after buffer loaded
This commit is contained in:
parent
c15be8c7b5
commit
680624db65
@ -7,7 +7,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.lionsoul</groupId>
|
<groupId>org.lionsoul</groupId>
|
||||||
<artifactId>ip2region</artifactId>
|
<artifactId>ip2region</artifactId>
|
||||||
<version>2.6.4</version>
|
<version>2.6.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -41,7 +41,10 @@ public class SearcherTest {
|
|||||||
System.out.printf("failed to search(%s): %s\n", ip, e);
|
System.out.printf("failed to search(%s): %s\n", ip, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3、备注:并发使用,每个线程需要创建一个独立的 searcher 对象单独使用。
|
// 3、关闭资源
|
||||||
|
searcher.close();
|
||||||
|
|
||||||
|
// 备注:并发使用,每个线程需要创建一个独立的 searcher 对象单独使用。
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -86,6 +89,9 @@ public class SearcherTest {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.printf("failed to search(%s): %s\n", ip, e);
|
System.out.printf("failed to search(%s): %s\n", ip, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 4、关闭资源
|
||||||
|
searcher.close();
|
||||||
|
|
||||||
// 备注:每个线程需要单独创建一个独立的 Searcher 对象,但是都共享全局的制度 vIndex 缓存。
|
// 备注:每个线程需要单独创建一个独立的 Searcher 对象,但是都共享全局的制度 vIndex 缓存。
|
||||||
}
|
}
|
||||||
@ -132,6 +138,9 @@ public class SearcherTest {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.printf("failed to search(%s): %s\n", ip, e);
|
System.out.printf("failed to search(%s): %s\n", ip, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 4、关闭资源 - 该 searcher 对象可以安全用于并发,等整个服务关闭的时候再关闭 searcher
|
||||||
|
// searcher.close();
|
||||||
|
|
||||||
// 备注:并发使用,用整个 xdb 数据缓存创建的查询对象可以安全的用于并发,也就是你可以把这个 searcher 对象做成全局对象去跨线程访问。
|
// 备注:并发使用,用整个 xdb 数据缓存创建的查询对象可以安全的用于并发,也就是你可以把这个 searcher 对象做成全局对象去跨线程访问。
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<groupId>org.lionsoul</groupId>
|
<groupId>org.lionsoul</groupId>
|
||||||
<artifactId>ip2region</artifactId>
|
<artifactId>ip2region</artifactId>
|
||||||
<version>2.6.4</version>
|
<version>2.6.5</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>ip2region</name>
|
<name>ip2region</name>
|
||||||
|
|||||||
@ -167,8 +167,10 @@ public class Searcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Header loadHeaderFromFile(String dbPath) throws IOException {
|
public static Header loadHeaderFromFile(String dbPath) throws IOException {
|
||||||
RandomAccessFile handle = new RandomAccessFile(dbPath, "r");
|
final RandomAccessFile handle = new RandomAccessFile(dbPath, "r");
|
||||||
return loadHeader(handle);
|
final Header header = loadHeader(handle);
|
||||||
|
handle.close();
|
||||||
|
return header;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] loadVectorIndex(RandomAccessFile handle) throws IOException {
|
public static byte[] loadVectorIndex(RandomAccessFile handle) throws IOException {
|
||||||
@ -184,8 +186,10 @@ public class Searcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] loadVectorIndexFromFile(String dbPath) throws IOException {
|
public static byte[] loadVectorIndexFromFile(String dbPath) throws IOException {
|
||||||
RandomAccessFile handle = new RandomAccessFile(dbPath, "r");
|
final RandomAccessFile handle = new RandomAccessFile(dbPath, "r");
|
||||||
return loadVectorIndex(handle);
|
final byte[] vIndex = loadVectorIndex(handle);
|
||||||
|
handle.close();
|
||||||
|
return vIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] loadContent(RandomAccessFile handle) throws IOException {
|
public static byte[] loadContent(RandomAccessFile handle) throws IOException {
|
||||||
@ -200,8 +204,10 @@ public class Searcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] loadContentFromFile(String dbPath) throws IOException {
|
public static byte[] loadContentFromFile(String dbPath) throws IOException {
|
||||||
RandomAccessFile handle = new RandomAccessFile(dbPath, "r");
|
final RandomAccessFile handle = new RandomAccessFile(dbPath, "r");
|
||||||
return loadContent(handle);
|
final byte[] content = loadContent(handle);
|
||||||
|
handle.close();
|
||||||
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- End cache load util function
|
// --- End cache load util function
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user