首页
学习
活动
专区
工具
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.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

基于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.2K20

简单的词法设计——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;

1.9K30

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

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

73220

算法-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_

6K10

找回消失的密钥 --- 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.4K20

经典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

33820

java如何实现封装_java如何实现封装

Java中类的封装是如何实现的封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。 java封装类通过三个步骤实现: (1)修改属性的可见性,限制访问。...java如何把一个已经实现某些具体功能的类封装成一第一:具体的功能方法如果是public直接就可以用import引入该类然后调用 第二:如果这功能是类似于.exe可执行文件或者打包成了.jar的可执行文件...,那么Java中有固定的代码可以内嵌运行已经实现功能的程序 第三:如果你说的其他程序。...Java中类的封装是如何实现的?封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。 java封装类通过三个步骤实现: (1)修改属性的可见性,限制访问。...; 为实现封装性,常将类的成员变量声明为private,再通 JAVA 中,为什么要封装?

1.5K10
领券