欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?輸入輸出?IO?NIO?AIO三兄弟對(duì)比分析對(duì)比分析

 更新時(shí)間:2023年04月12日 10:57:51   作者:玄明Hanko  
這篇文章主要為大家介紹了Java?輸入輸出?IO?NIO?AIO三兄弟對(duì)比分析對(duì)比分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1、Java I/O發(fā)展史    

Java IO(Input/Output)是Java語(yǔ)言中用于讀寫數(shù)據(jù)的API,它提供了一系列類和接口,用于讀取和寫入各種類型的數(shù)據(jù)。下面是Java IO發(fā)展史的簡(jiǎn)要介紹:

  • JDK 1.0(1996年) 最初的Java IO只支持字節(jié)流(InputStream、OutputStream)和字符流(Reader、Writer)兩種,基于阻塞式IO(BIO)模型。
  • JDK 1.1(1997年) JDK 1.1引入了NIO(New IO)包,支持了緩存區(qū)(Buffer)、通道(Channel)等概念,提供了更高效的IO操作方式,可以實(shí)現(xiàn)非阻塞式IO(NIO)模式。
  • JDK 1.4(2002年) JDK 1.4增加了NIO.2 API,也稱為Java NIO with buffers,提供了更   強(qiáng)大的文件處理功能和更高效的IO操作。
  • JDK 7(2011年) JDK 7引入了NIO.2的改進(jìn)版——NIO.2 with Completion Ports,也稱為AIO(Asynchronous IO),支持異步IO方式,在處理大量并發(fā)請(qǐng)求時(shí)具有優(yōu)勢(shì)。

以下是三者之間的區(qū)別:

  • 阻塞IO(BIO) BIO是Java最初的IO模型,它采用阻塞方式進(jìn)行數(shù)據(jù)讀寫操作。即當(dāng)一個(gè)線程在執(zhí)行IO操作時(shí),若沒(méi)有數(shù)據(jù)可讀,則該線程會(huì)一直阻塞等待,直到有數(shù)據(jù)可讀或者超時(shí)。BIO適合處理連接數(shù)比較小且固定的場(chǎng)景,但并發(fā)能力不足。
  • 非阻塞IO(NIO) NIO是Java 1.4引入的新的IO模型,它采用了多路復(fù)用器(Selector)機(jī)制,通過(guò)少量線程同時(shí)管理多個(gè)通道,實(shí)現(xiàn)了單線程同時(shí)處理多個(gè)請(qǐng)求的效果。NIO具有高并發(fā)性、高吞吐量和更高的可靠性,適合處理連接數(shù)多且連接時(shí)間較短的場(chǎng)景。
  • 異步IO(AIO) AIO是Java 1.7開(kāi)始支持的IO模型,它采用事件驅(qū)動(dòng)的方式進(jìn)行數(shù)據(jù)讀寫操作,當(dāng)數(shù)據(jù)準(zhǔn)備好后,在回調(diào)函數(shù)中進(jìn)行處理。與NIO不同,AIO的讀寫操作是異步的,不需要通過(guò)輪詢方式去檢查數(shù)據(jù)是否準(zhǔn)備好。AIO適合處理連接數(shù)多、連接時(shí)間長(zhǎng)且有較多讀寫操作的場(chǎng)景。

2、Java IO

2.1 簡(jiǎn)介

在Java編程中,IO(Input/Output)操作是非常常見(jiàn)的操作,它涉及到文件讀寫、網(wǎng)絡(luò)通信等方面。Java提供了各種類來(lái)支持這些操作。本文將從IO的基礎(chǔ)知識(shí)講起,逐步深入,介紹Java IO的各個(gè)方面。

2.2 基礎(chǔ)概念

2.2.1 輸入流和輸出流

在Java中,輸入流(InputStream)和輸出流(OutputStream)是兩個(gè)重要的抽象類。輸入流表示輸入數(shù)據(jù)的來(lái)源,可以是文件、網(wǎng)絡(luò)連接、管道等;輸出流表示輸出數(shù)據(jù)的去向,可以是文件、網(wǎng)絡(luò)連接、管道等。輸入流和輸出流的使用方式是相似的,都是通過(guò)創(chuàng)建流對(duì)象,然后使用相應(yīng)的方法接口進(jìn)行讀寫操作。

2.2.2 字節(jié)流和字符流

Java中的IO操作還可以分為字節(jié)流和字符流兩種。字節(jié)流以字節(jié)(byte)為單位進(jìn)行操作,適用于處理二進(jìn)制數(shù)據(jù),例如圖像、音頻等;而字符流以字符(char)為單位進(jìn)行操作,適用于處理文本數(shù)據(jù),例如文本文件等。Java中,字節(jié)流主要由InputStream和OutputStream類以及其子類實(shí)現(xiàn),而字符流主要由Reader和Writer類以及其子類實(shí)現(xiàn)。

2.2.3 緩沖流

在進(jìn)行IO操作時(shí),我們可能需要經(jīng)常進(jìn)行讀寫操作,而頻繁的讀寫可能會(huì)導(dǎo)致性能問(wèn)題。為了解決這個(gè)問(wèn)題,Java提供了緩沖流(Buffered Stream)來(lái)提高IO操作的效率。緩沖流可以通過(guò)內(nèi)部緩存區(qū)域來(lái)減少對(duì)底層資源的訪問(wèn)次數(shù),從而提高數(shù)據(jù)讀寫的效率。

2.3 Java IO的使用

2.3.1 文件讀寫

Java中的文件讀寫是開(kāi)發(fā)中最常見(jiàn)的操作之一。下面是一個(gè)讀取文件內(nèi)容并輸出的示例:

    try (FileInputStream fis = new FileInputStream("test.txt");
         InputStreamReader isr = new InputStreamReader(fis);
         BufferedReader br = new BufferedReader(isr)) {
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

在這個(gè)示例中,我們使用了FileInputStream、InputStreamReader和BufferedReader等類來(lái)完成文件的讀取。首先,我們通過(guò)FileInputStream類創(chuàng)建了一個(gè)輸入流對(duì)象,并指定了要讀取的文件名稱;然后通過(guò)InputStreamReader將字節(jié)流轉(zhuǎn)換為字符流,再通過(guò)BufferedReader實(shí)現(xiàn)按行讀取文本內(nèi)容。

類似地,在Java中進(jìn)行文件寫操作也非常簡(jiǎn)單,下面是一個(gè)寫入文件的示例:

try (FileOutputStream fos = new FileOutputStream("test.txt");
     OutputStreamWriter osw = new OutputStreamWriter(fos);
     BufferedWriter bw = new BufferedWriter(osw)) {
    bw.write("Hello, world!");
} catch (IOException e) {
    e.printStackTrace();
}

在這個(gè)示例中,我們使用了FileOutputStream、OutputStreamWriter和BufferedWriter等類來(lái)完成文件的寫入。首先,我們通過(guò)FileOutputStream類創(chuàng)建了一個(gè)輸出流對(duì)象,并指定了要寫入的文件名稱;然后通過(guò)OutputStreamWriter將字節(jié)流轉(zhuǎn)換為字符流,再通過(guò)BufferedWriter實(shí)現(xiàn)按行寫入文本內(nèi)容。

3、Java NIO

3.1 簡(jiǎn)介

Java NIO(New IO)是Java SE 1.4引入的一個(gè)新的IO API,它提供了比傳統(tǒng)IO更高效、更靈活的IO操作。與傳統(tǒng)IO相比,Java NIO的優(yōu)勢(shì)在于它支持非阻塞IO和選擇器(Selector)等特性,能夠更好地支持高并發(fā)、高吞吐量的應(yīng)用場(chǎng)景。本文將從NIO的基礎(chǔ)知識(shí)講起,逐步深入,介紹Java NIO的各個(gè)方面。

3.2 核心概念

3.2.1 選擇器(Selector)

選擇器是Java NIO中的一個(gè)重要組件,它可以用于同時(shí)監(jiān)控多個(gè)通道的讀寫事件,并在有事件發(fā)生時(shí)立即做出響應(yīng)。選擇器可以實(shí)現(xiàn)單線程監(jiān)聽(tīng)多個(gè)通道的效果,從而提高系統(tǒng)吞吐量和運(yùn)行效率。

3.2.2 通道(Channel)

通道是一個(gè)用于讀寫數(shù)據(jù)的對(duì)象,類似于Java IO中的流(Stream)。與流不同的是,通道可以進(jìn)行非阻塞式的讀寫操作,并且可以同時(shí)進(jìn)行讀寫操作。通道分為兩種類型:FileChannel和SocketChannel,分別用于文件和網(wǎng)絡(luò)

通信。

3.2.3 緩沖區(qū)(Buffer)

在Java NIO中,所有數(shù)據(jù)都是通過(guò)緩沖區(qū)對(duì)象進(jìn)行傳輸?shù)摹>彌_區(qū)是一段連續(xù)的內(nèi)存塊,可以保存需要讀寫的數(shù)據(jù)。緩沖區(qū)對(duì)象包含了一些狀態(tài)變量,例如容量(capacity)、限制(limit)、位置(position)等,用于控制數(shù)據(jù)的讀寫。

3.3 Java NIO的使用

3.3.1 緩沖區(qū)操作

Java NIO中的緩沖區(qū)操作主要包括數(shù)據(jù)讀取和數(shù)據(jù)寫入兩種操作。下面是一個(gè)簡(jiǎn)單的緩沖區(qū)讀取示例:

ByteBuffer buffer = ByteBuffer.allocate(1024);
try (FileChannel channel = new FileInputStream("test.txt").getChannel()) {
    int bytesRead = channel.read(buffer);
    while (bytesRead != -1) {
        buffer.flip();
        while (buffer.hasRemaining()) {
            System.out.print((char) buffer.get());
        }
        buffer.clear();
        bytesRead = channel.read(buffer);
    }
} catch (IOException e) {
    e.printStackTrace();
}

在這個(gè)示例中,我們使用了FileChannel類和ByteBuffer類來(lái)完成文件的讀取。首先,我們通過(guò)FileInputStream類創(chuàng)建了一個(gè)輸入流對(duì)象,然后通過(guò)getChannel()方法獲取到對(duì)應(yīng)的通道對(duì)象;接著,我們創(chuàng)建了一個(gè)容量為1024字節(jié)的ByteBuffer對(duì)象,并調(diào)用read()方法從通道中讀取數(shù)據(jù),將讀取到的數(shù)據(jù)保存在緩沖區(qū)中。讀取完成后,我們通過(guò)flip()方法將緩沖區(qū)切換為讀模式,并使用hasRemaining()和get()方法逐個(gè)讀取數(shù)據(jù);最后通過(guò)clear()方法清空緩沖區(qū),準(zhǔn)備進(jìn)行下一輪讀取。

Java NIO中的緩沖區(qū)寫操作也非常類似,下面是一個(gè)簡(jiǎn)單的緩沖區(qū)寫入示例:

ByteBuffer buffer = ByteBuffer.wrap("Hello, world!".getBytes());
try (FileChannel channel = new FileOutputStream("test.txt").getChannel()) {
    channel.write(buffer);
} catch (IOException e) {
    e.printStackTrace();
}

在這個(gè)示例中,我們使用了FileChannel類和ByteBuffer類來(lái)完成文件的寫入。首先,我們通過(guò)ByteBuffer.wrap()方法將字符串轉(zhuǎn)換為ByteBuffer對(duì)象;然后,我們通過(guò)FileOutputStream類創(chuàng)建了一個(gè)輸出流對(duì)象,再通過(guò)getChannel()方法獲取到對(duì)應(yīng)的通道對(duì)象;接著,我們調(diào)用write()方法將緩沖區(qū)中的數(shù)據(jù)寫入通道中,完成文件寫入操作。

3.3.2 通道操作

Java NIO中的通道(Channel)是用于進(jìn)行數(shù)據(jù)傳輸?shù)膶?duì)象。通道可以連接到源或目標(biāo)節(jié)點(diǎn),用于讀取和寫入數(shù)據(jù)。與傳統(tǒng)的Java IO不同,NIO中的通道可以實(shí)現(xiàn)非阻塞式地讀寫數(shù)據(jù),從而提高了應(yīng)用程序的性能和并發(fā)處理能力。

要使用通道進(jìn)行讀寫操作,首先需要打開(kāi)通道。Java NIO中有多種類型的通道,每種通道都提供了自己的打開(kāi)方式。例如,要打開(kāi)一個(gè)文件通道,可以通過(guò)FileInputStream或FileOutputStream對(duì)象獲取對(duì)應(yīng)的FileChannel對(duì)象,如下所示:

    FileChannel channel = new FileInputStream("file.txt").getChannel();

讀取數(shù)據(jù) 一旦打開(kāi)了通道,就可以開(kāi)始讀取數(shù)據(jù)。在NIO中,數(shù)據(jù)通過(guò)緩沖區(qū)進(jìn)行傳輸。要讀取數(shù)據(jù),需要將數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中,然后從緩沖區(qū)中讀取數(shù)據(jù)。以下是一個(gè)簡(jiǎn)單的讀取操作示例:

ByteBuffer buffer = ByteBuffer.allocate(1024);
// 從通道中讀取數(shù)據(jù)
int bytesRead = channel.read(buffer);
while (bytesRead != -1) {
    // 切換為讀模式
    buffer.flip();
    // 讀取緩沖區(qū)中的數(shù)據(jù)
    while (buffer.hasRemaining()) {
        System.out.print((char) buffer.get());
    }
    // 清空緩沖區(qū)
    buffer.clear();
    bytesRead = channel.read(buffer);
}

在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)容量為1024字節(jié)的ByteBuffer對(duì)象,并使用channel.read()方法從文件通道中讀取數(shù)據(jù)。讀取到數(shù)據(jù)后,我們將ByteBuffer切換為讀模式,再使用hasRemaining()和get()方法逐個(gè)讀取緩沖區(qū)中的數(shù)據(jù)。

寫入數(shù)據(jù) 要寫入數(shù)據(jù),也需要將數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中,然后將緩沖區(qū)中的數(shù)據(jù)寫入到通道中。以下是一個(gè)簡(jiǎn)單的寫入操作示例:

ByteBuffer buffer = ByteBuffer.wrap("Hello, world!".getBytes());
// 將數(shù)據(jù)寫入通道
channel.write(buffer);

在這個(gè)示例中,我們首先使用ByteBuffer.wrap()方法將字符串轉(zhuǎn)換為ByteBuffer對(duì)象,在通過(guò)channel.write()方法將ByteBuffer中的數(shù)據(jù)寫入到通道中。

4、Java AIO

Java AIO(Asynchronous IO)是一種基于事件和回調(diào)的IO模型,相比Java BIO(Blocking IO)和Java NIO(Non-blocking IO),它具有更高的并發(fā)性、更高的吞吐量和更高的可靠性。本文將介紹Java AIO的原理、特點(diǎn)和應(yīng)用。

4.1 Java AIO的原理

Java AIO采用異步IO方式進(jìn)行數(shù)據(jù)讀寫操作,與Java NIO不同,它不需要通過(guò)輪詢方式去檢查數(shù)據(jù)是否準(zhǔn)備好,而是由操作系統(tǒng)完成。當(dāng)數(shù)據(jù)準(zhǔn)備好后,操作系統(tǒng)會(huì)通知應(yīng)用程序,并在回調(diào)函數(shù)中進(jìn)行處理。

AIO使用了三個(gè)核心組件:AsynchronousChannel、CompletionHandler和
AsynchronousServerSocketChannel。其中,AsynchronousChannel是讀/寫數(shù)據(jù)的通道,CompletionHandler是I/O操作完成時(shí)的回調(diào)方法,AsynchronousServerSocketChannel是異步服務(wù)器端套接字通道,用于監(jiān)聽(tīng)客戶端的連接請(qǐng)求。

當(dāng)數(shù)據(jù)準(zhǔn)備好后,操作系統(tǒng)將通知應(yīng)用程序,并在回調(diào)函數(shù)中執(zhí)行I/O操作完成時(shí)的回調(diào)方法。這樣就避免了線程阻塞等待I/O操作完成的情況,從而提高了程序的效率和并發(fā)處理能力。

4.2 Java AIO的特點(diǎn)

  • 高并發(fā)性:Java AIO采用異步IO方式進(jìn)行數(shù)據(jù)讀寫操作,可以實(shí)現(xiàn)高并發(fā)處理能力。
  • 高吞吐量:Java AIO支持異步讀寫操作,可以同時(shí)處理多個(gè)請(qǐng)求,從而提高了數(shù)據(jù)讀寫的效率和吞吐量。
  • 高可靠性:由于Java AIO采用異步IO方式進(jìn)行數(shù)據(jù)讀寫操作,可以避免線程阻塞等待I/O操作完成的情況,從而提高程序的可靠性。
  • 簡(jiǎn)單易用:Java AIO提供了簡(jiǎn)單易用的API,不需要編寫復(fù)雜的代碼就可以實(shí)現(xiàn)異步IO操作。

4.3 Java AIO的應(yīng)用

Java AIO適用于需要大量并發(fā)連接,但每個(gè)連接卻很少有數(shù)據(jù)交互的場(chǎng)景,例如基于消息的應(yīng)用程序、遠(yuǎn)程過(guò)程調(diào)用(RPC)等。在這些應(yīng)用場(chǎng)景中,AIO可以大幅度提高程序的性能和并發(fā)處理能力,從而滿足用戶對(duì)高吞吐量和低延遲的要求。

另外,Java AIO也可以用于開(kāi)發(fā)高性能的網(wǎng)絡(luò)服務(wù)器,例如聊天室服務(wù)器、在線游戲服務(wù)器等。由于AIO支持異步讀取輸入流和輸出流,因此可以同時(shí)處理多個(gè)客戶端請(qǐng)求,有效地提高了服務(wù)器的并發(fā)處理能力。

總結(jié)

Java AIO作為一種高性能、高并發(fā)的IO模型,具備很多優(yōu)點(diǎn),但也存在著一些缺點(diǎn),如對(duì)小負(fù)載的連接,AIO的開(kāi)銷可能會(huì)導(dǎo)致性能下降。因此,在實(shí)際應(yīng)用中,需要權(quán)衡各種因素,根據(jù)實(shí)際需求進(jìn)行評(píng)估和選擇。

5、相關(guān)面試題

1、什么是Java IO和NIO?

Java IO(Input/Output)是Java中傳統(tǒng)的輸入輸出操作,使用字節(jié)流和字符流進(jìn)行數(shù)據(jù)傳輸。
Java NIO(New Input/Output)是Java 1.4引入的新的輸入輸出API,它更加高效地處理數(shù)據(jù)。

2、什么是阻塞和非阻塞IO?

阻塞IO(Blocking IO)在進(jìn)行IO操作時(shí)會(huì)一直等待,直到IO完成,期間無(wú)法進(jìn)行其他操作。
非阻塞IO(Non-blocking IO)在進(jìn)行IO操作時(shí)不會(huì)一直等待,而是立即返回結(jié)果,如果IO還沒(méi)有完全完成,則可以繼續(xù)做其他事情。

3、什么是緩沖區(qū)?有哪些類型的緩沖區(qū)?

緩沖區(qū)是一個(gè)用于存儲(chǔ)數(shù)據(jù)的數(shù)組,在進(jìn)行IO操作時(shí)需要通過(guò)緩沖區(qū)來(lái)進(jìn)行讀寫數(shù)據(jù)。
Java的緩沖區(qū)分為字節(jié)緩沖區(qū)(ByteBuffer、CharBuffer、ShortBuffer等)和直接緩沖區(qū)(DirectByteBuffer、DirectCharBuffer、DirectShortBuffer等)。

4、什么是通道(Channel)?

通道是NIO中用于進(jìn)行數(shù)據(jù)傳輸?shù)膶?duì)象,它可以連接到源或目標(biāo)節(jié)點(diǎn),用于讀取和寫入數(shù)據(jù)。

5、什么是選擇器(Selector)?

選擇器是NIO中的一個(gè)對(duì)象,它可以通過(guò)輪詢注冊(cè)在其上的通道來(lái)檢查它們是否有事件發(fā)生(如可讀、可寫等),從而避免了阻塞式IO中需要等待IO完成的問(wèn)題。

6、Java IO和NIO之間有什么區(qū)別?

Java IO基于流的方式進(jìn)行數(shù)據(jù)傳輸,而NIO基于緩沖區(qū)和通道進(jìn)行數(shù)據(jù)傳輸。
Java IO是阻塞式的,而NIO可以采用阻塞或非阻塞模式。
Java IO對(duì)線程使用較多,每個(gè)IO操作都需要?jiǎng)?chuàng)建一個(gè)線程,而NIO可以使用單個(gè)線程處理多個(gè)IO操作。

7、什么是文件通道(FileChannel)?

文件通道是NIO中用于讀取和寫入文件的通道,它支持隨機(jī)訪問(wèn)和內(nèi)存映射文件等高級(jí)功能。

8、Java IO和NIO哪個(gè)更快?

在大量小數(shù)據(jù)量的情況下,Java IO可能更快,因?yàn)樗梢酝ㄟ^(guò)緩沖區(qū)一次性讀取所有數(shù)據(jù)。
在大量大塊數(shù)據(jù)的情況下,NIO可能更快,因?yàn)樗梢允褂昧憧截惣夹g(shù)直接將數(shù)據(jù)從磁盤讀入內(nèi)存,減少了數(shù)據(jù)復(fù)制的開(kāi)銷。

以上就是Java 輸入輸出 IO NIO AIO三兄弟對(duì)比分析對(duì)比分析的詳細(xì)內(nèi)容,更多關(guān)于Java 輸入輸出IO NIO AIO的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mybatis Plus 代碼生成器的實(shí)現(xiàn)

    Mybatis Plus 代碼生成器的實(shí)現(xiàn)

    這篇文章主要介紹了Mybatis Plus 代碼生成器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 正確結(jié)束Java線程的方法

    正確結(jié)束Java線程的方法

    線程的啟動(dòng)很簡(jiǎn)單,但用戶可能隨時(shí)取消任務(wù),怎么樣讓跑起來(lái)的線程正確地結(jié)束,這是今天要討論的話題。下面小編來(lái)和大家一起學(xué)習(xí)一下吧
    2019-05-05
  • 使用Feign消費(fèi)服務(wù)時(shí)POST/GET請(qǐng)求方式詳解

    使用Feign消費(fèi)服務(wù)時(shí)POST/GET請(qǐng)求方式詳解

    這篇文章主要介紹了使用Feign消費(fèi)服務(wù)時(shí)POST/GET請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • MyBatis中的關(guān)聯(lián)關(guān)系配置與多表查詢的操作代碼

    MyBatis中的關(guān)聯(lián)關(guān)系配置與多表查詢的操作代碼

    本文介紹了在MyBatis中配置和使用一對(duì)多和多對(duì)多關(guān)系的方法,通過(guò)合理的實(shí)體類設(shè)計(jì)、Mapper接口和XML文件的配置,我們可以方便地進(jìn)行多表查詢,并豐富了應(yīng)用程序的功能和靈活性,需要的朋友可以參考下
    2023-09-09
  • springboot啟動(dòng)類如何剔除掃描某個(gè)包

    springboot啟動(dòng)類如何剔除掃描某個(gè)包

    這篇文章主要介紹了springboot啟動(dòng)類如何剔除掃描某個(gè)包,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java之操作Redis案例講解

    Java之操作Redis案例講解

    這篇文章主要介紹了Java之操作Redis案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    mybatis的test坑及解決(不等于‘‘ 且 不等于0)

    這篇文章主要介紹了mybatis的test坑及解決(不等于‘‘ 且 不等于0),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring集成MyBatis框架

    Spring集成MyBatis框架

    本文主要介紹了Spring集成MyBatis的配置和使用,項(xiàng)目基于Maven構(gòu)建,連接Mysql數(shù)據(jù)庫(kù)。下面跟著小編一起來(lái)看下吧
    2017-02-02
  • MyBatis?Generator快速生成實(shí)體類和映射文件的方法

    MyBatis?Generator快速生成實(shí)體類和映射文件的方法

    這篇文章主要介紹了MyBatis?Generator快速生成實(shí)體類和映射文件的方法,通過(guò)示例代碼介紹了MyBatis?Generator?的使用,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 圖文并茂講解RocketMQ消息類別

    圖文并茂講解RocketMQ消息類別

    這篇文章主要介紹了圖文并茂講解RocketMQ消息類別,RocketMQ對(duì)于消息提供了很多用法,包括:同步消息、異步消息、單向發(fā)送、順序消息、延時(shí)消息、批量消息、過(guò)濾消息、事務(wù)消息等
    2022-12-12

最新評(píng)論