iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在Java项目中利用DFA算法实现一个过滤敏感字功能
  • 244
分享到

如何在Java项目中利用DFA算法实现一个过滤敏感字功能

javadfa算法ava 2023-05-31 06:05:02 244人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关如何在Java项目中利用DFA算法实现一个过滤敏感字功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。模式图直接上代码public class KeyWordFilter

这期内容当中小编将会给大家带来有关如何在Java项目中利用DFA算法实现一个过滤敏感字功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

模式图

如何在Java项目中利用DFA算法实现一个过滤敏感字功能

直接上代码

public class KeyWordFilter {//  private static ReentrantReadWriteLock lock = new ReentrantReadWriteLock();  public static Map<String, HashMap> currentMap = new ConcurrentHashMap<String, HashMap>();  public static Map nowhash = null;  public static Object wordMap;// map子节点  // 不建立对象  private KeywordFilter() {  }  private static String geTKEy(int companyId) {    return "companyId" + companyId;  }    public static void clear() {    try {      currentMap.clear();    } catch (Exception e) {      e.printStackTrace();    } finally {    }  }    public static void saveKeywords(int companyId, List<String> keywords) {    try {      Map tempAllMap = currentMap;      String key = getKey(companyId);      int l = keywords.size();      int il;      Map tempMap;      for (int i = 0; i < l; i++) {        String key2 = keywords.get(i).trim();// 去掉空白        nowhash = currentMap;        il = key2.length();        for (int j = 0; j < il; j++) {          char word = key2.charAt(j);          tempMap = (Map) nowhash.get(word);          wordMap = nowhash.get(word);          if (wordMap != null) {// 检查数据            if (!tempMap.containsKey(key)) {              nowhash.put(key, 0);            }            nowhash = (HashMap) wordMap;          } else {            HashMap<String, String> newWordHash = new HashMap<String, String>();            newWordHash.put(key, "0");            nowhash.put(word, newWordHash);            nowhash = newWordHash;          }          if (j == il - 1) {            nowhash.put(key, "1");          }        }      }    } catch (Exception e) {      e.printStackTrace();    } finally {      nowhash = null;      wordMap = null;    }  }    public static List<String> repword(int companyId, String txt) {    Map tempMap = currentMap;    List<String> result = new ArrayList<String>();    String key = getKey(companyId);    nowhash = currentMap;    int l = txt.length();    char word;    String keywordStr = "";    String keyStatu;    StringBuilder keyword = new StringBuilder();// 敏感字    for (int i = 0; i < l; i++) {      word = txt.charAt(i);      wordMap = nowhash.get(word);      if (wordMap != null) {// 找到类似敏感字的字体,开始查询        keyword.append(word);        Object te = nowhash = (HashMap) wordMap;        // 遍历到这一步,就符合完整的关键字模板        if (nowhash.get(key) != null            && nowhash.get(key).toString().equals("1")) {// 确定是敏感字,开始替换          if (i < l - 1 && nowhash.get(txt.charAt(i + 1)) != null) {// 优先过滤长敏感词,去掉就槟城了优先过滤段敏感词            continue;          }          txt = txt.replaceAll(keyword.toString(), "*");          nowhash = currentMap;          keywordStr += keyword.toString() + ",";          i = i - keyword.length() + 1;          l = txt.length();// 重新获取字符长度          keyword.delete(0, keyword.length());// 清空数据        }      } else {// 这个字不是敏感字,直接排除        nowhash = currentMap;        keyword.delete(0, keyword.length());// 清空数据        continue;      }    }    // 清除内存指向    nowhash = null;    wordMap = null;    result.add(txt);    result.add(keywordStr.length() - 1 > 0 &#63; keywordStr.substring(0,        keywordStr.length() - 1) : keywordStr);    return result;  }    private static int checkKeyWords(String txt, int companyId, int begin) {    int result = 0;    String key = getKey(companyId);    try {      nowhash = currentMap;      int l = txt.length();      char word = 0;      for (int i = begin; i < l; i++) {        word = txt.charAt(i);        wordMap = nowhash.get(word);        if (wordMap != null) {          result++;          nowhash = (HashMap) wordMap;          if (((String) nowhash.get(key)).equals("1")) {            nowhash = null;            wordMap = null;            return result;          }        } else {          result = 0;          break;        }      }    } catch (Exception e) {      e.printStackTrace();    } finally {      nowhash = null;      wordMap = null;      return result;    }  }    public static String getTxtKeyWords(String txt, int companyId) {    String result = null;    StringBuilder temp = new StringBuilder();    String key;    int l = txt.length();    for (int i = 0; i < l;) {      int len = checkKeyWords(txt, companyId, i);      if (len > 0) {        key = (txt.substring(i, i + len));// 挑选出来的关键字        temp.append(key + ",");        txt = txt.replaceAll(key, "");// 挑选出来的关键字替换成空白,加快挑选速度        l = txt.length();      } else {        i++;      }    }    if (temp.length() > 0) {      result = temp.substring(0, temp.length() - 1);    }    return result;  }    public boolean isKeyWords(String txt, int companyId) {    for (int i = 0; i < txt.length(); i++) {      int len = checkKeyWords(txt, companyId, i);      if (len > 0) {        return true;      }    }    return false;  }  public static void main(String[] arg) {    List<String> keywords = new ArrayList<String>();    keywords.add("傻×");    keywords.add("汉*");    keywords.add("草");    keywords.add("草泥马");    KeywordFilter.saveKeywords(1, keywords);    String txt = "是傻×汉*傻A傻B傻C傻D汉*傻×草泥马";    List<String> list = repword(1, txt);    System.out.println("文中包含的敏感字为:" + list.get(1));    System.out.println("原文:" + txt);    System.out.println("敏感字过滤后:" + list.get(0));  }}

--结束END--

本文标题: 如何在Java项目中利用DFA算法实现一个过滤敏感字功能

本文链接: https://www.lsjlt.com/news/223896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Java项目中利用DFA算法实现一个过滤敏感字功能
    这期内容当中小编将会给大家带来有关如何在Java项目中利用DFA算法实现一个过滤敏感字功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。模式图直接上代码public class KeywordFilter...
    99+
    2023-05-31
    java dfa算法 ava
  • 如何在java中使用DFA算法过滤敏感词
    如何在java中使用DFA算法过滤敏感词?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。敏感词过滤的做法有很多,我简单描述我现在理解的几种:①查询数据库当中的敏感词,循环每一...
    99+
    2023-05-31
    java ava dfa算法
  • 如何在java项目中利用ocr实现一个图片文字识别功能
    这期内容当中小编将会给大家带来有关如何在java项目中利用ocr实现一个图片文字识别功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现g...
    99+
    2023-05-31
    java ocr ava
  • 如何在Java项目中利用余弦方法实现一个相似度计算算法
    本篇文章给大家分享的是有关如何在Java项目中利用余弦方法实现一个相似度计算算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。(1)余弦相似性通过测量两个向量之间的角的余弦值来...
    99+
    2023-05-31
    java 余弦 ava
  • 如何在java项目中实现一个递归调用功能
    本篇文章为大家展示了如何在java项目中实现一个递归调用功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现...
    99+
    2023-06-06
  • 如何在java项目中实现一个ECC加密算法
    本篇文章给大家分享的是有关如何在java项目中实现一个ECC加密算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体如下:ECC ECC-Elliptic Curves Cr...
    99+
    2023-05-31
    java ecc加密算法 ava
  • 如何在Java项目中实现一个DES加密算法
    如何在Java项目中实现一个DES加密算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Base64.javapackage com.mstf.des; import java...
    99+
    2023-05-31
    des加密 java
  • 如何在Java项目中实现一个时间轮算法
    今天就跟大家聊聊有关如何在Java项目中实现一个时间轮算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。开发环境:idea + jdk1.8 + maven 新建一个mav...
    99+
    2023-05-31
    java 时间轮算法 ava
  • 如何在Java项目中利用字符流实现一个io编程
    如何在Java项目中利用字符流实现一个io编程?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。案例1:读取一个文件并写入到另一个文件中,char[] 来中转。首先要在E盘下创建一...
    99+
    2023-05-31
    java io编程 字符流
  • 如何在Java项目中利用FasfDFS实现一个文件上传下载功能
    本篇文章给大家分享的是有关如何在Java项目中利用FasfDFS实现一个文件上传下载功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一 : 添加配置文件当完成以上操作之后可以...
    99+
    2023-05-31
    fasfdfs java ava
  • 如何在Android sdutio项目中利用Zxing实现一个扫码功能
    今天就跟大家聊聊有关如何在Android sdutio项目中利用Zxing实现一个扫码功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。最快的调用Zxing方法关联第三方库调用基础的...
    99+
    2023-05-31
    android studio zxing
  • 在Java项目中使用字节流如何实现一个文件复制功能
    这篇文章将为大家详细讲解有关在Java项目中使用字节流如何实现一个文件复制功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体内容如下import java.io.FileInputStr...
    99+
    2023-05-31
    java 字节流 文件复制
  • 怎么在Java项目中利用QuickSort实现一个快速排序功能
    今天就跟大家聊聊有关怎么在Java项目中利用QuickSort实现一个快速排序功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。快速排序-----------------------...
    99+
    2023-05-31
    quicksort java
  • 怎么在Java项目中利用rabbitMQ实现一个消息收发功能
    怎么在Java项目中利用rabbitMQ实现一个消息收发功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java实现rAMQP,即Advanced Message Queui...
    99+
    2023-05-31
    java rabbitmq ava
  • 如何在Java项目中实现一个快速查找算法
    如何在Java项目中实现一个快速查找算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。快速查找算法,可以根据想要找的是第几个大的数,每次循环都能固定下来一个数在数组完整排完序之...
    99+
    2023-05-31
    java ava 目中
  • 如何在java项目中实现一个插入排序算法
    如何在java项目中实现一个插入排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、基本概念      插入排序的基...
    99+
    2023-05-31
    java 插入排序 ava
  • 如何在JAVA项目中利用FTPClient工具类实现一个上传下载功能
    如何在JAVA项目中利用FTPClient工具类实现一个上传下载功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、写一个javabean文件,描述ftp上传...
    99+
    2023-05-31
    java ftpclient ava
  • 如何在PHP项目中利用Laravel实现一个文件下载功能
    如何在PHP项目中利用Laravel实现一个文件下载功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。download 方法可以用于生成强制让用户的浏览器下载指...
    99+
    2023-05-31
    php laravel
  • 如何在java项目中实现一个随机数生产算法
    如何在java项目中实现一个随机数生产算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java提供了Math.random()函数,返回一个double类型的随机数,也有ut...
    99+
    2023-05-31
    ava java
  • 如何在Java项目中实现一个非对称加密算法
    如何在Java项目中实现一个非对称加密算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。具体如下:对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法...
    99+
    2023-05-31
    java 非对称加密算法 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作