iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在java中使用DFA算法过滤敏感词
  • 604
分享到

如何在java中使用DFA算法过滤敏感词

javaavadfa算法 2023-05-31 11:05:29 604人浏览 独家记忆
摘要

如何在java中使用DFA算法过滤敏感词?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。敏感词过滤的做法有很多,我简单描述我现在理解的几种:①查询数据库当中的敏感词,循环每一

如何在java中使用DFA算法过滤敏感词?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

敏感词过滤的做法有很多,我简单描述我现在理解的几种:

①查询数据库当中的敏感词,循环每一个敏感词,然后去输入的文本中从头到尾搜索一遍,看是否存在此敏感词,有则做相

应的处理,这种方式讲白了就是找到一个处理一个。

优点:so easy。用java代码实现基本没什么难度。

缺点:这效率让我心中奔过十万匹草泥马,而且匹配的是不是有些蛋疼,如果是英文时你会发现一个很无语的事情,比如英文

a是敏感词,那我如果是一篇英文文档,那程序它妹的得处理多少次敏感词?谁能告诉我?

②传说中的DFA算法(有穷自动机),也正是我要给大家分享的,毕竟感觉比较通用,算法的原理希望大家能够自己去网上查查

资料,这里就不详细说明了。

优点:至少比上面那sb效率高点。

缺点:对于学过算法的应该不难,对于没学过算法的用起来也不难,就是理解起来有点gg疼,匹配效率也不高,比较耗费内存,

敏感词越多,内存占用的就越大。

③第三种在这里要特别说明一下,那就是你自己去写一个算法吧,或者在现有的算法的基础上去优化,这也是追求的至高境界之一。

那么,传说中的DFA算法是怎么实现的呢?

敏感词库初始化(将敏感词用DFA算法的原理封装到敏感词库中,敏感词库采用HashMap保存),代码如下:

package com.cfwx.rox.WEB.sysmgr.util;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import com.cfwx.rox.web.common.model.entity.SensitiveWord;public class SensitiveWordInit{    public HashMap sensitiveWordMap;    public Map iniTKEyWord(List<SensitiveWord> sensitiveWords)  {    try    {      // 从敏感词集合对象中取出敏感词并封装到Set集合中      Set<String> keyWordSet = new HashSet<String>();      for (SensitiveWord s : sensitiveWords)      {        keyWordSet.add(s.getContent().trim());      }      // 将敏感词库加入到HashMap中      addSensitiveWordToHashMap(keyWordSet);    }    catch (Exception e)    {      e.printStackTrace();    }    return sensitiveWordMap;  }    @SuppressWarnings("rawtypes")  private void addSensitiveWordToHashMap(Set<String> keyWordSet)  {    // 初始化HashMap对象并控制容器的大小    sensitiveWordMap = new HashMap(keyWordSet.size());    // 敏感词    String key = null;    // 用来按照相应的格式保存敏感词库数据    Map nowMap = null;    // 用来辅助构建敏感词库    Map<String, String> newWORMap = null;    // 使用一个迭代器来循环敏感词集合    Iterator<String> iterator = keyWordSet.iterator();    while (iterator.hasNext())    {      key = iterator.next();      // 等于敏感词库,HashMap对象在内存中占用的是同一个地址,所以此nowMap对象的变化,sensitiveWordMap对象也会跟着改变      nowMap = sensitiveWordMap;      for (int i = 0; i < key.length(); i++)      {        // 截取敏感词当中的字,在敏感词库中字为HashMap对象的Key键值        char keyChar = key.charAt(i);        // 判断这个字是否存在于敏感词库中        Object wordMap = nowMap.get(keyChar);        if (wordMap != null)        {          nowMap = (Map) wordMap;        }        else        {          newWorMap = new HashMap<String, String>();          newWorMap.put("isEnd", "0");          nowMap.put(keyChar, newWorMap);          nowMap = newWorMap;        }        // 如果该字是当前敏感词的最后一个字,则标识为结尾字        if (i == key.length() - 1)        {          nowMap.put("isEnd", "1");        }        System.out.println("封装敏感词库过程:"+sensitiveWordMap);      }      System.out.println("查看敏感词库数据:" + sensitiveWordMap);    }  }}

--结束END--

本文标题: 如何在java中使用DFA算法过滤敏感词

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

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

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

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

下载Word文档
猜你喜欢
  • 如何在java中使用DFA算法过滤敏感词
    如何在java中使用DFA算法过滤敏感词?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。敏感词过滤的做法有很多,我简单描述我现在理解的几种:①查询数据库当中的敏感词,循环每一...
    99+
    2023-05-31
    java ava dfa算法
  • 怎么在Java中使用DFA算法过滤敏感词
    怎么在Java中使用DFA算法过滤敏感词?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体实现: 1、匹配大小写过滤 2、匹配全角半角过滤 3...
    99+
    2023-05-30
    java dfa
  • Java怎么使用DFA算法实现敏感词过滤
    本篇内容主要讲解“Java怎么使用DFA算法实现敏感词过滤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么使用DFA算法实现敏感词过滤”吧!1 前言敏感词过滤就是你在项目中输入某些字(...
    99+
    2023-07-05
  • Java使用DFA算法实现敏感词过滤的示例代码
    目录1 前言2 代码实现2.1 敏感词库初始化2.2 编写测试类1 前言 敏感词过滤就是你在项目中输入某些字(比如输入xxoo相关的文字时)时要能检测出来,很多项目中都会有一个敏感词...
    99+
    2023-03-24
    Java DFA敏感词过滤 Java 敏感词过滤
  • 如何在Java项目中利用DFA算法实现一个过滤敏感字功能
    这期内容当中小编将会给大家带来有关如何在Java项目中利用DFA算法实现一个过滤敏感字功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。模式图直接上代码public class KeywordFilter...
    99+
    2023-05-31
    java dfa算法 ava
  • 如何在JavaScript中使用filter方法过滤数组
    本篇文章给大家分享的是有关如何在JavaScript中使用filter方法过滤数组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript是什么JavaScript是...
    99+
    2023-06-14
  • 如何在Java项目中使用过滤器、拦截器和监听器
    如何在Java项目中使用过滤器、拦截器和监听器?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个...
    99+
    2023-05-31
    java 拦截器 过滤器
  • 如何在Java编程中使用函数和算法?
    Java 是一门广泛使用的编程语言,具有广泛的应用领域。在 Java 编程中,函数和算法是非常重要的概念。本文将介绍如何在 Java 编程中使用函数和算法。 函数是一段可以重复使用的代码块。它们可以接受参数并返回值。Java 中的函数使用关...
    99+
    2023-11-03
    函数 编程算法 javascript
  • Java编程:如何在容器中使用Numpy算法?
    在现代开发中,容器技术已经变得越来越普遍。容器技术可以帮助开发人员轻松地部署和管理应用程序,同时提供了更好的可伸缩性和可靠性。除此之外,容器技术还可以帮助开发人员实现更好的资源利用,这对于数据密集型应用程序来说尤为重要。而在容器中使用Nu...
    99+
    2023-10-01
    编程算法 容器 numpy
  • 如何在 Java 中使用 Git 同步编程算法?
    Git 是一款流行的版本控制工具,它可以帮助我们管理代码,并且可以方便地协作开发。在 Java 编程中,使用 Git 进行代码同步非常常见。本文将介绍如何在 Java 中使用 Git 同步编程算法,以及如何编写适合 Git 版本控制的代码...
    99+
    2023-09-25
    git 同步 编程算法
  • 如何在Java编程中使用文件处理算法?
    在Java编程中,文件处理算法是必不可少的一部分。它们允许您以编程方式读取、写入和操作文件。在本文中,我们将介绍如何在Java编程中使用文件处理算法。 使用Java IO类 Java IO类是Java编程中处理文件的主要方法之一。它包含...
    99+
    2023-11-04
    文件 编程算法 对象
  • 如何在Java编程中使用Javascript函数和算法?
    在Java编程中,使用JavaScript函数和算法可以帮助程序员更好地完成任务和解决问题。本文将介绍如何在Java编程中使用JavaScript函数和算法,以及如何在代码中演示它们的用法。 一、使用JavaScript函数 在Java编程...
    99+
    2023-11-03
    函数 编程算法 javascript
  • 如何在 Java 中使用 NPM 包来优化编程算法?
    在 Java 中使用 NPM 包来优化编程算法可以帮助我们更高效地完成编程任务。本文将介绍如何使用 NPM 包来优化编程算法,以及演示代码。 一、什么是 NPM 包? NPM(Node Package Manager)是 Node.js 的...
    99+
    2023-10-08
    npm 编程算法 数据类型
  • 如何在Java编程中使用Git来管理算法文件?
    在Java编程中,Git是一个非常强大的版本控制工具。它可以帮助我们管理代码,并且可以跟踪代码的变化。在编写算法时,Git可以帮助我们保持代码的整洁性和可读性,并且可以让我们与其他开发者协作。下面就让我们来看一下如何在Java编程中使用Gi...
    99+
    2023-08-02
    编程算法 文件 git
  • 你知道如何在Java编程中使用Bash的算法吗?
    Java是一种广泛使用的编程语言,而Bash是一个强大的命令行工具。在Java编程中,可以使用Bash的算法来实现一些特定的功能。本文将介绍如何在Java编程中使用Bash的算法,以及如何编写演示代码。 什么是Bash Bash是一种命令行...
    99+
    2023-09-06
    bash 编程算法 spring
  • 如何在Java项目中使用NumPy库来解决LeetCode算法问题?
    Java是一种非常流行的编程语言,而LeetCode算法问题则是程序员们经常遇到的挑战。为了更好地解决这些问题,我们可以使用NumPy库来提高算法的效率和准确性。本文将介绍如何在Java项目中使用NumPy库来解决LeetCode算法问题。...
    99+
    2023-09-30
    numy linux leetcode
  • 如何在Java编程中使用同步关键字来优化算法?
    Java编程中,同步关键字是一种非常重要的机制。它可以帮助我们优化算法,提高程序的运行效率。在本文中,我将介绍如何在Java编程中使用同步关键字来优化算法,并且提供一些演示代码以方便理解。 什么是同步关键字? 在Java中,同步关键字是指s...
    99+
    2023-11-11
    编程算法 同步 关键字
  • 如何在Linux中使用Java接口编写高效的编程算法?
    在Linux中使用Java接口编写高效的编程算法可以极大地提高程序的效率和性能,让代码更加优美和易于维护。下面将介绍一些技巧和方法,帮助你在Linux中使用Java接口编写高效的编程算法。 一、使用Java接口 Java接口是一种定义方法的...
    99+
    2023-08-21
    接口 编程算法 linux
  • 如何在Java Spring项目中使用高效的缓存编程算法?
    在Java Spring项目中使用高效的缓存编程算法可以显著提高应用程序的性能,减少响应时间和资源消耗。本文将介绍常见的缓存技术和如何在Java Spring项目中使用高效的缓存编程算法。 一、常见的缓存技术 1.本地缓存:本地缓存是缓存在...
    99+
    2023-09-03
    spring 缓存 编程算法
  • 如何在java中使用RSA算法对密码进行加密与解密
    本篇文章给大家分享的是有关如何在java中使用RSA算法对密码进行加密与解密,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言:  RSA是第一个比较完善的公开密钥算...
    99+
    2023-05-31
    java rsa算法 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作