游戏服务端之屏蔽字检测
游戏中经常需要检测玩家的昵称或者聊天内容是否包含敏感词组。
一般来说,检测的算法都是直接利用正则表达式进行全字匹配。抛开正则效率差强人意来说,正则算法无法处理拆字情况。举个例子来说,假设"马克思"是一个敏感字,玩家直接输入”马克思“肯定会被检测出来,但假设玩家输入的是”马1克2思3“,这种在敏感字中间随意穿插其他文字,正则则无能为力了。除非对每一个敏感字,都建立类似”马*克*思“之类的正则表达式,这样下来效率就更加低下了。
因此,本文将设计另外一种算法,争取以较高的速度完成屏蔽字检测。
算法思路如下:
1.读取敏感字词库,将每一个敏感字的第一个字母保存到hash结构的key,若遇到同一个起始文字有多个相关的敏感字,则将这类敏感字保存在一个list集合,数据结构为Map<Character,List<String>>
2.遍历待测试的文字内容,若当前字符在敏感字索引找得到,则取当前字符以及随后的若干文字组成检测单元。若检测单元包含敏感词组的全部内容,则表示发现敏感文字。
这里有一个问题,就是需要确定当前索引字符组合其后的多少文字构成检测单元。总不能一篇800字的文章,前两个字是”马克“,最后一个文字是”思“,就说这篇文字包含敏感字”马克思“吧 ==。 ==
代码如下:
1.敏感词库读取器(DirtyWordsReader.java),用于读取包含敏感词组的文本
import java.io.BufferedReader;
import jav
游戏服务端之屏蔽字检测相关推荐
- 【服务端】多线程游戏服务端
多线程游戏服务端 一.系统介绍 二.系统架构 2.1 Sunnet进程的运行 2.1.1 SocketThread线程的运行 2.1.2 WorkerThreads线程的运行 2.1.3 TimerT ...
- 百万在线:大型游戏服务端开发
进入手游时代,服务端技术也在向前演进.现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重.服务端技术并不简单,作为服务端新人,全面掌握服务端技 ...
- java游戏服务端实现
java游戏服务端实现 一个多人在线的棋牌类网络游戏的项目临近尾声,我参与了该项目的整个设计流程,并且完成了90%的核心代码.关于这个项目,有很多地方值得聊一聊.本系列不打算把这个项目将得多么详 ...
- 从游戏服务端角度分析移动同步(状态同步)
从游戏服务端角度分析移动同步(状态同步) 参考文章: https://www.lfzxb.top/ow-gdc-gameplay-architecture-and-netcode/ https://z ...
- pomelo + vscode + typescript搭建可约束可调试的游戏服务端框架
说在前面 pomelo: 它是网易开源的一套基于Node.js的游戏服务端框架,详情请戳这里关于pomelo的种种这里不详细说.点击链接查看详情.但是由于pomelo是js项目,使用起来的时候并不是很 ...
- 《百万在线 大型游戏服务端开发》前两章概念笔记
第1章 从角色走路说起 游戏网络通信的流程则是服务端先开启监听,等待客户端的连接,然后交互操作,最后断开. 套接字 每个Socket都包含网络连接中一端的信息.每个客户端需要一个Socket结构,服务 ...
- 游戏服务端开发-AOI-九宫格法解析(附代码)
1-啥是AOI AOI全称Area Of Interest,中文就是感兴趣的区域,个人理解就是玩家关注的并且可视的地图区域. 在RPG游戏中,玩家角色移动,攻击,放技能等操作都需要向其他玩家广播,但服 ...
- 游戏服务端开发-好友系统
开头 好友系统几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种好友系统的具体实现方式. 存储 可直接以user_id为key,存在ETS或序列化后存在Redis等公共安全的内存数据区域 ...
- 游戏服务端开发之基础概念扫盲篇
13年毕业后,做了一年多外包web开发,因为受不了在客户现场工作的氛围,愤然辞职.转行做了一名手游服务端开发. 在广州,据我所知,选择java作为服务端开发语言的公司大概有37互娱,百田,银汉,易娱, ...
最新文章
- java将字符串和字符串数组互相转换方法
- EJBCA 6 通过调用WebService接口增加用户并获取证书
- C#抽象类与密封类-abstract-sealed
- Linux操作系统之简易实现server/client
- ConvLab介绍及使用
- Android Multimedia框架总结(二十一)MediaCodec中创建到start过程(到jni部分)
- 固态硬盘SSD的SLC与MLC和TLC三者的区别
- VMware虚拟机安装Windows7
- zend studio html乱码,解决Eclipse/Zend Studio编辑xml/html乱码问题
- 学习如何使用css给数字加圆圈效果
- 平面向量内积坐标公式推导_平面向量内积的坐标运算与距离公式
- 华为MA5626-8密码恢复及设置
- EEG多元模式分析预测慈善捐赠行为
- 图像超分之——寻找两张图差异的区域
- 肥姐沈殿霞离世追悼会时间待定 为女儿留下上亿遗产
- VSCode Python运行环境配置
- Mixly第三方库开发
- 中北大学信息商务学院计算机系学生会名单,2017年中北大学信息商务学院新媒体中心部员竞选结果公示...
- 转载——神经网络中mAP相关概念
- Navicat还原nb3备份文件步骤
热门文章
- lxf-java selected study
- 量子力学 一 基础4 态空间、对偶与线性算符
- word标题段前不生效
- PHP自学笔记 ---李炎恢老师PHP第一季 TestGuest1.1 密码处理+1.2可选验证
- mysql中autocommit,start transaction和begin/commit的异同
- sEMG项目总结(5)sEMG分析
- K12982 哈利波特的魔杖(wand)
- 发邮件对方服务器未响应重新投递,邮件无法收到
- 谈谈在大公司和小公司的区别
- idea overlays文件夹_使用IDEA加载maven项目没有出现overlays目录的解决方法