过滤敏感词汇

应用场景

  现在几乎所有的网站再发布带有文字信息的内容时都会要求过滤掉发动的、不健康的、影响社会安定的等敏感词汇,这里为大家提供了可以是现在这种功能的解决方案

解决方案

  第一种方式

  • 创建敏感词汇文件

    首先需要准备一个txt格式的文件用于存放需要过滤的敏感词汇,这个文件放到resources资源文件的根目录

  • java代码

    service代码package com.ccytsoft.wkc.service;


package com.ccytsoft.wkc.service;

import lombok.Data;
import org.springframework.stereotype.Service;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
* 敏感词汇service
*
* @author kuangxiang(kuangxiang666@yeah.net)
* @date 15:06 2017/12/12
*/
@Data
@Service
public class SensitiveWordService {

private StringBuilder replaceAll;

/**
* 编码
* <P>
* 在读敏感词汇文件时需要用到
*/
private String encoding = "UTF-8";

/**
* 替换字符窜
* <P>
* 用于替换敏感词汇的字符窜
*/
private String replceStr = "*";

/**
*单次替换的敏感词汇的长度
*/
private int replceSize = 500;

/**
* 敏感词汇文件
* <P>
* 此文件放在资源文件的根目录下
*/
private String fileName = "censorwords.txt";

private List<String> arrayList;

/**
* 包含的敏感词列表,过滤掉重复项
*/
public Set<String> sensitiveWordSet;

/**
* 包含的敏感词列表,包括重复项,统计次数
*/
public List<String> sensitiveWordList;

/**
* 移除敏感词汇
*
* @param str 需要过滤的字符窜
*
* @return 过滤之后的字符窜
*/
public String removeSensitiveWord(String str){
SensitiveWordService sw = new SensitiveWordService("censorwords.txt");
sw.InitializationWork();
return sw.filterInfo(str);
}

/**
* 拦截信息
* <P>
* 过滤掉敏感词汇的方法
*
* @param str 将要被过滤信息
*
* @return 过滤后的信息
*/
public String filterInfo(String str) {
sensitiveWordSet = new HashSet<String>();
sensitiveWordList= new ArrayList<>();
StringBuilder buffer = new StringBuilder(str);
HashMap<Integer, Integer> hash = new HashMap<Integer, Integer>(arrayList.size());
String temp;
for(int x = 0; x < arrayList.size();x++) {
temp = arrayList.get(x);
int findIndexSize = 0;
for(int start = -1;(start=buffer.indexOf(temp,findIndexSize)) > -1;){
//System.out.println("###replace="+temp);
findIndexSize = start+temp.length();//从已找到的后面开始找
Integer mapStart = hash.get(start);//起始位置
//满足1个,即可更新map
if(mapStart == null || (mapStart != null && findIndexSize > mapStart)){
hash.put(start, findIndexSize);
//System.out.println("###敏感词:"+buffer.substring(start, findIndexSize));
}
}
}
Collection<Integer> values = hash.keySet();
for(Integer startIndex : values){
Integer endIndex = hash.get(startIndex);
//获取敏感词,并加入列表,用来统计数量
String sensitive = buffer.substring(startIndex, endIndex);
//System.out.println("###敏感词:"+sensitive);
if (!sensitive.contains("*")) {//添加敏感词到集合
sensitiveWordSet.add(sensitive);
sensitiveWordList.add(sensitive);
}
buffer.replace(startIndex, endIndex, replaceAll.substring(0,endIndex-startIndex));
}
hash.clear();
return buffer.toString();
}

/**
* 初始化敏感词库
*/
private void InitializationWork() {
replaceAll = new StringBuilder(replceSize);
for(int x=0;x < replceSize;x++)
{
replaceAll.append(replceStr);
}
//加载词库
arrayList = new ArrayList<String>();
InputStreamReader read = null;
BufferedReader bufferedReader = null;
try {
read = new InputStreamReader(SensitiveWordService.class.getClassLoader().getResourceAsStream(fileName),encoding);
bufferedReader = new BufferedReader(read);
for(String txt = null;(txt = bufferedReader.readLine()) != null;){
if(!arrayList.contains(txt))
arrayList.add(txt);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(null != bufferedReader)
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null != read)
read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

/**
* 测试方法
*
* @param args 参数
*/
public static void main(String[] args){
long startNumer = System.currentTimeMillis();
SensitiveWordService sw = new SensitiveWordService("censorwords.txt");
sw.InitializationWork();
//System.out.println("敏感词的数量:" + arrayList.size());
String str = "你好呀,我这里有敏感词汇,来过滤我呀";
System.out.println("被检测字符串长度:"+str.length());
str = sw.filterInfo(str);
long endNumber = System.currentTimeMillis();
//System.out.println("语句中包含敏感词的个数为:" + sensitiveWordSet.size() + "。包含:" + sensitiveWordSet);
//System.out.println("语句中包含敏感词的个数为:" + sensitiveWordList.size() + "。包含:" + sensitiveWordList);
System.out.println("总共耗时:"+(endNumber-startNumer)+"ms");
System.out.println("替换后的字符串为: "+str);
System.out.println("替换后的字符串长度为: "+str.length());
}

/**
* 有参构造
* <P>
* 文件要求路径在src或resource下,默认文件名为censorwords.txt
* @param fileName 词库文件名(含后缀)
*/
public SensitiveWordService(String fileName) {

this.fileName = fileName;
}

/**
* 有参构造
*
* @param replceStr 敏感词被转换的字符
* @param replceSize 初始转义容量
*/
public SensitiveWordService(String replceStr, int replceSize){
this.replceStr = fileName;
this.replceSize = replceSize;
}

/**
* 无参构造
*/
public SensitiveWordService(){
}
}

 另一种方法

  • service代码
package com.ccytsoft.wkc.filters;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 【匹配度可以,速度较慢】
 * Java关键字过滤:http://blog.csdn.net/linfssay/article/details/7599262
 * @author ShengDecheng
 *
 */
public class KeyWordFilter {

    private static Pattern pattern = null;
    private static int keywordsCount = 0;

    // 从words.properties初始化正则表达式字符串
    private static void initPattern() {
        StringBuffer patternBuffer = new StringBuffer();
        try {
            //words.properties
            InputStream in = KeyWordFilter.class.getClassLoader().getResourceAsStream("keywords.properties");
            Properties property = new Properties();
            property.load(in);
            Enumeration<?> enu = property.propertyNames();
            patternBuffer.append("(");
            while (enu.hasMoreElements()) {
                String scontent = (String) enu.nextElement();
                patternBuffer.append(scontent + "|");
                //System.out.println(scontent);
                keywordsCount ++;
            }
            patternBuffer.deleteCharAt(patternBuffer.length() - 1);
            patternBuffer.append(")");
            //System.out.println(patternBuffer);
            // unix换成UTF-8
            // pattern = Pattern.compile(new
            // String(patternBuf.toString().getBytes("ISO-8859-1"), "UTF-8"));
            // win下换成gb2312
            // pattern = Pattern.compile(new String(patternBuf.toString()
            // .getBytes("ISO-8859-1"), "gb2312"));
            // 装换编码
            pattern = Pattern.compile(patternBuffer.toString());
        } catch (IOException ioEx) {
            ioEx.printStackTrace();
        }
    }

    private static String doFilter(String str) {
        Matcher m = pattern.matcher(str);
//        while (m.find()) {// 查找符合pattern的字符串
//            System.out.println("The result is here :" + m.group());
//        }
        // 选择替换方式,这里以* 号代替
        str = m.replaceAll("*");
        return str;
    }

    public static void main(String[] args) {
        long startNumer = System.currentTimeMillis(); 
        initPattern();
        //String str = "我日,艹,fuck,你妹的 干啥呢";
        System.out.println("敏感词的数量:" + keywordsCount);
        String str = "你好呀,我这里有敏感词汇,来过滤我呀";  
        System.out.println("被检测字符串长度:"+str.length()); 
        str = doFilter(str);
        //高效Java敏感词、关键词过滤工具包_过滤非法词句:http://blog.csdn.net/ranjio_z/article/details/6299834
        //FilteredResult result = WordFilterUtil.filterText(str, '*');
        long endNumber = System.currentTimeMillis();  
        System.out.println("总共耗时:"+(endNumber-startNumer)+"ms"); 
        System.out.println("替换后的字符串为:
"+str);
        //System.out.println("替换后的字符串为:
"+result.getFilteredContent());
        //System.out.println("替换后的字符串为1:
"+result.getOriginalContent());
        //System.out.println("替换后的字符串为2:
"+result.getBadWords());
    }
}
  • 敏感词汇文件keywords.properties
bitch
shit
falun
tianwang
cdjp
bignews
boxun
chinaliberal
chinamz
chinesenewsnet
cnd
creaders
dafa
dajiyuan
dfdz
dpp
falu
falundafa
flg
freechina
freenet
fuck
GCD
gcd
hongzhi
hrichina
huanet
hypermart
incest
jiangdongriji
lihongzhi
making
minghui
minghuinews
nacb
naive
nmis
paper
peacehall
playboy
renminbao
renmingbao
rfa
safeweb
sex
simple
svdc
taip
tibetalk
triangle
triangleboy
UltraSurf
unixbox
ustibet
voa
wangce
wstaiji
xinsheng
yuming
zhengjian
zhengjianwang
zhenshanren
zhuanfalun
xxx
anime
censor
hentai
[hz]
(hz)
[av]
(av)
[sm]
(sm)
porn
multimedia
toolbar
downloader
u9876u7EA7
u5973u512A
u5C0Fu6CFDu739Bu8389u4E9A
u5F3Au6B7C
u4E71u4EA4
u8272u53CB
u5A4Au5B50
u84B2u56E2
u7F8Eu5973
u5973u5973
u55B7u5C3F
u7EDDu7248
u4E09u7D1A
u6B66u817Eu5170
u51CCu8FB1
u66B4u5E72
u8BF1u60D1
u9634u5507
u5C0Fu6CFDu5706
u63D2u63D2
u5750u4EA4
u9577u7028u611B
u5DDDu5CF6u548Cu6D25u5BE6
u8349u8393u725Bu5976
u5C0Fu6FA4u5712
u98EFu5CF6u611B
u661Fu5D0Eu672Au4F86
u53CAu5DDDu5948u592E
u671Du6CB3u862D
u5915u6A39u821Eu5B50
u5927u6FA4u60E0
u91D1u6FA4u6587u5B50
u4E09u6D66u611Bu4F73
u4F0Au6771
u6170u5B89u5987
u5973u6559u5E2B
u6B66u85E4u862D
u5B66u751Fu59B9
u65E0u6BDB
u731Bu63D2
u62A4u58EB
u81EAu62CD
Au7247
Au7EA7
u55B7u7CBE
u5077u7AA5
u5C0Fu7A74
u5927u7247
u88ABu8650
u9EC4u8272
u88ABu8FEB
u88ABu903C
u5F3Au66B4
u53E3u6280
u7834u5904
u7CBEu6DB2
u5E7Cu4EA4
u72C2u5E72
u517Du4EA4
u7FA4u4EA4
u53F6u5B50u6963
u8212u6DC7
u7FC1u8679
u5927u9646
u9732u70B9
u9732u6BDB
u6B66u85E4u5170
u996Du5C9Bu7231
u6CE2u9738
u5C11u513Fu4E0Du5B9C
u6210u4EBA
u5077u60C5
u53EBu5E8A
u4E0Au5E8A
u5236u670D
u4E9Au70ED
u63F4u4EA4
u8D70u5149
u60C5u8272
u8089u6B32
u7F8Eu817F
u81EAu6478
18u7981
u6346u7ED1
u4E1Du889C
u6F6Eu5439
u809Bu4EA4
u7FA4u5C04
u5185u5C04
u5C11u5987
u5361u901A
u81EDu4F5C
u8584u683C
u8ABFu6559
u8FD1u89AA
u9023u767C
u9650u5236
u4E71u4F26
u6BCDu5B50
u5077u62CD
u66F4u8863
u7121u4FEEu6B63
u4E00u672Cu9053
1Pondo
u6AFBu4E95
u98A8u82B1
u591Cu52E4u75C5u680B
u83F1u605D
u8650u5F85
u6FC0u60C5
u9EBBu8863
u4E09u7EA7
u5410u8840
u4E09u4E2Au4EE3u8868
u4E00u515A
u591Au515A
u6C11u4E3B
u4E13u653F
u884Cu623F
u81EAu6170
u5439u8427
u8272u72FC
u80F8u7F69
u5185u88E4
u5E95u88E4
u79C1u5904
u723Du6B7B
u53D8u6001
u59B9u75BC
u59B9u75DB
u5F1Fu75BC
u5F1Fu75DB
u59D0u75BC
u59D0u75DB
u54E5u75BC
u54E5u75DB
u540Cu623F
u6253u70AE
u9020u7231
u4F5Cu7231
u505Au7231
u9E21u5DF4
u9634u830E
u9633u5177
u5F00u82DE
u809Bu95E8
u9634u9053
u9634u8482
u8089u68CD
u8089u68D2
u8089u6D1E
u8361u5987
u9634u56CA
u777Eu4E38
u6345u4F60
u6345u6211
u63D2u6211
u63D2u4F60
u63D2u5979
u63D2u4ED6
u5E72u4F60
u5E72u5979
u5E72u4ED6
u5C04u7CBE
u53E3u4EA4
u5C41u773C
u9634u6237
u9634u95E8
u4E0Bu4F53
u9F9Fu5934
u9634u6BDB
u907Fu5B55u5957
u4F60u5988u903C
u5927u9E21u5DF4
u9AD8u6F6E
u653Fu6CBB
u5927u6CD5
u5F1Fu5B50
u5927u7EAAu5143
u771Fu5584u5FCD
u660Eu6167
u6D2Au5FD7
u7EA2u5FD7
u6D2Au667A
u7EA2u667A
u6CD5u8F6E
u6CD5u8BBA
u6CD5u6CA6
u6CD5u4F26
u53D1u8F6E
u53D1u8BBA
u53D1u6CA6
u53D1u4F26
u8F6Eu529F
u8F6Eu516C
u8F6Eu653B
u6CA6u529F
u6CA6u516C
u6CA6u653B
u8BBAu653B
u8BBAu529F
u8BBAu516C
u4F26u653B
u4F26u529F
u4F26u516C
u6253u5012
u6C11u8FD0
u516Du56DB
u53F0u72EC
u738Bu4E39
u67F4u73B2
u674Eu9E4F
u5929u5B89u95E8
u6C5Fu6CFDu6C11
u6731u5BB9u57FA
u6731u9555u57FA
u674Eu957Fu6625
u674Eu745Eu73AF
u80E1u9526u6D9B
u9B4Fu4EACu751F
u53F0u6E7Eu72ECu7ACB
u85CFu72EC
u897Fu85CFu72ECu7ACB
u7586u72EC
u65B0u7586u72ECu7ACB
u8B66u5BDF
u6C11u8B66
u516Cu5B89
u9093u5C0Fu5E73
u5927u76D6u5E3D
u9769u547D
u6B66u8B66
u9ED1u793Eu4F1A
u4EA4u8B66
u6D88u9632u961F
u5211u8B66
u591Cu603Bu4F1A
u5988u4E2A
u516Cu6B3E
u9996u957F
u4E66u8BB0
u5750u53F0
u8150u8D25
u57CEu7BA1
u66B4u52A8
u66B4u4E71
u674Eu8FDCu54F2
u53F8u6CD5u8B66u5B98
u9AD8u5E72
u4EBAu5927
u5C09u5065u884C
u674Eu5C9Au6E05
u9EC4u4E3Du6EE1
u4E8Eu5E7Cu519B
u6587u5B57u72F1
u5B8Bu7956u82F1
u81EAu711A
u9A97u5C40
u732Bu8089
u5438u50A8
u5F20u4E94u5E38
u5F20u4E15u6797
u7A7Au96BE
u6E29u5BB6u5B9D
u5434u90A6u56FD
u66FEu5E86u7EA2
u9EC4u83CA
u7F57u5E72
u5434u5B98u6B63
u8D3Eu5E86u6797
u4E13u5236
u4E09u500Bu4EE3u8868
u4E00u9EE8
u591Au9EE8
u5C08u653F
u5927u7D00u5143
u7D05u5FD7
u7D05u667A
u6CD5u8F2A
u6CD5u8AD6
u6CD5u6DEA
u6CD5u502B
u767Cu8F2A
u767Cu8AD6
u767Cu6DEA
u767Cu502B
u8F2Au529F
u8F2Au516C
u8F2Au653B
u6DEAu529F
u6DEAu516C
u6DEAu653B
u8AD6u653B
u8AD6u529F
u8AD6u516C
u502Bu653B
u502Bu529F
u502Bu516C
u6C11u904B
u53F0u7368
u674Eu9D6C
u5929u5B89u9580
u6C5Fu6FA4u6C11
u6731u9394u57FA
u674Eu9577u6625
u674Eu745Eu74B0
u80E1u9326u6FE4
u81FAu7063u7368u7ACB
u85CFu7368
u897Fu85CFu7368u7ACB
u7586u7368
u65B0u7586u7368u7ACB
u9127u5C0Fu5E73
u5927u84CBu5E3D
u9ED1u793Eu6703
u6D88u9632u968A
u591Cu7E3Du6703
u5ABDu500B
u9996u9577
u66F8u8A18
u8150u6557
u66B4u52D5
u66B4u4E82
u674Eu9060u54F2
u9AD8u5E79
u674Eu5D50u6E05
u9EC3u9E97u6EFF
u65BCu5E7Cu8ECD
u6587u5B57u7344
u9A19u5C40
u8C93u8089
u5438u5132
u5F35u4E94u5E38
u5F35u4E15u6797
u7A7Au96E3
u6EABu5BB6u5BF6
u5433u90A6u570B
u66FEu6176u7D05
u9EC3u83CA
u7F85u5E79
u8CC8u6176u6797
u5C08u5236
u516Bu4E5D
u516Bu8001
u5DF4u8D6B
u767Du7ACBu6734
u767Du68A6
u767Du76AEu4E66
u4FDDu9493
u9C8Du6208
u9C8Du5F64
u66B4u653F
u5317u5927u4E09u89D2u5730u8BBAu575B
u5317u97E9
u5317u4EACu5F53u5C40
u5317u4EACu4E4Bu6625
u5317u7F8Eu81EAu7531u8BBAu575B
u535Au8BAF
u8521u5D07u56FD
u66F9u957Fu9752
u66F9u521Au5DDD
u5E38u52B2
u9648u70B3u57FA
u9648u519B
u9648u8499
u9648u7834u7A7A
u9648u5E0Cu540C
u9648u5C0Fu540C
u9648u5BA3u826F
u9648u4E00u8C18
u9648u603Bu7EDF
u7A0Bu51EF
u7A0Bu94C1u519B
u7A0Bu771F
u8FDFu6D69u7530
u6301u4E0Du540Cu653Fu89C1
u8D64u532A
u8D64u5316
u6625u590Fu81EAu7531u8BBAu575B
u8FBEu8D56
u5927u53C2u8003
u5927u7EAAu5143u65B0u95FBu7F51
u5927u7EAAu56ED
u5927u5BB6u8BBAu575B
u5927u53F2
u5927u53F2u8BB0
u5927u53F2u7EAA
u5927u4E2Du56FDu8BBAu575B
u5927u4E2Du534Eu8BBAu575B
u5927u4F17u771Fu4EBAu771Fu4E8B
u6234u76F8u9F99
u5F39u52BE
u767Bu8F89
u9093u7B11u8D2B
u8FEAu91CCu590Fu63D0
u5730u4E0Bu6559u4F1A
u5730u4E0Bu520Au7269
u7B2Cu56DBu4EE3
u7535u89C6u6D41u6C13
u9493u9C7Cu5C9B
u4E01u5173u6839
u4E01u5143
u4E01u5B50u9716
u4E1Cu5317u72ECu7ACB
u4E1Cu65B9u7EA2u65F6u7A7A
u4E1Cu65B9u65F6u7A7A
u4E1Cu5357u897Fu5317u8BBAu8C08
u4E1Cu793E
u4E1Cu571Fu8033u5176u65AFu5766
u4E1Cu897Fu5357u5317u8BBAu575B
u52A8u4E71
u72ECu88C1
u72ECu592B
u72ECu7ACBu53F0u6E7Eu4F1A
u675Cu667Au5BCC
u591Au7EF4
u5C59u6C11
u4FC4u56FD
u53D1u6123
u53D1u6B63u5FF5
u53CDu5C01u9501u6280u672F
u53CDu8150u8D25u8BBAu575B
u53CDu653B
u53CDu5171
u53CDu4EBAu7C7B
u53CDu793Eu4F1A
u65B9u52B1u4E4B
u65B9u821Fu5B50
u98DEu626Cu8BBAu575B
u6590u5F97u52D2
u8D39u826Fu52C7
u5206u5BB6u5728
u5206u88C2
u7C89u9970u592Au5E73
u98CEu96E8u795Eu5DDE
u98CEu96E8u795Eu5DDEu8BBAu575B
u5C01u4ECEu5FB7
u5C01u6740
u51AFu4E1Cu6D77
u51AFu7D20u82F1
u4F5Bu5C55u5343u624Bu6CD5
u4ED8u7533u5947
u5085u7533u5947
u5085u5FD7u5BF0
u9AD8u5B98
u9AD8u6587u8C26
u9AD8u85AAu517Bu5EC9
u9AD8u77BB
u9AD8u81EAu8054
u6208u626C
u9E3Du6D3E
u6B4Cu529Fu9882u5FB7
u86E4u87C6
u4E2Au4EBAu5D07u62DC
u5DE5u81EAu8054
u529Fu6CD5
u5171u4EA7
u5171u515A
u5171u532A
u5171u72D7
u5171u519B
u5173u5353u4E2D
u8D2Fu901Au4E24u6781u6CD5
u5E7Fu95FB
u90EDu4F2Fu96C4
u90EDu7F57u57FA
u90EDu5E73
u90EDu5CA9u534E
u56FDu5BB6u5B89u5168
u56FDu5BB6u673Au5BC6
u56FDu519B
u56FDu8D3C
u97E9u4E1Cu65B9
u97E9u8054u6F6E
u4F55u5FB7u666E
u4F55u52C7
u6CB3u6B87
u7EA2u706Fu533A
u7EA2u8272u6050u6016
u5B8Fu6CD5
u6D2Au4F20
u6D2Au541F
u6D2Au54F2u80DC
u80E1u7D27u638F
u80E1u9526u6ED4
u80E1u9526u6DD8
u80E1u666Fu6D9B
u80E1u5E73
u80E1u603Bu4E66u8BB0
u62A4u6CD5
u82B1u82B1u516Cu5B50
u534Eu5EFAu654F
u534Eu901Au65F6u4E8Bu8BBAu575B
u534Eu590Fu6587u6458
u534Eu8BEDu4E16u754Cu8BBAu575B
u534Eu5CB3u65F6u4E8Bu8BBAu575B
u9EC4u6148u840D
u9EC4u7978
u9EC4u83CAu3000
u9EC4u7FD4
u56DEu6C11u66B4u52A8
u6094u8FC7u4E66
u9E21u6BDBu4FE1u6587u6C47
u59ECu80DCu5FB7
u79EFu514Bu9986
u57FAu7763
u8D3Eu5EF7u5B89
u8D3Eu80B2u53F0
u5EFAu56FDu515A
u6C5Fcore
u6C5Fu516Bu70B9
u6C5Fu6D41u6C13
u6C5Fu7F57
u6C5Fu7EF5u6052
u6C5Fu9752
u6C5Fu620Fu5B50
u6C5Fu5219u6C11
u6C5Fu6CFDu6167
u6C5Fu8D3C
u6C5Fu8D3Cu6C11
u6C5Fu6298u6C11
u6C5Fu732A
u6C5Fu732Au5AB3
u6C5Fu4E3Bu5E2D
u59DCu6625u4E91
u5C06u5219u6C11
u50F5u8D3C
u50F5u8D3Cu6C11
u8BB2u6CD5
u9171u732Au5AB3
u4EA4u73ED
u6559u517Bu9662
u63A5u73ED
u63EDu6279u4E66
u91D1u5C27u5982
u9526u6D9B
u7981u770B
u7ECFu6587
u5F00u653Eu6742u5FD7
u770Bu4E2Du56FD
u6297u8BAE
u909Du9526u6587
u52B3u52A8u6559u517Bu6240
u52B3u6539
u52B3u6559
u8001u6C5F
u8001u6BDB
u9ECEu5B89u53CB
u674Eu5927u5E08
u674Eu767Bu8F89
u674Eu7EA2u75D4
u674Eu5B8Fu5FD7
u674Eu6D2Au5BBD
u674Eu7EE7u8010
u674Eu5170u83CA
u674Eu8001u5E08
u674Eu5F55
u674Eu7984
u674Eu5C11u6C11
u674Eu6DD1u5A34
u674Eu65FAu9633
u674Eu6587u658C
u674Eu5C0Fu670B
u674Eu5C0Fu9E4F
u674Eu6708u6708u9E1F
u674Eu5FD7u7EE5
u674Eu603Bu7406
u674Eu603Bu7EDF
u8FDEu80DCu5FB7
u8054u603B
u5EC9u653Fu5927u8BBAu575B
u70BCu529F
u6881u5149u70C8
u6881u64CEu58A9
u4E24u5CB8u5173u7CFB
u4E24u5CB8u4E09u5730u8BBAu575B
u4E24u4E2Au4E2Du56FD
u4E24u4F1A
u4E24u4F1Au62A5u9053
u4E24u4F1Au65B0u95FB
u5ED6u9521u9F99
u6797u4FDDu534E
u6797u957Fu76DB
u6797u6A35u6E05
u6797u614Eu7ACB
u51CCu950B
u5218u5BBEu6DF1
u5218u5BBEu96C1
u5218u521A
u5218u56FDu51EF
u5218u534Eu6E05
u5218u4FCAu56FD
u5218u51EFu4E2D
u5218u5343u77F3
u5218u9752
u5218u5C71u9752
u5218u58EBu8D24
u5218u6587u80DC
u5218u6653u6CE2
u5218u6653u7AF9
u5218u6C38u5DDD
u6D41u4EA1
u9F99u864Eu8C79
u9646u59D4u4F1A
u5415u4EACu82B1
u5415u79C0u83B2
u62A1u529F
u8F6Eu5927
u7F57u793Cu8BD7
u9A6Cu5927u7EF4
u9A6Cu826Fu9A8F
u9A6Cu4E09u5BB6
u9A6Cu65F6u654F
u5356u56FD
u6BDBu5395u6D1E
u6BDBu8D3Cu4E1C
u7F8Eu56FDu53C2u8003
u7F8Eu56FDu4E4Bu97F3
u8499u72EC
u8499u53E4u72ECu7ACB
u5BC6u7A74
u7EF5u6052
u6C11u56FD
u6C11u8FDBu515A
u6C11u8054
u6C11u610F
u6C11u610Fu8BBAu575B
u6C11u9635
u6C11u732A
u6C11u4E3Bu5899
u6C11u65CFu77DBu76FE
u83ABu4F1Fu5F3A
u6728u7280u5730
u6728u5B50u8BBAu575B
u5357u5927u81EAu7531u8BBAu575B
u95F9u4E8B
u502Au80B2u8D24
u4F60u8BF4u6211u8BF4u8BBAu575B
u6F58u56FDu5E73
u6CE1u6CABu7ECFu6D4E
u8FEBu5BB3
u7941u5EFA
u9F50u58A8
u94B1u8FBE
u94B1u56FDu6881
u94B1u5176u741B
u62A2u7CAEu8BB0
u4E54u77F3
u4EB2u7F8E
u94A6u672Cu7ACB
u79E6u664B
u8F7Bu821Fu5FEBu8BAF
u60C5u5987
u5E86u7EA2
u5168u56FDu4E24u4F1A
u70EDu6BD4u5A05
u70EDu7AD9u653Fu8BBAu7F51
u4EBAu6C11u62A5
u4EBAu6C11u5185u60C5u771Fu76F8
u4EBAu6C11u771Fu5B9E
u4EBAu6C11u4E4Bu58F0u8BBAu575B
u4EBAu6743
u745Eu58EBu91D1u878Du5927u5B66
u5584u6076u6709u62A5
u4E0Au6D77u5E2E
u4E0Au6D77u5B64u513Fu9662
u90B5u5BB6u5065
u795Eu901Au52A0u6301u6CD5
u6C88u5F64
u5347u5929
u76DBu534Eu4EC1
u76DBu96EA
u5E08u7236
u77F3u6208
u65F6u4EE3u8BBAu575B
u65F6u4E8Bu8BBAu575B
u4E16u754Cu7ECFu6D4Eu5BFCu62A5
u4E8Bu5B9Eu72ECu7ACB
u53CCu5341u8282
u6C34u6241
u7A0Eu529B
u53F8u9A6Cu664B
u53F8u9A6Cu7490
u53F8u5F92u534E
u65AFu8BFA
u56DBu5DDDu72ECu7ACB
u5B8Bu5E73
u5B8Bu4E66u5143
u82CFu7ECDu667A
u82CFu6653u5EB7
u53F0u76DF
u53F0u6E7Eu72D7
u53F0u6E7Eu5EFAu56FDu8FD0u52A8u7EC4u7EC7
u53F0u6E7Eu9752u5E74u72ECu7ACBu8054u76DF
u53F0u6E7Eu653Fu8BBAu533A
u53F0u6E7Eu81EAu7531u8054u76DF
u592Au5B50u515A
u6C64u5149u4E2D
u5510u67CFu6865
u5510u6377
u6ED5u6587u751F
u5929u6012
u5929u846C
u7AE5u5C79
u7EDFu72EC
u7EDFu72ECu8BBAu575B
u7EDFu6218
u5C60u6740
u5916u4EA4u8BBAu575B
u5916u4EA4u4E0Eu65B9u7565
u4E07u6DA6u5357
u4E07u7EF4u8BFBu8005u8BBAu575B
u4E07u6653u4E1C
u6C6Au5CB7
u738Bu5B9Du68EE
u738Bu70B3u7AE0
u738Bu7B56
u738Bu8D85u534E
u738Bu8F85u81E3
u738Bu521A
u738Bu6DB5u4E07
u738Bu6CAAu5B81
u738Bu519Bu6D9B
u738Bu529Bu96C4
u738Bu745Eu6797
u738Bu6DA6u751F
u738Bu82E5u671B
u738Bu5E0Cu54F2
u738Bu79C0u4E3D
u738Bu51B6u576A
u7F51u7279
u9B4Fu65B0u751F
u6E29u5143u51EF
u6587u9769
u65E0u754Cu6D4Fu89C8u5668
u5434u767Eu76CA
u5434u65B9u57CE
u5434u5F18u8FBE
u5434u5B8Fu8FBE
u5434u4EC1u534E
u5434u5B66u707F
u5434u5B66u74A8
u543Eu5C14u5F00u5E0C
u4E94u4E0D
u4F0Du51E1
u897Fu85CF
u6D17u8111
u9879u6000u8BDA
u9879u5C0Fu5409
u5C0Fu53C2u8003
u8096u5F3A
u90AAu6076
u8C22u957Fu5EF7
u8C22u9009u9A8F
u8C22u4E2Du4E4B
u8F9Bu704Fu5E74
u65B0u89C2u5BDFu8BBAu575B
u65B0u534Eu4E3Eu62A5
u65B0u534Eu5185u60C5
u65B0u534Eu901Au8BBAu575B
u65B0u751Fu7F51
u65B0u95FBu5C01u9501
u65B0u8BEDu4E1D
u4FE1u7528u5371u673A
u90A2u94EE
u718Au708E
u718Au7131
u4FEEu70BC
u5F90u90A6u79E6
u5F90u624Du539A
u5F90u5321u8FEA
u5F90u6C34u826F
u8BB8u5BB6u5C6F
u859Bu4F1F
u5B66u6F6E
u5B66u8054
u5B66u4E60u73ED
u5B66u8FD0
u5B66u81EAu8054
u96EAu5C71u72EEu5B50
u4E25u5BB6u5176
u4E25u5BB6u797A
u960Eu660Eu590D
u989Cu5C04
u592Eu89C6u5185u90E8u665Au4F1A
u6768u6000u5B89
u6768u5EFAu5229
u6768u5DCD
u6768u6708u6E05
u6768u5468
u59DAu6708u8C26
u591Cu8BDDu7D2Bu7981u57CE
u4E00u4E2Du4E00u53F0
u4E49u89E3
u4EA6u51E1
u5F02u89C1u4EBAu58EB
u5F02u8BAEu4EBAu58EB
u6613u4E39u8F69
u6613u5FD7u71B9
u5C39u5E86u6C11
u7531u559Cu8D35
u6E38u884C
u5E7Cu9F7F
u4E8Eu5927u6D77
u4E8Eu6D69u6210
u4F59u82F1u65F6
u8206u8BBA
u8206u8BBAu53CDu5236
u5B87u660Eu7F51
u5706u6EE1
u8FDCu5FD7u660E
u5CB3u6B66
u5728u5341u6708
u5219u6C11
u62E9u6C11
u6CFDu6C11
u8D3Cu6C11
u66FEu57F9u708E
u5F20u4F2Fu7B20
u5F20u94A2
u5F20u5B8Fu5821
u5F20u5065
u5F20u6797
u5F20u4E07u5E74
u5F20u4F1Fu56FD
u5F20u662Du5BCC
u5F20u5FD7u6E05
u8D75u6D77u9752
u8D75u5357
u8D75u54C1u6F5E
u8D75u6653u5FAE
u8D75u7D2Bu9633
u54F2u6C11
u771Fu76F8
u771Fu8C61
u9547u538B
u4E89u9E23u8BBAu575B
u6B63u89C1u7F51
u6B63u4E49u515Au8BBAu575B
u90D1u4E49
u5305u591C
u51B0u706B
u63D2B
u64CDB
u5904u5973
u6253u98DEu673A
u98CEu9A9A
u9EC4u8272u7535u5F71
u6FC0u60C5u89C6u9891
u53EBu6625
u72C2u63D2
u72C2u64CD
u72C2u641E
u9732u4E73
u88F8u804A
u88F8u4F53
u5C41u80A1
u5F3Au5978
u4E09u7EA7u7247
u8272u60C5
u8131u5149
u8131u8863
u6027u7231
u6027u611F
u6027u9AD8u6F6E
u6027u4EA4
u80F8u90E8
u8273u821E
u4E00u591Cu60C5
u6B32u671B
u64CDu4F60
u4F60u4ED6u5988
u50BBu903C
u50BBB
TMD
TNND
TND
u6CD5u8F6Eu529F
u6C5Fu6C0F
u674Eu6D2Au5FD7
u65B0u5510u4EBA
u6DEBu9761
u6DEBu6C34
u516Du56DBu4E8Bu4EF6
u8FF7u836F
u8FF7u660Fu836F
u7A83u542Cu5668
u516Du5408u5F69
u4E70u5356u67AAu652F
u9000u515A
u4E09u5511u4ED1
u9EBBu9189u836F
u9EBBu9189u4E59u919A
u77EDu4FE1u7FA4u53D1u5668
u5E1Du56FDu4E4Bu68A6
u6BDBu4E00u9C9C
u9ECEu9633u5E73
u8272u60C5u670Du52A1
2015
u5BF9u65E5u5F3Au786C
u51FAu552Eu67AAu652F
u6447u5934u4E38
u897Fu85CFu5929u846C
u9B3Cu6751
u519Bu957Fu53D1u5A01
PKu9ED1u793Eu4F1A
u6076u641Eu665Au4F1A
u67AAu51B3u5973u72AF
u6295u6BD2u6740u4EBA
u5F3Au786Cu53D1u8A00
u51FAu552Eu5047u5E01
u76D1u542Cu738B
u660Fu836F
u4FA6u63A2u8BBEu5907
u9EBBu9189u94A2u67AA
u53CDu534E
u5B98u5546u52FEu7ED3
u5347u8FBEu6BD5u4E1Au8BC1
u624Bu673Au590Du5236
u6234u6D77u9759
u81EAu6740u6307u5357
u81EAu6740u624Bu518C
u5F20u5C0Fu5E73
u4F73u9759u5B89u5B9Au7247
u8499u6C57u836Fu7C89
u53E4u65B9u8FF7u9999
u5F3Au6548u5931u610Fu836F
u8FF7u5978u836F
u900Fu89C6u773Cu955C
u8FDCu7A0Bu5077u62CD
u81EAu5236u624Bu67AA
u5B50u5973u4EFBu804Cu540Du5355
u6FC0u60C5u5C0Fu7535u5F71
u9EC4u8272u5C0Fu7535u5F71
u8272u60C5u5C0Fu7535u5F71
u5929u9E45u4E4Bu65C5
u76D8u53E4u4E50u961F
u9AD8u6821u66B4u4E71
u9AD8u6821u7FA4u4F53u4E8Bu4EF6
u5927u5B66u9A9Au4E71
u9AD8u6821u9A9Au4E71
u50ACu60C5u836F
u62CDu80A9u795Eu836F
u6625u836F
u7A83u542Cu5668u6750
u8EABu4EFDu8BC1u751Fu6210u5668
u67AAu51B3u73B0u573A
u51FAu552Eu624Bu67AA
u9EBBu9189u67AA
u529Eu7406u8BC1u4EF6
u529Eu7406u6587u51ED
u7586u72ECu85CFu72EC
u9AD8u5E72u5B50u5F1F
u9AD8u5E72u5B50u5973
u67AAu652Fu5F39u836F
u8840u8165u56FEu7247
u53CDu653Fu5E9C
u7981u4E66
u7279u7801
u6210u4EBAu7247
u6210u4EBAu7535u5F71
u6362u59BB
u53D1u7968
u589Eu503Cu7A0E
u8FF7u5E7Bu836F
u9690u5F62
u8033u673A
原文地址:https://www.cnblogs.com/htyj/p/8028949.html