summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoufenghu <[email protected]>2023-05-27 18:16:42 +0800
committerdoufenghu <[email protected]>2023-05-27 18:16:42 +0800
commitf599767054c7591d6ed4b9128c5b074d8103c0b6 (patch)
tree0b0465f1f5a917a712b28a493e9b19d98b68789e
parent3b1446d1f476f660a2665986a1af85565cda1824 (diff)
V.1.1.3v1.1.3
1.更新 IpLookupV2.infoLookupToJson json序列化引用Fastjson2工具类库。 2.JsonMapper标识为已过时,后续版本删除Jackson相关引用。 3。引入DataSketches测试类
-rw-r--r--pom.xml26
-rw-r--r--src/main/java/com/zdjizhi/utils/IpLookupV2.java6
-rw-r--r--src/main/java/com/zdjizhi/utils/JsonMapper.java2
-rw-r--r--src/test/java/com/zdjizhi/test/HllSketchTest.java94
-rw-r--r--src/test/java/com/zdjizhi/test/IpLookupV2Test.java21
5 files changed, 126 insertions, 23 deletions
diff --git a/pom.xml b/pom.xml
index 17a9875..9d52170 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
<artifactId>galaxy</artifactId>
<packaging>jar</packaging>
<name>galaxy</name>
- <version>1.1.2</version>
+ <version>1.1.3</version>
<description>galaxy tools for common</description>
<url>http://www.zdjizhi.com/galaxy-tool</url>
@@ -19,16 +19,6 @@
</license>
</licenses>
- <scm>
- <connection>
- scm:git:git://github.com/sonatype/sample-project.git
- </connection>
- <url>http://github.com/sonatype/sample-project.git</url>
- <developerConnection>
- scm:git:git://github.com/sonatype-sample-project.git
- </developerConnection>
- </scm>
-
<developers>
<developer>
<id>galaxy tools</id>
@@ -204,7 +194,6 @@
</dependency>
-
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
@@ -252,6 +241,19 @@
<version>23.0</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.datasketches</groupId>
+ <artifactId>datasketches-java</artifactId>
+ <version>3.3.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.alibaba.fastjson2</groupId>
+ <artifactId>fastjson2</artifactId>
+ <version>2.0.32</version>
+ </dependency>
+
</dependencies>
diff --git a/src/main/java/com/zdjizhi/utils/IpLookupV2.java b/src/main/java/com/zdjizhi/utils/IpLookupV2.java
index 1f451bc..8ef1225 100644
--- a/src/main/java/com/zdjizhi/utils/IpLookupV2.java
+++ b/src/main/java/com/zdjizhi/utils/IpLookupV2.java
@@ -1,5 +1,6 @@
package com.zdjizhi.utils;
+import com.alibaba.fastjson2.JSON;
import com.google.common.base.Joiner;
import com.maxmind.db.CHMCache;
import com.maxmind.geoip2.exception.AddressNotFoundException;
@@ -635,8 +636,6 @@ public final class IpLookupV2 extends AbstractIpLookup{
return ipInfo.toString();
}
-
-
@Override
public String infoLookupToJson(String ip) {
LocationResponseV2 response = getResponse(ip);
@@ -644,7 +643,8 @@ public final class IpLookupV2 extends AbstractIpLookup{
response = new LocationResponseV2();
}
response.setAsn(asnLookup(ip));
- return JsonMapper.toJsonString(response);
+
+ return JSON.toJSONString(response);
}
diff --git a/src/main/java/com/zdjizhi/utils/JsonMapper.java b/src/main/java/com/zdjizhi/utils/JsonMapper.java
index c5d31a0..adb11fa 100644
--- a/src/main/java/com/zdjizhi/utils/JsonMapper.java
+++ b/src/main/java/com/zdjizhi/utils/JsonMapper.java
@@ -22,10 +22,12 @@ import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.util.JSONPObject;
/**
+ * JsonMapper 解析类已过时,使用Fastjson2进行JSON解析
* 简单封装Jackson,实现JSON String to Java Object的Mapper.
* 封装不同的输出风格, 使用不同的builder函数创建实例.
* @author darnell
*/
+@Deprecated
public class JsonMapper extends ObjectMapper {
private static final long serialVersionUID = 1L;
diff --git a/src/test/java/com/zdjizhi/test/HllSketchTest.java b/src/test/java/com/zdjizhi/test/HllSketchTest.java
new file mode 100644
index 0000000..3821724
--- /dev/null
+++ b/src/test/java/com/zdjizhi/test/HllSketchTest.java
@@ -0,0 +1,94 @@
+package com.zdjizhi.test;
+
+import com.zdjizhi.utils.IPUtil;
+import org.apache.commons.lang3.RandomUtils;
+import org.apache.datasketches.frequencies.ErrorType;
+import org.apache.datasketches.frequencies.ItemsSketch;
+import org.apache.datasketches.hll.HllSketch;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class HllSketchTest {
+ @Test
+ public void testHllSketch() {
+ HllSketch sketch = new HllSketch();
+ long ipaddr = IPUtil.getIpDesimal("1.1.1.1");
+ long n = 10000000;
+ List<String> ipSets = new ArrayList<String>();
+ for (int i = 0; i < n; i++) {
+ String ip = String.valueOf(ipaddr + RandomUtils.nextInt(1, 100000000));
+ ipSets.add(ip);
+ sketch.update(IPUtil.getIpString(ip));
+ }
+
+ long startTime = System.nanoTime();
+ System.out.println("Unique IPs: " + ipSets.stream().distinct().count());
+ System.out.println((System.nanoTime() - startTime) / 1000 / 1000 + "s");
+
+ startTime = System.nanoTime();
+ System.out.println("Estimated IPs:" + sketch.getEstimate());
+ System.out.println(sketch.toString());
+ System.out.println((System.nanoTime() - startTime) / 1000 / 1000 + "s");
+
+ }
+
+ @Test
+ public void testFrequentItems() {
+ ItemsSketch<String> sketch = new ItemsSketch<String>(67108864);
+ sketch.update("abc.com", 10);
+ sketch.update("bcd.com", 5);
+ sketch.update("def.com", 5);
+ sketch.update("efg.com", 8);
+ sketch.update("abc.com", 5);
+ sketch.update("121.com", 5);
+ sketch.update("bcd1.com", 5);
+ sketch.update("def2.com", 5);
+ sketch.update("ef3.com", 8);
+ sketch.update("abc4.com", 5);
+
+ for (ItemsSketch.Row<String> item : sketch.getFrequentItems(ErrorType.NO_FALSE_POSITIVES)) {
+ System.out.println(item.getItem() + "-" + item.getEstimate());
+
+ }
+ }
+
+
+ @Test
+ public void topK() {
+ ItemsSketch<String> sk = new ItemsSketch<>(16);
+ sk.update("1.1.1.1", 1020);
+ sk.update("1.1.1.2", 21020);
+ sk.update("1.1.1.1", 100);
+ sk.update("1.1.1.3", 100);
+ sk.update("1.1.1.3", 100);
+ sk.update("1.1.1.4", 100);
+ sk.update("1.1.1.5", 100);
+ sk.update("1.1.1.6", 100);
+ sk.update("1.1.1.10", 100);
+ sk.update("1.1.1.5", 100000);
+ sk.update("1.1.1.9", 100);
+ sk.update("1.1.1.234", 100);
+ sk.update("1.1.2.234", 100);
+ sk.update("2.1.2.234", 100);
+ sk.update("2.2.2.234", 100);
+ sk.update("10.1.2.234", 100);
+ sk.update("102.1.2.234", 100);
+
+
+ ItemsSketch.Row<String>[] items = sk.getFrequentItems(10, ErrorType.NO_FALSE_POSITIVES);
+ System.out.println(sk.getNumActiveItems());
+ for (ItemsSketch.Row<String> item : items) {
+
+ System.out.println(item.getItem()
+ + " - " + item.getEstimate()
+ + " - " + item.getLowerBound()
+ + " - " + item.getUpperBound());
+
+
+ }
+ }
+
+
+}
diff --git a/src/test/java/com/zdjizhi/test/IpLookupV2Test.java b/src/test/java/com/zdjizhi/test/IpLookupV2Test.java
index 7a47e86..8dafc73 100644
--- a/src/test/java/com/zdjizhi/test/IpLookupV2Test.java
+++ b/src/test/java/com/zdjizhi/test/IpLookupV2Test.java
@@ -74,20 +74,25 @@ public class IpLookupV2Test {
logger.info(ipLookup.asnLookup("120.221.155.223"));
logger.info(ipLookup.infoLookupToCSV("120.221.155.223"));
logger.info(ipLookup.infoLookupToJson("120.221.155.223"));
+
+ }
+
+ @Test
+ public void testOutputJson() {
+ logger.info(ipLookup.infoLookupToJson("120.221.155.223"));
+
}
@Test
public void testAsnLookupOutput() {
- logger.info(ipLookup.asnLookup("120.221.155.223"));
- logger.info(ipLookup.asnLookup("203.187.160.135"));
- logger.info(ipLookup.asnLookup("116.128.133.102"));
- logger.info(ipLookup.asnLookupInfo("116.128.133.102"));
- logger.info(ipLookup.asnLookupDetail("116.128.133.102"));
- logger.info(ipLookup.asnLookup("2001:4860:4860::8888"));
- logger.info(ipLookup.asnLookup("1.1.1.1"));
- logger.info(ipLookup.asnLookupOrganization("116.128.133.102"));
+
+ logger.info(ipLookup.asnLookupOrganization("8.8.8.8"));
+ logger.info(ipLookup.asnLookupDetail("8.8.8.8"));
+ logger.info(ipLookup.asnLookupOrganization("8.8.8.8"));
+
+
}