diff options
| author | doufenghu <[email protected]> | 2023-05-27 18:16:42 +0800 |
|---|---|---|
| committer | doufenghu <[email protected]> | 2023-05-27 18:16:42 +0800 |
| commit | f599767054c7591d6ed4b9128c5b074d8103c0b6 (patch) | |
| tree | 0b0465f1f5a917a712b28a493e9b19d98b68789e | |
| parent | 3b1446d1f476f660a2665986a1af85565cda1824 (diff) | |
V.1.1.3v1.1.3
1.更新 IpLookupV2.infoLookupToJson json序列化引用Fastjson2工具类库。
2.JsonMapper标识为已过时,后续版本删除Jackson相关引用。
3。引入DataSketches测试类
| -rw-r--r-- | pom.xml | 26 | ||||
| -rw-r--r-- | src/main/java/com/zdjizhi/utils/IpLookupV2.java | 6 | ||||
| -rw-r--r-- | src/main/java/com/zdjizhi/utils/JsonMapper.java | 2 | ||||
| -rw-r--r-- | src/test/java/com/zdjizhi/test/HllSketchTest.java | 94 | ||||
| -rw-r--r-- | src/test/java/com/zdjizhi/test/IpLookupV2Test.java | 21 |
5 files changed, 126 insertions, 23 deletions
@@ -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")); + + } |
