12

2014-12-13 22:05:54 +08:00   1

在牛客网 http://www.nowcoder.com 用户在我们网站提交的评论,我们会进行敏感词过滤,其算法是基于有限状态机DFA过滤的。 我觉得可以用敏感词过滤的方法来查找@的用户ID。 (用户ID就是好多敏感词), 具体的代码如下:

/**

* 过滤敏感词

*

* @param text

* @return

*/

public String filter(String text) {

if (StringUtils.isBlank(text)) {

return text;

}

String replacement = DEFAULT_REPLACEMENT;

StringBuilder result = new StringBuilder();

DFATreeNode tempNode = rootNode;

int begin = 0; // 回滚数

int position = 0; // 当前比较的位置

while (position < text.length()) {

char c = text.charAt(position);

// 空格直接跳过

if (isSymbol(c)) {

++position;

continue;

}

tempNode = tempNode.getSubNode(c);

// 当前位置的匹配结束

if (tempNode == null) {

// 以begin开始的字符串不存在敏感词

result.append(text.charAt(begin));

// 跳到下一个字符开始测试

position = begin + 1;

begin = position;

// 回到树初始节点

tempNode = rootNode;

} else if (tempNode.isKeywordEnd()) {

// 发现敏感词, 从begin到position的位置用replacement替换掉

result.append(replacement);

position = position + 1;

begin = position;

tempNode = rootNode;

} else {

++position;

}

}

result.append(text.substring(begin));

return result.toString();

}

php聊天功能逻辑原理,@xxx提及用户,这种功能的实现原理是怎样的?相关推荐

  1. 瑞吉外卖--套餐的添加修改等功能,短信验证登录原理操作及用户地址管理功能

    整理记录下学习整个瑞吉外卖项目,详细代码可在我的Gitee仓库瑞吉外卖实战克隆下载学习使用! 9.套餐管理 9.1 新增套餐 9.1.1 需求分析 9.1.2 数据模型 新增套餐就是将新增页面录入的套 ...

  2. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)--创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)--使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  3. 你知道的APP中,有哪些比较好用有特色的用户互动功能(指用户可以参与进来的功能,比较常见的如评论、关注、投票、聊天室等)?你觉得一个功能具有什么特征,才会让用户愿意互动进来?

    比较好用有特色的用户互动功能 1.微信公众号文章的"在看": 向好友展示了自己最近在看的文章,是另一种展现自己的方式:朋友可以对你的"在看"点赞,可以对你&qu ...

  4. 如何在App中实现朋友圈功能之二快速实现用户信息的自定义——箭扣科技Arrownock...

    如何在App中实现朋友圈功能 之二 快速实现用户信息的自定义 自我关联社交元素: anSocial中很多的社交元素API,如帖子(Post).相册(Album).文件(File)等,这些API的可选参 ...

  5. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )

    文章目录 一.申请权限 二.申请权限原理对话框 三.引导用户手动设置权限对话框 四.在 AndroidManifest.xml 中配置权限 五.完整代码示例 六.GitHub 地址 一.申请权限 申请 ...

  6. 简述实时音视频聊天中端到端加密(E2EE)的工作原理

    前言 本文着重阐述端到端加密(E2EE),端到端加密是确保数据传输安全的可行方法之一.读完这篇文章,你可以了解这种加密方式的基本原理. 说到互联网的数据安全,一般用户可能认为,像端到端加密这类问题事不 ...

  7. Java基于Socket实现聊天、群聊、敏感词汇过滤功能

    首先的话,这个代码主要是我很久以前写的,然后当时还有很多地方没有理解,现在再来看看这份代码,实在是觉得丑陋不堪,想改,但是是真的改都不好改了- 所以,写代码,规范真的很重要. 实现的功能: 用户私聊 ...

  8. 最详细的【微信小程序+阿里云Web服务】开发部署指引(十二):开发小程序用户反馈功能

    文章目录 前言 一.功能说明 二.代码实现 1.创建界面Page 2.WXML 3.JS 4.WXSS 专题文章链接 前言 案例的运行效果,可以扫码观看: 本篇文章,我们将实现应用的用户反馈功能. 一 ...

  9. python编程用户登陆c_django实现用户登陆功能详解

    简介: Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python ...

最新文章

  1. 什么是事务的传播_这么漂亮的Spring事务管理详解,你不来看看?
  2. 《Shell脚本学习指南》第四章 文本处理工具
  3. 控件不能与用户交互的原因
  4. Visual Question Answering概述
  5. 【论文解读】A Survey on Visual Transformer及引文理解
  6. XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较
  7. cocos2d-x编程之CCScale9Sprite典型用法
  8. 西湖大学生命学院章永登实验室 (超分辨成像)科研团队招聘启事
  9. 赵泽良:规范引导数字平台健康发展是时代面临的新课题
  10. SSH远程链接:SCP远程拷贝文件与文件夹
  11. Go语言-defer的使用
  12. 用户需求分析:背后隐藏的门槛
  13. 内存映射文件的优势劣势体会
  14. 计算机shutdown命令,shutdown命令用法|电脑关机命令shutdown
  15. 文明IV模组(MOD)制作指南
  16. Scratch幻影小猫 电子学会图形化编程scratch等级考试三级真题答案2019-9
  17. 3nf mysql表_数据库三大范式(1NF,2NF,3NF)及ER图
  18. 莫比乌斯函数的两种求法(基于欧拉筛、埃氏筛)
  19. 计算机组成原理题目透析(2)
  20. 《吴恩达深度学习》编程作业-第二周

热门文章

  1. 地贝扫地机器人维修_扫地机器人常见故障及维修方法
  2. 微信小程序里如何使用npm?小程序集成友盟举例
  3. oracle 数据更新
  4. SVN更新时报403错误
  5. python 类和对象 有必要学吗_类与对象-python学习19
  6. HBase shell命令行
  7. spring cloud gateway url重写
  8. Sql Server中查看/修改identity(自增列)的值
  9. 2017年什么命_所谓“佛系”,真的不是什么都不做!
  10. rust加载不进去服务器eac_基于腾讯云的 Rust 和 WebAssembly 函数即服务