范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

敏感词校验DFA算法

  为什么需要过滤
  在Web系统中,用户需要进行评论/回复,或者发布一些观点,服务器需要对用户发布的内容进行过滤(如果想被请去喝茶的话可以选择不过滤),过滤的内容当然包括色情、暴力、政府相关等
  在分析需求后,google 相关的其他系统是如何实现的. DFA 算法,可以比较高效的进行匹配 。如果使用 for 循环逐个匹配效率肯定是不行的  什么是DFA算法
  Deterministic Finite Automaton ,也就是确定有穷自动机 ,通过 event 与 state 得到下一个 state ,即状态的转换
  DFA 算法的实现  构建存储结构(构建类似树型结构匹配)  关键词匹配
  通过加载数据库数据关键词,判断内容是否合法/**  *  修改为每次都读取一次 ,也可以系统启动读取一次(不实时)  */ @Component public class SensitiveWordFilter {      private final SensitiveWordDao sensitiveWordDao;      @SuppressWarnings("rawtypes")     private Map sensitiveWordMap = null;     public static int minMatchTYpe = 1;     public static int maxMatchType = 2;       public SensitiveWordFilter(SensitiveWordDao sensitiveWordDao){         this.sensitiveWordDao = sensitiveWordDao; //        Set keyWordSet  = sensitiveWordDao.list(); //        addSensitiveWordToHashMap(keyWordSet);     }      @SuppressWarnings({ "rawtypes", "unchecked" })     private void addSensitiveWordToHashMap(Set keyWordSet) {         sensitiveWordMap = new HashMap(keyWordSet.size());         String key = null;         Map nowMap = null;         Map newWorMap = null;         Iterator iterator = keyWordSet.iterator();         while(iterator.hasNext()){             key = iterator.next();             nowMap = sensitiveWordMap;             for(int i = 0 ; i < key.length() ; i++){                 char keyChar = key.charAt(i);                 Object wordMap = nowMap.get(keyChar);                  if(wordMap != null){                     nowMap = (Map) wordMap;                 }                 else{                     newWorMap = new HashMap();                     newWorMap.put("isEnd", "0");                     nowMap.put(keyChar, newWorMap);                     nowMap = newWorMap;                 }                  if(i == key.length() - 1){                     nowMap.put("isEnd", "1");                 }             }         }     }        public boolean isContainSensitiveWord(String txt, int matchType){         boolean flag = false;         for(int i = 0 ; i < txt.length() ; i++){             int matchFlag = this.CheckSensitiveWord(txt, i, matchType);             if(matchFlag > 0){                 flag = true;             }         }         return flag;     }       public Set getSensitiveWord(String txt , int matchType){         Set sensitiveWordList = new HashSet();          for(int i = 0 ; i < txt.length() ; i++){             int length = CheckSensitiveWord(txt, i, matchType);             if(length > 0){                 sensitiveWordList.add(txt.substring(i, i+length));                 i = i + length - 1;             }         }          return sensitiveWordList;     }       public String replaceSensitiveWord(String txt,int matchType,String replaceChar){         String resultTxt = txt;         Set set = getSensitiveWord(txt, matchType);         Iterator iterator = set.iterator();         String word = null;         String replaceString = null;         while (iterator.hasNext()) {             word = iterator.next();             replaceString = getReplaceChars(replaceChar, word.length());             resultTxt = resultTxt.replaceAll(word, replaceString);         }          return resultTxt;     }       private String getReplaceChars(String replaceChar,int length){         String resultReplace = replaceChar;         for(int i = 1 ; i < length ; i++){             resultReplace += replaceChar;         }          return resultReplace;     }       @SuppressWarnings({ "rawtypes"})     public int CheckSensitiveWord(String txt,int beginIndex,int matchType){         Set keyWordSet  = sensitiveWordDao.list();         addSensitiveWordToHashMap(keyWordSet);         boolean  flag = false;         int matchFlag = 0;         char word = 0;         Map nowMap = sensitiveWordMap;         for(int i = beginIndex; i < txt.length() ; i++){             word = txt.charAt(i);             nowMap = (Map) nowMap.get(word);             if(nowMap != null){                 matchFlag++;                 if("1".equals(nowMap.get("isEnd"))){                     flag = true;                     if(SensitiveWordFilter.minMatchTYpe == matchType){                         break;                     }                 }             }             else{                 break;             }         }         if(matchFlag < 2 || !flag){             matchFlag = 0;         }         return matchFlag;     } }
  参考:
  https://blog.csdn.net/weixin_43378396/article/details/105910145
  https://blog.csdn.net/chenssy/article/details/26961957
  https://www.cnblogs.com/twoheads/p/11349541.html
  分类: java

自动洗碗机的功能特点自动洗碗机的功能正在逐步完善可替代人工清洗消毒柜烘干等功能。自动洗碗机具有自动排渣自动清洗自动烘干自动消毒等功能,可采用电加热或蒸汽加热,规格多样。绿色环保无污染节能无燃烧排放无辐商用洗碗机的正确操作常识选择商用洗碗机并正确使用,不仅可以节约用水和洗涤剂,而且可以有效地洗碗,改善就餐环境和整体卫生。正确使用商用洗碗机的常识是什么?如何使餐具清洗更干净?1。餐具使用后应尽快清洗干净。自动洗碗机的功能特点自动洗碗机的功能正在逐步完善可替代人工清洗消毒柜烘干等,采用自动洗碗机,具有自动除渣自动清洗自动烘干自动消毒等功能。它可以用电或蒸汽加热,有各种规格。绿色环保无污染节能无燃烧排放无超声波清洗机的工作原理全自动超声波清洗机的原理主要是将换能器转换为功率超声波频率源的声能,并将其转换为机械振动,使槽内清洗液通过清洗壁向超声波辐射。由于超声波的辐射,槽内液体中的微气泡在声波的作用下能够商用洗碗机的分类和特点商用洗碗机按传动方式可分为揭盖式篮传式斜插式和平放网带式。1。揭盖式常用于小型厨房和家用洗碗机。由于洗涤量和速度的限制,它在商用洗碗机中的应用越来越少。2。篮传式洗碗机常见于商用洗酒店商用洗碗机的常识我们常见的商用洗碗机,无论是揭盖式洗碗机通道洗碗机还是篮传式洗碗机,通常通过水泵产生机械水压,作用于餐具表面,并借助洗涤剂清洗餐具,以达到清洁效果。1。洗碗机要正常工作,需要满足的自动洗碗机的维护保养知识1。定期测试清洗机的绝缘性能。定期检查老化的电气部件和接地线。清洗机应确保设备接地良好。项目必须由经验丰富的电工执行2。定期测试洗碗机的电源,确认其满足设备的电源电压要求,避免在过餐厅洗碗机的优势在哪?随着互联网的发展,餐饮业的大多数餐具也有标准的洗涤方案。如何有效节约劳动力成本?小编向您介绍了餐厅洗碗机的优点,它有效地替代了大量的劳动力成本!接下来,小编将从五个方面向大家展示商商用洗碗机的发展过程商用洗碗机无论是好还是坏,一般从清洁性和可靠性两方面考虑。这些对于商用洗碗机来说非常重要。可靠的使用和干净有保证的洗涤是人们对洗碗机的基本要求。本文从商用洗碗机的传动形式入手,分析自动洗碗机的类型和选择技巧洗碗机到底是什么?有人说它真的是鸡肋,它不仅占用空间,而且毫无用处有人说这真的是件好事。它解放双手,解放双手,提高生活质量,促进生活的各个方面。对于是否需要购买洗碗机的问题,要从实比亚迪超级混动SUV宋PLUSDMi上市1200公里走起新车上市2021年3月25日晚,盼望已久的全球首款宽体超混SUV比亚迪宋PLUSDMi终于上市!新车共推出两个版本四款车型,补贴后全国统一售价为14。68万元16。98万元。继3月
星环科技携手东华医为Intel发布医疗大数据解决方案2021年10月17日,由中国卫生信息管理杂志社主办昆明医科大学第二附属医院和东华医为科技有限公司协办的医疗大数据研讨会在昆明召开。在此次会议上,东华医为联合昆明医科大学第二附属医柔宇科技CEO刘自鸿将世界折叠深圳商用显示技术展立足于深圳全球新型显示应用及5G技术商用的核心区域,是中国半导体显示行业颇具规模且影响深远的行业展会。本次深圳商用显示技术展在今年的10月19日至10月21日,于行业存储品牌FORESEE推出DDR4产品,广泛应用于智能化终端设备随着5G物联网人工智能8K超高清等先进技术的迅速发展,人们对于电子产品便携化智能化和功能集成度的要求越来越高,让存储行业也迎来了新的发展态势。数字变革下的智能电子设备对小容量存储产抢鲜价5。99万元起奇瑞全新瑞虎5x上市7月16日,奇瑞全新一代瑞虎5x正式上市。新车提供1。5LMTCVT两种动力总成共6款车型,官方售价区间为6。999。79万元,前10000名车主优先畅享现金优惠10000元,抢鲜华为nova9系列手机让Vlog创作更轻松,双十一入手来体验在如今的市场上,无论是什么行业,都存在着竞争,然而随着手机功能的逐渐丰富,当下的手机领域竞争也变得更加地激烈了。而且手机的价位也普遍偏高,现在一部旗舰手机的价位需要30004000赋能机器人生态圈,中智卫安打造深圳创新新名片40年弹指一挥间,深圳从改革之都成长为创新之城纵观深圳一路走来的蜕变史,一定离不开这些关键词新兴产业企业创新高新技术优秀的创新基因,成就了深圳发展的主旋律,更为这座城市孵化了一大批华为智慧屏SE系列低至1699元,预先打响双十一第一枪!今年的双十一似乎比去年来得更早了一些,这还没到11月,众多商家已经开启双11的预售活动了,而在双11期间购买数码电子产品,性价比一定是最高的。此次华为智慧屏SE系列登录京东平台,1高颜值上线,华为nova9系列手机收获无数好评,双十一优惠更惊喜智能手机不仅是我们生活中的通信工具,更是娱乐工具拍照工具。智能手机也为人们的生活带来了非常多的便利,今天我们要说的这款手机就是nova星人的第一部鸿蒙影像旗舰手机华为nova9系列双11钜惠福利登场,仅1699元就能入手华为智慧屏SE系列随着天气逐渐转凉,冬日的气息似乎更近了一些,气温直线下降,可是各位小伙伴对于即将到来的双11购物狂欢节可谓热度不减,都想趁着品牌打折入手自己心仪已久的各种宝物,寒冷的季节宅家追剧成用户体验真实上位,华为nova9系列手机好评多多,优惠不停现如今,随着时代的发展,人们的生活处处都充满了智能科技的身影。特别是当下人们非常喜欢用手机记录生活中的点滴,这也让手机的影像功能受到了人们的关注。近期,华为nova9系列手机的到来RedmiNote11系列超强配置以新旗舰机身份闪耀全场120W神仙秒充是RedmiNote11系列主打性能,作为首款2000元以内的120W快充手机,RedmiNote11可不只在快充上做到优秀它还有性能大升级天玑810,新一代5G双