- 浏览: 175408 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (134)
- java笔记 (25)
- Android开发 (3)
- Mybatis笔记 (1)
- oracle (9)
- javaScript (23)
- struts2 (2)
- jquery (6)
- java多线程 (6)
- 全文检索lucene (1)
- solr4.4 (5)
- solr4.9 (1)
- css 要点 (2)
- fmt格式化 (1)
- 百度地图 (1)
- 显示层jsp (2)
- ant (3)
- 脑袋放水 (2)
- 播放器 (1)
- log日志 (1)
- Spring (1)
- 设计模式 (2)
- httpservlet (1)
- seo (1)
- eclipse使用技巧 (1)
- 正则表达式 (2)
- 我的异常解决方案 (2)
- 集群服务器 (2)
- java网络编程 (3)
- Eclipse快捷键 (1)
- 图片和Base64互转 (1)
- maven (0)
- jsoup 网络爬虫 (1)
- 安全防范 (1)
- 非关系型数据库 (1)
- 在线工具 (1)
- HTML5学习 (1)
- Apache-Mina (1)
最新评论
-
wenjiao8204322:
不好意思说错了,是变量替换后,如果是英文和数字,是不换行的,如 ...
html 转换成pdf -
wenjiao8204322:
楼主你好,有问题、一直难以解决,我们项目上线后,就遗留在这就是 ...
html 转换成pdf -
jacking124:
scoreName 这个属性是做什么的!
jquery.raty-评级插件 -
高军威:
yixiandave 写道高军威 写道alvin198761 ...
Java中的五种实现方法【单例模式】 -
yixiandave:
高军威 写道alvin198761 写道53./** 54. ...
Java中的五种实现方法【单例模式】
参考网上的一篇博客改写的 测了几次,这个比上一个http://360193550.iteye.com/blog/1856753好用。效率也高了点
package com.gjw.filters; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Properties; @SuppressWarnings({ "rawtypes", "unchecked" }) public class KeywordFilter { /** 直接禁止的 */ private HashMap keysMap = new HashMap(); private int matchType = 1; // 1:最小长度匹配 2:最大长度匹配 public void addKeywords(List<String> keywords) { for (int i = 0; i < keywords.size(); i++) { String key = keywords.get(i).trim(); HashMap nowhash = null; nowhash = keysMap; for (int j = 0; j < key.length(); j++) { char word = key.charAt(j); Object wordMap = nowhash.get(word); if (wordMap != null) { nowhash = (HashMap) wordMap; } else { HashMap<String, String> newWordHash = new HashMap<String, String>(); newWordHash.put("isEnd", "0"); nowhash.put(word, newWordHash); nowhash = newWordHash; } if (j == key.length() - 1) { nowhash.put("isEnd", "1"); } } } } /** * 重置关键词 */ public void clearKeywords() { keysMap.clear(); } /** * 检查一个字符串从begin位置起开始是否有keyword符合, 如果有符合的keyword值,返回值为匹配keyword的长度,否则返回零 * flag 1:最小长度匹配 2:最大长度匹配 */ private int checkKeyWords(String txt, int begin, int flag) { HashMap nowhash = null; nowhash = keysMap; int maxMatchRes = 0; int res = 0; int l = txt.length(); char word = 0; for (int i = begin; i < l; i++) { word = txt.charAt(i); Object wordMap = nowhash.get(word); if (wordMap != null) { res++; nowhash = (HashMap) wordMap; if (((String) nowhash.get("isEnd")).equals("1")) { if (flag == 1) { wordMap = null; nowhash = null; txt = null; return res; } else { maxMatchRes = res; } } } else { txt = null; nowhash = null; return maxMatchRes; } } txt = null; nowhash = null; return maxMatchRes; } /** * 返回txt中关键字的列表 */ public List<String> getTxtKeyWords(String txt) { //使用hashset 集合返回 包含那几个 敏感字 不重复显示 List<String> list = new ArrayList<String>(); int l = txt.length(); for (int i = 0; i < l;) { int len = checkKeyWords(txt, i, matchType); if (len > 0) { String tt = "<font color='#ff0000'>" + txt.substring(i, i + len) + "</font>"; list.add(tt); i += len; } else { i++; } } txt = null; return list; } /** * 仅判断txt中是否有关键字 */ public boolean isContentKeyWords(String txt) { for (int i = 0; i < txt.length(); i++) { int len = checkKeyWords(txt, i, 1); if (len > 0) { return true; } } txt = null; return false; } /** * 初始化敏感词列表 * */ public void initfiltercode() { List<String> keywords = new ArrayList<String>(); InputStream in = KeywordFilter.class.getClassLoader().getResourceAsStream("words.properties"); Properties pro = new Properties(); try { pro.load(in); in.close(); } catch (IOException e1) { e1.printStackTrace(); } Enumeration<String> enu = (Enumeration<String>) pro.propertyNames(); while (enu.hasMoreElements()) { try { String dd = (String) enu.nextElement(); dd = new String(dd.getBytes("ISO8859-1"), "UTF-8"); keywords.add(dd); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } addKeywords(keywords); } public int getMatchType() { return matchType; } public void setMatchType(int matchType) { this.matchType = matchType; } public static void main(String[] args) throws IOException { Date date = new Date(); KeywordFilter filter = new KeywordFilter(); filter.initfiltercode(); String txt = "她长孙家提携恩情,FL大法不会有人去追查这件事的,中南海权力斗争就一次,就一次,好吗?"; boolean boo = filter.isContentKeyWords(txt); System.out.println(boo); List<String> set = filter.getTxtKeyWords(txt); System.out.println("包含的敏感词如下:"+set); Date date2 = new Date(); float ss = date2.getTime() - date.getTime(); System.out.println(ss + "毫秒"); } }
- FilterCode.rar (32 KB)
- 下载次数: 249
评论
2 楼
高军威
2014-05-05
/** * 返回txt中关键字的列表 */ public HashSet<String> getTxtKeyWords(String txt) { //使用hashset 集合返回 包含那几个 敏感字 不重复显示 HashSet<String> list = new HashSet<String>(); int l = txt.length(); for (int i = 0; i < l;) { int len = checkKeyWords(txt, i, matchType); if (len > 0) { String tt = "<font color='#ff0000'>" + txt.substring(i, i + len) + "</font>"; list.add(tt); i += len; } else { i++; } } txt = null; return list; }
1 楼
u010244357
2014-03-20
首先感谢楼主,有个不明白的地方是,输出时一下子输出了好几遍getReplaceStrTxtKeyWords
发表评论
-
BigDecimal商业计算详解
2017-03-07 09:20 9221、浮点数精确计算 ... -
web.xml中load-on-startup标签的含义
2015-09-22 10:56 781原文:http://blog.csdn.net/leideng ... -
Java IO流整理
2015-04-08 22:26 671一、InputStream/OutputStream 和 Re ... -
Java Junit测试例子
2015-01-21 13:46 589原文:http://blog.csdn.net/pleasur ... -
javac命令编译 各种编译
2014-12-12 11:11 439javac参数(-classpath, -sourcepath ... -
HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
2014-11-14 09:22 1021原文转载:http://www.open-open.com/l ... -
上传进度条显示
2014-06-19 14:26 8591.重写 package com.upload.util ... -
java图片等比例缩放
2014-06-05 13:23 1011需要引入jar包 package com.gjw.ima ... -
将小写金额四舍五入保留两位小数,转换成大写金额
2014-05-30 10:26 899将小写金额四舍五入保留两位小数,转换成大写金额 网上收集了 ... -
response.setContentType 参数参照
2014-01-12 10:22 1081response.setContentType()的参数说明 ... -
java文件下载
2014-01-12 10:11 827文件下载有两种方法: 1.直接在网站上放个链接地址,右键另存为 ... -
html 转换成pdf
2013-12-27 18:07 9543解决需求: 1.字符串html代码转换成pdf文件 2.根据 ... -
java 程序代码小功能代码
2013-12-27 15:54 7411.输出格式 年月日 星期 SimpleDateForma ... -
详细解析Java中抽象类和接口的区别
2013-11-04 16:13 492在Java语言中, abst ... -
在线支付
2013-10-28 11:07 687http://blog.csdn.net/he20101020 ... -
java 给图片添加 水印图片
2013-10-22 17:35 847package michael.io.image; ... -
tika
2013-10-18 23:14 981测试代码: package com.tika.test; ... -
【文件下载】及解决文件名中文乱码问题
2013-10-16 10:32 1587关键代码: package com.action; ... -
日期 字符串截取 格式化 标签
2013-09-25 08:50 14751.java类文件 放到 src的包中 2.tld文件 放到w ... -
Java实现文件自动打包成zip并下载的代码
2013-09-24 15:34 1472package www.gjw.test; impo ...
相关推荐
本项目是一款高效的Java敏感词过滤系统,基于AC自动机算法实现。系统支持独立部署,同时可便捷集成至注册中心,为各类项目提供敏感词过滤服务。包含文件共117个,其中主要构成如下: - Java源文件:49个 - Class...
用java实现根据用户传进来的话语是否包含敏感词,如果包含敏感词用*来替代输出。
基于简单的java基础,制作的java敏感词程序,可用于学生提交作业
使用DFA算法实现的内容安全,反垃圾,智能鉴黄,敏感词过滤,不良信息检测,文本校验,敏感词检测,包括关键词提取,过滤html标签等。
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发Node.js、C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
本实时敏感词识别系统项目基于树莓派和Java开发,包含98个文件,其中36个Java文件,31个XML文件,以及其他相关配置和资源文件。系统利用Python脚本辅助,实现对敏感词的实时识别,并立即提供反馈。用户可通过配套的...
Java开发的校园论坛,java,JavaSpring+JDBC+Mysql,校园论坛 对于一个用户,使用论坛进行交流时,首先要注册一个 账户,然后登录后才能进行对帖子的回复,如果不登录,就 只能查看帖子而不能进行回复和发表帖子。...
项目概述:基于Java语言开发的UGC内容过滤系统,运用DFA算法进行敏感词汇识别,并计划引入贝叶斯学习优化过滤效果。当前项目包含57个文件,其中Java源文件43个,以及其他配置和资源文件。项目正处于实验阶段,中文...
JAVA查重算法,包括HanLP 相似度比较、二叉树、DFA算法实现、敏感词处理工具、IKAnalyzer中文分词工具、分词进行敏感词过滤等查重算法,可以计算海明距离、余弦相似性、莱文斯坦距离、Jaccard 相似度、Sorensen Dice...
基于前缀树的敏感词过滤 异步框架的设计,底层使用的是Redis的异步队列,使用异步队列实现站内信,点赞,邮件等功能 solr结合IKAnalyzer自定义中文分词,实现搜索引擎 timeline推拉模式结合的时间轴,渲染新鲜事,...
需求很简单,就是从数据库中读取内容,包括资讯,产品,公司简介之类,看看是否存在违禁词,有的话就把这条记录的ID存入违禁词文档。可以应用于分词库匹配检索,如关键字、敏感词的标识,起到过滤的作用。
本源码是一个基于SpringBoot、Netty、Redis和...系统还采用DFA算法模型对敏感词进行过滤,确保内容的安全性。整个项目包含62个Java文件、12个PNG图像文件等,共92个文件,为用户提供了一个高效、安全的弹幕互动体验。
模仿知乎做的SpringBoot问答社交网站项目,项目技术点SpringBoot+Mybatis+Mysql+redis+solr+velocity+python爬虫进行数据填充,项目亮点有手写异步消息框架、敏感词过滤等 软件开发设计:应用软件开发、系统软件开发...
本系统,采用网络中已经成熟、稳定地技术ASP Access/SQL开发而成,是最早最优秀的问答系统,拥有广大的用户群 通过它,您可以很方便地管理自己网站。... 20、强大而灵活的敏感词过滤功能 100303 更新导航地址
此功能可对拆分出的汉语词组进行词性标注,辅以开发人员理解分析文本序列中所包含的语义或意图。其广泛应用于互联网信息搜索以提高搜索精度、智能聊天机器人理解对方话语的含义等领域。整个分词标注以北京大学词性...
bbs论坛源码系统,采用springboot+web项目框架,前端采用原生js,jsp,jquery,源码包括后台管理系统,项目包含发帖,回复,敏感词过滤等功能,提供前期部署指导,项目包括完整的mysql数据库文件,可直接部署运行,...
古典文集管理是指对文集的信息进行添加、修改和删除,主要包括文集名称、作者、朝代、内容、译文及注释、赏析和创造背景等内容,管理员有权限查看用户对文集的评论,对包含敏感词的非法评论有权限进行删除。
在以上UGC (用户生成的内容,用户产生的内容)中,系统都会进行HTML标签及敏感词过滤,这在一定程度上阻止了网站被注入脚本或者充斥着着不良信息。 如果没有对HTML标签进行处理,当用户发布的内容包含如[removed]...