From 19be05a25d73b8f4f15bfb7240b6b8721171a35e Mon Sep 17 00:00:00 2001 From: wangxin Date: Fri, 16 Nov 2018 15:38:16 +0800 Subject: [PATCH] =?UTF-8?q?(1)=E5=B0=86excel=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E7=B1=BB=E5=88=92=E5=88=86=E5=88=B0thread?= =?UTF-8?q?=E5=8C=85=E4=B8=8B=20(2)Ddos=E9=AA=8C=E8=AF=81=E6=97=B6?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E5=8D=8F=E8=AE=AE=E4=B8=BA=E7=A9=BA=EF=BC=8C?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8D=8F=E8=AE=AE=E5=80=BC=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=20(3)Ddos=20ip=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=89=B9=E9=87=8F=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CheckComplexStringFormatThread.java | 2 +- .../CheckDnsResStrategyFormatThread.java | 2 +- .../{ => thread}/CheckIpFormatThread.java | 4 ++- .../{ => thread}/CheckStringFormatThread.java | 2 +- .../nis/web/controller/BaseController.java | 23 +++------------- .../service/configuration/DdosCfgService.java | 26 ++++++++++++++++++- 6 files changed, 35 insertions(+), 24 deletions(-) rename src/main/java/com/nis/util/excel/{ => thread}/CheckComplexStringFormatThread.java (97%) rename src/main/java/com/nis/util/excel/{ => thread}/CheckDnsResStrategyFormatThread.java (96%) rename src/main/java/com/nis/util/excel/{ => thread}/CheckIpFormatThread.java (97%) rename src/main/java/com/nis/util/excel/{ => thread}/CheckStringFormatThread.java (97%) diff --git a/src/main/java/com/nis/util/excel/CheckComplexStringFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java similarity index 97% rename from src/main/java/com/nis/util/excel/CheckComplexStringFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java index cad6c61ce..aa3be95cb 100644 --- a/src/main/java/com/nis/util/excel/CheckComplexStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckComplexStringFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/nis/util/excel/CheckDnsResStrategyFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckDnsResStrategyFormatThread.java similarity index 96% rename from src/main/java/com/nis/util/excel/CheckDnsResStrategyFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckDnsResStrategyFormatThread.java index fed0b6439..d56b7ea10 100644 --- a/src/main/java/com/nis/util/excel/CheckDnsResStrategyFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckDnsResStrategyFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/nis/util/excel/CheckIpFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java similarity index 97% rename from src/main/java/com/nis/util/excel/CheckIpFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java index 7772ccaf2..6cfa4627b 100644 --- a/src/main/java/com/nis/util/excel/CheckIpFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckIpFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; @@ -278,6 +278,8 @@ public class CheckIpFormatThread implements Callable{ String.format(prop.getProperty("can_not_null"), prop.getProperty("pps_threadshold")) + ";"); } + }else { + baseIpCfg.setAntiddosProtocol(""); } } if (regionDict.getRegionType().equals(1)) { diff --git a/src/main/java/com/nis/util/excel/CheckStringFormatThread.java b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java similarity index 97% rename from src/main/java/com/nis/util/excel/CheckStringFormatThread.java rename to src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java index eb160cd93..61c22ba27 100644 --- a/src/main/java/com/nis/util/excel/CheckStringFormatThread.java +++ b/src/main/java/com/nis/util/excel/thread/CheckStringFormatThread.java @@ -1,4 +1,4 @@ -package com.nis.util.excel; +package com.nis.util.excel.thread; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index b48b8f313..4f57523db 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -85,12 +85,12 @@ import com.nis.util.DateUtils; import com.nis.util.DictUtils; import com.nis.util.JsonMapper; import com.nis.util.StringUtil; -import com.nis.util.excel.CheckComplexStringFormatThread; -import com.nis.util.excel.CheckDnsResStrategyFormatThread; -import com.nis.util.excel.CheckIpFormatThread; -import com.nis.util.excel.CheckStringFormatThread; import com.nis.util.excel.ExportExcel; import com.nis.util.excel.ImportBigExcel; +import com.nis.util.excel.thread.CheckComplexStringFormatThread; +import com.nis.util.excel.thread.CheckDnsResStrategyFormatThread; +import com.nis.util.excel.thread.CheckIpFormatThread; +import com.nis.util.excel.thread.CheckStringFormatThread; import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.dao.configuration.WebsiteCfgDao; import com.nis.web.security.UserUtils; @@ -1183,42 +1183,33 @@ public class BaseController { BlockingQueue list = ei.getDataList(IpRateLimitTemplate.class ); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } } else if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { BlockingQueue list = ei.getDataList(DnsIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); }else if(regionDict.getFunctionId().equals(401)) { BlockingQueue list = ei.getDataList(DnsIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); }else if (regionDict.getFunctionId().equals(212)) { BlockingQueue list = ei.getDataList(IpPayloadTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else if (regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())) { // P2p IP BlockingQueue list = ei.getDataList(P2pIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else if (regionDict.getFunctionId().equals(600)) {// ASN IP //加载asn缓存 AsnCacheUtils.init(); BlockingQueue list = ei.getDataList(AsnIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,asnNoMaps, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, asnNoMaps, list); } else if (regionDict.getFunctionId().equals(301)) {// DDOS IP BlockingQueue list = ei.getDataList(DdosIpTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } else { BlockingQueue list = ei.getDataList(IpAllTemplate.class ); -// ipPortCfgs = this.checkIpCfg(serviceDict, regionDict,null, list); ipPortCfgs=this.checkIpCfgMulity(serviceDict, regionDict, null, list); } } else if (regionDict.getRegionType().equals(2)) {// 字符串类 @@ -1226,16 +1217,13 @@ public class BaseController { && "p2p_hash".equals(regionDict.getConfigServiceType())) { // P2p hash BlockingQueue list = ei.getDataList(P2pHashStringTemplate.class ); -// stringCfgs = this.checkStringCfg(serviceDict, regionDict, list); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); }else if (regionDict.getFunctionId().equals(403)) { BlockingQueue list = ei.getDataList(AppDomainTemplate.class ); -// stringCfgs = this.checkStringCfg(serviceDict, regionDict, list); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); } else { BlockingQueue list = ei.getDataList(StringAllTemplate.class ); -// stringCfgs = this.checkStringCfg(serviceDict, regionDict, list); stringCfgs=this.checkStringCfgMulity(serviceDict, regionDict, list); } @@ -1243,12 +1231,10 @@ public class BaseController { if (regionDict.getFunctionId().equals(7)&&serviceDict!=null&&serviceDict.getAction().intValue()==16) { BlockingQueue list = ei.getDataList(DnsComplexStringTemplate.class ); -// complexkeywordCfgs = this.checkComplexStringCfg(serviceDict, regionDict, list); complexkeywordCfgs = this.checkComplexStringCfgMulity(serviceDict, regionDict, list); } else { BlockingQueue list = ei.getDataList(ComplexStringAllTemplate.class ); -// complexkeywordCfgs = this.checkComplexStringCfg(serviceDict, regionDict, list); complexkeywordCfgs = this.checkComplexStringCfgMulity(serviceDict, regionDict, list); } @@ -1256,7 +1242,6 @@ public class BaseController { if (regionDict.getFunctionId().equals(400)) { BlockingQueue list = ei.getDataList(DnsResStrategyTemplate.class ); -// dnsResStrategies = this.checkDnsResStrategyCfg(serviceDict, regionDict, list); dnsResStrategies=this.checkDnsResStrategyCfgMulity(serviceDict, regionDict, list); } } diff --git a/src/main/java/com/nis/web/service/configuration/DdosCfgService.java b/src/main/java/com/nis/web/service/configuration/DdosCfgService.java index 24397efcd..4d7d745c4 100644 --- a/src/main/java/com/nis/web/service/configuration/DdosCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/DdosCfgService.java @@ -7,15 +7,20 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.beust.jcommander.internal.Lists; import com.google.gson.Gson; import com.nis.domain.Page; import com.nis.domain.callback.InlineIp; import com.nis.domain.configuration.BaseIpCfg; +import com.nis.domain.configuration.CfgIndexInfo; import com.nis.domain.configuration.DdosIpCfg; import com.nis.domain.configuration.IpPortCfg; import com.nis.domain.maat.MaatCfg; @@ -31,8 +36,10 @@ import com.nis.util.ConfigServiceUtil; import com.nis.util.Constants; import com.nis.util.StringUtil; import com.nis.web.dao.configuration.DdosCfgDao; +import com.nis.web.dao.configuration.IpCfgDao; import com.nis.web.security.UserUtils; import com.nis.web.service.BaseService; +import com.nis.web.service.SpringContextHolder; @@ -58,11 +65,28 @@ public class DdosCfgService extends BaseService{ public DdosIpCfg getDdosIpCfg(Long cfgId) { return ddosCfgDao.getDdosIpCfg(cfgId); } + @Transactional(readOnly=false,rollbackFor=RuntimeException.class) public void saveDdosIpCfg(List ipPortCfgs) { + List ddosIpCfgS=Lists.newArrayList(ipPortCfgs.size()); for(BaseIpCfg cfg:ipPortCfgs) { DdosIpCfg ddosIpCfg=new DdosIpCfg(); BeanUtils.copyProperties(cfg, ddosIpCfg); - saveOrUpdate(ddosIpCfg); + ddosIpCfgS.add(ddosIpCfg); + } + SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class); + SqlSession batchSqlSession = null; + try{ + batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); + for(int index = 0; index < ddosIpCfgS.size();index++){ + DdosIpCfg ddosIpCfg = ddosIpCfgS.get(index); + //如果insert加入了select last_insert_id,会拖慢6~7倍以上的效率 + ((DdosCfgDao) batchSqlSession.getMapper(DdosCfgDao.class)).insert(ddosIpCfg); + } + batchSqlSession.commit(); + }finally { + if(batchSqlSession != null){ + batchSqlSession.close(); + } } } @Transactional(readOnly=false,rollbackFor=RuntimeException.class)