游戏中经常需要检测玩家的昵称或者聊天内容是否包含敏感词组。

一般来说,检测的算法都是直接利用正则表达式进行全字匹配。抛开正则效率差强人意来说,正则算法无法处理拆字情况。举个例子来说,假设"马克思"是一个敏感字,玩家直接输入”马克思“肯定会被检测出来,但假设玩家输入的是”马1克2思3“,这种在敏感字中间随意穿插其他文字,正则则无能为力了。除非对每一个敏感字,都建立类似”马*克*思“之类的正则表达式,这样下来效率就更加低下了。

因此,本文将设计另外一种算法,争取以较高的速度完成屏蔽字检测。

算法思路如下:

1.读取敏感字词库,将每一个敏感字的第一个字母保存到hash结构的key,若遇到同一个起始文字有多个相关的敏感字,则将这类敏感字保存在一个list集合,数据结构为Map<Character,List<String>>

2.遍历待测试的文字内容,若当前字符在敏感字索引找得到,则取当前字符以及随后的若干文字组成检测单元。若检测单元包含敏感词组的全部内容,则表示发现敏感文字。

这里有一个问题,就是需要确定当前索引字符组合其后的多少文字构成检测单元。总不能一篇800字的文章,前两个字是”马克“,最后一个文字是”思“,就说这篇文字包含敏感字”马克思“吧  ==。 ==

代码如下:

1.敏感词库读取器(DirtyWordsReader.java),用于读取包含敏感词组的文本

import java.io.BufferedReader;
import jav

游戏服务端之屏蔽字检测相关推荐

  1. 【服务端】多线程游戏服务端

    多线程游戏服务端 一.系统介绍 二.系统架构 2.1 Sunnet进程的运行 2.1.1 SocketThread线程的运行 2.1.2 WorkerThreads线程的运行 2.1.3 TimerT ...

  2. 百万在线:大型游戏服务端开发

    进入手游时代,服务端技术也在向前演进.现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重.服务端技术并不简单,作为服务端新人,全面掌握服务端技 ...

  3. java游戏服务端实现

     java游戏服务端实现 一个多人在线的棋牌类网络游戏的项目临近尾声,我参与了该项目的整个设计流程,并且完成了90%的核心代码.关于这个项目,有很多地方值得聊一聊.本系列不打算把这个项目将得多么详 ...

  4. 从游戏服务端角度分析移动同步(状态同步)

    从游戏服务端角度分析移动同步(状态同步) 参考文章: https://www.lfzxb.top/ow-gdc-gameplay-architecture-and-netcode/ https://z ...

  5. pomelo + vscode + typescript搭建可约束可调试的游戏服务端框架

    说在前面 pomelo: 它是网易开源的一套基于Node.js的游戏服务端框架,详情请戳这里关于pomelo的种种这里不详细说.点击链接查看详情.但是由于pomelo是js项目,使用起来的时候并不是很 ...

  6. 《百万在线 大型游戏服务端开发》前两章概念笔记

    第1章 从角色走路说起 游戏网络通信的流程则是服务端先开启监听,等待客户端的连接,然后交互操作,最后断开. 套接字 每个Socket都包含网络连接中一端的信息.每个客户端需要一个Socket结构,服务 ...

  7. 游戏服务端开发-AOI-九宫格法解析(附代码)

    1-啥是AOI AOI全称Area Of Interest,中文就是感兴趣的区域,个人理解就是玩家关注的并且可视的地图区域. 在RPG游戏中,玩家角色移动,攻击,放技能等操作都需要向其他玩家广播,但服 ...

  8. 游戏服务端开发-好友系统

    开头 好友系统几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种好友系统的具体实现方式. 存储 可直接以user_id为key,存在ETS或序列化后存在Redis等公共安全的内存数据区域 ...

  9. 游戏服务端开发之基础概念扫盲篇

    13年毕业后,做了一年多外包web开发,因为受不了在客户现场工作的氛围,愤然辞职.转行做了一名手游服务端开发. 在广州,据我所知,选择java作为服务端开发语言的公司大概有37互娱,百田,银汉,易娱, ...

最新文章

  1. java将字符串和字符串数组互相转换方法
  2. EJBCA 6 通过调用WebService接口增加用户并获取证书
  3. C#抽象类与密封类-abstract-sealed
  4. Linux操作系统之简易实现server/client
  5. ConvLab介绍及使用
  6. Android Multimedia框架总结(二十一)MediaCodec中创建到start过程(到jni部分)
  7. 固态硬盘SSD的SLC与MLC和TLC三者的区别
  8. VMware虚拟机安装Windows7
  9. zend studio html乱码,解决Eclipse/Zend Studio编辑xml/html乱码问题
  10. 学习如何使用css给数字加圆圈效果
  11. 平面向量内积坐标公式推导_平面向量内积的坐标运算与距离公式
  12. 华为MA5626-8密码恢复及设置
  13. EEG多元模式分析预测慈善捐赠行为
  14. 图像超分之——寻找两张图差异的区域
  15. 肥姐沈殿霞离世追悼会时间待定 为女儿留下上亿遗产
  16. VSCode Python运行环境配置
  17. Mixly第三方库开发
  18. 中北大学信息商务学院计算机系学生会名单,2017年中北大学信息商务学院新媒体中心部员竞选结果公示...
  19. 转载——神经网络中mAP相关概念
  20. Navicat还原nb3备份文件步骤

热门文章

  1. lxf-java selected study
  2. 量子力学 一 基础4 态空间、对偶与线性算符
  3. word标题段前不生效
  4. PHP自学笔记 ---李炎恢老师PHP第一季 TestGuest1.1 密码处理+1.2可选验证
  5. mysql中autocommit,start transaction和begin/commit的异同
  6. sEMG项目总结(5)sEMG分析
  7. K12982 哈利波特的魔杖(wand)
  8. 发邮件对方服务器未响应重新投递,邮件无法收到
  9. 谈谈在大公司和小公司的区别
  10. idea overlays文件夹_使用IDEA加载maven项目没有出现overlays目录的解决方法