首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DFA算法简单理解实现

背景:因为最近项目要使用到敏感词过滤服务,在网上了解到dfa实现这个功能性能还不错,特此学习了一下 1....什么是DFA算法 引用 简书作者:浪人与酒丶的解释 原文链接:https://www.jianshu.com/p/c67f917c9363 DFA全称为:Deterministic Finite...但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。 确定:状态以及引起状态转换的事件都是可确定的,不存在“意外”。 有穷:状态以及事件的数量都是可穷举的。...通过java程序加载敏感词库,构建一个DFA算法模型 private static void addSensitiveWordToHashMap(Set keyWordSet) {...算法已经实现,可继续开发我们的业务代码 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126635.html原文链接:https://javaforall.cn

1.7K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OpenSource - 基于 DFA 算法实现的高性能 java 敏感词过滤工具框架

    sensitive-word sensitive-word 基于 DFA 算法实现的高性能敏感词工具。 The sensitive word tool for java....基于 DFA 算法实现的高性能 java 敏感词过滤工具框架。请勿发布涉及政治、广告、营销、翻墙、违反国家法律法规等内容。...在线体验 创作目的 实现一款好用敏感词工具。 基于 DFA 算法实现,目前敏感词库内容收录 6W+(源文件 18W+,经过一次删减)。 后期将进行持续优化和补充敏感词库,并进一步提升算法的性能。...特性 6W+ 词库,且不断优化更新 基于 fluent-api 实现,使用优雅简洁 基于 DFA 算法,性能为 7W+ QPS,应用无感 支持敏感词的判断、返回、脱敏等常见操作...java 如何实现开箱即用的敏感词控台服务? 敏感词标签文件 梳理了大量的敏感词标签文件,可以让我们的敏感词更加方便。

    13200

    基于DFA的敏感词过滤

    在计算理论中,确定有限状态自动机或确定有限自动机(英语:deterministic finite automaton, DFA)是一个能实现状态转移的自动机。...对于一个给定的属于该自动机的状态和一个属于该自动机字母表{\displaystyle \Sigma }Σ的字符,它都能根据事先给定的转移函数转移到下一个状态 DFA算法 DFA((Deterministic...如图: dfa_1.png 如上图当AB状态输入a得到状态aB,状态aB输入b得到状态ab; 状态AB输入b得到状态Ab,状态Ab输入a得到状态ab。...利用DFA匹配关键词 上面开始的几个关键词匹配可以用下图来表示: dfa_2.png 0是开始状态,输入日、本、人会最终到达结束状态5,输入日、本、鬼、子最终到达结束状态8,输入中、国、人到达结束状态...index], repl) return message class DFAFilter(): '''Filter Messages from keywords Use DFA

    1.3K20

    高性能敏感词过滤工具:基于 DFA 算法实现 | 开源日报 No.256

    sensitive-wordhttps://github.com/houbb/sensitive-word Stars: 3.4k License: Apache-2.0 sensitive-word 是一个基于 DFA...算法实现的高性能敏感词过滤工具框架。...支持敏感词的判断、返回、脱敏等常见操作 支持常见格式转换,如全角半角互换、英文大小写互换等 提供丰富的检测功能,包括敏感词检测、邮箱检测和网址检测等 可自定义替换策略和白名单,并支持动态更新数据 高性能,使用 DFA...算法实现,在应用中无明显延迟 通过 sensitive-word 框架可以方便地进行高效准确地敏感词过滤。...tiny-gpuhttps://github.com/adam-maj/tiny-gpu Stars: 4.7k License: NOASSERTION picture tiny-gpu 是一个用 Verilog 实现的最小

    36210

    简单的词法设计——DFA模拟程序

    通过对 DFA 模拟程序实验,使学生掌握词法分析的实现技术,及具体实现方法。通过本实验加深对词法分析程序的功能及实现方法的理解 。...二、实验环境 供 Windows 系统的 PC 机,可用 C++/C#/Java 等编程工具编写,语言不限。...K is in Z then return (‘yes’) else return (‘no’) 四、实验方式与要求 1、设计的自动机程序要具有通用性,上机编程实现...设计思路:我们主要是用 Java 语言实现词法分析的过程,需要处理 DFA 和 NFA 两种状态,所以在文末我们给出了测试样例以及测试截图,部分代码给出了详细的注释。...实验代码如下: package python; import java.util.List; import java.util.ArrayList; import java.util.Scanner;

    2K30

    算法-DFA算法-敏感词过滤算法(OC、Swift、Python)

    一般的思路可能是遍历敏感词库,然后把一段文字的敏感词过滤掉,但是针对比较大的词库时(比如我们的敏感词库10万),这样非常耗时和耗内存,在电脑上还能跑跑,但是在手机上分分钟钟被系统杀死掉,这样肯定是不行的,这里就用到一种DFA...但是使用了DFA算法,十万的敏感词库过滤一句话只需要【0.434510秒】!...2019-10-23 14:34:08.316380+0800 DFAFilterDemo[4728:4650502] 总共耗时: 0.434510 DFA算法 简介 何谓DFA,它的全称是Deterministic...但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号;DFA算法的核心是建立了以敏感词为基础的许多敏感词树。...过滤算 ---------- import time time1 = time.time() class DFAFilter(object): """DFA过滤算法""" def __init_

    6.4K10

    找回消失的密钥 --- DFA分析白盒AES算法

    AES算法的介绍请参照 http://91fans.com.cn/post/ilikeaes/ DFA(Differential Fault Analysis) 的原理和算法推导过程,请参照文末的链接。...我们今天用一个源码实例来操作一下,还原白盒AES算法的密钥 二、步骤 构造缺陷数据 DFA攻击简单来说就是在倒数第一轮列混合和倒数第二轮列混合之间(在AES-128中也就是第8轮和第9轮之间,因为最后第...今天我们主要走一遍DFA还原白盒密钥的流程,所以,我们找了一个AES的源码来做演示,这份源码的AES加密流程一目了然,最适合学习AES算法了。...三、总结 1、DFA的原理和数学推导请参考下列资料,还有白龙写的 白盒 AES 密码学系列 也非常棒。...4、分析加密算法,最好找个清晰的源码实现,然后和样本里的逻辑相互对照。 图片 美妙人生的关键在于你能迷上什么东西。

    1.7K20

    【C++】算法集锦(11):敏感词过滤算法(DFA

    文章目录 什么是 确定的、有穷状态、机 跟我一起看个栗子 DFA图解 DFA示例实现代码 DFA:确定的 有穷 状态机 如果 设计模式 中的状态模式比较熟的话,这个就很清楚了。...我觉得,DFA的机制很适合用于动态流程图的实现,特别是复杂的,动态流程图。当然,动态流程图是可以暴力硬写的,就是代码肥了点而已。...---- 跟我一起看个栗子 这也是我最初接触到DFA的栗子,当时我就是暴力硬写,当然,代码肥的我都没脸贴当时那篇博客里去。 请你来实现一个 atoi 函数,使其能将字符串转换成整数。...---- DFA图解 我们的程序在每个时刻有一个状态 s,每次从序列中输入一个字符 c,并根据字符 c 转移到下一个状态 s’。...---- DFA示例实现代码 #include #include using namespace std; int DFA(vector& cvec

    82020

    经典KMP算法C++与Java实现代码

    比较流行的做法是实现一个next()函数,函数本身包含了模式串的局部匹配信息。由于next函数理解起来不太容易,本文同样是基于空间换时间的做法,但将采用另一种代码实现,希望可以更方便读者理解!...as330kdwejjl_8 jjl_ faw4etoesting tio aabacb abac 测试结果 4 9 -1 0 (注:若匹配则返回text子串的起始index;否则返回-1) 1.暴力查找的实现一...若text存在子串匹配pat,则返回text子串起始index;否则返回-1;时间复杂度:O(M*N) 2.暴力查找实现二 1 // 暴力子串查找二式:O(M*N) 2 public static...这里我们引入有穷自动机DFAdfa[][]进行数值的初始化。...------------------ Java完整代码 1 package ch05.string.substring; 2 3 import java.io.File; 4 import java.util.Scanner

    38620
    领券