【攻克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/1901107531510509568.htm"
                           title="Android Framework中Launcher的启动流程分析" target="_blank">Android Framework中Launcher的启动流程分析</a>
                        <span class="text-muted">数据科学引擎</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>AndroidFramework中Launcher的启动流程分析Launcher是Android系统中负责管理应用程序显示和启动的组件。在这篇文章中,我们将深入分析AndroidFramework中Launcher的启动流程,并通过代码示例来说明。Launcher的启动过程可以分为以下几个关键步骤:用户点击应用图标或按下Home键触发Launcher启动。Launcher的入口是Launcher应</div>
                    </li>
                    <li><a href="/article/1901107405207433216.htm"
                           title="Jetpack LiveData" target="_blank">Jetpack LiveData</a>
                        <span class="text-muted">Bonnie_cat</span>
<a class="tag" taget="_blank" href="/search/JetPack/1.htm">JetPack</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>1.什么是LiveData?LiveData是一种可观察的数据持有者,通常用于在Android应用中以生命周期感知的方式更新UI。它是生命周期感知的,意味着它只会通知处于活跃生命周期状态(如STARTED或RESUMED)的观察者。LiveData通常与ViewModel结合使用,用于将UI与数据分离。2.LiveData的使用场景数据驱动UI:当数据发生变化时,自动更新UI,例如从数据库或网络获</div>
                    </li>
                    <li><a href="/article/1901105135791173632.htm"
                           title="Android Framework 之了解系统启动流程二" target="_blank">Android Framework 之了解系统启动流程二</a>
                        <span class="text-muted">Bonnie_cat</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>AndroidFramework源码阅读系列篇章有:系统启动流程一之init进程和zygote进程启动分析系统启动流程二之SystemServer进程启动分析1.SystemServer进程启动分析在系统启动流程一之init进程和zygote进程启动分析中分析zygote进程时,我们知道了zygote调用forkSystemServer()方法fork了SystemServer进程。看一下fork</div>
                    </li>
                    <li><a href="/article/1901088370583465984.htm"
                           title="【华为OD机考真题】- 小明能到达的最大坐标值(C&D卷)(Java)" target="_blank">【华为OD机考真题】- 小明能到达的最大坐标值(C&D卷)(Java)</a>
                        <span class="text-muted">bug菌¹</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAOD%E6%9C%BA%E8%80%83%E7%9C%9F%E9%A2%98/1.htm">华为OD机考真题</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAOD/1.htm">华为OD</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E6%98%8E%E8%83%BD%E5%88%B0%E8%BE%BE%E7%9A%84%E6%9C%80%E5%A4%A7%E5%9D%90%E6%A0%87%E5%80%BC/1.htm">小明能到达的最大坐标值</a>
                        <div>本文收录于「2025华为OD机试真题(Java版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!!提醒:拒绝一切代考/替考,违法必究!本人所写题库均搜集于互联网。  订阅福利:一次订阅,可永久免费阅读,提供在线答疑解</div>
                    </li>
                    <li><a href="/article/1901083836612145152.htm"
                           title="KNN算法性能优化技巧与实战案例" target="_blank">KNN算法性能优化技巧与实战案例</a>
                        <span class="text-muted">可问 可问春风</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                        <div>KNN算法性能优化技巧与实战案例K最近邻(KNN)在分类和回归任务中表现稳健,但其计算复杂度高、内存消耗大成为IT项目中的主要瓶颈。以下从算法优化、数据结构、工程实践三方面深入解析性能提升策略,并附典型应用案例。一、核心性能瓶颈维度挑战描述计算复杂度单次预测需计算全部训练样本距离,时间复杂度为(n=样本数,d=特征维度)内存占用需全量存储训练数据,大规模数据集难以加载高维灾难高维数据中距离计算失去</div>
                    </li>
                    <li><a href="/article/1901083080345579520.htm"
                           title="什么是SQL语言,它有哪些主要功能?" target="_blank">什么是SQL语言,它有哪些主要功能?</a>
                        <span class="text-muted">破碎的天堂鸟</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%95%99%E7%A8%8B/1.htm">学习教程</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>SQL(StructuredQueryLanguage,结构化查询语言)是一种专为管理关系型数据库设计的标准化语言。它不仅是与数据库交互的核心工具,也是现代数据驱动应用的基础。以下从定义、功能分类、扩展性及应用场景等方面进行全面解析:一、SQL语言的定义与历史背景基本定义SQL是一种声明式语言,允许用户通过简洁的语法描述“需要什么数据”,而非具体实现步骤。其发音可为“S-Q-L”或“sequel”</div>
                    </li>
                    <li><a href="/article/1901067105411854336.htm"
                           title="C语言:数据的存储" target="_blank">C语言:数据的存储</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/c%2B%2B%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">c++编程语言</a>
                        <div>本文重点:数据类型详细介绍整形在内存中的存储:原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储解析数据类型结构的介绍:类型的基本归类:整型家族浮点家族构造类型:指针类型:空类型:整形在内存中的存储:F10开始逐句调试,再打开窗口中的内存,在搜索栏查看a的地址如下图所示。可以看到在将20存入a的地址中,在内存窗口的表示形式是14000000,再看下图变量b中-10的表示形式。可以看到再内存</div>
                    </li>
                    <li><a href="/article/1901062780350427136.htm"
                           title="Web三要素:CSS之Flex/Grid布局(4)" target="_blank">Web三要素:CSS之Flex/Grid布局(4)</a>
                        <span class="text-muted">双囍菜菜</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9A%8F%E8%AE%B0/1.htm">前端随记</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                        <div>CSS布局革命:Flex与Grid的双子星战法文章目录CSS布局革命:Flex与Grid的双子星战法一、布局进化史:从洪荒时代到现代文明二、Flex布局:一维空间的舞蹈家2.1核心概念深度解析容器属性详解:2.2典型应用场景实战导航栏布局(React示例)垂直居中(Vue示例)三、Grid布局:二维空间的指挥官3.1网格系统深度解析核心概念图解:3.2高级布局技巧实战响应式网格(React示例)复</div>
                    </li>
                    <li><a href="/article/1901058498305781760.htm"
                           title="UI自动化测试之CSS Selector 定位秘籍:解锁 WEB UI 自动化测试的高效之道" target="_blank">UI自动化测试之CSS Selector 定位秘籍:解锁 WEB UI 自动化测试的高效之道</a>
                        <span class="text-muted">做测试的小薄</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E8%BF%9B%E9%98%B6/1.htm">测试进阶</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">UI自动化测试</a><a class="tag" taget="_blank" href="/search/%E5%85%83%E7%B4%A0%E5%AE%9A%E4%BD%8D%E6%96%B9%E5%BC%8F/1.htm">元素定位方式</a>
                        <div>在WebUI自动化测试中,元素定位是实现自动化操作的核心步骤。SeleniumWebDriver提供了多种元素定位方式,其中CSSSelector是一种功能强大且灵活的定位方法。它基于CSS选择器语法,能够快速、精准地定位目标元素,尤其适用于复杂的DOM结构。本文将深入解析CSSSelector的工作原理、使用技巧以及需要注意的事项,帮助你在自动化测试中更高效地运用这一工具。一、CSSSelect</div>
                    </li>
                    <li><a href="/article/1901052823857065984.htm"
                           title="16届蓝桥杯模拟试题三-编程解析" target="_blank">16届蓝桥杯模拟试题三-编程解析</a>
                        <span class="text-muted">真-大意失仙人</span>
<a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%AF/1.htm">蓝桥杯</a>
                        <div>一、题目展示二、参考答案1、主函数初始化程序的相关初始化,记得引入自己的头文件,以及对下面会用lcd驱动的几个函数进行一定的修改,防止led出错,修改就不一一展示了,大致都是这样的,进入lcd驱动的相关函数时保存当前的led输出状态,即GPIOC的PIN15~8的输出值,退出lcd函数时再恢复GPIOC的引脚值。HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN</div>
                    </li>
                    <li><a href="/article/1901052067410145280.htm"
                           title="手撕multi-head self attention 代码" target="_blank">手撕multi-head self attention 代码</a>
                        <span class="text-muted">心若成风、</span>
<a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a>
                        <div>在深度学习和自然语言处理领域,多头自注意力(Multi-HeadSelf-Attention)机制是Transformer模型中的核心组件之一。它允许模型在处理序列数据时,能够同时关注序列中的不同位置,从而捕获到丰富的上下文信息。下面,我们将详细解析多头自注意力机制的实现代码。一、概述多头自注意力机制的核心思想是将输入序列进行多次线性变换,然后分别计算自注意力得分,最后将所有头的输出进行拼接,并通</div>
                    </li>
                    <li><a href="/article/1901042109180342272.htm"
                           title="使用 Dify 创建自然语言生成 Word 文档的应用(详细指南)" target="_blank">使用 Dify 创建自然语言生成 Word 文档的应用(详细指南)</a>
                        <span class="text-muted">engchina</span>
<a class="tag" taget="_blank" href="/search/LINUX/1.htm">LINUX</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/Dify/1.htm">Dify</a>
                        <div>使用Dify创建自然语言生成Word文档的应用(详细指南)一、开发核心API1.1API功能规划1.2环境准备安装依赖库项目目录结构1.3核心代码解析(`app.py`)1.3.1初始化配置1.3.2关键功能模块1.4API接口说明1.4.1转换接口`/convert`1.4.2下载接口`/download/`1.5启动服务1.6测试二、创建Dify工具2.1工作流设计步骤步骤1:创建新工作流步骤</div>
                    </li>
                    <li><a href="/article/1901039585656369152.htm"
                           title="Spring Boot整合JWT 实现双Token机制" target="_blank">Spring Boot整合JWT 实现双Token机制</a>
                        <span class="text-muted">Cloud_.</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录JWT核心概念解析SpringBoot整合步骤2.1基础环境搭建2.2Token生成与解析2.3拦截器实现企业级增强方案3.1双Token刷新机制3.2安全防护策略常见问题与解决方案1.JWT核心概念解析1.1Token的三重使命身份凭证:替代Session实现无状态认证信息载体:存储用户基础信息(如userid、roles)安全屏障:数字签名防止数据篡改1.2JWT结构示例Header{"a</div>
                    </li>
                    <li><a href="/article/1901036183715115008.htm"
                           title="程序员必看!DeepSeek全栈开发指南:从代码生成到分布式训练的黑科技解析" target="_blank">程序员必看!DeepSeek全栈开发指南:从代码生成到分布式训练的黑科技解析</a>
                        <span class="text-muted">AI创享派</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>一、DeepSeek技术新突破:程序员必须掌握的MoE架构实战2025年2月25日,DeepSeek开源了专为MoE模型设计的DeepEP通信库,这项技术革新直接影响了分布式训练和推理效率。该库支持FP8精度与NVLink/RDMA技术,吞吐量提升3倍以上,特别适合处理千亿级参数的分布式任务。对于后端工程师而言,DeepEP的以下特性值得关注:计算-通信重叠机制:通过回调函数实现GPU资源动态分配</div>
                    </li>
                    <li><a href="/article/1901035426882318336.htm"
                           title="Android StrictMode 使用与原理深度解析" target="_blank">Android StrictMode 使用与原理深度解析</a>
                        <span class="text-muted">伟江.Zeng</span>
<a class="tag" taget="_blank" href="/search/Android%E5%9F%BA%E7%A1%80/1.htm">Android基础</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/StrictMode/1.htm">StrictMode</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F/1.htm">内存泄漏</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83/1.htm">代码规范</a><a class="tag" taget="_blank" href="/search/%E8%80%97%E6%97%B6%E6%A3%80%E6%B5%8B/1.htm">耗时检测</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a>
                        <div>AndroidStrictMode是Android系统提供的一种开发者工具,用于检测应用主线程中不合理的耗时操作(如磁盘I/O、网络请求等)和内存泄漏问题。通过配置策略和惩罚机制,它帮助开发者在早期发现潜在性能问题,提升应用流畅性。以下从使用方式和实现原理两方面进行深度解析。一、StrictMode使用详解1.基础配置在Application或Activity的onCreate()中初始化Stri</div>
                    </li>
                    <li><a href="/article/1901034544564334592.htm"
                           title="【Android】adb shell基本使用教程" target="_blank">【Android】adb shell基本使用教程</a>
                        <span class="text-muted">Vesper63</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a>
                        <div>adbshell是AndroidDebugBridge(ADB)工具中的一个命令,用于在连接的Android设备或模拟器上执行shell命令。通过adbshell,你可以直接与设备的Linux内核交互,执行各种操作。基本用法启动adbshell:在终端或命令提示符中输入以下命令:adbshell这将进入设备的shell环境,提示符通常会变为$或#(#表示root权限)。执行单个命令:如果你只想执行</div>
                    </li>
                    <li><a href="/article/1901030764212973568.htm"
                           title="PCIe信号传输的幕后:HCSL与LP-HCSL深度解析" target="_blank">PCIe信号传输的幕后:HCSL与LP-HCSL深度解析</a>
                        <span class="text-muted">赛卡</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/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/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E6%9E%B6%E6%9E%84/1.htm">硬件架构</a><a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a>
                        <div>在数字化浪潮席卷的当下,PCIe(PeripheralComponentInterconnectExpress)作为高速串行计算机扩展总线标准,已然成为计算机内部硬件设备连接领域的中流砥柱。其信号传输的质量与完整性,恰似计算机系统运行的“命门”,对系统整体性能起着决定性作用。在PCIe体系架构里,HCSL(High-speedCurrentSteeringLogic)与LP-HCSL(Low-Po</div>
                    </li>
                    <li><a href="/article/1901030765022474240.htm"
                           title="半导体可靠性测试解析:HTOL、LTOL与Burn-In" target="_blank">半导体可靠性测试解析:HTOL、LTOL与Burn-In</a>
                        <span class="text-muted">赛卡</span>
<a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E6%9E%B6%E6%9E%84/1.htm">硬件架构</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6/1.htm">汽车</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E7%B3%BB%E7%BB%9F/1.htm">车载系统</a>
                        <div>引言在半导体器件复杂度与可靠性要求同步提升的今天,高温工作寿命测试(HTOL)、低温寿命测试(LTOL)和老化筛选测试(Burn-In)构成了芯片可靠性验证的三大支柱。这些测试通过模拟极端环境下的失效机制,帮助制造商提前发现潜在缺陷,优化设计并满足汽车、工业等领域的严苛标准。本文将从测试原理、标准要求及报告解读维度展开深度解析。一、核心测试方法的技术边界与协同逻辑1.HTOL(高温工作寿命测试)测</div>
                    </li>
                    <li><a href="/article/1901030511124475904.htm"
                           title="DeepSeek:全栈开发者视角下的AI革命者" target="_blank">DeepSeek:全栈开发者视角下的AI革命者</a>
                        <span class="text-muted">大富大贵7</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%871/1.htm">程序员知识储备1</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%872/1.htm">程序员知识储备2</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%873/1.htm">程序员知识储备3</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>DeepSeek:全栈开发者视角下的AI革命者写在前面随着人工智能(AI)技术的不断进步,AI已经成为各行各业创新的核心动力。从自动驾驶到智能制造,再到自然语言处理和图像识别,AI正在逐渐渗透并改变着我们的生活和工作方式。DeepSeek,作为AI领域的新兴技术,凭借其独特的技术架构和颠覆性的创新理念,成为了全栈开发者关注的焦点。本文将从全栈开发者的角度出发,详细解析DeepSeek的诞生、技术架</div>
                    </li>
                    <li><a href="/article/1901018153199136768.htm"
                           title="LabVIEW cRIO中CSV文件的读取" target="_blank">LabVIEW cRIO中CSV文件的读取</a>
                        <span class="text-muted">LabVIEW开发</span>
<a class="tag" taget="_blank" href="/search/LabVIEW%E7%9F%A5%E8%AF%86/1.htm">LabVIEW知识</a><a class="tag" taget="_blank" href="/search/LabVIEW%E5%8A%9F%E8%83%BD/1.htm">LabVIEW功能</a><a class="tag" taget="_blank" href="/search/CRIO/1.htm">CRIO</a>
                        <div>在LabVIEWcRIO中读取CSV文件,需通过文件传输、路径配置、数据解析等步骤实现。本文详细说明如何通过代码读取本地存储的CSV文件,并探讨直接通过对话框选择文件的可行性及替代方案。一、CSV文件传输至cRIO本地存储1.使用NIMAX文件管理步骤:打开NIMAX(Measurement&AutomationExplorer)。连接目标cRIO设备,进入“文件”选项卡。选择路径(如/c/),点</div>
                    </li>
                    <li><a href="/article/1901017145551155200.htm"
                           title="android webview 高度随内容改变,android app内置webview,随android版本升级进程关系的变化..." target="_blank">android webview 高度随内容改变,android app内置webview,随android版本升级进程关系的变化...</a>
                        <span class="text-muted">大圣南佳境</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/webview/1.htm">webview</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%BA%A6%E9%9A%8F%E5%86%85%E5%AE%B9%E6%94%B9%E5%8F%98/1.htm">高度随内容改变</a>
                        <div>Q最近遇到一个问题:多个应用打不开,闪退。A调查发现闪退的应用都在首屏加载了webview,而在androidp上webview的渲染是在另外一个进程上进行的,进程名字类似webview:sandboxed_process0,这个进程是由webview_zygote这样一个进程fork出来的,而webview_zygote由于缺少权限runtime崩溃,从而导致webview加载失败,应用闪退。S</div>
                    </li>
                    <li><a href="/article/1901009708249051136.htm"
                           title="iptv内容运营系统服务器架构,IPTV系统架构技术的深入解析" target="_blank">iptv内容运营系统服务器架构,IPTV系统架构技术的深入解析</a>
                        <span class="text-muted">Damong.Liu</span>
<a class="tag" taget="_blank" href="/search/iptv%E5%86%85%E5%AE%B9%E8%BF%90%E8%90%A5%E7%B3%BB%E7%BB%9F%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9E%B6%E6%9E%84/1.htm">iptv内容运营系统服务器架构</a>
                        <div>IPTV简单来说就是交互式网络电视,它能为用户提供电信级的服务和使用简便的电视式体验。IPTV业务是伴随着宽带互联网的飞速发展而兴起的一项新兴的互联网增值业务,它利用宽带互联网的基础设施,以家用电视机和电脑作为主要终端,利用网络机顶盒(STB,Set-TopBox),通过互联网协议来传送电视信号,提供包括电视节目在内的多种数字媒体服务。IPTV系统概述到目前为止,IPTV虽然还没有一个十分明确的定</div>
                    </li>
                    <li><a href="/article/1901002018454040576.htm"
                           title="selenium+pyquery爬取《鱿鱼游戏》评论2000+条" target="_blank">selenium+pyquery爬取《鱿鱼游戏》评论2000+条</a>
                        <span class="text-muted">铁憨憨0304</span>
<a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB/1.htm">python爬虫</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a>
                        <div>IMDB网址爬取《鱿鱼游戏》的全部评论评论排名评论标题id评论时间评论内容导入所需要的包selenium:模拟浏览器,这里使用的是Edge浏览器,需要安装Edge浏览器驱动解析库:PyQuery保存数据:pandas,保存为csv文件fromseleniumimportwebdriverfromselenium.webdriver.support.uiimportWebDriverWaitfrom</div>
                    </li>
                    <li><a href="/article/1901000504201244672.htm"
                           title="爬取电影标题、评论、评分(21-11-4)" target="_blank">爬取电影标题、评论、评分(21-11-4)</a>
                        <span class="text-muted">穆桥</span>
<a class="tag" taget="_blank" href="/search/Python%E7%88%AC%E8%99%AB/1.htm">Python爬虫</a><a class="tag" taget="_blank" href="/search/XPath%E8%A7%A3%E6%9E%90/1.htm">XPath解析</a><a class="tag" taget="_blank" href="/search/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">MySQL数据库</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%BD%B1%E4%BF%A1%E6%81%AF/1.htm">电影信息</a><a class="tag" taget="_blank" href="/search/%E7%96%BE%E7%97%85%E6%95%B0%E6%8D%AE/1.htm">疾病数据</a>
                        <div>功能描述:1、爬取网页1中的电影名称、评分、简介到mysql数据库中。2、爬取网页2中的标题、时间、正文、采集时间到mysql数据库中。使用的技术:requests请求、xpath解析、mysqlxpath解析语法//子孙节点/直接子节点.选取当前节点…选取当前节点的父节点@选取属性通过Python的lxml库,利用XPath进行HTML的解析。scrapy封装了lxml也可以导入scrapy任务</div>
                    </li>
                    <li><a href="/article/1900995836008001536.htm"
                           title="中国首款AI原生IDE:字节跳动Trae国内版深度解析与实践指南" target="_blank">中国首款AI原生IDE:字节跳动Trae国内版深度解析与实践指南</a>
                        <span class="text-muted">代码的建筑师</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95/1.htm">学习记录</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E5%AD%A6%E4%B9%A0/1.htm">模型学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/IDE/1.htm">IDE</a><a class="tag" taget="_blank" href="/search/Trae/1.htm">Trae</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8/1.htm">字节跳动</a><a class="tag" taget="_blank" href="/search/AI%E4%BB%A3%E7%A0%81%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">AI代码编辑器</a>
                        <div>一、Trae国内版重磅发布:中国AI编程新标杆2025年3月3日,字节跳动正式推出国内首个AI原生集成开发环境(AIIDE)——Trae国内版。作为对标Cursor的国产工具,Trae以动态智能协作为核心,重新定义开发者与AI的协同模式。其核心目标是通过深度集成AI能力,帮助开发者从“工具使用者”向“AI协同创新者”转型,显著提升全流程开发效率。关键发布亮点:模型支持:搭载字节自研的Doubao-</div>
                    </li>
                    <li><a href="/article/1900988271639457792.htm"
                           title="【AI热点】MCP协议深度洞察报告" target="_blank">【AI热点】MCP协议深度洞察报告</a>
                        <span class="text-muted">碣石潇湘无限路</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>摘要人工智能技术飞速发展,大型语言模型(LLM)如何高效、安全地利用外部数据和工具成为关键问题。模型上下文协议(ModelContextProtocol,简称MCP)是一种由Anthropic于2024年底提出的开放标准协议。它通过统一的客户端-服务器架构,为AI应用与文件系统、数据库、第三方API等外部资源之间提供标准化、安全的双向通信接口。本文将深入解析MCP协议的基本概念和背景、架构设计(通</div>
                    </li>
                    <li><a href="/article/1900986253260681216.htm"
                           title="轻松管理CSV数据,Python csv库全解析" target="_blank">轻松管理CSV数据,Python csv库全解析</a>
                        <span class="text-muted">嘎啦AGI实验室</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/csv/1.htm">csv</a>
                        <div>文章目录轻松管理CSV数据,Pythoncsv库全解析背景介绍csv库是什么?如何安装csv库?五个简单的库函数使用方法1.读取CSV文件2.写入CSV文件3.使用DictReader读取CSV4.使用DictWriter写入CSV5.指定分隔符五个场景使用代码说明场景1:读取CSV并统计数据场景2:将查询结果写入CSV场景3:读取CSV并过滤数据场景4:读取CSV并排序数据场景5:读取CSV并合</div>
                    </li>
                    <li><a href="/article/1900985116449107968.htm"
                           title="#PyCharm 2024.1新增功能" target="_blank">#PyCharm 2024.1新增功能</a>
                        <span class="text-muted">Dingdangr</span>
<a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>PyCharm2024.1作为JetBrains专为Python开发者设计的集成开发环境(IDE)的最新版本,带来了众多令人兴奋的新增功能,旨在提升开发者的编程效率和体验。以下是对这些新增功能的详细解析:一、智能编码辅助HuggingFace模型和数据集文档预览PyCharm2024.1引入了HuggingFace模型和数据集的快速文档预览功能。开发者可以直接在PyCharm内部快速获取Huggi</div>
                    </li>
                    <li><a href="/article/1900984864207859712.htm"
                           title="正则表达式全解析 + Java常用示例" target="_blank">正则表达式全解析 + Java常用示例</a>
                        <span class="text-muted">我真的不想做程序员</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</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/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>目录一、正则表达式基础(一)元字符(二)字符集(三)量词二、正则表达式常用示例(一)验证邮箱格式(二)验证电话号码格式(三)提取网页中的链接(四)验证日期格式(五)验证URL格式三、正则表达式在Java中的应用(一)匹配操作(二)替换操作(三)分割操作四、总结一、正则表达式基础正则表达式是一种用于匹配字符串的强大工具。它使用特定的语法来定义匹配模式,可以在文本处理、表单验证、数据提取等场景中发挥重</div>
                    </li>
                    <li><a href="/article/1900984862530138112.htm"
                           title="2025年Python生态全景:从AI霸主到量子计算,揭秘其不可替代的技术魅力" target="_blank">2025年Python生态全景:从AI霸主到量子计算,揭秘其不可替代的技术魅力</a>
                        <span class="text-muted">南玖yy</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%AD%90%E8%AE%A1%E7%AE%97/1.htm">量子计算</a>
                        <div>在2025年的技术浪潮中,Python凭借其极简的语法、庞大的生态系统以及跨领域融合能力,依然稳坐编程语言界的“头把交椅”。尽管Java等语言在AI领域发起挑战,但Python通过持续的技术革新和生态扩展,展现出不可撼动的生命力。本文将从技术趋势、行业应用与未来挑战三个维度,解析Python的“常青”密码。一、AI领域的持续主导:生态优势与工具革新Python在AI领域的统治地位仍未动摇。尽管有观</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>