java敏感词处理(分词工具,DFA算法)

Java实现DFA算法敏感词过滤 Java实现DFA算法敏感词过滤。 文章目录一. 应用场景二. 实现思路三. 源码实现 一. 应用场景 模拟非法词汇自动替换成*字符,且敏感词汇支持动态调整。 效果如下,若配置了敏感词:今天,则当用户在输入:今天,天气真不错。实际应该输出:** **,天气真不错 ** 二. 实现思路 使用MySQL作为敏感词库 使用DFA算法实现文字过滤 Q:什么是DFA? DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向. 阅读详情

引入:敏感词是许多网站需要处理的功能点,以下介绍两种处理办法。敏感词过滤,系统会有一个敏感词库,需要做的功能是发送的语句中是否包含敏感词,包含哪些敏感词,将语句中的敏感词进行替换。方法一:语句采用分词工具进行分词,再与敏感词库进行匹配查找。方法二:采用DFA算法进行敏感词匹配。

方法一:采用分词工具实现敏感词过滤(IKAnalyzer3.2.5Stable.jar)

package com.example.sensitive01;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.wltea.analyzer.IKSegmentation;
import org.wltea.analyzer.Lexeme;


/**
 * 敏感词处理工具-IKAnalyzer 中文分词工具,借助分词进行敏感词过滤
 */
public class SensitiveWordUtil {
	
	//敏感词集合
	public static HashMap sensitiveWordMap;
	
	//初始化敏感词库
	public static synchronized void init(Set<String> sensitiveWordSet){
		//初始化敏感词容器,减少扩容操作
		sensitiveWordMap=new HashMap(sensitiveWordSet.size());
		for(String sensitiveWord :sensitiveWordSet){
			sensitiveWordMap.put(sensitiveWord, sensitiveWord);		
			}
	}
	//判断文字是否包含敏感字符
	public static boolean contains(String txt) throws IOException{
		boolean flag=false;
		List<String> wordList=segment(txt);
		for(String word:wordList){
			if(sensitiveWordMap.get(word)!=null){
				return true;
			}
		}
		return flag;
	}
	/**
	 * 对语句进行分词
	 * @param txt
	 * @return
	 * @throws IOException 
	 */
	private static List<String> segment(String txt) throws IOException {
		List<String> list=new ArrayList<>();
		StringReader re=new StringReader(txt);
		IKSegmentation ik=new IKSegmentation(re,true);
		Lexeme lex;
        while ((lex = ik.next()) != null) {
            list.add(lex.getLexemeText());
        }
        return list; 
	}
	
	/**
	 * 获取语句中的敏感词,存入set集合
	 * @param str
	 * @return 敏感词集合
	 * @throws IOException 
	 */
	private static Set<String> getSensitiveWord(String txt) throws IOException {
		Set<String> sensitiveWordSet=new HashSet<>();
		//将语句进行分词
		List<String> wordList=segment(txt);
		for(String word:wordList){
			if(sensitiveWordMap.get(word)!=null){
				sensitiveWordSet.add(word);
			}
		}
		return sensitiveWordSet;
	}
	/**
	 * 将语句中的敏感词进行替换
	 * @param txt 语句
	 * @param replaceChar 替换字符
	 * @return 替换之后的语句
	 * @throws IOException
	 */
	private static String replaceSensitiveWord(String txt, char replaceChar) throws IOException {
		String resultTxt=txt;
		//获取所有敏感词
		Set<String> sensitiveWordList=getSensitiveWord(txt);
		
		String replaceString;
		for(String sensitiveWord :sensitiveWordList){
			replaceString=getReplaceChars(replaceChar,sensitiveWord.length());
			resultTxt=resultTxt.replaceAll(sensitiveWord, replaceString);
		}
		
		return resultTxt;
	}
	/**
	 * 将敏感词进行替换成指定字符
	 * @param replaceChar
	 * @param length
	 * @return
	 */
	private static String getReplaceChars(char replaceChar, int length) {
		String resultReplace=String.valueOf(replaceChar);
		for(int i=1;i<length;i++){
			resultReplace+=replaceChar;
		}
		return resultReplace;
	}
	/**
	 * 将敏感词替换成指定字符串
	 * @param txt
	 * @param replaceStr
	 * @return
	 * @throws IOException
	 */
	private static String replaceSensitiveWord(String txt, String replaceStr) throws IOException {
		String resultTxt=txt;
		Set<String> sensitiveWordList=getSensitiveWord(txt);
		for(String sensitiveWord:sensitiveWordList){
			resultTxt=resultTxt.replaceAll(sensitiveWord, replaceStr);
		}
		return resultTxt;
	}
	//测试
	public static void main(String[] args) {
		
		Set<String> sensitiveWordSet = new HashSet<>();
        sensitiveWordSet.add("饲养");
        sensitiveWordSet.add("基地");
        sensitiveWordSet.add("红客");
        sensitiveWordSet.add("联盟");
        sensitiveWordSet.add("贱人");
        sensitiveWordSet.add("手机卡");
        sensitiveWordSet.add("复制器");
        sensitiveWordSet.add("发呆");
        
        //初始化敏感词库
        SensitiveWordUtil.init(sensitiveWordSet);
        
        //需要处理的目标字符串
        String str="太多的伤感情怀也许只局限于饲养基地 荧幕中的情节。"
                + "然后 我们的扮演的角色就是跟随着主人公的喜红客联盟 怒哀乐而过于牵强的把自己的情感也附加于银幕情节中,然后感动就流泪,"
                + "难过就躺在某一个人的怀里尽情的阐述心扉或者手机卡复制器一个贱人一杯红酒一部电影在夜 深人静的晚上,关上电话静静的发呆着。";
        
        //判断是否包含敏感词
        try {
			boolean result=SensitiveWordUtil.contains(str);
			System.out.println("目标中是否含有敏感词"+result);
		} catch (IOException e) {
			e.printStackTrace();
		}
        
        //获取语句中的敏感词
        Set<String> set;
		try {
			set = SensitiveWordUtil.getSensitiveWord(str);
			System.out.println("语句中包含的敏感词的个数为:"+set.size()+".包含:"+set);
		} catch (IOException e) {
			e.printStackTrace();
		}
        
        //替换语句中的敏感词
        String filterStr;
		try {
			filterStr = SensitiveWordUtil.replaceSensitiveWord(str,'*');
			System.out.println(filterStr);
		} catch (IOException e) {
			e.printStackTrace();
		}
        
        String filterStr2;
		try {
			filterStr2 = SensitiveWordUtil.replaceSensitiveWord(str, "*敏感词*");
			System.out.println(filterStr2);
		} catch (IOException e) {
			e.printStackTrace();
		}
        
	}
}

分析:采用IKAnalyzer分词工具实现的敏感词过滤,有时候分词结果不是并不是很理想或者说是有局限。例如“饲养基地”为敏感词,分词会将其分成“饲养”和“基地”,导致“饲养基地”不能匹配出来,导致敏感词匹配不完整。

方法二:DFA算法实现的敏感词过滤

敏感词初始化类

package com.example.test03;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * 初始化敏感词库,将敏感词加入到HashMap中,构建DFA算法模型
 */
public class SensitiveWordInit {
	private String ENCODING = "GBK";    //字符编码
	
	public HashMap sensitiveWordMap;//敏感词库
	
	public SensitiveWordInit(){
	}
	/*
	 * 初始化敏感词库
	 */
	public Map initKeyWord(){
		try {
			//读取敏感词库
			Set<String> keyWordSet = readSensitiveWordFile();
			//将敏感词库加入到HashMap中
			addSensitiveWordToHashMap(keyWordSet);
			//spring获取application,然后application.setAttribute("sensitiveWordMap",sensitiveWordMap);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return sensitiveWordMap;
	}

	/**
	 * 读取敏感词库,将敏感词放入HashSet中,构建一个DFA算法模型:<br>
	 * 中 = {
	 *      isEnd = 0
	 *      国 = {<br>
	 *      	 isEnd = 1
	 *           人 = {isEnd = 0
	 *                民 = {isEnd = 1}
	 *                }
	 *           男  = {
	 *           	   isEnd = 0
	 *           		人 = {
	 *           			 isEnd = 1
	 *           			}
	 *           	}
	 *           }
	 *      }
	 *  五 = {
	 *      isEnd = 0
	 *      星 = {
	 *      	isEnd = 0
	 *      	红 = {
	 *              isEnd = 0
	 *              旗 = {
	 *                   isEnd = 1
	 *                  }
	 *              }
	 *      	}
	 *      }
	 */
	private void addSensitiveWordToHashMap(Set<String> keyWordSet) {
		sensitiveWordMap = new HashMap(keyWordSet.size());     //初始化敏感词容器,减少扩容操作:为什么要减少扩容操作呢?因为扩容操作比较耗时
		String key = null;  
		Map nowMap = null;
		Map<String, String> newWorMap = null;
		//迭代keyWordSet
		Iterator<String> iterator = keyWordSet.iterator();
		while(iterator.hasNext()){
			key = iterator.next();    //关键字
			nowMap = sensitiveWordMap;
			for(int i = 0 ; i < key.length() ; i++){
				char keyChar = key.charAt(i);       //转换成char型
				Object wordMap = nowMap.get(keyChar);       //获取
				
				if(wordMap != null){        //如果存在该key,直接赋值
					nowMap = (Map) wordMap;
				}else{     //不存在则,则构建一个map,同时将isEnd设置为0,因为他不是最后一个
					newWorMap = new HashMap<String,String>();
					newWorMap.put("isEnd", "0");     //不是最后一个
					nowMap.put(keyChar, newWorMap);
					nowMap = newWorMap;
				}
				
				if(i == key.length() - 1){
					nowMap.put("isEnd", "1");    //最后一个
				}
			}
		}
	}

	/**
	 * 读取敏感词库中的内容,将内容添加到set集合中
	 */
	private Set<String> readSensitiveWordFile() throws Exception{
		Set<String> set = null;
		
		File file = new File("D:\\SensitiveWord.txt");    //读取文件
		InputStreamReader read = new InputStreamReader(new FileInputStream(file),ENCODING);
		try {
			if(file.isFile() && file.exists()){      //文件流是否存在
				set = new HashSet<String>();
				BufferedReader bufferedReader = new BufferedReader(read);
				String txt = null;
				while((txt = bufferedReader.readLine()) != null){    //读取文件,将文件内容放入到set中
					set.add(txt);
			    }
			}
			else{         //不存在抛出异常信息
				throw new Exception("敏感词库文件不存在");
			}
		} catch (Exception e) {
			throw e;
		}finally{
			read.close();     //关闭文件流
		}
		return set;
	}
}

敏感词处理类:

package com.example.test03;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @Description: 敏感词过滤
 */
public class SensitivewordFilter {
	
	private Map sensitiveWordMap = null;	
	public static int minMatchTYpe = 1;      //最小匹配规则,查询到敏感词就返回
	public static int maxMatchType = 2;      //最大匹配规则
	
	/**
	 * 构造函数,初始化敏感词库
	 */
	public SensitivewordFilter(){
		sensitiveWordMap = new SensitiveWordInit().initKeyWord();
	}
	
	/**
	 * 判断文字是否包含敏感字符
	 * @param txt 文字
	 * @param matchType
	 * @return
	 */
	public boolean isContaintSensitiveWord(String txt,int matchType){
		boolean flag = false;
		for(int i = 0 ; i < txt.length() ; i++){
			int matchFlag = this.CheckSensitiveWord(txt, i, matchType); //判断是否包含敏感字符
			if(matchFlag > 0){    //大于0存在,返回true
				flag = true;
			}
		}
		return flag;
	}
	
	/**
	 * 获取文字中的敏感词
	 */
	public Set<String> getSensitiveWord(String txt , int matchType){
		Set<String> sensitiveWordList = new HashSet<String>();
		
		for(int i = 0 ; i < txt.length() ; i++){
			int length = CheckSensitiveWord(txt, i, matchType);    //判断是否包含敏感字符
			if(length > 0){    //存在,加入list中
				sensitiveWordList.add(txt.substring(i, i+length));
				i = i + length - 1;    //减1的原因,是因为for会自增
			}
		}
		
		return sensitiveWordList;
	}
	
	/**
	 * 替换敏感字字符
	 */
	public String replaceSensitiveWord(String txt,int matchType,String replaceChar){
		String resultTxt = txt;
		Set<String> set = getSensitiveWord(txt, matchType);     //获取所有的敏感词
		Iterator<String> iterator = set.iterator();
		String word = null;
		String replaceString = null;
		while (iterator.hasNext()) {
			word = iterator.next();
			replaceString = getReplaceChars(replaceChar, word.length());
			resultTxt = resultTxt.replaceAll(word, replaceString);
		}
		
		return resultTxt;
	}
	
	/**
	 * 获取替换字符串
	 */
	private String getReplaceChars(String replaceChar,int length){
		String resultReplace = replaceChar;
		for(int i = 1 ; i < length ; i++){
			resultReplace += replaceChar;
		}
		
		return resultReplace;
	}
	
	/**
	 * 检查文字中是否包含敏感字符,检查规则如下:
	 */
	public int CheckSensitiveWord(String txt,int beginIndex,int matchType){
		boolean  flag = false;    //敏感词结束标识位:用于敏感词只有1位的情况
		
		int matchFlag = 0;     //匹配标识数默认为0
		char word = 0;
		Map nowMap = sensitiveWordMap;
		for(int i = beginIndex; i < txt.length() ; i++){
			word = txt.charAt(i);
			nowMap = (Map) nowMap.get(word);     //获取指定key
			if(nowMap != null){     //存在,则判断是否为最后一个
				matchFlag++;     //找到相应key,匹配标识+1 
				if("1".equals(nowMap.get("isEnd"))){       //如果为最后一个匹配规则,结束循环,返回匹配标识数
					flag = true;       //结束标志位为true   
					if(SensitivewordFilter.minMatchTYpe == matchType){    //最小规则,直接返回,最大规则还需继续查找
						break;
					}
				}
			}else{     //不存在,直接返回
				break;
			}
		}
		if(matchFlag < 2 || !flag){        //长度必须大于等于1,为词 
			matchFlag = 0;
		}
		return matchFlag;
	}
	
	public static void main(String[] args) {
		SensitivewordFilter filter = new SensitivewordFilter();
		System.out.println("敏感词的数量:" + filter.sensitiveWordMap.size());
		String string = "太多的伤感情怀也许只局限于饲养基地 荧幕中的情节。"
                + "然后 我们的扮演的角色就是跟随着主人公的喜红客联盟 怒哀乐而过于牵强的把自己的情感也附加于银幕情节中,然后感动就流泪,"
                + "难过就躺在某一个人的怀里尽情的阐述心扉或者手机卡复制器一个贱人一杯红酒一部电影在夜 深人静的晚上,关上电话静静的发呆着。";
		System.out.println("待检测语句字数:" + string.length());
		long beginTime = System.currentTimeMillis();
		Set<String> set = filter.getSensitiveWord(string, 1);
		String txt=filter.replaceSensitiveWord(string,1,"*");
		long endTime = System.currentTimeMillis();
		System.out.println("语句中包含敏感词的个数为:" + set.size() + "。包含:" + set);
		System.out.println(txt);
		System.out.println("总共消耗时间为:" + (endTime - beginTime));
	}
}

txt文件:

转载自:https://blog.youkuaiyun.com/chenssy/article/details/26961957 (对于DFA算法讲解比较详细)

java处理word文档实现敏感词过滤 1.引入需要的jar包。 2.具体实现 阅读详情

相关推荐

使用IK中文分词器做敏感词过滤

需求 部分字段(可能为富文本)需要做敏感词过滤,敏感词词库由产品给出。 前置条件 项目使用的spring cloud全家桶,springboot版本2.1.0 ,项目中集成了spring Data elasticsearch 单独为一个子模块被各个服务引用,elasticsearch 插件版本为6.6.2,并且es插件中已经安装ik中文分词器 设计要求 1、敏感词能精确过滤,速度尽量快 2、如果敏...

m0_37453314的博客 6177

Java判断文本是否有敏感词

Java判断文本是否有敏感词

weixin_64811434的博客 2324

【Spring Cloud】新闻头条微服务项目:文章内容安全审核(新增DFA+OCR过滤敏感词需求)

对文章审核新增加了需求----敏感词过滤,介绍了基于NFA的文本敏感词过滤及OCR提取图片文字的原理及实现,最后将文章审核代码做了合并。

赵四司机的博客 2268

spring boot 统一处理敏感词

1、初始化 词库信息 package com.common.sensitiveword; import lombok.extern.slf4j.Slf4j; import org.springframework.util.ResourceUtils; import java.io.*; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import...

fengxing_2的专栏 5145

Java敏感词过滤系统:基于DFA算法的高性能工程实践

敏感词过滤是内容安全领域的基础技术,其核心原理是通过高效的字符串匹配算法识别和拦截违规文本。在工程实践中,确定性有限自动机(DFA)因其接近O(n)的时间复杂度,成为处理海量文本过滤的首选方案。该技术的核心价值在于保障UGC平台的内容合规性,同时平衡系统性能与准确性。典型的应用场景包括社区评论审核、用户昵称校验和实时聊天内容监控。本文聚焦于如何超越基础的DFA实现,通过双数组Trie树优化内存占用,并集成动态词库管理和拼音模糊匹配等工程化模块,构建一个高可用的Java敏感词筛选系统。

weixin_31856057的博客 332

InSAR_ISCE软件数据处理流程之:利用哨兵数据获取2015年尼泊尔地震同震形变场

ISCE软件数据处理流程之:利用哨兵数据获取2015年尼泊尔地震同震形变场 ISCE软件做干涉只需要将数据准备好,并配置好insarApp.xml文件即可进行。 一、数据准备 1、SAR数据获取 本利中使用的数据为欧空局提供的sentinel-1A/B数据,可从阿拉斯加数据服务器上下载,具体下载方法可参考: 哨兵数据下载方法. 2、哨兵卫星轨道文件下载 哨兵数据处理除了需要SAR影像外,还需提供轨道参数文件,可从https://qc.sentinel1.eo.esa.int/aux_poeorb/下载。下载

weixin_42128764的博客 1万+

Java实现敏感词过滤 - IKAnalyzer中文分词工具

IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。 官网: https://code.google.com/archive/p/ik-analyzer/ 本用例借助 IKAnalyzer 进行分词,通过遍历分词集合进行敏感词过滤。 使用前需对敏感词库进行初始化: SensitiveWordUtil.init(sensitiveWordSet);

要有梦想,即使遥远 786

FoundationPose复现及Realsense应用

FoundationPose是一个统一的基础模型,用于6D对象姿态估计和跟踪,支持基于模型和无模型的设置。在测试时可以立即应用于未见过的新对象,无需微调,只要给出其CAD模型,或者捕获少量RGBD参考图像。得益于统一框架,下游姿态估计模块在两种3D模型设置中都是相同的,当没有CAD模型时,使用神经隐式表示进行高效的新视角合成。通过大规模合成训练,辅以大型语言模型(LLM)、一种基于transformer的新架构和对比学习公式,实现了强大的泛化能力。

m0_56661101的博客 1万+

在SpringBoot项目中接入sensitive-word实现敏感词过滤(DFA算法、为敏感词打上标签、忽略无意义的字符、针对匹配到的敏感词作进一步判断、自定义敏感词和白名单)

在SpringBoot项目中接入sensitive-word实现敏感词过滤(DFA算法、为敏感词打上标签、忽略无意义的字符、针对匹配到的敏感词作进一步判断、自定义敏感词和白名单)

聂可以的博客 8658

gdb对dwarf调试信息的解析和使用

gdb的对dwarf的调试信息的解析到使用的过程分析

JS072110的专栏 9564

C++ 核电站

问题描述 一个核电站有n个放核物质的坑,排列在一条直线上。如果连续m个坑中放入核物质就会发生爆炸,所以某些坑中不能放核物质。 本题的任务:对于给定的n和m,求不发生爆炸的放置核物质的方案总数。 输入格式 第一行两个正整数n和m,之间用一个空格隔开。2≤n≤50,2≤m≤5。 输出格式 一行一个正整数,表示方案总数。 输入样例 4 3 输出样例 13 数据规模与约定 2≤n≤50,2≤m≤5 CODE #include<bits/stdc++.h> using namespace

HybridCOW_HORSE的博客 1802

敏感词算法

首先,需要一个包含所有需要过滤的敏感词的列表或数据库。这个列表可以手动创建,也可以从现有的资源中导入。敏感词库应该定期更新以反映新的敏感词汇。

00 后码农一枚,痴迷代码,以键为剑,以思为芒。于 优快云 镌刻编程成长,愿与诸君共探技术星河,同铸数字梦想。 2054

AI智能体实战:从LangChain到多智能体协作的自动化新范式

在人工智能技术快速发展的今天,大语言模型(LLM)已成为推动自动化变革的核心驱动力。其原理在于通过深度学习海量文本数据,使模型能够理解、生成自然语言并执行推理任务。这一技术进步催生了AI智能体(AI Agent)这一新兴概念,它赋予自动化系统自主决策和动态规划能力,从而突破了传统脚本和RPA工具在固定流程上的局限。从技术价值看,AI智能体框架通过封装LLM调用、工具集成与流程编排,显著降低了构建复杂人机协同应用的开发门槛。在实际应用场景中,智能体尤其擅长处理信息调研、内容创作辅助、数据分析等需要处理非结构化

weixin_33730836的博客 773

敏感词过滤

敏感词过滤 敏感词过滤就是词库匹配,你定义一个词库,里面有很多敏感词,匹配到了就说明这个词是敏感词。 所以最简单的办法就是建立一个list,先把所有的敏感词读进这个list,然后再利用list的contains方法,就可以判断某一句话中是否有敏感词,如果有就弹个提示,告诉用户语句中有敏感词,禁止用户发送,但是如果须要把把敏感词屏蔽掉(比如用” * “号代替)这个时候contains方法就不行了,得...

西京刀客 1万+

整车电检工艺流程

本文是笔者在从事汽车行业智能制造领域过程,对于整车电检工艺流程的理解与总结。

qq_40664711的博客 1万+

具身智能机器人算法控制研究进展综述

具身智能(Embodied Intelligence)作为人工智能与机器人学的交叉前沿领域,强调智能体通过物理身体与环境的持续交互涌现智能行为。近年来,随着基础模型(Foundation Models)、扩散策略(Diffusion Policy)、视觉-语言-动作(Vision-Language-Action, VLA)模型以及大规模机器人数据集(如Open X-Embodiment)的快速发展,具身智能机器人的算法控制范式正经历深刻变革。

VectorShift的博客 226

敏感词查询过滤DFA算法

在实际项目中我们经常将敏感词库保存在某个文件中,或者保存在数据库中,当我们需要判断某个字符串是否属于这些敏感词或者查询某个文本包含哪些敏感词。我们的方案或许是下面的几种。 1.将数据库或者敏感词库文件中的敏感词拼接成一个字符串,然后使用indexOf方法判断,或者将敏感词放到一个Set中,利用contains方法,判断某个字符串是不在这个敏感词的set集合中。 2.将敏感词入数据库后通过SQL查

迪迪调调的博客 2151

飞书接入OpenClaw:从零到一的保姆级图文教程

本文主要介绍了飞书接入OpenClaw:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 解决方案 2.1 步骤一:安装插件 2.2 步骤二:创建机器人应用 2.3 步骤三:测试 3. 注意事项

weixin_43178406的博客 13万+

敏感词过滤系统设计,基于Java的DFA与AC自动机实现深度对比

解决敏感词高效过滤难题,基于Java实现DFA与AC自动机的深度对比,涵盖文本审核、聊天内容过滤等场景。分析两种算法在性能、内存占用与扩展性上的优劣,提供完整实现思路与优化建议。Java敏感词过滤实现方案详解,值得收藏。

QuickProceed的博客 1107

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

敏感词过滤算法DFA

敏感词过滤方案DFA

qq_45936359的博客 623

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java过滤关键字(DFA算法)

转:https://my.oschina.net/magicalSam/blog/1528428 https://my.oschina.net/magicalSam/blog/1528524 项目中有使用过滤关键字的地方,在此自己记录一下. 无需其他java包,main方法直接执行,项目中具体使用的话,一般项目启动就加载关键字的文件,然后使用静态map存储,使用直接调用即可. 分两种方法,第一种...

你就像甜甜的益达 4039

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

敏感词过滤/字符编码

目录第一部分:敏感词过滤一、敏感词过滤思路1. 敏感词替换2. 敏感词屏蔽3. 用户端阻止发布4. 系统人工审核二、敏感词过滤实现方案1. DFA算法方案1.1 DFA性能测试1.2 Trie(前缀树/字典树)及其应用第二部分:字符编码一、 java判断文件字符编码1. 编码检测技术选型对比分析2. juniversalchardet 检测编码测试3. ICU4J3.1 ICU4J 认识3.2...

西京刀客 4636

java敏感词校验

java 中文分词、敏感词、敏感词校验

weixin_41943486的博客 3582
上一篇: Java 随机数(Random VS SecureRandom)
下一篇: (一)Oracle 数据库体系结构概述
程序员楂楂
博客等级 码龄9年 17粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值