【攻克Android (40)】JSON解析

阅读更多
本文围绕以下三个部分展开:

一、JSON解析
二、Gson
三、Fast-json





一、JSON解析

        1. 基本概念

        JSON: JavaScript Object Notation,是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。

        它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。

        JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。它通用于C, C++, C#, Java, JavaScript, Perl, Python, PHP等编程语言的数据交换传输。


        2. JSON基本结构

        (1)对象

        名值对的集合(A collection of name/value pairs)。

        一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号)。名值对之间使用“,”(逗号)分隔。

var myobj ={"name":"Tom","age":20};


        (2)数组

        值的有序列表(An ordered list of values)。


        3. JSON具有以下这些形式:对象 (object)、数组 (array)、值 (value)、字符串(string)、数值  (number)。



JSON解析案例

        创建测试类:JsonTest,继承自InstrumentationTestCase类,用于单元测试。

【攻克Android (40)】JSON解析_第1张图片


package com.android.dataparsing;

import android.test.InstrumentationTestCase;

/**
 * Created by Xiangdong on 2015/9/5.
 */
public class JsonTest extends InstrumentationTestCase {
    
}



        1. 将 java对象 转化为 JSON 对象/数组

package com.android.dataparsing;

import android.test.InstrumentationTestCase;
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONObject;

/**
 * Created by Xiangdong on 2015/9/5.
 */
public class JsonTest extends InstrumentationTestCase {
    private static final String TAG = "MainActivity";

    /**
     * 将 java对象 转化为 JSON 对象/数组
     *
     * @throws Exception
     */
    public void testObject2Json() throws Exception {
        // 情况1:java对象 -> JSON对象
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "段誉");
        jsonObject.put("age", 16);
        // 输出:{"name":"段誉","age":16}
        Log.v(TAG, jsonObject.toString());

        // 情况2:JSON对象中嵌套JSON对象
        JSONObject addressObj = new JSONObject();
        addressObj.put("city", "长沙");
        addressObj.put("street", "南阳街");
        // 嵌套
        jsonObject.put("address", addressObj);
        // 输出:{"name":"段誉","age":16,"address":{"city":"长沙",""street","南阳街"}}
        Log.v(TAG, jsonObject.toString());

        // 情况3:java对象 -> JSON数组
        JSONArray ja = new JSONArray();
        ja.put("130");
        ja.put("155");
        ja.put("188");
        // 输出:["130","155","188"]
        Log.v(TAG, ja.toString());

        // 情况4:JSON对象中嵌套JSON数组
        jsonObject.put("phone", ja);
        // 输出:{"name":"段誉","age":16,"address":{"city":"长沙","street":"南阳街"},"phone":["130","155","188"]}
        Log.v(TAG, jsonObject.toString());
    }
}





        2. JSON格式的字符串 转换为 JSON对象;JSON对象 转换为 字符串。

package com.android.dataparsing;

import android.test.InstrumentationTestCase;
import android.util.Log;

import org.json.JSONObject;

/**
 * Created by Xiangdong on 2015/9/5.
 */
public class JsonTest extends InstrumentationTestCase {
    private static final String TAG = "MainActivity";

    /**
     * JSON格式的字符串 转换为 JSON对象;
     * JSON对象 转换为 字符串
     *
     * @throws Exception
     */
    public void testJson2Object() throws Exception {
        String json = "{'name':'Tom','age':20}";
        // 情况1:将 JSON格式的字符串 转为 JSON对象
        JSONObject jsonObj = new JSONObject(json);
        // 输出:{"name":"Tom","age":"20"} - 引号就没有了。
        Log.v(TAG, jsonObj.toString());

        // 情况2:将JSON对象转换为 字符串
        String name = jsonObj.getString("name");
        int age = jsonObj.getInt("age");
        String text = String.format("%s,%d", name, age);
        // 输出:String->JSON: Tom,20
        Log.v(TAG, "JSON->String: " + text);
    }
}





        3. JSON数组格式的字符串 转换为 JSON数组;JSON数组中的每一项 转换为 字符串。

package com.android.dataparsing;

import android.test.InstrumentationTestCase;
import android.util.Log;

import org.json.JSONArray;

/**
 * Created by Xiangdong on 2015/9/5.
 */
public class JsonTest extends InstrumentationTestCase {
    private static final String TAG = "MainActivity";

    /**
     * JSON数组格式的字符串 转换为 JSON数组;
     * JSON数组中的每一项 转换为 字符串
     *
     * @throws Exception
     */
    public void testArray2Object() throws Exception {
        String json = "[jack,tom,rose]";
        JSONArray array = new JSONArray(json);
        for (int i = 0; i < array.length(); i++) {
            String s = String.format("%s", array.get(i));
            // jack
            // tom
            // rose
            Log.v(TAG, s);
        }
    }
}





        4. 读取 JSON 格式的文本文件,并进行解析。

        (1)先创建/导入 json.txt/json.json(是一个json格式 文本文件) 到 java目录下面。

【攻克Android (40)】JSON解析_第2张图片


[
 {"name":"段誉","age":"16","sex":"男","address":"大理"},
 {"name":"王语嫣","age":"17","sex":"女","address":"姑苏"},
 {"name":"乔峰","age":"32","sex":"男","address":"契丹"},
 {"name":"Tom","age":"20","sex":"M","address":"New York"}
]


        (2)将json.txt打包成jar包,并放到libs目录下,这样才能读取。

【攻克Android (40)】JSON解析_第3张图片


        (3)读取 JSON 格式的文本文件,并进行解析。

package com.android.dataparsing;

import android.test.InstrumentationTestCase;
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * Created by Xiangdong on 2015/9/5.
 */
public class JsonTest extends InstrumentationTestCase {
    private static final String TAG = "MainActivity";

    /**
     * 读取 JSON 格式的文本文件,并进行解析
     *
     * @throws Exception
     */
    public void testReadFile() throws Exception {
        // 读取文件到缓冲
        InputStream in = getClass().getClassLoader()
                .getResourceAsStream("json.txt");
        // 用 BufferedReader 包装(因为要用文件的内容,因此要通过这个流去读)
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));

        // 情况1:文件内容 转换为 字符串
        // 方法(1):使用 StringBuilder。
        // StringBuilder 类似于 StringBuffer,用来拼接字符串
        StringBuilder builder = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            builder.append(line);
        }
        // json.txt文件的内容
        String data = builder.toString();
        Log.v(TAG, data);

        // 方法(2):使用 String。
        String s = "";
        String line2;
        while ((line2 = reader.readLine()) != null) {
            s += line2;
        }
        // json.txt文件的内容
        Log.v(TAG, s);


        // 情况2:将JSON数组格式的字符串 转换为 JSON数组
        JSONArray ja = new JSONArray(data);

        // 情况3:从 JSON数组 中取出每个 JSON对象
        for (int i = 0; i < ja.length(); i++) {
            JSONObject jsonObj = ja.getJSONObject(i);

            // 情况4:将 JSON对象 转换为 字符串
            String name = jsonObj.getString("name");
            String age = jsonObj.getString("age");
            String sex = jsonObj.getString("sex");
            String address = jsonObj.getString("address");

            String text = String.format("%s,%s,%s,%s",
                    name, age, sex, address);
            Log.v(TAG, text);
        }
    }
}






二、Gson

        1. 概念

        Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。

        可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

        也可以通过Simple转换XML。


        2. 特点

        (1)快速、高效

        (2)代码量少、简洁

        (3)面向对象

        (4)数据传递和解析方便


        3. jar和源码下载地址:http://code.google.com/p/google-gson/downloads/list


        4. 基本用法

        (1)定义实体类

        (2)根据需要可以将JSON生成单个实体或列表实体集合


Gson解析案例



        1. 将 gson-2.2.2.jar 包和 simple-xml-2.6.9.jar 包放到libs下面。

【攻克Android (40)】JSON解析_第4张图片



        2. 在java目录下创建com.android.gson目录,里面创建三个类:Book、BookList和BookService。

        (1)Book.java:

package com.android.gson;


import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

/**
 * 创建1本书的pojo类。
 *
 *
 * 对应的XML结构:
 * 
 *   
 *   
 *   <author>
 *   <image>
 * </Book>
 *
 *
 * Created by XiangdongLee on 2015/9/7
 */
@Root   // 此处Root后面没有起名字,因此默认的根元素为:类名(Book)
public class Book {

    @Element
    private String isbn; // 编号

    @Element
    private String title;

    @Element
    private String author;

    @Element(required = false)  // 允许没有图片
    private String image;

    public Book() {
    }

    public Book(String isbn, String title, String author, String image) {
        this.isbn = isbn;
        this.title = title;
        this.author = author;
        this.image = image;
    }

    @Override
    public String toString() {
        return "Book [isbn=" + isbn + ", title=" + title + ", author=" + author
                + ", image=" + image + "]";
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }
}
</pre> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(2)</strong>BookList.java:</span> 
 <br> 
 <br> 
 <pre name="code" class="java">package com.android.gson;


import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

import java.util.LinkedList;

/**
 * 创建多本书(集合)的pojo类。
 *
 *
 * 对应的XML结构:
 * <book-list>
 *   <Book>
 *     <isbn>
 *     <title>
 *     <author>
 *     <image>
 *   </Book>
 *
 *   <Book>
 *     <isbn>
 *     <title>
 *     <author>
 *     <image>
 *   </Book>
 * </book-list>
 *
 *
 * Created by XiangdongLee on 2015/9/7
 */

@Root(name = "book-list")  // 此处Root后面根元素重新起了名字,因此根元素名字为:book-list
public class BookList {

    @ElementList(inline = true)  // 元素列表
    private LinkedList<Book> list;

    public BookList() {
        list = new LinkedList<Book>();  // 构造方法中创建出集合
    }

    public LinkedList<Book> getList() {
        return list;
    }

    public void setList(LinkedList<Book> list) {
        this.list = list;
    }

    public void addBook(Book book) {
        list.add(book);
    }

    public int size() {
        return list.size();
    }

    public void set(int index, Book element) {
        list.set(index, element);
    }

    public Book get(int index) {
        return list.get(index);
    }

    @Override
    public String toString() {
        return "BookList [list=" + list + "]";
    }
}
</pre> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(3)</strong>BookService.java:</span> 
 <br> 
 <br> 
 <pre name="code" class="java">package com.android.gson;

/**
 * Created by XiangdongLee on 2015/9/7
 */
public class BookService {
    private static BookList list = new BookList();

	// 放在 static静态块中:只要应用程序不结束,就一直存在
    // 这些数据相当于来自数据库的数据
    static {
        list.addBook(new Book("9787506287081", "认识电影", "路易斯·贾内梯", "/images/1.jpg"));
        list.addBook(new Book("9787513300711", "失控", "凯文·凯利", "/images/2.jpg"));
        list.addBook(new Book("9787115293800", "算法", "Robert", "/images/3.jpg"));
        list.addBook(new Book("9787544704007", "悲剧的诞生", "尼采", "/images/4.jpg"));
        list.addBook(new Book("9787506285728", "社会学与生活", "理查德.谢弗", "/images/5.jpg"));
        list.addBook(new Book("9787544707206", "万有引力之虹", "托马斯·品钦", "/images/6.jpg"));
        list.addBook(new Book("9787229042066", "地球往事", "刘慈欣", "/images/7.jpg"));
        list.addBook(new Book("9787229047221", "冰与火之歌", "乔治·马丁", "/images/8.jpg"));
    }

    public static BookList getBookList() {
        return list;
    }

    public static void addBook(Book book) {
        list.addBook(book);
    }
}
</pre> 
 <br> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>3. 创建测试类:GsonTest,继承自InstrumentationTestCase类,进行单元测试。</strong></span> 
 <br> 
 <br> 
 <pre name="code" class="java">package com.android.dataparsing;

import android.test.InstrumentationTestCase;

import com.android.gson.Book;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import org.simpleframework.xml.core.Persister;

import java.lang.reflect.Type;
import java.util.List;

/**
 * Created by XiangdongLee on 2015/9/7.
 */
public class GsonTest extends InstrumentationTestCase {
    private static final String TAG = "MainActivity";
    private Gson gson;
    private Type bookListType;

    private Persister persister;

    /**
     * 重写测试案例中的初始化方法:用来初始化 Gson
     *
     * @throws Exception
     */
    @Override
    protected void setUp() throws Exception {
        gson = new Gson();
        bookListType = new TypeToken<List<Book>>(){
        }.getType();
        persister = new Persister();
    }
}
</pre> 
 <br> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>4. Gson解析</strong></span> 
 <br> 
 <br>        
 <span style="font-size: medium;">使用 Gson 把 集合数据 转换为 json格式的字符串,然后再把 json格式的字符串 转换为 java对象。</span> 
 <br> 
 <br> 
 <pre name="code" class="java">package com.android.dataparsing;

import android.test.InstrumentationTestCase;
import android.util.Log;

import com.android.gson.Book;
import com.android.gson.BookList;
import com.android.gson.BookService;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import org.json.JSONArray;
import org.json.JSONObject;
import org.simpleframework.xml.core.Persister;

import java.lang.reflect.Type;
import java.util.List;

/**
 * Created by XiangdongLee on 2015/9/7.
 */
public class GsonTest extends InstrumentationTestCase {
    private static final String TAG = "MainActivity";
    private Gson gson;
    private Type bookListType;

    private Persister persister;

    /**
     * 重写测试案例中的初始化方法:用来初始化 Gson
     *
     * @throws Exception
     */
    @Override
    protected void setUp() throws Exception {
        gson = new Gson();
        bookListType = new TypeToken<List<Book>>(){
        }.getType();
        persister = new Persister();
    }

    /**
     * 使用 Gson 把 集合数据 转换为 json格式的字符串,
     * 然后再把 json格式的字符串 转换为 java对象。
     */
    public void testToJsonFromList() throws Exception{
        BookList list = BookService.getBookList();
        Log.v(TAG, list.toString());

        // 情况1:使用 Gson 把集合数据转换为 json格式的字符串
        String json = gson.toJson(list.getList(), bookListType);
        Log.v(TAG,json);

        // 情况2:使用 Gson把 json格式的字符串 转换为 java对象
        Book book = gson.fromJson(json, Book.class);
        //  Book [isbn=9787506287081, title=认识电影, author=路易斯·贾内梯, image=/images/1.jpg]
        Log.v(TAG,book.toString());

        // 情况2.1:也可以通过JSON把 json格式的字符串 转换为 json数组
        JSONArray ja = new JSONArray(json);
        for(int i=0;i<ja.length();i++){
            // 拿到 json对象中的 某一个值("title")。
            JSONObject jsonObj = ja.getJSONObject(i);
            // Log.v(TAG,jsonObj.toString());
            Log.v(TAG,jsonObj.getString("title"));
        }
    }
}
</pre> 
 <br> 
 <br> 
 <br> 
 <br> 
 <strong><span style="font-size: large;">三、Fast-json</span></strong> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>1. 概念</strong></span> 
 <br> 
 <br>        
 <span style="font-size: medium;">Fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。它具有极快的性能,宣称超越任其他的Java Json parser。</span> 
 <br> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>2. 特点</strong></span> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(1)</strong>快速:比其它任何基于Java的解析器和生成器更快,包括jackson。</span> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(2)</strong>强大:支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum。</span> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(3)</strong>零依赖:没有依赖其它任何类库除了JDK。</span> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(4)</strong>支持注解、支持全类型序列化。</span> 
 <br> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>3. 基本用法</strong></span> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(1)</strong>定义实体类</span> 
 <br> 
 <br>        
 <span style="font-size: medium;"><strong>(2)</strong>根据需要可以将JSON生成单个实体或列表实体集合</span> 
 <br> 
 <br> 
 <br> 
 <strong><span style="font-size: large;">Fast-json解析案例</span></strong> 
 <br> 
 <br>        
 <span style="font-size: medium;"><span style="color: red;">以后补充</span></span> 
 <br> 
 <br> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1176702490465349632"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Android,JSON解析,Gson解析,Fast-json解析,数据解析)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1948105614848749568.htm"
                           title="A316-HF-DAC-V1:专业USB HiFi音频解码器评估板技术解析" target="_blank">A316-HF-DAC-V1:专业USB HiFi音频解码器评估板技术解析</a>
                        <span class="text-muted">Phaten</span>
<a class="tag" taget="_blank" href="/search/XMOS%E6%A8%A1%E7%BB%84%E8%AF%84%E4%BC%B0%E6%9D%BF/1.htm">XMOS模组评估板</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/XMOS/1.htm">XMOS</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E7%BB%84/1.htm">模组</a><a class="tag" taget="_blank" href="/search/%E8%A7%A3%E7%A0%81%E5%99%A8/1.htm">解码器</a><a class="tag" taget="_blank" href="/search/%E8%AF%84%E4%BC%B0%E6%9D%BF/1.htm">评估板</a>
                        <div>引言随着高解析度音频的普及,对高品质音频解码设备的需求日益增长。本文将介绍一款专为USBHiFi音频解码器设计的专业评估板——A316-HF-DAC-V1,这是一款基于XMOSXU316技术的高性能音频解码评估平台。产品概述A316-HF-DAC-V1是一款专业的USBHiFi音频解码器评估板,采用A316-1926-V1XU316模组设计。该评估板支持多种音频输入方式,包括USB、光纤、同轴以及</div>
                    </li>
                    <li><a href="/article/1948105487362879488.htm"
                           title="USB 声卡全解析:提升音频体验的得力助手" target="_blank">USB 声卡全解析:提升音频体验的得力助手</a>
                        <span class="text-muted">Phaten</span>
<a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/USB%E5%A3%B0%E5%8D%A1/1.htm">USB声卡</a>
                        <div>在当今数字化的时代,音频领域的追求愈发多元。无论是热衷聆听高品质音乐的爱好者,还是在专业音频工作中精雕细琢的人士,亦或是在游戏世界里渴望极致音效沉浸的玩家,都始终在寻觅能让音频体验更上一层楼的妙法。而USB声卡,这一借助USB接口连接的多功能外置声卡,恰似一把开启卓越音频之门的关键钥匙,致力于优化计算机的音频品质与性能,并且巧妙地拓展了计算机原本匮乏的音频接口。不管是对那差强人意的内置音响系统心怀</div>
                    </li>
                    <li><a href="/article/1948104225493938176.htm"
                           title="A316-HF-I2S-V1:USB TO I2S HiFi音频转换器评估板技术解析" target="_blank">A316-HF-I2S-V1:USB TO I2S HiFi音频转换器评估板技术解析</a>
                        <span class="text-muted">Phaten</span>
<a class="tag" taget="_blank" href="/search/XMOS%E6%A8%A1%E7%BB%84%E8%AF%84%E4%BC%B0%E6%9D%BF/1.htm">XMOS模组评估板</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/XMOS/1.htm">XMOS</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E7%BB%84/1.htm">模组</a><a class="tag" taget="_blank" href="/search/USB%E5%A3%B0%E5%8D%A1/1.htm">USB声卡</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E7%A1%AC%E4%BB%B6/1.htm">智能硬件</a>
                        <div>引言随着高解析度音频应用的不断发展,USB与I2S之间的高品质音频转换需求日益增长。本文将介绍一款专为USBTOI2S音频转换设计的评估板——A316-HF-I2S-V1,这是一款基于XMOSXU316技术的专业音频接口转换平台。产品概述A316-HF-I2S-V1是一款专为USBTOI2SHiFi音频转换器设计的评估板,采用A316-Mini-V1模组设计。该评估板支持USB音频输入,并提供I2</div>
                    </li>
                    <li><a href="/article/1948100064748564480.htm"
                           title="这才是你需要了解的时序数据库 Apache-IoTDB 源码解析之系统架构!" target="_blank">这才是你需要了解的时序数据库 Apache-IoTDB 源码解析之系统架构!</a>
                        <span class="text-muted">AI科学小老师</span>

                        <div>个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈1.系统架构1.1系统简介以上示意图可能非常简单,但我觉得足够表明一个整体架构。当一台设备、一辆车连接到协议网关后,便开始了真正的收发数据。一般通信的方式都是基于tcp,搞一段二进制协议,所以协议网关基本要做的工作就是完成对连接的管理、完成对数据的收发及编解码。当数据完成编解码之后一般会发往消息队列当中,一般都是Kafka之中。用来</div>
                    </li>
                    <li><a href="/article/1948099731766964224.htm"
                           title="解析:投票活动买票查得出吗,怎样才能不被发现" target="_blank">解析:投票活动买票查得出吗,怎样才能不被发现</a>
                        <span class="text-muted">神州网络公司</span>

                        <div>解析:投票活动刷票查得出吗,怎样才能不被发现这个基本上是不会查的,但是如果被人举报的话是有可能封号的哈IP地址。每一个微信投票评选活动举办的时候,主办方都会对投票和刷票有严格的控制,如果是人工投票的活动,很难被发现,但是人工刷票的话,主办方很容易通过查看刷票的时间、设备、频率、IP地址等都可以查出来。说说微信怎么刷票快,以下内容仅供参考哦:1.把投票链接分享到各个朋友圈首先最简单的就是将你要投票的</div>
                    </li>
                    <li><a href="/article/1948098301345722368.htm"
                           title="时序数据库 Apache-IoTDB 源码解析之系统架构(二)" target="_blank">时序数据库 Apache-IoTDB 源码解析之系统架构(二)</a>
                        <span class="text-muted">zhoumouren88</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a>
                        <div>上一章聊到时序数据是什么样,物联网行业中的时序数据的特点:存量数据大、新增数据多(采集频率高、设备量多)。详情请见:时序数据库Apache-IoTDB源码解析之前言(一)打一波广告,欢迎大家访问IoTDB仓库,求一波Star。这一章主要想聊一聊:物联网行业的基本系统架构,及使用数据库遇到的需求与挑战IoTDB的功能特点及系统架构车联网因为本人是在做车联网行业,所以对这个行业的信息了解更深入一些,能</div>
                    </li>
                    <li><a href="/article/1948095148885864448.htm"
                           title="Android Gson复杂数据结构(如Map、List)的序列化逻辑原理剖析" target="_blank">Android Gson复杂数据结构(如Map、List)的序列化逻辑原理剖析</a>
                        <span class="text-muted"></span>

                        <div>一、复杂数据结构序列化概述1.1复杂数据结构处理的重要性在Android开发中,JSON数据往往包含复杂数据结构,如Map、List等。Gson作为常用的JSON处理库,其对复杂数据结构的序列化能力至关重要。准确处理这些结构能确保数据在网络传输、本地存储等场景下保持完整的语义和结构,避免数据丢失或格式错乱。1.2核心处理流程Gson对复杂数据结构的序列化主要包含以下步骤:类型识别:确定待序列化对象</div>
                    </li>
                    <li><a href="/article/1948095022616342528.htm"
                           title="深入理解 UniApp:跨平台开发的终极解决方案" target="_blank">深入理解 UniApp:跨平台开发的终极解决方案</a>
                        <span class="text-muted"></span>

                        <div>深入理解UniApp:跨平台开发的终极解决方案一、UniApp概述:重新定义跨平台开发(一)UniApp的诞生背景在移动互联网高速发展的今天,多端适配成为开发者面临的主要挑战。传统开发模式下,针对iOS、Android、微信小程序、H5等不同平台需要编写多套代码,开发成本高且维护困难。DCloud公司于2019年推出的UniApp,正是为了解决这一行业痛点而生。它基于Vue.js语法规范,实现了"</div>
                    </li>
                    <li><a href="/article/1948094266098118656.htm"
                           title="如何设计一个高并发短链接服务(如 bit.ly)?" target="_blank">如何设计一个高并发短链接服务(如 bit.ly)?</a>
                        <span class="text-muted">天天摸鱼的java工程师</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>如何设计一个高并发短链接服务(如bit.ly)?引言:在社交媒体营销、短信推广等场景中,短链接服务已成为互联网基础设施的关键组件。全球每天有数十亿短链接被创建,如Bitly、TinyURL等服务每天处理数十亿请求。作为一名拥有8年经验的Java架构师,我曾主导设计过日处理千万级短链接的系统。今天我将从原理到实现,深度解析如何构建一个高性能、高可用、可扩展的短链接服务。一、业务场景与技术挑战1.1核</div>
                    </li>
                    <li><a href="/article/1948092878291005440.htm"
                           title="uni-app跨平台开发知识点总结" target="_blank">uni-app跨平台开发知识点总结</a>
                        <span class="text-muted"></span>

                        <div>uni-app简介uni-app概述:uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。uni-app由来:是为了解决跨平台开发的问题。在移动应用开发中,不同平台(如iOS、Android)有不同的开发语言和技术栈,这导致开发者</div>
                    </li>
                    <li><a href="/article/1948090988824162304.htm"
                           title="解密 Python 的 MRO:C3 线性化如何优雅解决多重继承的菱形难题》" target="_blank">解密 Python 的 MRO:C3 线性化如何优雅解决多重继承的菱形难题》</a>
                        <span class="text-muted"></span>

                        <div>《解密Python的MRO:C3线性化如何优雅解决多重继承的菱形难题》引言:继承的优雅与复杂在Python的面向对象编程中,继承是一种强大的机制,它让我们能够复用代码、构建抽象层次、实现多态行为。然而,当我们引入多重继承时,继承体系的复杂性也随之而来,尤其是著名的“菱形继承问题”。Python通过一种称为C3线性化(C3Linearization)的算法来解决方法解析顺序(MethodResolu</div>
                    </li>
                    <li><a href="/article/1948089974813421568.htm"
                           title="云平台健康检查全攻略:从入门到精通" target="_blank">云平台健康检查全攻略:从入门到精通</a>
                        <span class="text-muted">AI云原生与云计算技术学院</span>
<a class="tag" taget="_blank" href="/search/AI%E4%BA%91%E5%8E%9F%E7%94%9F%E4%B8%8E%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">AI云原生与云计算</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>云平台健康检查全攻略:从入门到精通关键词:云平台、健康检查、监控指标、自动化运维、高可用性、故障诊断、性能优化摘要:本文全面解析云平台健康检查的核心技术与实践方法。从基础概念到高级应用,详细讲解健康检查的原理、实现方式和最佳实践。内容包括监控指标体系设计、自动化检查工具开发、常见故障诊断方法以及性能优化策略。通过实际案例和代码演示,帮助读者掌握构建健壮云平台的关键技术,提升系统可靠性和运维效率。1</div>
                    </li>
                    <li><a href="/article/1948088083639496704.htm"
                           title="(二十三)Java反射机制深度解析:原理、应用与最佳实践" target="_blank">(二十三)Java反射机制深度解析:原理、应用与最佳实践</a>
                        <span class="text-muted">MeyrlNotFound</span>
<a class="tag" taget="_blank" href="/search/JAVA/1.htm">JAVA</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>一、反射机制概述1.1什么是反射机制Java反射机制(Reflection)是Java语言中一种强大的内省(introspection)能力,它允许程序在运行时(runtime)获取类的内部信息,并能直接操作类或对象的内部属性及方法。这种"动态性"使得Java程序可以突破编译时的限制,实现许多灵活的功能。反射的核心思想是:在运行时而非编译时获取类型信息并执行操作。这与传统的静态编程形成鲜明对比,在</div>
                    </li>
                    <li><a href="/article/1948087956933767168.htm"
                           title="【EF Core】 EF Core 原生SQL查询深度解析" target="_blank">【EF Core】 EF Core 原生SQL查询深度解析</a>
                        <span class="text-muted"></span>

                        <div>文章目录前言一、基于实体的SQL语句查询1.1通过FromSql实现基于实体的SQL语句查询1.2通过FromSql实现基于实体的储存过程/视图查询1.3FromSql在底层做了些什么1.4参数化的好处1.5LINQ组合1.6FromSqlInterpolated与FromRaw二、执行非查询SQL三、查询标量(非实体)类型的SQL语句总结前言在EFCore中使用原生SQL执行查询本身不是一种常见</div>
                    </li>
                    <li><a href="/article/1948087957416112128.htm"
                           title="【ASP.NET Core】内存缓存(MemoryCache)原理、应用及常见问题解析" target="_blank">【ASP.NET Core】内存缓存(MemoryCache)原理、应用及常见问题解析</a>
                        <span class="text-muted">ArabySide</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/ASP.NET/1.htm">ASP.NET</a><a class="tag" taget="_blank" href="/search/Core/1.htm">Core</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/core/1.htm">core</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a>
                        <div>系列文章目录链接:【ASP.NETCore】REST与RESTful详解,从理论到实现链接:【ASP.NETCore】深入理解Controller的工作机制文章目录系列文章目录前言一、ASP.NETCore中的内存缓存——MemoryCache1.1内存缓存的结构1.2MemoryCache的注册1.3MemoryCache的配置项1.3.1缓存时间的过期策略1.3.2缓存的优先级1.4Memor</div>
                    </li>
                    <li><a href="/article/1948086444585185280.htm"
                           title="【ASP.NET Core】ASP.NET Core中Redis分布式缓存的应用" target="_blank">【ASP.NET Core】ASP.NET Core中Redis分布式缓存的应用</a>
                        <span class="text-muted">ArabySide</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/Core/1.htm">Core</a><a class="tag" taget="_blank" href="/search/Redis/1.htm">Redis</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F%E7%BC%93%E5%AD%98/1.htm">分布式缓存</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/core/1.htm">core</a>
                        <div>系列文章目录链接:【ASP.NETCore】REST与RESTful详解,从理论到实现链接:【ASP.NETCore】深入理解Controller的工作机制链接:【ASP.NETCore】内存缓存(MemoryCache)原理、应用及常见问题解析文章目录系列文章目录前言一、Redis1.1Redis简介1.2常用数据结构1.3Redis的持久化1.3.1RDB1.3.2AOF1.4常用应用场景1.</div>
                    </li>
                    <li><a href="/article/1948084200078897152.htm"
                           title="2019年陕西中考语文真题“综合性学习”解析" target="_blank">2019年陕西中考语文真题“综合性学习”解析</a>
                        <span class="text-muted">悦阅空间</span>

                        <div>2019年陕西中考语文真题“综合性学习”解析咸阳乾县花口初中王娟新课标指出:综合性学习主要体现为语文知识的综合运用、听说读写能力整体的发展、语文课程与其他课程的沟通、书本学习与实践活动的紧密结合。2019年陕西中考语文“综合性学习”题目,以“我与青春有个约会”为主题,内容丰富,综合性强,活动形式由“写寄语”、“展风采”“、“宣誓言”、“有行动”四部分构成,分别考查了汉字笔顺、口语表达、句子修辞和方</div>
                    </li>
                    <li><a href="/article/1948082161282248704.htm"
                           title="Ubuntu的apt、apt-get和snap闲聊(2025年3月28日)" target="_blank">Ubuntu的apt、apt-get和snap闲聊(2025年3月28日)</a>
                        <span class="text-muted"></span>

                        <div>为什么Ubuntu中有了APT、APT-GET还要加上Snap?在Ubuntu系统中,软件管理工具的多样性(如APT、APT-GET和Snap)常常让人疑惑:既然已经有了成熟的APT和APT-GET,为什么还要引入Snap?本文将从不同角度解析这一问题,探讨Snap的独特价值及其与传统工具的共存意义。这份笔记适用于Linux用户、开发者以及对软件生态感兴趣的读者,内容将随技术演进保持更新。QA:解</div>
                    </li>
                    <li><a href="/article/1948082161772982272.htm"
                           title="API开发全攻略:从入门到精通的企业级API架构与实战" target="_blank">API开发全攻略:从入门到精通的企业级API架构与实战</a>
                        <span class="text-muted">Android洋芋</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/API%E8%AE%BE%E8%AE%A1/1.htm">API设计</a><a class="tag" taget="_blank" href="/search/RESTful/1.htm">RESTful</a><a class="tag" taget="_blank" href="/search/API/1.htm">API</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84/1.htm">微服务架构</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">实战案例</a>
                        <div>简介API开发已成为现代软件架构的核心能力,掌握API设计与实现技术能显著提升开发效率和系统可扩展性。本文将从零开始,全面解析API的基础概念、架构设计、安全认证、性能优化等关键技术点,并提供完整的Python和Go语言代码实战示例,帮助开发者构建高性能、可扩展的企业级API系统。本文旨在为初学者和进阶开发者提供一份全面的API开发指南。内容涵盖API的基础概念、类型分类、架构设计、安全认证、性能</div>
                    </li>
                    <li><a href="/article/1948078089133158400.htm"
                           title="三分钟集成 Tap 防沉迷 SDK(Unity 版)" target="_blank">三分钟集成 Tap 防沉迷 SDK(Unity 版)</a>
                        <span class="text-muted">暮知秋</span>

                        <div>一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!弹窗提示开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本Unity集成Demo参考链接UnityTap</div>
                    </li>
                    <li><a href="/article/1948068422667530240.htm"
                           title="海外短剧CPS推广系统分销开发及剧场对接全流程解析" target="_blank">海外短剧CPS推广系统分销开发及剧场对接全流程解析</a>
                        <span class="text-muted">vx_qutudy</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%B7%E5%A4%96%E7%9F%AD%E5%89%A7%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/1.htm">海外短剧系统开发</a><a class="tag" taget="_blank" href="/search/%E6%B5%B7%E5%A4%96%E7%9F%AD%E5%89%A7cps%E5%88%86%E9%94%80/1.htm">海外短剧cps分销</a>
                        <div>一、市场背景与趋势分析1.1海外短剧市场爆发式增长根据《2025海外短剧推广CPS系统搭建如何在海外市场推广短剧?》数据显示,2025年Q1海外短剧市场收入环比增长39%,用户留存率达45%。中东市场通过阿拉伯语配音+本地化支付策略,成为增长最快的区域。非洲市场(尼日利亚、肯尼亚)年轻人口占比超60%,2025年Q1下载量增长120%,成为新兴蓝海。1.2CPS模式的核心优势CPS(CostPer</div>
                    </li>
                    <li><a href="/article/1948063126440177664.htm"
                           title="彻底拆解 Vue scoped 指令:从编译原理到工程实践的全链路解析" target="_blank">彻底拆解 Vue scoped 指令:从编译原理到工程实践的全链路解析</a>
                        <span class="text-muted">是罐装可乐</span>
<a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>引言我们在开发Vue项目时,经常会给标签加上scoped特性来实现组件的样式隔离。但它究竟是如何做到这一点的呢?作为开发者,我们不仅要会用这个特性,更要深入了解其底层原理。只有这样,在实际开发中才能避开各种潜在的陷阱,提升解决问题的效率。接下来,我们就来彻底剖析一下Vue的scoped指令,看看它到底是如何实现样式隔离的。css编译当标签带有scoped属性时,其CSS样式仅作用于当前组件内的元素</div>
                    </li>
                    <li><a href="/article/1948056574404653056.htm"
                           title="List和Map的区别" target="_blank">List和Map的区别</a>
                        <span class="text-muted">雪碧聊技术</span>
<a class="tag" taget="_blank" href="/search/Java%E5%85%AB%E8%82%A1%E6%96%87/1.htm">Java八股文</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>欢迎来到我的Java八股文专栏!各位程序员小伙伴们好呀~我是雪碧聊技术,很高兴能在CSDN与大家相遇!✨专栏介绍这个专栏将专注于分享Java面试中的经典"八股文"知识点,内容涵盖:Java基础核心概念JVM原理与性能调优多线程与并发编程️设计模式实战️常用框架源码解析⚙️系统架构设计思想为什么选择这个专栏?精准定位:直击大厂Java面试高频考点系统全面:从基础到进阶,构建完整知识体系实战导向:理论</div>
                    </li>
                    <li><a href="/article/1948054810230059008.htm"
                           title="解决幽默【VmmenWSA】占用系统资源过高且无法直接结束进程办法" target="_blank">解决幽默【VmmenWSA】占用系统资源过高且无法直接结束进程办法</a>
                        <span class="text-muted">鱼圆食不食</span>
<a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a>
                        <div>起因今天打开任务管理器时,偶然发现一个名为VmmemWSA的进程占用了大量内存。经过询问,得知它与Windows虚拟化有关,但目前电脑上并没有运行任何虚拟化工具(如WSL)。尝试使用管理员权限和命令行工具(CLI)等方法都无法关闭该进程。经过多次尝试,终于找到了解决办法,接下来分享给大家。出现原因VmmemWSA是与WindowsSubsystemforAndroid(WSA)相关的进程。当尝试关</div>
                    </li>
                    <li><a href="/article/1948053423022731264.htm"
                           title="云服务器环境下Linux系统epoll机制与高并发服务器优化实践" target="_blank">云服务器环境下Linux系统epoll机制与高并发服务器优化实践</a>
                        <span class="text-muted">cpsvps_net</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>在当今云计算时代,云已成为企业部署高并发服务的首选平台。本文将深入探讨Linux系统核心的epoll机制如何赋能云环境下的高并发服务器,解析其底层工作原理与性能优势,并对比传统IO复用模型的差异,帮助开发者构建更高效的云端服务架构。云服务器环境下Linux系统epoll机制与高并发服务器优化实践一、云服务器环境对高并发服务的特殊需求在云服务器环境中,资源弹性扩展的特性使得高并发服务成为可能,但同时</div>
                    </li>
                    <li><a href="/article/1948052791264079872.htm"
                           title="DDD核心知识解析" target="_blank">DDD核心知识解析</a>
                        <span class="text-muted">我是廖志伟</span>
<a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/DDD/1.htm">DDD</a><a class="tag" taget="_blank" href="/search/Software/1.htm">Software</a><a class="tag" taget="_blank" href="/search/Design/1.htm">Design</a><a class="tag" taget="_blank" href="/search/Business/1.htm">Business</a><a class="tag" taget="_blank" href="/search/Logic/1.htm">Logic</a>
                        <div>我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队</div>
                    </li>
                    <li><a href="/article/1948052664944226304.htm"
                           title="ShardingSphere核心机制解析" target="_blank">ShardingSphere核心机制解析</a>
                        <span class="text-muted">我是廖志伟</span>
<a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/Database/1.htm">Database</a><a class="tag" taget="_blank" href="/search/Middleware/1.htm">Middleware</a><a class="tag" taget="_blank" href="/search/Distributed/1.htm">Distributed</a><a class="tag" taget="_blank" href="/search/Database/1.htm">Database</a><a class="tag" taget="_blank" href="/search/ShardingSphere/1.htm">ShardingSphere</a>
                        <div>我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队</div>
                    </li>
                    <li><a href="/article/1948051909386498048.htm"
                           title="JVM与Spring Boot核心解析" target="_blank">JVM与Spring Boot核心解析</a>
                        <span class="text-muted">我是廖志伟</span>
<a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/JVM/1.htm">JVM</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Boot/1.htm">Boot</a>
                        <div>我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri</div>
                    </li>
                    <li><a href="/article/1948051782613659648.htm"
                           title="领域驱动设计(DDD)实践解析" target="_blank">领域驱动设计(DDD)实践解析</a>
                        <span class="text-muted"></span>

                        <div>我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri</div>
                    </li>
                    <li><a href="/article/1948051783058255872.htm"
                           title="Spring框架核心技术解析" target="_blank">Spring框架核心技术解析</a>
                        <span class="text-muted"></span>

                        <div>我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri</div>
                    </li>
                                <li><a href="/article/44.htm"
                                       title="Enum 枚举" target="_blank">Enum 枚举</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a>
                                    <div>原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration 
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样: 
public static final int APPLE_FUJI = 0</div>
                                </li>
                                <li><a href="/article/171.htm"
                                       title="Java8简明教程" target="_blank">Java8简明教程</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk1.8/1.htm">jdk1.8</a>
                                    <div>        Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。  
一.允许在接口中有默认方法实现 
        Java 8 允许我们使用default关键字,为接口声明添</div>
                                </li>
                                <li><a href="/article/298.htm"
                                       title="Oracle表维护 快速备份删除数据" target="_blank">Oracle表维护 快速备份删除数据</a>
                                    <span class="text-muted">cuisuqiang</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E7%B4%A2%E5%BC%95/1.htm">索引</a><a class="tag" taget="_blank" href="/search/%E5%BF%AB%E9%80%9F/1.htm">快速</a><a class="tag" taget="_blank" href="/search/%E5%A4%87%E4%BB%BD/1.htm">备份</a><a class="tag" taget="_blank" href="/search/%E5%88%A0%E9%99%A4/1.htm">删除</a>
                                    <div>我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。 
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。 
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。 
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备</div>
                                </li>
                                <li><a href="/article/425.htm"
                                       title="java多态内存分析" target="_blank">java多态内存分析</a>
                                    <span class="text-muted">麦田的设计者</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98%E5%88%86%E6%9E%90/1.htm">内存分析</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E6%80%81%E5%8E%9F%E7%90%86/1.htm">多态原理</a><a class="tag" taget="_blank" href="/search/%E6%8E%A5%E5%8F%A3%E5%92%8C%E6%8A%BD%E8%B1%A1%E7%B1%BB/1.htm">接口和抽象类</a>
                                    <div>      “  时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。 
      但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心</div>
                                </li>
                                <li><a href="/article/552.htm"
                                       title="Xshell实现Windows上传文件到Linux主机" target="_blank">Xshell实现Windows上传文件到Linux主机</a>
                                    <span class="text-muted">被触发</span>
<a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a>
                                    <div>经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛; 
我是怎么操作的: 
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo</div>
                                </li>
                                <li><a href="/article/679.htm"
                                       title="类的加载ClassLoader" target="_blank">类的加载ClassLoader</a>
                                    <span class="text-muted">肆无忌惮_</span>
<a class="tag" taget="_blank" href="/search/ClassLoader/1.htm">ClassLoader</a>
                                    <div>类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。 
  
其中重要的方法为findClass(String name)。 
  
如何写一个自己的类加载器呢? 
首先写一个便于测试的类Student</div>
                                </li>
                                <li><a href="/article/806.htm"
                                       title="html5写的玫瑰花" target="_blank">html5写的玫瑰花</a>
                                    <span class="text-muted">知了ing</span>
<a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                    <div><html>  
<head>  
<title>I Love You!</title>  
<meta charset="utf-8" />  
</head>  
<body>  
<canvas id="c"></canvas>  
</div>
                                </li>
                                <li><a href="/article/933.htm"
                                       title="google的ConcurrentLinkedHashmap源代码解析" target="_blank">google的ConcurrentLinkedHashmap源代码解析</a>
                                    <span class="text-muted">矮蛋蛋</span>
<a class="tag" taget="_blank" href="/search/LRU/1.htm">LRU</a>
                                    <div>原文地址: 
http://janeky.iteye.com/blog/1534352 
简述 
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对 
 
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见 
 
http://code.google.com/p/concurrentlinke</div>
                                </li>
                                <li><a href="/article/1060.htm"
                                       title="webservice获取访问服务的ip地址" target="_blank">webservice获取访问服务的ip地址</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/webservice/1.htm">webservice</a>
                                    <div>1. 首先注入javax.xml.ws.WebServiceContext, 
@Resource 
 private WebServiceContext context; 
 
 
2. 在方法中获取交换请求的对象。 
 
 
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http</div>
                                </li>
                                <li><a href="/article/1187.htm"
                                       title="菜鸟的java基础提升之道——————>是否值得拥有" target="_blank">菜鸟的java基础提升之道——————>是否值得拥有</a>
                                    <span class="text-muted">百合不是茶</span>

                                    <div>1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员 
  
  
 java组成:</div>
                                </li>
                                <li><a href="/article/1314.htm"
                                       title="通过修改Linux服务自动启动指定应用程序" target="_blank">通过修改Linux服务自动启动指定应用程序</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下:  chkconfig

功能说明:检查,设置系统的各种服务。

语  法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level  <</SPAN></div>
                                </li>
                                <li><a href="/article/1441.htm"
                                       title="spring拦截器的一个简单实例" target="_blank">spring拦截器的一个简单实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E6%8B%A6%E6%88%AA%E5%99%A8/1.htm">拦截器</a><a class="tag" taget="_blank" href="/search/Interceptor/1.htm">Interceptor</a>
                                    <div>Purview接口 
package aop;

public interface Purview {
    void checkLogin();
} 
Purview接口的实现类PurviesImpl.java 
package aop;

public class PurviewImpl implements Purview {
	
    public void check</div>
                                </li>
                                <li><a href="/article/1568.htm"
                                       title="[Velocity二]自定义Velocity指令" target="_blank">[Velocity二]自定义Velocity指令</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/velocity/1.htm">velocity</a>
                                    <div>什么是Velocity指令 
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令 
  自定义指令(Directive)的一般步骤 
&nbs</div>
                                </li>
                                <li><a href="/article/1695.htm"
                                       title="【Hive十】Programming Hive学习笔记" target="_blank">【Hive十】Programming Hive学习笔记</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/programming/1.htm">programming</a>
                                    <div> 第二章 Getting Started 
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.</div>
                                </li>
                                <li><a href="/article/1822.htm"
                                       title="nginx有选择性进行限制" target="_blank">nginx有选择性进行限制</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/nginx+%E5%8A%A8%E9%9D%99%E3%80%80%E9%99%90%E5%88%B6/1.htm">nginx 动静 限制</a>
                                    <div>http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...

    server {...
       location ~.*\.(gif|png|css|js|icon)$ {
   </div>
                                </li>
                                <li><a href="/article/1949.htm"
                                       title="java-4.-在二元树中找出和为某一值的所有路径 ." target="_blank">java-4.-在二元树中找出和为某一值的所有路径 .</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>
/*
	 * 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
	 * 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
</div>
                                </li>
                                <li><a href="/article/2076.htm"
                                       title="Netty学习笔记" target="_blank">Netty学习笔记</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a>
                                    <div>本文是阅读以下两篇文章时: 
 
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html 
 
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html 
我的一些笔记 
 
===</div>
                                </li>
                                <li><a href="/article/2203.htm"
                                       title="js获取项目路径" target="_blank">js获取项目路径</a>
                                    <span class="text-muted">cngolon</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a>
                                    <div>//js获取项目根路径,如: http://localhost:8083/uimcardprj 
function getRootPath(){ 
    //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp 
    var curWwwPath=window.document.locati</div>
                                </li>
                                <li><a href="/article/2330.htm"
                                       title="oracle 的性能优化" target="_blank">oracle 的性能优化</a>
                                    <span class="text-muted">cuishikuan</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a>
                                    <div>   在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。 
    1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!</div>
                                </li>
                                <li><a href="/article/2457.htm"
                                       title="Shell变量和数组使用详解" target="_blank">Shell变量和数组使用详解</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E5%8F%98%E9%87%8F/1.htm">变量</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a>
                                    <div>Shell 变量 
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: 
your_name="w3cschool.cc" 
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 
 
 首个字符必须为字母(a-z,A-Z)。 
 中间不能有空格,可以使用下划线(_)。 
 不能使用标点符号。 
 不能使用ba</div>
                                </li>
                                <li><a href="/article/2584.htm"
                                       title="编程中的一些概念,KISS、DRY、MVC、OOP、REST" target="_blank">编程中的一些概念,KISS、DRY、MVC、OOP、REST</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/REST/1.htm">REST</a>
                                    <div>KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie</div>
                                </li>
                                <li><a href="/article/2711.htm"
                                       title="[Android]设置Activity为全屏显示的两种方法" target="_blank">[Android]设置Activity为全屏显示的两种方法</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/Activity/1.htm">Activity</a>
                                    <div>1. 方法1:AndroidManifest.xml 里,Activity的 android:theme  指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例:   <application      </div>
                                </li>
                                <li><a href="/article/2838.htm"
                                       title="solrcloud 部署方式比较" target="_blank">solrcloud 部署方式比较</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/solrCloud/1.htm">solrCloud</a>
                                    <div>solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。  第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理 
  
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo</div>
                                </li>
                                <li><a href="/article/2965.htm"
                                       title="Java synchronized关键字详解" target="_blank">Java synchronized关键字详解</a>
                                    <span class="text-muted">gqdy365</span>
<a class="tag" taget="_blank" href="/search/synchronized/1.htm">synchronized</a>
                                    <div>转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html 
 
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。 
同步机制可以使用synchronized关键字实现。 
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。 
当s</div>
                                </li>
                                <li><a href="/article/3092.htm"
                                       title="js实现登录时记住用户名" target="_blank">js实现登录时记住用户名</a>
                                    <span class="text-muted">hw1287789687</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%BD%8F%E6%88%91/1.htm">记住我</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%BD%8F%E5%AF%86%E7%A0%81/1.htm">记住密码</a><a class="tag" taget="_blank" href="/search/cookie/1.htm">cookie</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%BD%8F%E7%94%A8%E6%88%B7%E5%90%8D/1.htm">记住用户名</a><a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%BD%8F%E8%B4%A6%E5%8F%B7/1.htm">记住账号</a>
                                    <div>在页面中如何获取cookie值呢? 
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以 
参考:http://hw1287789687.iteye.com/blog/2050040 
如果要求登录页面是html呢?html页面中如何获取cookie呢? 
直接上代码了 
页面:loginInput.html 
代码: 
<!DOCTYPE html PUB</div>
                                </li>
                                <li><a href="/article/3219.htm"
                                       title="开发者必备的 Chrome 扩展" target="_blank">开发者必备的 Chrome 扩展</a>
                                    <span class="text-muted">justjavac</span>
<a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a>
                                    <div>Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench 
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl</div>
                                </li>
                                <li><a href="/article/3346.htm"
                                       title="算法机试题" target="_blank">算法机试题</a>
                                    <span class="text-muted">李亚飞</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E8%AF%95%E9%A2%98/1.htm">机试题</a>
                                    <div>       在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。 
       这道题大致意思是:输入一个数,比如4,。这时会输出: 
          &n</div>
                                </li>
                                <li><a href="/article/3473.htm"
                                       title="正确配置Linux系统ulimit值" target="_blank">正确配置Linux系统ulimit值</a>
                                    <span class="text-muted">字符串</span>
<a class="tag" taget="_blank" href="/search/ulimit/1.htm">ulimit</a>
                                    <div>在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进</div>
                                </li>
                                <li><a href="/article/3600.htm"
                                       title="hibernate调用返回游标的存储过程" target="_blank">hibernate调用返回游标的存储过程</a>
                                    <span class="text-muted">Supanccy2013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/jdbc/1.htm">jdbc</a>
                                    <div>注:原创作品,转载请注明出处。 
 
 
    上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。 
    此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。 
 
1,创建oracle中的包,并在该包中创建的游标类型。 
 
---创建oracle的程</div>
                                </li>
                                <li><a href="/article/3727.htm"
                                       title="Spring 4.2新特性-更简单的Application Event" target="_blank">Spring 4.2新特性-更简单的Application Event</a>
                                    <span class="text-muted">wiselyman</span>
<a class="tag" taget="_blank" href="/search/application/1.htm">application</a>
                                    <div>1.1 Application Event 
 
  Spring 4.1的写法请参考10点睛Spring4.1-Application Event  
  请对比10点睛Spring4.1-Application Event  
  使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;  
  
1.2 示例 
 
 包依赖 
  
<p</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>