多线程过滤敏感词

Posted 起个名字好难

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程过滤敏感词相关的知识,希望对你有一定的参考价值。

原文:https://git.oschina.net/tianzhenjiu/codes/y9z6t471s3euinoj5vcdf79

 

package io.test;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class Testoss {

    public static void main(String[] args) throws Exception {    
        
        String[] keywords={"毛","周","二逼","xx","王五","刘能","你好吗","共 产 党","哈哈","中国人"};
        
        String content="你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。你好哈222哈2哈啊大a我们是中国人在主实例的读请求较多、读压力比较大的时候,可以通过 DRDS 读写分离功能对读流量进行分流,减轻 RDS 主实例的读压力。";
        int splitthread=2;
        
        int count=keywords.length/splitthread;
        
        ExecutorService executorService=Executors.newFixedThreadPool(4);
        
        boolean filterit=false;
        
        
        
        List<Future<String>> futures=new ArrayList<>();
        for(int i=0;i<keywords.length;i+=count){
            
            final List<String> strings=new ArrayList<>();
            
            for(int j=0;i+j<keywords.length&&
                        j<count;j++){
        
                strings.add(keywords[i+j]);
            }
            
            futures.add(executorService.submit(new Callable<String>() {
                @Override
                public String call() throws Exception {
                
                    return filter(content, strings);
                }
                
                
            }));
            
            
        }
        
        for(Future<String> future:futures){
            
            if(future.get()!=null){
                filterit=true;
                System.out.println(future.get());
            }
        }
        
        executorService.shutdown();
        
        System.out.println(filterit);
        
        
    }
    
    /**
     * 
     * @param content  内容
     * @param keywords 过滤词组
     * @return
     */
    public static String filter(String content,List<String> keywords){
//        
//        try {
//            Thread.sleep(1000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//        
        for(String keyword:keywords){
            
            if(content.indexOf(keyword)>0)
                return keyword;
         }
        
        return null;
    }
    

}

 

以上是关于多线程过滤敏感词的主要内容,如果未能解决你的问题,请参考以下文章

用servlet和过滤器实现简单的权限管理和敏感词过滤功能

用servlet和过滤器实现简单的权限管理和敏感词过滤功能

PHP实现敏感词过滤系统

过滤敏感词方式

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

python敏感词过滤