项目1

作者: 聚在散里 | 来源:发表于2017-09-18 12:32 被阅读0次

用户发布消息的过滤

必须过滤用户生成的内容,HTML标签过滤 ,HtmlUtils.htmlEscape(进行了转义)

敏感词过滤  使用了字典树Tire Tree(非法的,竞争对手广告)

优点:利用字符串的公共前缀来减少查询时间,最大限度的减少无谓的字符串比较。

字典树3个特性

                          1 根节点不包含字符,除根节点外每个节点只包含一个字符

                          2 从根节点到某一节点路径经过的字符连接起来为对应的字符串

                          3 每个节点的所有子节点包含的字符都不相同

3个指针

1 指向树的指针                    TrieNode temp =rootNode;

2 指向字符串的指针(寻找敏感字符串的头)  int =begin;

3 指向字符串的指针(当找到头时工作) int = position;

StringBuilder

构造字典树

public class TrieNode{

private boolean end =false;

private string data;

private TrieNode rootNode =new TrieNode();

private Map<Character,TrieNode> subNodes =new HashMap<Character,TrieNodes>();

public void addSubNodes(Charater key ,TrieNode node){

subNodes.put(key,node);

}

public TrieNode getSubNode(Charater key){

return subNodes.get(key)

}

public void setkeywordEnd(boolean end){

this.end=end;

}

}

在字典树中添加单词

private void addWord(String lineTxt){

TrieNode tempNode= rootNode;

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

Charater c=lineTxt.charAt(i);

TrieNode node =tempNode.getSubNode(c);

if(node==null){            // 判断根节点的子节点中是否有词节点  ,

tempNode.addSubNodes(c,node);  //没有此节点则添加

}

//若有此节点则吧下一节点变为此节点

tempNode=node;

if(i==lineTxt.length()-1) tempNode.setkeywordEnd(true);//若为最后一个节点设置节点结尾标识。 

}

}

过滤算法

public String filter (String text){

if(StringUtils.isBlank(text)){return text;}

String replacement="***";

StringBuilder result=new StringBuilder();

TrieNode temp =root;

int begin=0;

int positin=0;

while(position<text.length()){

char c= text.charAt(position);

temp=temp.getSubNodes(c);

if(temp==null){

      result.append(text.charAt(begin));

      position=begin+1;

      begin=position;

      temp=rootNode;

}else if(temp.iskeywordEnd()){

}

}

}

项目遇到那些难点?

在测试时发现在网络不好时用户如果多次点击提交 ,可以向数据库提交多条重复数据。增加了数据库的冗余,大量垃圾浪费空间

解决办法,查了下资料有2中解决办法

1用js 设置一下指定时间内表单只能提交1次

2利用session 下发 token

String Stringbuffer(线程安全) Stringbuilder 区别

String 是只读字符串,被final修饰的不可变类 

Stringbuffer stringbuilder可以对字符串进行直接修改

相关文章

  • 项目1

    用户发布消息的过滤 必须过滤用户生成的内容,HTML标签过滤 ,HtmlUtils.htmlEscape(进行了转...

  • 项目实战-博客项目1

  • 1.项目

  • 项目小结(1)

    1.只对数据做了一个定义 我在想为什么统计分析里面的数据到了测试的阶段会有这么多的问题? 由于系统本身的复杂性,数...

  • 项目管理(1)

    项目就是利用有限的资源,在一定的时间内,完成一系列的特定的相关工作叫做项目。项目的特点有临时性,独特性,渐明细性。...

  • 项目总结-1

    main程序入口 UIApplication里面做了哪些事情 1.创建UIApplication对象(UIAppl...

  • 项目心得(1)

    这个项目接从开始到现在已经一年多了,用户量就不说了,和大家讨论一下项目的框架。 首先,最开始写这个项目的时候,只是...

  • Vue项目1

    项目搭建 安装 Node.js 安装目录可以改,一定不要在路径中出现中文和空格 安装 @vue/cli@4.1.2...

  • 1、项目搭建

    前置准备 1、java虚拟机2、eclipse3、tomcat4、hbuilder5、mysql+navicat6...

  • 项目文件-1

    UserController UserDao UserEntity UserServiceImpl UserSer...

网友评论

      本文标题:项目1

      本文链接:https://www.haomeiwen.com/subject/rkuvsxtx.html