diff --git a/README.md b/README.md
index 6b858b2..497dd88 100644
--- a/README.md
+++ b/README.md
@@ -1,27 +1,22 @@
-### @Note 升级注意
-
-**1.3版本因为调整了ip2regine.db的生成配置,binding下各种语言的实现也需要做调整,已经提交了更改,请结合最新的ip2region.db和对应的binding一起使用,跨版本会有问题!**
-
-
ip2region - 最自由的ip地址查询库,ip到地区的映射库,提供Binary,B树和纯内存三种查询算法,妈妈再也不用担心我的ip地址定位。
-**1. 99.9%准确率,定时更新:**
+### 1. 99.9%准确率,定时更新:
数据聚合了一些知名ip到地名查询提供商的数据,这些是他们官方的的准确率,经测试着实比纯真啥的准确多了。
每次聚合一下数据需要1-2天,会不定时更新。
-**2. 标准化的数据格式:**
+### 2. 标准化的数据格式:
每条ip数据段都固定了格式:_城市Id|国家|区域|省份|城市|ISP_
只有中国的数据精确到了城市,其他国家只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家。
(请忽略前面的城市Id,个人项目需求)
-**3. 体积小:**
+### 3. 体积小:
生成的数据库文件ip2region.db只有1.5M(1.2版本前是3.5M)
-**4. 多查询客户端的支持,0.0x毫秒级别的查询**
+### 4. 多查询客户端的支持,0.0x毫秒级别的查询
已经集成的客户端有:java, php, c, python,nodejs,php扩展(支持linux, php5, php7版本已支持),golang。
@@ -34,29 +29,37 @@ ip2region - 最自由的ip地址查询库,ip到地区的映射库,提供Bina
任何客户端b-tree都比binary算法快,当然Memory算法固然是最快的!
-**5. 测试程序:**
-java:
+maven仓库地址:
+```
+```
+### 5. 测试程序:
+java:
+```shell
cd binding/java
ant all
java -jar ip2region-{version}.jar ./data/ip2region.db
+```
php:
-
+```shell
php binding/php/testSearcher ./data/ip2region.db
+```
c:
-
+```shell
cd binding/c/
gcc -g -O2 testSearcher.c ip2region.c
./a.out ../../data/ip2region.db
+```
python:
-
+```shell
python binding/python/testSearcher ./data/ip2region.db
+```
均会看到如下界面:
-
+```shell
initializing B-tree ...
+----------------------------------+
| ip2region test script |
@@ -65,12 +68,14 @@ python:
+----------------------------------+
p2region>> 101.105.35.57
2163|中国|华南|广东省|深圳市|鹏博士 in 0.02295 millseconds
+```
输入ip地址开始测试,第一次会稍微有点慢,在运行命令后面接入binary,memory来尝试其他算法,建议使用b-tree算法,速度和并发需求的可以使用memory算法。
具体集成请参考不同客户端的测试源码。
-**6. 如何生成ip2region.db文件**
+
+### 6. 如何生成ip2region.db文件
从ip2region 1.2.2版本开始里面提交了一个dbMaker-{version}.jar的可以执行jar文件,用它来完成这个工作:
* 1, 确保你安装好了java环境(不玩Java的童鞋就自己谷歌找找拉,临时用一用,几分钟的事情)
diff --git a/binding/java/build.xml b/binding/java/build.xml
index 2ac3638..df11c05 100644
--- a/binding/java/build.xml
+++ b/binding/java/build.xml
@@ -9,7 +9,7 @@
| Modifier and Type | +Constant Field | +Value | +
|---|---|---|
+
+public static final int |
+BINARY_ALGORITHM |
+2 |
+
+
+public static final int |
+BTREE_ALGORITHM |
+1 |
+
+
+public static final int |
+MEMORY_ALGORITYM |
+3 |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/deprecated-list.html b/binding/java/target/apidocs/deprecated-list.html new file mode 100644 index 0000000..224dcf4 --- /dev/null +++ b/binding/java/target/apidocs/deprecated-list.html @@ -0,0 +1,126 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/help-doc.html b/binding/java/target/apidocs/help-doc.html new file mode 100644 index 0000000..7a43fa8 --- /dev/null +++ b/binding/java/target/apidocs/help-doc.html @@ -0,0 +1,231 @@ + + + + + + +The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
+Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:
+Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:
+Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
+Each annotation type has its own separate page with the following sections:
+Each enum has its own separate page with the following sections:
+Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.
+There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
+The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
+These links take you to the next or previous class, interface, package, or related page.
+These links show and hide the HTML frames. All pages are available with or without frames.
+The All Classes link shows all classes and interfaces except non-static nested types.
+Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.
+The Constant Field Values page lists the static final fields and their values.
+Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/index-all.html b/binding/java/target/apidocs/index-all.html new file mode 100644 index 0000000..cd311c4 --- /dev/null +++ b/binding/java/target/apidocs/index-all.html @@ -0,0 +1,415 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/index.html b/binding/java/target/apidocs/index.html new file mode 100644 index 0000000..38319cc --- /dev/null +++ b/binding/java/target/apidocs/index.html @@ -0,0 +1,76 @@ + + + + + + +public class DataBlock +extends Object+
| Constructor and Description | +
|---|
DataBlock(int city_id,
+ String region) |
+
DataBlock(int city_id,
+ String region,
+ int dataPtr)
+construct method
+ |
+
| Modifier and Type | +Method and Description | +
|---|---|
int |
+getCityId() |
+
int |
+getDataPtr() |
+
String |
+getRegion() |
+
DataBlock |
+setCityId(int city_id) |
+
DataBlock |
+setDataPtr(int dataPtr) |
+
DataBlock |
+setRegion(String region) |
+
String |
+toString() |
+
public DataBlock(int city_id, + String region, + int dataPtr)+
city_id - region - region stringptr - data ptrpublic DataBlock(int city_id, + String region)+
public int getCityId()+
public DataBlock setCityId(int city_id)+
public String getRegion()+
public int getDataPtr()+
public DataBlock setDataPtr(int dataPtr)+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/DbConfig.html b/binding/java/target/apidocs/org/lionsoul/ip2region/DbConfig.html new file mode 100644 index 0000000..9960ef1 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/DbConfig.html @@ -0,0 +1,345 @@ + + + + + + +public class DbConfig +extends Object+
| Constructor and Description | +
|---|
DbConfig() |
+
DbConfig(int totalHeaderSize)
+construct method
+ |
+
| Modifier and Type | +Method and Description | +
|---|---|
int |
+getIndexBlockSize() |
+
int |
+getTotalHeaderSize() |
+
DbConfig |
+setIndexBlockSize(int dataBlockSize) |
+
DbConfig |
+setTotalHeaderSize(int totalHeaderSize) |
+
public DbConfig(int totalHeaderSize) + throws DbMakerConfigException+
totalHeaderSize - dataBlockSize - DbMakerConfigExceptionpublic DbConfig() + throws DbMakerConfigException+
DbMakerConfigExceptionpublic int getTotalHeaderSize()+
public DbConfig setTotalHeaderSize(int totalHeaderSize)+
public int getIndexBlockSize()+
public DbConfig setIndexBlockSize(int dataBlockSize)+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/DbMakerConfigException.html b/binding/java/target/apidocs/org/lionsoul/ip2region/DbMakerConfigException.html new file mode 100644 index 0000000..aff85db --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/DbMakerConfigException.html @@ -0,0 +1,293 @@ + + + + + + +public class DbMakerConfigException +extends Exception+
| Constructor and Description | +
|---|
DbMakerConfigException(String info) |
+
DbMakerConfigException(String info,
+ Throwable res) |
+
DbMakerConfigException(Throwable res) |
+
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toStringCopyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/DbSearcher.html b/binding/java/target/apidocs/org/lionsoul/ip2region/DbSearcher.html new file mode 100644 index 0000000..734252a --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/DbSearcher.html @@ -0,0 +1,560 @@ + + + + + + +public class DbSearcher +extends Object+
| Modifier and Type | +Field and Description | +
|---|---|
static int |
+BINARY_ALGORITHM |
+
static int |
+BTREE_ALGORITHM |
+
static int |
+MEMORY_ALGORITYM |
+
| Constructor and Description | +
|---|
DbSearcher(DbConfig dbConfig,
+ String dbFile)
+construct class
+ |
+
| Modifier and Type | +Method and Description | +
|---|---|
DataBlock |
+binarySearch(long ip)
+get the region with a int ip address with binary search algorithm
+ |
+
DataBlock |
+binarySearch(String ip)
+get the region throught the ip address with binary search algorithm
+ |
+
DataBlock |
+btreeSearch(long ip)
+get the region with a int ip address with b-tree algorithm
+ |
+
DataBlock |
+btreeSearch(String ip)
+get the region throught the ip address with b-tree search algorithm
+ |
+
void |
+close()
+close the db
+ |
+
DataBlock |
+getByIndexPtr(long ptr)
+get by index ptr
+ |
+
DbConfig |
+getDbConfig()
+get the db config
+ |
+
DataBlock |
+memorySearch(long ip)
+get the region with a int ip address with memory binary search algorithm
+ |
+
DataBlock |
+memorySearch(String ip)
+get the region throught the ip address with memory binary search algorithm
+ |
+
public static final int BTREE_ALGORITHM+
public static final int BINARY_ALGORITHM+
public static final int MEMORY_ALGORITYM+
public DbSearcher(DbConfig dbConfig, + String dbFile) + throws FileNotFoundException+
bdConfig - dbFile - FileNotFoundExceptionpublic DataBlock memorySearch(long ip) + throws IOException+
ip - IOExceptionpublic DataBlock memorySearch(String ip) + throws IOException+
ip - IOExceptionpublic DataBlock getByIndexPtr(long ptr) + throws IOException+
indexPtr - IOExceptionpublic DataBlock btreeSearch(long ip) + throws IOException+
ip - IOExceptionpublic DataBlock btreeSearch(String ip) + throws IOException+
ip - IOExceptionpublic DataBlock binarySearch(long ip) + throws IOException+
ip - IOExceptionpublic DataBlock binarySearch(String ip) + throws IOException+
ip - IOExceptionpublic DbConfig getDbConfig()+
public void close() + throws IOException+
IOExceptionCopyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/HeaderBlock.html b/binding/java/target/apidocs/org/lionsoul/ip2region/HeaderBlock.html new file mode 100644 index 0000000..457f058 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/HeaderBlock.html @@ -0,0 +1,339 @@ + + + + + + +public class HeaderBlock +extends Object+
| Constructor and Description | +
|---|
HeaderBlock(long indexStartIp,
+ int indexPtr) |
+
| Modifier and Type | +Method and Description | +
|---|---|
byte[] |
+getBytes()
+get the bytes for db storage
+ |
+
int |
+getIndexPtr() |
+
long |
+getIndexStartIp() |
+
HeaderBlock |
+setIndexPtr(int indexPtr) |
+
HeaderBlock |
+setIndexStartIp(long indexStartIp) |
+
public HeaderBlock(long indexStartIp, + int indexPtr)+
public long getIndexStartIp()+
public HeaderBlock setIndexStartIp(long indexStartIp)+
public int getIndexPtr()+
public HeaderBlock setIndexPtr(int indexPtr)+
public byte[] getBytes()+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/IndexBlock.html b/binding/java/target/apidocs/org/lionsoul/ip2region/IndexBlock.html new file mode 100644 index 0000000..0237926 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/IndexBlock.html @@ -0,0 +1,408 @@ + + + + + + +public class IndexBlock +extends Object+
| Constructor and Description | +
|---|
IndexBlock(long startIp,
+ long endIp,
+ int dataPtr,
+ int dataLen) |
+
| Modifier and Type | +Method and Description | +
|---|---|
byte[] |
+getBytes()
+get the bytes for storage
+ |
+
int |
+getDataLen() |
+
int |
+getDataPtr() |
+
long |
+getEndIp() |
+
static int |
+getIndexBlockLength() |
+
long |
+getStartIp() |
+
IndexBlock |
+setDataLen(int dataLen) |
+
IndexBlock |
+setDataPtr(int dataPtr) |
+
IndexBlock |
+setEndIp(long endIp) |
+
IndexBlock |
+setStartIp(long startIp) |
+
public IndexBlock(long startIp, + long endIp, + int dataPtr, + int dataLen)+
public long getStartIp()+
public IndexBlock setStartIp(long startIp)+
public long getEndIp()+
public IndexBlock setEndIp(long endIp)+
public int getDataPtr()+
public IndexBlock setDataPtr(int dataPtr)+
public int getDataLen()+
public IndexBlock setDataLen(int dataLen)+
public static int getIndexBlockLength()+
public byte[] getBytes()+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/Util.html b/binding/java/target/apidocs/org/lionsoul/ip2region/Util.html new file mode 100644 index 0000000..609dc04 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/Util.html @@ -0,0 +1,462 @@ + + + + + + +public class Util +extends Object+
| Modifier and Type | +Method and Description | +
|---|---|
static int |
+getInt1(byte[] b,
+ int offset) |
+
static int |
+getInt2(byte[] b,
+ int offset) |
+
static int |
+getInt3(byte[] b,
+ int offset)
+get a int from a byte array start from the specifield offset
+ |
+
static long |
+getIntLong(byte[] b,
+ int offset)
+get a int from a byte array start from the specifiled offset
+ |
+
static long |
+ip2long(String ip)
+string ip to long ip
+ |
+
static boolean |
+isIpAddress(String ip)
+check the validate of the specifeld ip address
+ |
+
static String |
+long2ip(long ip)
+int to ip string
+ |
+
static void |
+write(byte[] b,
+ int offset,
+ long v,
+ int bytes)
+write specfield bytes to a byte array start from offset
+ |
+
static void |
+writeIntLong(byte[] b,
+ int offset,
+ long v)
+write a int to a byte array
+ |
+
public static void write(byte[] b, + int offset, + long v, + int bytes)+
b - offset - v - bytes - public static void writeIntLong(byte[] b, + int offset, + long v)+
b - offet - v - public static long getIntLong(byte[] b, + int offset)+
b - offset - public static int getInt3(byte[] b, + int offset)+
b - offset - public static int getInt2(byte[] b, + int offset)+
public static int getInt1(byte[] b, + int offset)+
public static long ip2long(String ip)+
ip - public static String long2ip(long ip)+
ip - public static boolean isIpAddress(String ip)+
ip - Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DataBlock.html b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DataBlock.html new file mode 100644 index 0000000..193b848 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DataBlock.html @@ -0,0 +1,216 @@ + + + + + + +| Package | +Description | +
|---|---|
| org.lionsoul.ip2region | ++ |
| Modifier and Type | +Method and Description | +
|---|---|
DataBlock |
+DbSearcher.binarySearch(long ip)
+get the region with a int ip address with binary search algorithm
+ |
+
DataBlock |
+DbSearcher.binarySearch(String ip)
+get the region throught the ip address with binary search algorithm
+ |
+
DataBlock |
+DbSearcher.btreeSearch(long ip)
+get the region with a int ip address with b-tree algorithm
+ |
+
DataBlock |
+DbSearcher.btreeSearch(String ip)
+get the region throught the ip address with b-tree search algorithm
+ |
+
DataBlock |
+DbSearcher.getByIndexPtr(long ptr)
+get by index ptr
+ |
+
DataBlock |
+DbSearcher.memorySearch(long ip)
+get the region with a int ip address with memory binary search algorithm
+ |
+
DataBlock |
+DbSearcher.memorySearch(String ip)
+get the region throught the ip address with memory binary search algorithm
+ |
+
DataBlock |
+DataBlock.setCityId(int city_id) |
+
DataBlock |
+DataBlock.setDataPtr(int dataPtr) |
+
DataBlock |
+DataBlock.setRegion(String region) |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbConfig.html b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbConfig.html new file mode 100644 index 0000000..48fe2fe --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbConfig.html @@ -0,0 +1,190 @@ + + + + + + +| Package | +Description | +
|---|---|
| org.lionsoul.ip2region | ++ |
| Modifier and Type | +Method and Description | +
|---|---|
DbConfig |
+DbSearcher.getDbConfig()
+get the db config
+ |
+
DbConfig |
+DbConfig.setIndexBlockSize(int dataBlockSize) |
+
DbConfig |
+DbConfig.setTotalHeaderSize(int totalHeaderSize) |
+
| Constructor and Description | +
|---|
DbSearcher(DbConfig dbConfig,
+ String dbFile)
+construct class
+ |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbMakerConfigException.html b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbMakerConfigException.html new file mode 100644 index 0000000..6f97272 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbMakerConfigException.html @@ -0,0 +1,169 @@ + + + + + + +| Package | +Description | +
|---|---|
| org.lionsoul.ip2region | ++ |
| Constructor and Description | +
|---|
DbConfig() |
+
DbConfig(int totalHeaderSize)
+construct method
+ |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbSearcher.html b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbSearcher.html new file mode 100644 index 0000000..da93a2d --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/DbSearcher.html @@ -0,0 +1,126 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/HeaderBlock.html b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/HeaderBlock.html new file mode 100644 index 0000000..9e2cd2f --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/HeaderBlock.html @@ -0,0 +1,170 @@ + + + + + + +| Package | +Description | +
|---|---|
| org.lionsoul.ip2region | ++ |
| Modifier and Type | +Method and Description | +
|---|---|
HeaderBlock |
+HeaderBlock.setIndexPtr(int indexPtr) |
+
HeaderBlock |
+HeaderBlock.setIndexStartIp(long indexStartIp) |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/IndexBlock.html b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/IndexBlock.html new file mode 100644 index 0000000..1cbc883 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/IndexBlock.html @@ -0,0 +1,178 @@ + + + + + + +| Package | +Description | +
|---|---|
| org.lionsoul.ip2region | ++ |
| Modifier and Type | +Method and Description | +
|---|---|
IndexBlock |
+IndexBlock.setDataLen(int dataLen) |
+
IndexBlock |
+IndexBlock.setDataPtr(int dataPtr) |
+
IndexBlock |
+IndexBlock.setEndIp(long endIp) |
+
IndexBlock |
+IndexBlock.setStartIp(long startIp) |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/Util.html b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/Util.html new file mode 100644 index 0000000..1fec146 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/class-use/Util.html @@ -0,0 +1,126 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/package-frame.html b/binding/java/target/apidocs/org/lionsoul/ip2region/package-frame.html new file mode 100644 index 0000000..1fe3918 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/package-frame.html @@ -0,0 +1,30 @@ + + + + + + +| Class | +Description | +
|---|---|
| DataBlock | +
+ data block class
+ |
+
| DbConfig | +
+ database configuration class
+ |
+
| DbSearcher | +
+ ip db searcher class (Not thread safe)
+ |
+
| HeaderBlock | +
+ header block class
+ |
+
| IndexBlock | +
+ item index class
+ |
+
| Util | +
+ util class
+ |
+
| Exception | +Description | +
|---|---|
| DbMakerConfigException | +
+ configuration exception
+ |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/package-tree.html b/binding/java/target/apidocs/org/lionsoul/ip2region/package-tree.html new file mode 100644 index 0000000..bbad4a3 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/package-tree.html @@ -0,0 +1,153 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/package-use.html b/binding/java/target/apidocs/org/lionsoul/ip2region/package-use.html new file mode 100644 index 0000000..060a891 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/package-use.html @@ -0,0 +1,181 @@ + + + + + + +| Package | +Description | +
|---|---|
| org.lionsoul.ip2region | ++ |
| Class and Description | +
|---|
| DataBlock
+ data block class
+ |
+
| DbConfig
+ database configuration class
+ |
+
| DbMakerConfigException
+ configuration exception
+ |
+
| HeaderBlock
+ header block class
+ |
+
| IndexBlock
+ item index class
+ |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestSearcher.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestSearcher.html new file mode 100644 index 0000000..b651b4b --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestSearcher.html @@ -0,0 +1,278 @@ + + + + + + +public class TestSearcher +extends Object+
| Constructor and Description | +
|---|
TestSearcher() |
+
| Modifier and Type | +Method and Description | +
|---|---|
static void |
+main(String[] argv) |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestUnit.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestUnit.html new file mode 100644 index 0000000..154b4a1 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestUnit.html @@ -0,0 +1,278 @@ + + + + + + +public class TestUnit +extends Object+
| Modifier and Type | +Method and Description | +
|---|---|
static void |
+main(String[] args) |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestUtil.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestUtil.html new file mode 100644 index 0000000..942254d --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/TestUtil.html @@ -0,0 +1,278 @@ + + + + + + +public class TestUtil +extends Object+
| Modifier and Type | +Method and Description | +
|---|---|
static void |
+main(String[] argv) |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestSearcher.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestSearcher.html new file mode 100644 index 0000000..2893bd2 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestSearcher.html @@ -0,0 +1,126 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestUnit.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestUnit.html new file mode 100644 index 0000000..47bc52e --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestUnit.html @@ -0,0 +1,126 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestUtil.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestUtil.html new file mode 100644 index 0000000..2ebf83f --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/class-use/TestUtil.html @@ -0,0 +1,126 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-frame.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-frame.html new file mode 100644 index 0000000..0c89be4 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-frame.html @@ -0,0 +1,23 @@ + + + + + + +| Class | +Description | +
|---|---|
| TestSearcher | +
+ project test script
+ |
+
| TestUnit | +
+ data check class
+ |
+
| TestUtil | +
+ project test script
+ |
+
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-tree.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-tree.html new file mode 100644 index 0000000..12b31b7 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-tree.html @@ -0,0 +1,141 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-use.html b/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-use.html new file mode 100644 index 0000000..d5241b3 --- /dev/null +++ b/binding/java/target/apidocs/org/lionsoul/ip2region/test/package-use.html @@ -0,0 +1,126 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/overview-frame.html b/binding/java/target/apidocs/overview-frame.html new file mode 100644 index 0000000..37f6be2 --- /dev/null +++ b/binding/java/target/apidocs/overview-frame.html @@ -0,0 +1,23 @@ + + + + + + ++ + diff --git a/binding/java/target/apidocs/overview-summary.html b/binding/java/target/apidocs/overview-summary.html new file mode 100644 index 0000000..8bb2edf --- /dev/null +++ b/binding/java/target/apidocs/overview-summary.html @@ -0,0 +1,144 @@ + + + + + + +
| Package | +Description | +
|---|---|
| org.lionsoul.ip2region | ++ |
| org.lionsoul.ip2region.test | ++ |
Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/overview-tree.html b/binding/java/target/apidocs/overview-tree.html new file mode 100644 index 0000000..26aa565 --- /dev/null +++ b/binding/java/target/apidocs/overview-tree.html @@ -0,0 +1,157 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/package-list b/binding/java/target/apidocs/package-list new file mode 100644 index 0000000..acab539 --- /dev/null +++ b/binding/java/target/apidocs/package-list @@ -0,0 +1,2 @@ +org.lionsoul.ip2region +org.lionsoul.ip2region.test diff --git a/binding/java/target/apidocs/script.js b/binding/java/target/apidocs/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/binding/java/target/apidocs/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/binding/java/target/apidocs/serialized-form.html b/binding/java/target/apidocs/serialized-form.html new file mode 100644 index 0000000..2ba28ff --- /dev/null +++ b/binding/java/target/apidocs/serialized-form.html @@ -0,0 +1,143 @@ + + + + + + +Copyright © 2017. All rights reserved.
+ + diff --git a/binding/java/target/apidocs/stylesheet.css b/binding/java/target/apidocs/stylesheet.css new file mode 100644 index 0000000..98055b2 --- /dev/null +++ b/binding/java/target/apidocs/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/binding/java/target/ip2region-1.4-javadoc.jar.asc b/binding/java/target/ip2region-1.4-javadoc.jar.asc new file mode 100644 index 0000000..a7ebbb5 --- /dev/null +++ b/binding/java/target/ip2region-1.4-javadoc.jar.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQEcBAABAgAGBQJZ7YCFAAoJELSsKBmaQiajakwIALxAokzZ4uRrL6IIO9er0gQ3 +k+uIW+dOpH/O0Xpem+wrl3JOq1HoeIfcW9lzj+wzbznhgpE7+0Yz2/XmI1yd+Ug6 +A5TmGzeb5Z2Mwbmw12gbfZI4VLQ70TzHS1BBDv9UsRKxHpo9MunVZ/DkhYMsT6Le +lLfepdOsy2WIo6GUJP5lTYO20QwQRx4IoFgLlSViIAdBDnVpuj75d2hnSpH7WijB +h0LPPOycyy7Rsy8TCAzPvh/U0e2W0m6FvM5tvkNDP0/PHEaQQ5Lw9MAHXHz/MWOS +vDvJ8fHt65MdsnDzJ6ev25XJ8xy5M1iS/bRbyVCHbPD59T18HZkJQLRDdXX4xiM= +=6kop +-----END PGP SIGNATURE----- diff --git a/binding/java/target/ip2region-1.4-sources.jar.asc b/binding/java/target/ip2region-1.4-sources.jar.asc new file mode 100644 index 0000000..37bc077 --- /dev/null +++ b/binding/java/target/ip2region-1.4-sources.jar.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQEcBAABAgAGBQJZ7YCFAAoJELSsKBmaQiajOTIH/iVcfGRpfdCMno60sjgygYtk +kvfk3gKyFjc+HDjoYBXF/aLQojC5SOBx0Xg9EqlZG3atq+sm+Hoz8O5cU/JjcwrU +fOBB8ca5b27n8tth6MQImlIirNd5+CbiOn8Ou5oL/AAwq0jZ+P1nOPx+TQ6l3Zmr +iLxrZ7enx9OQsIna4vjMz3Y+D30ViCHCALm8+yaypMTBBwxx93IPEONSE+F2Cha1 +4LBvtSUSK+51JMzH3W/d+u0uvdgazNc+wF1f7SAn4aDfbBEXMzjROTIqUh8a4qBX +zAAXwP49Lu4EU0zVH6A3UHgVcyPSBnhnohR9YlLxTR//TM45ef5rvOrLZH50st0= +=2gQ4 +-----END PGP SIGNATURE----- diff --git a/binding/java/target/ip2region-1.4.jar.asc b/binding/java/target/ip2region-1.4.jar.asc new file mode 100644 index 0000000..6d0818d --- /dev/null +++ b/binding/java/target/ip2region-1.4.jar.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQEcBAABAgAGBQJZ7YB+AAoJELSsKBmaQiajc1wIAJdid768yjVbMjeTvhZ8V9Sj +9NvaoeApXPceBi2bneHT+lvu+30bvbxEZ12ljfsqMC2lwFixiJvOZv/mCq1+Oqo1 +EAqSZZogQofXhr3KzgJNsTWr9raFhkbRS9qMK5P+Wfmqs14z55J1jW3axS2Da7OU +7cGdcOsnqoAY3mp59b3EuVlXx1kNXpbmRgqm/GMXHJcax67XfITmA3kXf6TdL9t7 +xnSt905Mrzk24ZGCt5fdJ9tDzH/JAspYHP4l9zzfeej9LxnflGXUSP9KMJSUyxrS +cyIveNfP4ulUwRX+68LwyEDiHsMx+NSnZUdbx487x1RaP8So1ufqQUvPZjYE76g= +=0a8X +-----END PGP SIGNATURE----- diff --git a/binding/java/target/ip2region-1.4.pom b/binding/java/target/ip2region-1.4.pom new file mode 100644 index 0000000..a4a7651 --- /dev/null +++ b/binding/java/target/ip2region-1.4.pom @@ -0,0 +1,190 @@ + +