应用场景
现在几乎所有的网站再发布带有文字信息的内容时都会要求过滤掉发动的、不健康的、影响社会安定的等敏感词汇,这里为大家提供了可以是现在这种功能的解决方案
解决方案
第一种方式
- 创建敏感词汇文件
首先需要准备一个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