- 浏览: 181047 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 9761、浮点数精确计算 ... -
web.xml中load-on-startup标签的含义
2015-09-22 10:56 837原文:http://blog.csdn.net/leideng ... -
Java IO流整理
2015-04-08 22:26 717一、InputStream/OutputStream 和 Re ... -
Java Junit测试例子
2015-01-21 13:46 652原文:http://blog.csdn.net/pleasur ... -
javac命令编译 各种编译
2014-12-12 11:11 480javac参数(-classpath, -sourcepath ... -
HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
2014-11-14 09:22 1069原文转载:http://www.open-open.com/l ... -
上传进度条显示
2014-06-19 14:26 9051.重写 package com.upload.util ... -
java图片等比例缩放
2014-06-05 13:23 1041需要引入jar包 package com.gjw.ima ... -
将小写金额四舍五入保留两位小数,转换成大写金额
2014-05-30 10:26 938将小写金额四舍五入保留两位小数,转换成大写金额 网上收集了 ... -
response.setContentType 参数参照
2014-01-12 10:22 1151response.setContentType()的参数说明 ... -
java文件下载
2014-01-12 10:11 867文件下载有两种方法: 1.直接在网站上放个链接地址,右键另存为 ... -
html 转换成pdf
2013-12-27 18:07 9621解决需求: 1.字符串html代码转换成pdf文件 2.根据 ... -
java 程序代码小功能代码
2013-12-27 15:54 7861.输出格式 年月日 星期 SimpleDateForma ... -
详细解析Java中抽象类和接口的区别
2013-11-04 16:13 529在Java语言中, abst ... -
在线支付
2013-10-28 11:07 729http://blog.csdn.net/he20101020 ... -
java 给图片添加 水印图片
2013-10-22 17:35 891package michael.io.image; ... -
tika
2013-10-18 23:14 1018测试代码: package com.tika.test; ... -
【文件下载】及解决文件名中文乱码问题
2013-10-16 10:32 1636关键代码: package com.action; ... -
日期 字符串截取 格式化 标签
2013-09-25 08:50 15271.java类文件 放到 src的包中 2.tld文件 放到w ... -
Java实现文件自动打包成zip并下载的代码
2013-09-24 15:34 1506package www.gjw.test; impo ...
相关推荐
在Java开发中,实现敏感词过滤功能是一项常见的需求,特别是在社交媒体、论坛或评论系统中,以防止用户发布不当或违规内容。本项目的核心是通过Java编程实现敏感词的检测和替换,确保信息的安全和合规性。 `...
以下是对DFA算法及其在Java敏感词过滤中的应用的详细解释。 ### 一、敏感词过滤的重要性 敏感词过滤的目标是检测和处理用户输入中可能存在的敏感词汇。这可以防止不良信息的传播,维护网络环境的和谐。常见的做法...
2. SensitiveWordFilter:一个简单的Java敏感词过滤库,提供了多种过滤策略。 3. SnowNLP:虽然主要用于中文文本处理,但也可用于敏感词过滤。 在实际开发中,应结合具体需求选择合适的过滤方法,并考虑性能、准确...
在Java开发中,敏感词过滤是一项重要的功能,尤其在处理用户输入、评论或者社交媒体内容时,需要确保不包含任何可能引发争议或不适当的内容。本项目适用于基于SSM(Spring、SpringMVC、MyBatis)和SpringBoot框架的...
以下是关于这个Java敏感词过滤实现的详细知识讲解。 首先,我们要理解敏感词过滤的基本原理。通常,敏感词过滤系统会维护一个敏感词库,包含各种禁止或限制使用的词汇。当输入的字符串被检查时,系统会遍历每个单词...
1. **敏感词库**:一个有效的敏感词过滤系统通常会有一个维护敏感词的数据库或列表,这些词可能包括政治敏感词、不雅词汇等。在Java中,可以使用ArrayList、HashSet或者TreeSet等数据结构来存储这些敏感词,其中...
本篇文章详细介绍了Java敏感词过滤技术的实现方法,包括敏感词库的加载、正则表达式的构建以及过滤逻辑的具体实现。通过对这些关键技术点的理解,可以帮助开发者更好地设计和实现自己的敏感词过滤系统。
Java敏感词检索工具是一种在社区问答、论坛等网络环境中用于过滤和检索可能涉及敏感内容的文本工具。在当今数字化时代,信息安全与言论管理变得尤为重要,此类工具能够帮助平台管理者及时发现并处理潜在的违规信息,...
本资源"Java敏感词过滤源码"提供了一个实现这一功能的Java解决方案,它包含了三个关键文件:一个敏感词库和两个Java类。以下是关于这些知识点的详细解释: 1. **敏感词**: 敏感词是指那些可能引起法律、道德或...
在Java编程环境中,敏感词过滤是一项重要的任务,特别是在处理用户输入、社交媒体监控或者内容审查时。这个主题主要涉及如何在文本中检测并移除或替换指定的敏感词汇,以确保内容的安全性和合规性。以下是对这个知识...
本篇将重点介绍如何使用Java实现基于DFA(Deterministic Finite Automaton,确定有限状态自动机)算法的敏感词过滤。 首先,DFA算法是一种图论概念,它可以被视作一种特殊的有向图,每个节点代表一个状态,每条边...
该项目是一款基于Java实现的敏感词过滤系统源码,包含60个文件,其中Java源文件41个,支持多种敏感词过滤算法,包括TTMP、DFA、DAT、hash bucket和Tire算法。系统提供文本高亮、过滤、判词、替换的接口支持,适用于...
在IT行业中,敏感词过滤是一项至关重要的技术,特别是在网络内容管理、社交媒体监控、以及各种在线交互平台中。这个话题涉及到网络安全、用户隐私保护以及社会责任等多个方面。本文将深入探讨敏感词过滤的概念、工作...
本项目是一款高效的Java敏感词过滤系统,基于AC自动机算法实现。系统支持独立部署,同时可便捷集成至注册中心,为各类项目提供敏感词过滤服务。包含文件共117个,其中主要构成如下: - Java源文件:49个 - Class...
该项目是一款基于Java语言的敏感词过滤服务设计源码,包含22个文件,主要由16个Java源文件、2个Markdown文档、1个Git忽略规则文件、1个开源协议文件、1个XML配置文件、1个YAML配置文件组成。该服务旨在提供高效的...
在这个实例中,我们关注的是一个基于DFA(Deterministic Finite Automaton,确定有限状态自动机)的敏感词过滤系统,它用于检查并移除或替换文本中的敏感词汇。这个系统包括一个Java实现的工具类`SensitiveWordUtil`...