jjzjj

【Spring Cloud】新闻头条微服务项目:文章内容安全审核(新增DFA+OCR过滤敏感词需求)

个人简介: >?个人主页:赵四司机>?学习方向:JAVA后端开发 >⏰往期文章:SpringBoot项目整合微信支付>?博主推荐网站:牛客网刷题|面试|找工作神器>?种一棵树最好的时间是十年前,其次是现在!>?喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。前言:最近在做一个基于SpringCloud+Springboot+Docker的新闻头条微服务项目,用的是黑马的教程,现在项目开发进入了尾声,我打算通过写文章的形式进行梳理一遍,并且会将梳理过程中发现的Bug进行修复,有需要改进的地方我也会继续做出改进。这一系列的文章我将会放入微服务项目专栏中࿰

Java使用DFA算法实现敏感词过滤

1前言敏感词过滤就是你在项目中输入某些字(比如输入xxoo相关的文字时)时要能检测出来,很多项目中都会有一个敏感词管理模块,在敏感词管理模块中你可以加入敏感词,然后根据加入的敏感词去过滤输入内容中的敏感词并进行相应的处理,要么提示,要么高亮显示,要么直接替换成其它的文字或者符号代替。敏感词过滤的做法有很多,其中有比较常用的如下几种:1.查询数据库当中的敏感词,循环每一个敏感词,然后去输入的文本中从头到尾搜索一遍,看是否存在此敏感词,有则做相应的处理,这种方式讲白了就是找到一个处理一个。优点:soeasy。用java代码实现基本没什么难度。缺点:这效率是非常低的,如果是英文时你会发现一个很无语的

自己动手写编译器:DFA跳转表的压缩算法

在编译器开发体系中有两套框架,一个叫"lex&&yacc",另一个名气更大叫llvm,这两都是开发编译器的框架,我们只要设置好配置文件,那么他们就会生成相应的编译器代码,通常是c或者c++代码,然后对代码进行编译就能获得可执行的编译器运行文件,我们主要模仿lex&&yacc的实现。在centos上可以使用如下命令进行安装:installflex-develbison-devel完成后我们就可以使用flex来生成词法解析代码,首先我们创建一个lex.l文件,输入内容如下:%optionnoyywrap%{intFCON=1;intICON=2;%}D[0-9]%%({D}*\.{D}|{D}\.

自己动手写编译器:DFA跳转表的压缩算法

在编译器开发体系中有两套框架,一个叫"lex&&yacc",另一个名气更大叫llvm,这两都是开发编译器的框架,我们只要设置好配置文件,那么他们就会生成相应的编译器代码,通常是c或者c++代码,然后对代码进行编译就能获得可执行的编译器运行文件,我们主要模仿lex&&yacc的实现。在centos上可以使用如下命令进行安装:installflex-develbison-devel完成后我们就可以使用flex来生成词法解析代码,首先我们创建一个lex.l文件,输入内容如下:%optionnoyywrap%{intFCON=1;intICON=2;%}D[0-9]%%({D}*\.{D}|{D}\.

NX二次开发:Checkmate例子根据dfa文件检查模型数据

NX中的checkmate功能是用于检查模型、图纸数据的工具,在UGOPEN中有例子。手动操作可以检查已加载的装配下所有零部件,可以设置通过后保存模型,检查结果保存到Teamcenter中,默认保存在零组件版本下。代码中可以设置多个检查规则。相关设置可以在用户默认设置中进行设置。1//=============================2//Checkmate例子3//=============================4//MandatoryUFIncludes5#include6#include7#include8#include9#include10#include11#in

NX二次开发:Checkmate例子根据dfa文件检查模型数据

NX中的checkmate功能是用于检查模型、图纸数据的工具,在UGOPEN中有例子。手动操作可以检查已加载的装配下所有零部件,可以设置通过后保存模型,检查结果保存到Teamcenter中,默认保存在零组件版本下。代码中可以设置多个检查规则。相关设置可以在用户默认设置中进行设置。1//=============================2//Checkmate例子3//=============================4//MandatoryUFIncludes5#include6#include7#include8#include9#include10#include11#in

NX二次开发:Checkmate例子根据dfa文件检查模型数据

NX中的checkmate功能是用于检查模型、图纸数据的工具,在UGOPEN中有例子。手动操作可以检查已加载的装配下所有零部件,可以设置通过后保存模型,检查结果保存到Teamcenter中,默认保存在零组件版本下。代码中可以设置多个检查规则。相关设置可以在用户默认设置中进行设置。1//=============================2//Checkmate例子3//=============================4//MandatoryUFIncludes5#include6#include7#include8#include9#include10#include11#in

NX二次开发:Checkmate例子根据dfa文件检查模型数据

NX中的checkmate功能是用于检查模型、图纸数据的工具,在UGOPEN中有例子。手动操作可以检查已加载的装配下所有零部件,可以设置通过后保存模型,检查结果保存到Teamcenter中,默认保存在零组件版本下。代码中可以设置多个检查规则。相关设置可以在用户默认设置中进行设置。1//=============================2//Checkmate例子3//=============================4//MandatoryUFIncludes5#include6#include7#include8#include9#include10#include11#in

DFA算法之内容敏感词过滤

DFA算法是通过提前构造出一个树状查找结构,之后根据输入在该树状结构中就可以进行非常高效的查找。设我们有一个敏感词库,词酷中的词汇为:我爱你我爱他我爱她我爱你呀我爱他呀我爱她呀我爱她啊那么就可以构造出这样的树状结构:设玩家输入的字符串为:白菊我爱你呀哈哈哈我们遍历玩家输入的字符串str,并设指针i指向树状结构的根节点,即最左边的空白节点:str[0]=‘白’时,此时tree[i]没有指向值为‘白’的节点,所以不满足匹配条件,继续往下遍历str[1]=‘菊’,同样不满足匹配条件,继续遍历str[2]=‘我’,此时tree[i]有一条路径连接着‘我’这个节点,满足匹配条件,i指向‘我’这个节点,然

DFA算法之内容敏感词过滤

DFA算法是通过提前构造出一个树状查找结构,之后根据输入在该树状结构中就可以进行非常高效的查找。设我们有一个敏感词库,词酷中的词汇为:我爱你我爱他我爱她我爱你呀我爱他呀我爱她呀我爱她啊那么就可以构造出这样的树状结构:设玩家输入的字符串为:白菊我爱你呀哈哈哈我们遍历玩家输入的字符串str,并设指针i指向树状结构的根节点,即最左边的空白节点:str[0]=‘白’时,此时tree[i]没有指向值为‘白’的节点,所以不满足匹配条件,继续往下遍历str[1]=‘菊’,同样不满足匹配条件,继续遍历str[2]=‘我’,此时tree[i]有一条路径连接着‘我’这个节点,满足匹配条件,i指向‘我’这个节点,然
12