当前位置: 首页 > news >正文

租用网站服务器开网店需要什么手续和流程

租用网站服务器,开网店需要什么手续和流程,ps制作个性字网站,国家域名注册中心Spring Boot 敏感词过滤组件实现本文将介绍如何在Spring Boot项目中实现一个高效的敏感词过滤组件,包含两种实现方式:基于DFA算法的优化版本和简单直接的实现版本。组件功能:1. 从文件加载敏感词库 2. 敏感词检测功能 3. 敏感词替换功能 4. 支…

Spring Boot 敏感词过滤组件实现

本文将介绍如何在Spring Boot项目中实现一个高效的敏感词过滤组件,包含两种实现方式:基于DFA算法的优化版本和简单直接的实现版本。

组件功能:

1. 从文件加载敏感词库
2. 敏感词检测功能
3. 敏感词替换功能
4. 支持Spring Boot自动装配

实现方案一:DFA算法优化版

这里放入第一个SensitiveWordFilter类的完整代码

package com.example.utils;import jakarta.annotation.PostConstruct;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.*;@Component
public class SensitiveWordFilter {private static final String REPLACEMENT = "***";private Map<Object, Object> sensitiveWordMap;@PostConstructpublic void init() {try {// 读取敏感词文件Set<String> keyWordSet = new HashSet<>();ClassPathResource resource = new ClassPathResource("sensitive-words.txt");InputStream inputStream = resource.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));String line;while ((line = reader.readLine()) != null) {keyWordSet.add(line.trim());}reader.close();// 构建DFA算法模型addSensitiveWordToHashMap(keyWordSet);} catch (IOException e) {e.printStackTrace();}}private void addSensitiveWordToHashMap(Set<String> keyWordSet) {sensitiveWordMap = new HashMap(keyWordSet.size());String key;Map nowMap;Map<String, String> newWorMap;for (String aKeyWordSet : keyWordSet) {key = aKeyWordSet;nowMap = sensitiveWordMap;for (int i = 0; i < key.length(); i++) {char keyChar = key.charAt(i);Object wordMap = nowMap.get(keyChar);if (wordMap != null) {nowMap = (Map) wordMap;} else {newWorMap = new HashMap<>();newWorMap.put("isEnd", "0");nowMap.put(keyChar, newWorMap);nowMap = newWorMap;}if (i == key.length() - 1) {nowMap.put("isEnd", "1");}}}}public String filter(String text) {if (text == null || text.trim().isEmpty()) {return text;}StringBuilder result = new StringBuilder();Map nowMap = sensitiveWordMap;int start = 0;int point = 0;while (point < text.length()) {char key = text.charAt(point);nowMap = (Map) nowMap.get(key);if (nowMap != null) {point++;if ("1".equals(nowMap.get("isEnd"))) {result.append(REPLACEMENT);start = point;nowMap = sensitiveWordMap;}} else {result.append(text.charAt(start));point = ++start;nowMap = sensitiveWordMap;}}result.append(text.substring(start));return result.toString();}public boolean containsSensitiveWord(String text) {if (text == null || text.trim().isEmpty()) {return false;}Map nowMap = sensitiveWordMap;int point = 0;while (point < text.length()) {char key = text.charAt(point);nowMap = (Map) nowMap.get(key);if (nowMap != null) {point++;if ("1".equals(nowMap.get("isEnd"))) {return true;}} else {point = point - (point > 0 ? 1 : 0);nowMap = sensitiveWordMap;point++;}}return false;}
}

DFA算法特点:

  • 使用字典树(Trie)结构存储敏感词

  • 时间复杂度接近O(n),n为文本长度

  • 适合大规模敏感词库

  • 支持最长匹配原则

实现方案二:简单直接版

这里放入第二个SensitiveWordFilter类的完整代码

package com.example.utils;import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;import jakarta.annotation.PostConstruct;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.*;@Component
public class SensitiveWordFilter {private static final String REPLACEMENT = "***";private static final Set<String> sensitiveWords = new HashSet<>();// 初始化敏感词库@PostConstructpublic void init() {try {ClassPathResource resource = new ClassPathResource("sensitive-words.txt");InputStream inputStream = resource.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));String line;while ((line = reader.readLine()) != null) {sensitiveWords.add(line.trim());}reader.close();} catch (IOException e) {e.printStackTrace();}}// 过滤敏感词public String filter(String text) {if (text == null || text.trim().isEmpty()) {return text;}for (String word : sensitiveWords) {if (text.contains(word)) {text = text.replaceAll(word, REPLACEMENT);}}return text;}// 检查是否包含敏感词public boolean containsSensitiveWord(String text) {if (text == null || text.trim().isEmpty()) {return false;}for (String word : sensitiveWords) {if (text.contains(word)) {return true;}}return false;}
}

简单版特点:

  • 实现简单直观

  • 适合小规模敏感词库

  • 使用String.contains()方法检测

  • 性能在词库较大时较差

使用说明

  1. 在resources目录下创建sensitive-words.txt文件

  2. 每行写入一个敏感词

  3. 在Spring Boot项目中注入组件:

//以下引入二选一// 引入
@Resource
private SensitiveWordFilter sensitiveWordFilter;// 引入
@Autowired
private SensitiveWordFilter sensitiveWordFilter;

    4. 调用方法

// 引入
@Resource
private SensitiveWordFilter sensitiveWordFilter;/*** 新增*/public void add(Comment comment) {// 过滤敏感词,哪个字段需要过滤就设置哪个// comment.setTitle(sensitiveWordFilter.filter(comment.getTitle()));comment.setContent(sensitiveWordFilter.filter(comment.getContent()));commentMapper.insert(comment);}

依赖配置

<!-- 敏感词处理依赖 -->
<dependency><groupId>jakarta.annotation</groupId><artifactId>jakarta.annotation-api</artifactId><version>2.1.1</version>
</dependency>

前端效果

性能对比

方案初始化时间检测时间内存占用
DFA算法较高O(n)较高
简单版O(n*m)

适用场景

  • DFA算法版:适合敏感词数量多(1000+)、性能要求高的场景

  • 简单版:适合敏感词数量少、快速开发的场景

扩展建议

  1. 可以添加动态更新敏感词库功能

  2. 支持多种替换策略(如随机替换、首字母保留等)

  3. 添加日志记录功能

  4. 支持多级敏感词(如政治、色情等分类)

总结

本文提供了两种不同复杂度的敏感词过滤实现,开发者可以根据项目需求选择合适的方案。DFA算法虽然实现复杂但性能优异,简单版则适合快速实现基本功能。

http://www.dtcms.com/a/568280.html

相关文章:

  • 企业网站设计的功能wordpress如何返回之前更新的版本
  • 自己搭建网站只有文字食品公司网站建设
  • 哪些网站可以做任务挣钱seo分析
  • 江苏省建设招标网站网页制作工具的优点
  • 企业官方网站的作用计算机软件网站建设
  • 企业网站建设报价表模板建站流程
  • 三只松鼠的网站建设的意义敬请期待英文翻译
  • 哪个网站做浏览器主页嘉兴模板建站定制网站
  • 上海百度网站建设wordpress 文章地址
  • c 网站开发实例udid定制软件
  • 天津建设公司网站关键词推广哪家好
  • 合作制作网站网站建设合同是否交纳印花税
  • 淘宝网站框架做影视网站需要境外
  • 免费网站app生成软件阿里云域名查询系统
  • 口红机网站怎么做的手机app快速开发平台
  • 做外汇哪个网站看外国消息做网站的公司在哪
  • 中国代理网官方网站宁波网站建设yiso
  • 网页制作工具的选择与网站整体风格没有关系濮阳市城乡一体化示范区
  • 朝阳专业网站建设公司网络科技公司 网站建设
  • 上海做网站优化价格太原建设网站公司
  • 做网店网站做暧暧国外网站
  • c苏宁网站开发河北建设厅网站
  • 生成前端页面的网站北京十大传媒公司
  • 杭州网站制作蒙特wordpress需要编程技术嘛
  • 网站使用自己的服务器如何更改公司网站内容
  • 无障碍网站建设的意义wordpress插件汉化教程视频
  • 苏州建站网站模板徐州公司网站建设
  • 网站开发软件工程师自己做微博的网站
  • 做jsp网站用哪些软件外包开发一个app多少钱
  • 网站开发类标书模板网站建设作业做一个简单的网站