日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 敏感词_过滤敏感词方式

發布時間:2023/12/10 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 敏感词_过滤敏感词方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、利用正則表達式

關鍵正則表達式

.*(關鍵詞1|關鍵詞2|關鍵詞3).*

模擬業務代碼

@WebServlet(name = "PatternControl", urlPatterns = {"/p"})

public class PatternControl extends HttpServlet {

private static final Pattern pattern = initPattern();

private static Pattern initPattern() {

List stringList = null;

try {

stringList = Files.readAllLines(Paths.get("/Users/hans/Documents/word.txt"));

} catch (IOException e) {

e.printStackTrace();

}

StringBuilder stringBuilder = new StringBuilder(".*(");

stringBuilder.append(stringList.get(0));

for (int i = 1; i < stringList.size(); i++) {

stringBuilder.append("|" + stringList.get(i));

}

stringBuilder.append(").*");

Pattern pattern = Pattern.compile(stringBuilder.toString());

return pattern;

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

if (pattern == null) {

response.sendError(500, "pattern is null");

return;

}

if (request.getParameter("word") == null) {

response.sendError(500, "word is null");

return;

}

boolean isMatcher = pattern.matcher(request.getParameter("word")).matches();

if (isMatcher) {

response.sendError(209);

} else {

response.sendError(409);

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

}

時間空間占用情況

前提

關鍵詞共有28448個,將其編譯成上述的正則表達式

CPU2.2GHz Intel i7四核

內存

16GB?1600 MHz DDR3

時間情況(多次實驗平均結果)

階段耗時(ms)

初始化

讀取敏感詞:38

編譯正則表達式:41

每次匹配

47

空間情況(多次實驗平均結果)

階段消耗內存(MB)

初始化 編譯正則表達式

11

每次匹配

極小

cpu和堆運行時情況圖

結論

利用正則表達式過濾敏感詞效果較好

二、利用字符串暴力匹配

核心思路

循環總共關鍵詞個數次,判斷時候在待匹配字符串中 是否包含 本次循環的關鍵詞

模擬業務代碼

@WebServlet(name = "PatternControl", urlPatterns = {"/p"})

public class PatternControl extends HttpServlet {

private static final List stringList = initStringList();

private static List initStringList() {

List stringList = null;

try {

stringList = Files.readAllLines(Paths.get("/Users/hans/Documents/word.txt"));

} catch (IOException e) {

e.printStackTrace();

}

return stringList;

}

private boolean matchKeyWord(String text) {

for (String markWord : stringList) {

if (text.contains(markWord)) {

return true;

}

}

return false;

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

if (request.getParameter("word") == null) {

response.sendError(500, "word is null");

return;

}

boolean isMatcher = matchKeyWord(request.getParameter("word"));

if (isMatcher) {

response.sendError(209);

} else {

response.sendError(409);

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

}

時間空間占用情況

時間情況(多次實驗平均結果)

階段耗時(ms)

初始化

讀取敏感詞:38

每次匹配

10

空間情況(多次實驗平均結果)

階段消耗內存(MB)

初始化

3

每次匹配

極小

結論

利用暴力匹配的效果更好

三、利用Tire樹匹配

核心思路

將所有的敏感詞構成一棵路徑樹,每個節點只有一個字符

模擬業務代碼

public class TestAcWithoutFail {

public void insert(String str, Node root) {

Node p = root;

for (char c : str.toCharArray()) {

if (p.childrenNodes.get(c) == null) {

p.childrenNodes.put(c, new Node());

}

p = p.childrenNodes.get(c);

}

p.isEnd = true;

}

public boolean isContainSensitiveWord(String text, Node root) {

for (int i = 0; i < text.length(); i++) {

Node nowNode = root;

for (int j = i; j < text.length(); j++) {

char word = text.charAt(j);

nowNode = nowNode.childrenNodes.get(word);

if (nowNode != null) {

if (nowNode.isEnd) {

return true;

}

} else {

break;

}

}

}

return false;

}

public String containSensitiveWord(String text, Node root) {

for (int i = 0; i < text.length(); i++) {

Node nowNode = root;

for (int j = i; j < text.length(); j++) {

char word = text.charAt(j);

nowNode = nowNode.childrenNodes.get(word);

if (nowNode != null) {

if (nowNode.isEnd) {

return text.substring(i, j + 1);

}

} else {

break;

}

}

}

return "";

}

public static void main(String[] args) throws IOException, InterruptedException {

List stringList = Files.readAllLines(Paths.get("/Users/hans/Documents/word.txt"));

TestAcWithoutFail acNoFail = new TestAcWithoutFail();

Node root = new Node();

for (String text : stringList) {

acNoFail.insert(text, root);

}

String string = "tiresdfsdffffffffffaaaaaaaaaa";

Thread.sleep(10 * 1000);

for (int i = 0; i < 1; i++) {

System.out.println(acNoFail.isContainSensitiveWord(string, root));

}

}

}

class Node {

Map childrenNodes = new HashMap<>();

boolean isEnd;

}

時間空間占用情況

時間情況(多次實驗平均結果)

階段耗時(ms)

初始化

讀取敏感詞:38

構建比較樹:36

每次匹配

0.01量級(執行1000遍34ms、執行10000遍130ms)

空間情況(多次實驗平均結果)

階段消耗內存(MB)

初始化

讀取字符串:3

構建比較樹:24

每次匹配

極小

結論

在該業務中和暴力匹配效果哪個好值得商榷

四、服務部署方式

主站的做法(劉樂那邊的做法一樣)

單獨部署一臺服務器

將關鍵詞放到一張表中

設置定時任務每天初始化一次

我的方案

將關鍵詞放到一張表中

設置定時任務每天初始化一次(其實感覺每天更新都挺浪費的,寫個接口,表中數據改了之后,調用一下就可以)

多臺機器上每個機器都每天讀取一次數據庫,解決同步的問題(或者用Tair緩存這些數據,但我感覺是不是弄麻煩了)

總結

以上是生活随笔為你收集整理的mysql 敏感词_过滤敏感词方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲综合图片一区 | 欧美成人做爰猛烈床戏 | 欧美福利第一页 | 国产三级三级看三级 | 少妇高潮喷水在线观看 | 欧美老肥熟 | 一区二区免费 | 国色综合 | 日屁网站 | 野花av| 91精品人妻一区二区三区果冻 | 美女乱淫| 一本久久综合亚洲鲁鲁五月天 | 欧美老熟妇一区二区三区 | 美女大黄网站 | 韩国伦理av| 天天干,天天操 | 亚洲天堂av片| 夜夜伊人 | 超鹏在线视频 | 女人脱裤子让男人捅 | 四虎福利视频 | 亚洲精品乱码久久久久久蜜桃麻豆 | 美女扒开尿口让男人捅爽 | 国产成人福利视频 | 亚洲精品久久久久久久蜜桃 | 国模私拍视频在线 | 可以看的黄色网 | 伊人网在线视频观看 | 久久精品成人一区二区三区蜜臀 | 伊朗做爰xxxⅹ性视频 | 真人真事免费毛片 | 国产一区啪啪 | 国产内射老熟女aaaa∵ | 国内精品第一页 | 日韩中文字幕高清 | 成人午夜网址 | 成人免费福利 | 大屁股一区二区三区 | 日韩成人在线看 | 日韩毛片视频 | 久久99精品久久久久 | 久久av红桃一区二区小说 | 日韩精品色哟哟 | 成人欧美精品 | 色多多导航 | 91福利在线观看视频 | 最新久久 | 青青草国产一区二区三区 | 无码乱人伦一区二区亚洲 | 国产一级片免费看 | 国产精品久久久久久久久免费相片 | 插我舔内射18免费视频 | 一区二区高清 | 九九av在线 | 中文在线字幕免费观看电 | 欧美成人影院 | 毛片日本| 国产精品久久久久久久免费 | 国产精品久久久久久婷婷天堂 | 欧美专区 日韩专区 | www.av成人| 天天干天天摸天天操 | 波多野结衣一区二区三区高清 | 国产精品久久久久av | 日本熟女毛茸茸 | 99久久久无码国产精品不卡 | 精产国品一二三产区m553麻豆 | 激情婷婷色 | 欧美黄色三级视频 | 青青青网| 51精品国自产在线 | 无套内谢少妇高潮免费 | 日韩精品在线不卡 | 国产超碰自拍 | 老公吃小头头视频免费观看 | 人人干在线视频 | www.人人干 | 亚洲精品一二三 | 国产亚洲第一页 | 国产欧美日韩在线观看 | 国产精品永久 | 黄色图片小说 | 国产精品精东影业 | 免费观看美女裸体网站 | 国产激情无套内精对白视频 | 精品国产一区一区二区三亚瑟 | 欧洲一级片 | 国产亚洲视频一区 | 久久国内视频 | 四虎图库| 日韩欧美中文字幕在线视频 | 激情片| www.4hu95.com四虎| 精品亚洲aⅴ无码一区二区三区 | va欧美| 日韩精品一区二区电影 | 免费污视频在线观看 | 噜噜噜在线 |