当前位置: 首页 > wzjs >正文

大同营销型网站建设费用网站批量查询工具

大同营销型网站建设费用,网站批量查询工具,asp做网站好不好,wordpress 目录样式现在的游戏有敏感词检测这一点,相信大家也不陌生了,不管是聊天,起名,签名还是简介,只要是能让玩家手动输入的地方,一定少不了敏感词识别,至于识别之后是拒绝修改还是星号替换,这个就各有各的做法了,但是绕不开的一定是需要高效的敏感词检测机制。 相信大家对于游戏里聊…

现在的游戏有敏感词检测这一点,相信大家也不陌生了,不管是聊天,起名,签名还是简介,只要是能让玩家手动输入的地方,一定少不了敏感词识别,至于识别之后是拒绝修改还是星号替换,这个就各有各的做法了,但是绕不开的一定是需要高效的敏感词检测机制。

DFA

相信大家对于游戏里聊天框的以下内容已经不陌生了

  • “我***”
  • “你真牛*”
  • “你是不是傻*”

一个垃圾的游戏环境是非常影响玩游戏的心情的,看到这些***,就知道游戏已经帮我们屏蔽掉了那些屏蔽字了,对于玩游戏而言,心里会好受很多。敏感词识别对于游戏的重要性不言而喻。当然,除了游戏,也有很多业务场景可能需要敏感词检测,如果你接到这样一个需求的时候,你会怎么做?

一、原生API

作为Java程序员,我的第一反应,一定是使用jdk原生的String类提供的contain或replace方法来进行包含判断或字符替换,这是最简单直接的方式。那我们就来看看String的实现方式:

contains

String在java中以char数组形式存储,而String.contains的实现,实际上是对数组的遍历查找匹配

// 最终调用方法
static int indexOf(char[] source, int sourceOffset, int sourceCount,char[] target, int targetOffset, int targetCount,int fromIndex) {// ...
}

replace

String.replace有4个接口,实现为正则匹配替换或直接遍历替换

public String replace(char oldChar, char newChar) {// 直接进行字符串遍历,替换第一个匹配的字符串
}
public String replace(CharSequence target, CharSequence replacement) {// 创建Pattern,使用LITERAL模式进行正则匹配替换replaceAll// 当设置LITERAL标志时,输入字符串中的所有字符都被视为普通字符。// 这意味着正则表达式的特殊字符,如点号(.)、星号(*)、加号(+)等,都将失去它们在正则表达式中的特殊意义,被直接视为普通字符。
}
public String replaceAll(String regex, String replacement) {// 创建Pattern,使用正则表达式模式匹配替换replaceAll
}
public String replaceFirst(String regex, String replacement) {// 创建Pattern,使用正则表达式模式匹配替换replaceFirst,仅替换第一个匹配的字符串
}

通过jdk提供的String源码我们可以得到以下结果:

  • 使用contains方法进行包含判断,它的底层实现原理其实就是通过遍历目标字符串的字符数组进行挨个匹配;少量敏感词检测的时候是可行的,但如果目标字符串很大,并且要匹配的敏感词足够多的时候,它的遍历匹配效率是很低的。
  • replace则分两种实现,其中一种是类似contains方法,也是进行对目标字符串进行字符数组的遍历替换。
  • replace的另一种实现,是通过java的正则表达式去做匹配,正则匹配相比于遍历匹配,效率上不会有明显提升,但对于复杂模式的解析匹配会有比较明显的优势

其他语言的字符串操作API大同小异,具体看源码的实现方式

DFA

二、正则表达式

另外一种我们能想到的方式就是进行正则表达式的匹配了。前面提到,在java中如果使用String的api,它有部分接口就是使用正则表达式来实现的。
使用正则表达式有一定优势,也有一定缺陷。这就不得不提正则表达式的实现原理:FA(Finite Automaton:有限自动机)

DFA与NFA

FA又分为DFA和NFA,我们以正则ab|ac举例

  • NFA(Nondeterministic finite automaton:非确定性有限状态自动机)
    在NFA中表达式会构建为以下结构
    nfa

    • 非确定性:对于给定的输入符号,NFA可以从一个状态转移到多个状态。这意味着存在多种可能的状态转换路径,NFA在任何时间点都可以处于多个状态。
    • 回溯:由于NFA在处理输入时可以选择多条路径,因此可能需要回溯。当某条路径未能达到接受状态时,NFA会返回并尝试其他可能的路径。
    • 构造:NFA相对容易构造,特别是对于复杂的或包含多种可能的语言(例如正则表达式)。
    • 运行效率:由于其非确定性特性,NFA在运行时可能需要更多的计算资源,特别是在处理长输入字符串时。
  • DFA(Deterministic finite automaton:确定性有限自动机)
    在DFA中表达式会构建为以下结构
    dfa

    • 确定性:对于给定的输入符号,DFA从一个状态转移到另一个唯一确定的状态。这意味着DFA在任何时间点只能处于一个状态。
    • 无回溯&
http://www.dtcms.com/wzjs/177140.html

相关文章:

  • 南宁百度网站建设公司百度官网网址
  • 国外工程建筑网站销售管理软件
  • 金银饰品那家网站做的好网站推广排名哪家公司好
  • 网站里图片的作用兰州快速seo整站优化招商
  • 做明星ps黄图网站百度seo整站优化
  • 网站建设合作协议班级优化大师免费下载学生版
  • 广西南宁网站建设有限公司百度信息流投放
  • 关于做网站的毕业设计十大洗脑广告
  • 怎样把网站做的漂亮seo每天一贴博客
  • 家教网站制作yw77731域名查询
  • 做加密网站全站加密的最低成本seo网页的基础知识
  • app开发直播功能南昌seo管理
  • c 做网站简单还是java百度推广代理商返点
  • 苏州个人网站建设自动点击关键词软件
  • 怎样通过阿里云建设网站直接登录的网站
  • 用php做网站用到的工具免费检测网站seo
  • 右翼网站宁波正规优化seo公司
  • 万网虚拟主机上传网站西安seo
  • 用html做的生日祝福网站最近的新闻大事20条
  • 怎么制作网站的链接宏推特是谁的公司
  • 大连网站制作中企动力促销活动推广语言
  • 真人性做爰video网站关键词快速排名平台
  • 网站开发的硬件环境省委副书记
  • 国家疫情防控最新政策第十版广州seo网站开发
  • 自己的电脑做网站服务器吗刚刚济南发通知
  • 专注企业网站建设沈阳seo推广
  • php 手机网站中国十大营销策划公司排名
  • 网站开发维护合同模板电子版无锡优化网站排名
  • 电子商务网站建设与管理课件关键词出价计算公式
  • 岳麓区做网站全达seo