1、内存利用率图标增加内存已用字段。
2、ping丢包率虚拟网卡模式累加。
This commit is contained in:
@@ -45,6 +45,7 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
@@ -192,12 +193,14 @@ public class MessageHandler {
|
||||
localIsp = networkInfoChild.getIsp();
|
||||
}
|
||||
}
|
||||
// 在计算百分比之前,先并行查询所有IP归属地
|
||||
Map<String, Map<String, String>> ipLocationCache = new ConcurrentHashMap<>();
|
||||
|
||||
tcpdumpVoList.parallelStream().forEach(vo -> {
|
||||
ipLocationCache.computeIfAbsent(vo.getIp(), ip -> queryIpLocation(ip));
|
||||
});
|
||||
// 计算总数量
|
||||
Double totalCount = 0.0;
|
||||
for (TcpdumpVo tcpdumpVo : tcpdumpVoList) {
|
||||
totalCount += tcpdumpVo.getCount();
|
||||
}
|
||||
|
||||
// 分别统计IPv4和IPv6
|
||||
Map<String, List<TcpdumpVo>> ipTypeMap = new HashMap<>();
|
||||
@@ -206,6 +209,7 @@ public class MessageHandler {
|
||||
|
||||
// 按类型分类
|
||||
for (TcpdumpVo tcpdumpVo : tcpdumpVoList) {
|
||||
totalCount += tcpdumpVo.getCount();
|
||||
String ip = tcpdumpVo.getIp();
|
||||
String type = checkIPVersion(ip);
|
||||
if ("IPv4".equals(type)) {
|
||||
@@ -232,7 +236,7 @@ public class MessageHandler {
|
||||
// 按省份运营商分组统计(过滤本地省份)
|
||||
Map<String, Double> v4StatMap = new HashMap<>();
|
||||
for (TcpdumpVo tcpdumpVo : ipTypeMap.get("IPv4")) {
|
||||
Map<String, String> locationInfo = queryIpLocation(tcpdumpVo.getIp());
|
||||
Map<String, String> locationInfo = ipLocationCache.get(tcpdumpVo.getIp());
|
||||
if (locationInfo != null) {
|
||||
String operator = locationInfo.get("operator");
|
||||
String province = locationInfo.get("province");
|
||||
@@ -277,7 +281,7 @@ public class MessageHandler {
|
||||
// 按省份运营商分组统计(过滤本地省份)
|
||||
Map<String, Double> v6StatMap = new HashMap<>();
|
||||
for (TcpdumpVo tcpdumpVo : ipTypeMap.get("IPv6")) {
|
||||
Map<String, String> locationInfo = queryIpLocation(tcpdumpVo.getIp());
|
||||
Map<String, String> locationInfo = ipLocationCache.get(tcpdumpVo.getIp());
|
||||
if (locationInfo != null) {
|
||||
String operator = locationInfo.get("operator");
|
||||
String province = locationInfo.get("province");
|
||||
|
||||
Reference in New Issue
Block a user