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

网站建设有什么需求如何设计网站导航

网站建设有什么需求,如何设计网站导航,自学app软件开发,建设网站的公司专业服务目录 1. 建立敏感词数据库表2. 定时任务,读数据并建立敏感词树2.1 开启定时任务2.2 读数据并建立敏感词树 3. 使用 思路: 将敏感词都存到数据库表中定时读取数据到内存中,构建敏感词前缀树写工具方法,使用内存中的前缀树判断消息…

目录

  • 1. 建立敏感词数据库表
  • 2. 定时任务,读数据并建立敏感词树
    • 2.1 开启定时任务
    • 2.2 读数据并建立敏感词树
  • 3. 使用

思路:

  1. 将敏感词都存到数据库表中
  2. 定时读取数据到内存中,构建敏感词前缀树
  3. 写工具方法,使用内存中的前缀树判断消息中是否包含敏感词或完成替换操作

1. 建立敏感词数据库表

CREATE TABLE `bad_words` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',`content` text COMMENT '敏感词内容',`create_user_id`bigint(20) unsigned COMMENT '创建用户id',`extra` text COMMENT '扩展信息',`create_time` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',`modify_time` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',`status` int DEFAULT 0 COMMENT '0存在,1删除',PRIMARY KEY (`id`)
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci;

2. 定时任务,读数据并建立敏感词树

项目启动的时候,开始执行这一块。

2.1 开启定时任务

var (ctx          context.ContextBadWordsTrie *BadWordsTrieNode
)func InitCronLoader() {var err errorctx = context.Background()err = getBadWordsAndInitBadWordsTrie() // 初始化敏感词树if err != nil {panic(err)}gocron.Every(3).Minutes().Do(getBadWordsAndInitBadWordsTrie)go func() {<-gocron.Start()}()
}

2.2 读数据并建立敏感词树

func getBadWordsAndInitBadWordsTrie() error {// 从数据库获取信息badWordsList := getBadWordsFromDB()// 初始化敏感词树BadWordsTrie = initTrie(badWordsList)return nil
}func getBadWordsFromDB() []string {badWords := make([]*models.BadWord, 0)caller.LyhTestDB.Debug().Table(models.TableNameBadWord).Where("status=0").Find(&badWords)badWordsList := make([]string, 0)for _, item := range badWords {if item.Content != "" {badWordsList = append(badWordsList, item.Content)}}return badWordsList
}func initTrie(badWordsList []string) *BadWordsTrieNode {root := &BadWordsTrieNode{}for _, word := range badWordsList {addWord(root, word)}return root
}type BadWordsTrieNode struct {Children map[rune]*BadWordsTrieNode
}func addWord(root *BadWordsTrieNode, word string) {node := rootfor _, char := range word {if node.Children == nil {node.Children = make(map[rune]*BadWordsTrieNode)}if _, ok := node.Children[char]; !ok {node.Children[char] = &BadWordsTrieNode{}}node = node.Children[char]}
}

3. 使用

可以写到工具中

// 检查是否包含敏感词
func CheckBadWords(message string) bool {return isContain(message, cronloader.BadWordsTrie)
}// 将敏感词字符替换为*
func CheckAndReplaceBadWords(message string) string {return replaceBadWords(message, '*', cronloader.BadWordsTrie)
}// 将敏感词字符替换为自定义字符
func CheckAndReplaceBadWordsWithSep(message string, sep rune) string {return replaceBadWords(message, sep, cronloader.BadWordsTrie)
}func isContain(message string, root *cronloader.BadWordsTrieNode) bool {message = strings.ToLower(message)runes := []rune(message)for i := 0; i < len(runes); i++ {p := rootj := ifor j < len(runes) && p.Children != nil {char := runes[j]if _, ok := p.Children[char]; ok {p = p.Children[char]j++} else {break}}if p.Children == nil {return true}}return false
}func replaceBadWords(message string, sep rune, root *cronloader.BadWordsTrieNode) string {message = strings.ToLower(message)runes := []rune(message)for i := 0; i < len(runes); i++ {p := rootj := ifor j < len(runes) && p.Children != nil {char := runes[j]if _, ok := p.Children[char]; ok {p = p.Children[char]j++} else {break}}if p.Children == nil {for k := i; k < j; k++ {runes[k] = sep}}}return string(runes)
}
http://www.yayakq.cn/news/527682/

相关文章:

  • 网站建设吉金手指专业11免费手机网站建站
  • 如何删除网站黑链wordpress 个人公众号
  • 金融理财网站源码深圳网页设计公司在哪
  • 网站空间管理面板论述网站开发建设的一般流程
  • 网站标题title内网网站如何建设
  • 做婚纱网站的图片山西省住房和城乡建设厅网站报名
  • 天天联盟没网站怎么做深圳保障性住房查询
  • 网站如何添加友情链接团购网站发展
  • 宁波外贸网站建设wordpress漂浮框
  • 建设局查询网站首页天津 网站制作
  • 推荐几个好的网站wordpress微信防红插件
  • 网站开发如何模块化软件开发培训多少钱
  • 专门做网站的wordpress ark 破解
  • 网站建设合同范本下载培训教育的网站怎么做
  • 帝国cms做微网站常见网站安全漏洞
  • wordpress网站费用仁怀网站建设
  • 网站建设合作协议书做公司网站找谁
  • 手机网站开发报价单 天堂8资源中文在线
  • 昆明网站开发推广公司怎么在网上推广产品
  • 建站如何注重内容建设个人建网站简易方法
  • 东营做营销型网站创建网页的三种方法
  • 江门公司做网站公众号怎么制作红包封面
  • 网站建设需要注意问题惠州h5网站建设
  • 合肥做公司网站联系方式烟台企业网站制作公司
  • 做特卖的网站竞价托管外包哪家好
  • 西安做的好的网站公司东莞网站建设方案外包
  • 牙克石网站建设云南网站建设首选公司
  • 企业网站有哪些举几个例子网站怎么申请微博登录
  • 手机网站开发利用流程seo搜索引擎招聘
  • 网站开发公司 上ui设计30岁后的出路