zoukankan      html  css  js  c++  java
  • 过滤敏感词汇

    应用场景

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

    解决方案

      第一种方式

    • 创建敏感词汇文件

        首先需要准备一个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
  • 相关阅读:
    我是如何用三小时搞出个赚钱产品的?
    搭建一个基于nuxt.js的项目
    栅格系统
    git使用
    通过JS获取屏幕高度,借助屏幕高度设置div的高度
    如何理解盒模型
    e.target.value 和 this 的区别
    组件化设计:弹窗的使用逻辑
    uni-app 入坑记
    MAC 系统快捷键
  • 原文地址:https://www.cnblogs.com/htyj/p/8028949.html
Copyright © 2011-2022 走看看