如果事先没有定义静态关系,在实际代码中,我们就需要提供一种使用动态关系的机制,让我们的查询、类型推断、DTO推断等能力得以正常使用。 ... 📅 发布时间:2026/7/13 14:29:21 👁️ 浏览次数: 酶罢派缸1 基础使用com.github.houbbsensitive-word0.29.2SensitiveWordHelper 作为敏感词的工具类核心方法如下示例代码import com.github.houbb.sensitive.word.core.SensitiveWordHelper;public class BasicExample {public static void main(String[] args) {String text 这是一个包含赌博和毒品等不良内容的测试文本;// 检测是否包含敏感词boolean hasSensitive SensitiveWordHelper.contains(text);System.out.println(是否包含敏感词: hasSensitive);// 查找所有敏感词List sensitiveWords SensitiveWordHelper.findAll(text);System.out.println(发现的敏感词: sensitiveWords);// 替换敏感词String cleanedText SensitiveWordHelper.replace(text);System.out.println(清洗后文本: cleanedText);// 使用指定字符替换String customReplaced SensitiveWordHelper.replace(text, *);System.out.println(自定义替换: customReplaced);}}执行结果2 特殊处理sensitive-word 为了尽可能的提升敏感词命中率针对各种各种情况做了处理。1、忽略大小写final String text fuCK the bad words.;String word SensitiveWordHelper.findFirst(text);Assert.assertEquals(fuCK, word);2、忽略圆角半角final String text the bad words.;String word SensitiveWordHelper.findFirst(text);Assert.assertEquals(, word);3、忽略数字的写法final String text 这个是我的微信9?二肆??③⑸⒋?㈤五;List wordList SensitiveWordBs.newInstance().enableNumCheck(true).init().findAll(text);Assert.assertEquals([9?二肆??③⑸⒋?㈤五], wordList.toString());4、忽略繁简体final String text 我爱我的祖国和五星紅旗。;List wordList SensitiveWordHelper.findAll(text);Assert.assertEquals([五星紅旗], wordList.toString());5、忽略英文的书写格式final String text ??c? the bad words;List wordList SensitiveWordHelper.findAll(text);Assert.assertEquals([??c?], wordList.toString());6、忽略重复词final String text ???f?u??c?? the bad words;List wordList SensitiveWordBs.newInstance().ignoreRepeat(true).init().findAll(text);Assert.assertEquals([???f?u??c??], wordList.toString());3 更多检测策略sensitive-word 支持数字、邮箱、URL 、ipv4 多种检测策略。示例代码public class SensitiveWordQuickDemo {public static void main(String[] args) {// 邮箱检测String text1 楼主好人邮箱 sensitivewordxx.com;List emailWords SensitiveWordBs.newInstance().enableEmailCheck(true).init().findAll(text1);System.out.println(邮箱检测: emailWords);// 数字检测String text2 你懂得12345678;List numWords SensitiveWordBs.newInstance().enableNumCheck(true).init().findAll(text2);System.out.println(数字检测: numWords);// URL 检测String text3 点击链接 https://www.baidu.com 查看答案当然也可以是 baidu.com、www.baidu.com;List urlWords SensitiveWordBs.newInstance().enableUrlCheck(true).wordCheckUrl(WordChecks.urlNoPrefix()).init().findAll(text3);System.out.println(URL 检测: urlWords);// IPv4 检测String text4 个人网站如果网址打不开可以访问 127.0.0.1。;List ipWords SensitiveWordBs.newInstance().enableIpv4Check(true).init().findAll(text4);System.out.println(IPv4 检测: ipWords);}}显示结果4 优雅 API为了让使用更加优雅统一使用 fluent-api 的方式定义。用户可以使用 SensitiveWordBs 进行如下定义注意配置后要使用我们新定义的 SensitiveWordBs 的对象而不是以前的工具方法。工具方法配置都是默认的。public class AdvancedExample {public static void main(String[] args) {SensitiveWordBs wordBs SensitiveWordBs.newInstance().ignoreCase(true).ignoreWidth(true).ignoreNumStyle(true).ignoreChineseStyle(true).ignoreEnglishStyle(true).ignoreRepeat(false).enableNumCheck(false).enableEmailCheck(false).enableUrlCheck(false).enableIpv4Check(false).enableWordCheck(true).wordFailFast(true).wordCheckNum(WordChecks.num()).wordCheckEmail(WordChecks.email()).wordCheckUrl(WordChecks.url()).wordCheckIpv4(WordChecks.ipv4()).wordCheckWord(WordChecks.word()).numCheckLen(8).wordTag(WordTags.none()).charIgnore(SensitiveWordCharIgnores.defaults()).wordResultCondition(WordResultConditions.alwaysTrue()).init();final String text 五星红旗迎风飘扬毛主席的画像屹立在天安门前。;System.out.println(wordBs.contains(text));System.out.println(wordBs.findFirst(text));}}5 定义词库01 新增删除敏感词初始化之后sensitive-word 支持对单个词的新增/删除。addWord(word) 新增敏感词支持单个词/集合removeWord(word) 删除敏感词支持单个词/集合示例代码final String text 测试一下新增敏感词验证一下删除和新增对不对;SensitiveWordBs sensitiveWordBs SensitiveWordBs.newInstance().wordAllow(WordAllows.empty()).wordDeny(WordDenys.empty()).init();// 当前Assert.assertEquals([], sensitiveWordBs.findAll(text).toString());// 新增单个sensitiveWordBs.addWord(测试);sensitiveWordBs.addWord(新增);Assert.assertEquals([测试, 新增, 新增], sensitiveWordBs.findAll(text).toString());// 删除单个sensitiveWordBs.removeWord(新增);Assert.assertEquals([测试], sensitiveWordBs.findAll(text).toString());sensitiveWordBs.removeWord(测试);Assert.assertEquals([], sensitiveWordBs.findAll(text).toString());// 新增集合sensitiveWordBs.addWord(Arrays.asList(新增, 测试));Assert.assertEquals([测试, 新增, 新增], sensitiveWordBs.findAll(text).toString());// 删除集合sensitiveWordBs.removeWord(Arrays.asList(新增, 测试));Assert.assertEquals([], sensitiveWordBs.findAll(text).toString());// 新增数组sensitiveWordBs.addWord(新增, 测试);Assert.assertEquals([测试, 新增, 新增], sensitiveWordBs.findAll(text).toString());// 删除集合sensitiveWordBs.removeWord(新增, 测试);Assert.assertEquals([], sensitiveWordBs.findAll(text).toString());02 自定义词库来源数据库 / 接口我们可以实现接口 IWordDeny 来扩展例如从数据库取敏感词实现自定义词库。public class CustomDictionaryExample {public static void main(String[] args) {SensitiveWordBs wordBs SensitiveWordBs.newInstance().wordDeny(new IWordDeny() {Overridepublic List deny() {// 这里可以从数据库查询return Arrays.asList(勇哥, 敏感词A, 敏感词B);}}).init();System.out.println(wordBs.findAll(这是一个敏感词A 的测试));}}6 Spring 整合当我们需要在 SpringBoot 项目中使用敏感词过滤文本时可以定义敏感词引导类。示例见如下代码Configurationpublic class SpringSensitiveWordConfig {Autowiredprivate MyDdWordAllow myDdWordAllow;Autowiredprivate MyDdWordDeny myDdWordDeny;/*** 初始化引导类* return 初始化引导类* since 1.0.0*/Beanpublic SensitiveWordBs sensitiveWordBs() {SensitiveWordBs sensitiveWordBs SensitiveWordBs.newInstance().wordAllow(WordAllows.chains(WordAllows.defaults(), myDdWordAllow)).wordDeny(myDdWordDeny)// 各种其他配置.init();return sensitiveWordBs;}}7 敏感词控制台sensitive-word-admin 是和 sensitive-word 配套使用的控制台。前端采用Vue、Element UI。后端采用Spring Boot、Spring Security、Redis Jwt。权限认证使用Jwt支持多终端认证系统。支持加载动态权限菜单多方式轻松权限控制。高效率开发使用代码生成器可以一键生成前后端代码。
GitHub开源项目:IT-Tools源码构建部署及其部署排错 坡凑是喊虽然说是手算,但是我还是会写一点 C# 代码,避免敲坏了计算器。我和大家保证,整个手算过程中,最终的计算结果只需要用到初高中知识。推导过程会用到部分高数的知识。我尽量将用到的知识点全列举出来,本文对学渣… 2026/7/10 5:05:59
关于物联网未来走向的一些思考 炒坦覆蜒什么是弃元模式?弃元是 C# 7.0 引入的语法特性,用下划线 _ 表示 “有意忽略的变量”。它不是一个实际的变量,没有分配值,甚至未分配内存,也无法被访问(尝试使用会触发编译错误 CS0103 The name _ d… 2026/7/5 11:57:22
Flutter 三方库 drivers_license_parser 的鸿蒙化适配指南 - 掌控 AAMVA 驾照精密解析、身份认证实战、鸿蒙级精密识别专家 欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 三方库 drivers_license_parser 的鸿蒙化适配指南 - 掌控 AAMVA 驾照精密解析、身份认证实战、鸿蒙级精密识别专家 在鸿蒙跨平台应用处理国际身份验证(如针对北美、加拿… 2026/7/12 6:22:48
AI大模型架构师:核心能力、成长路径与关键技术解析 1. 职业定位与核心能力拆解AI大模型架构师是人工智能领域的新兴岗位,主要负责设计、优化和部署基于大语言模型的智能系统。与传统软件架构师不同,这个角色需要同时掌握深度学习原理、分布式系统设计和业务场景落地的复合能力。我从2016年开始接触Transfo… 2026/7/13 14:28:12
如何高效使用Gramps家谱软件:专业用户的完整指南 如何高效使用Gramps家谱软件:专业用户的完整指南 【免费下载链接】gramps Source code for Gramps Genealogical program 项目地址: https://gitcode.com/gh_mirrors/gr/gramps 你是否曾经想要整理家族历史,却因为信息繁杂而不知从何入手… 2026/7/13 14:26:11
IRENE:统一Transformer架构 + 双向跨模态注意力 + 临床诊断新范式 1. 当医学诊断遇上多模态AI:为什么需要IRENE?想象一下你因为持续咳嗽去医院,医生会怎么做?通常需要三步走:先听你描述症状(文本),再看X光片(图像),… 2026/7/13 14:26:11
大模型提示词工程深度解析:从原理到最佳实践 1. 引言:为什么提示词工程是 AI 时代的核心技能 随着 GPT-4、Claude、Gemini 等大语言模型(LLM)能力的爆发,模型能做什么已经不再是瓶颈,真正拉开差距的是如何让它做。提示词工程(Prompt Engineering)正是在这一背景下诞生的关键技能:它研究如何设计、优化输入提示,以… 2026/7/13 14:24:10
学 Simulink—— 基于储能系统(BESS)并网逆变器的 一次调频(Primary Frequency Response)控制仿真 目录 手把手教你学 Simulink —— 基于储能系统(BESS)并网逆变器的 一次调频(Primary Frequency Response)控制仿真 一、什么是一次调频(Primary Frequency Response)?** 1.1 传统同步发电机一次调频 1.2 新能源并网逆变器为什么需要一次调频? 1.3 BESS 做一次调频… 2026/7/13 14:24:10
SuperPNG终极指南:5个专业技巧让Photoshop PNG输出更高效 SuperPNG终极指南:5个专业技巧让Photoshop PNG输出更高效 【免费下载链接】SuperPNG SuperPNG plug-in for Photoshop 项目地址: https://gitcode.com/gh_mirrors/su/SuperPNG SuperPNG是一款专为Adobe Photoshop设计的免费插件,旨在帮助用户生成… 2026/7/13 14:18:04
HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70+个痛点 HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70个痛点 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经在Honey Select 2中遇到过… 2026/7/13 0:01:19
语音转文字工具AsrTools:让音频整理变得简单高效 语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text … 2026/7/13 0:03:19
基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_ 基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 独家界面!不会重复,此项目属于本人原创,若有雷同,均是盗卖,各位买… 2026/7/13 0:05:20
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/13 9:31:08
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/13 2:34:55