最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JVM 命令行工具的使用

 更新時間:2024年04月11日 10:04:59   作者:布道師小羊  
造成Java應用出現(xiàn)性能問題的因素非常多,想要定位這些問題,一款優(yōu)秀的性能診斷工具必不可少,本文主要介紹了JVM 命令行工具的使用,具有一定的參考價值,感興趣的可以了解一下

性能問題是軟件工程師在日常工作中需要經(jīng)常面對和解決的問題,在用戶體驗至上的今天,解決好應用的性能問題能帶來非常大的收益。工欲善其事,必先利其器,想要解決性能相關問題,必須要有比較好的性能診斷工具。Java作為最流行的編程語言之一,應用的性能診斷一直受到業(yè)界廣泛關注。造成Java應用出現(xiàn)性能問題的因素非常多,例如線程控制、磁盤讀寫、數(shù)據(jù)庫訪問、網(wǎng)絡I/O、垃圾收集等。想要定位這些問題,一款優(yōu)秀的性能診斷工具必不可少,就好比中醫(yī)、西醫(yī)看病,中醫(yī)講究的是望、聞、問、切,西醫(yī)則是借助各種檢查儀器。

1、概述

JDK本身已經(jīng)集成了很多診斷工具。在大家剛接觸Java學習的時候,最先了解的兩個命令就是javac和java,但是除此之外,還有一些其他工具可以使用,可是并非所有的程序員都了解其他命令行程序的作用,接下來我們一起看看其他命令行程序的作用。進入到安裝JDK的bin目錄,會發(fā)現(xiàn)還有一系列輔助工具。這些輔助工具用來獲取目標JVM不同方面、不同層次的信息,幫助開發(fā)人員很好地解決Java應用程序的一些疑難雜癥。Mac系統(tǒng)bin目錄的內容如下圖所示:

在這里插入圖片描述

Windows系統(tǒng)bin目錄的內容如下圖所示:

在這里插入圖片描述

雖然在Windows系統(tǒng)下都是exe格式的可執(zhí)行文件。但事實上,它們只是Java程序的一層包裝,其真正實現(xiàn)是在tools.jar中,如下圖所示。以jps工具為例,在控制臺執(zhí)行jps命令和執(zhí)行java -classpath %Java_HOME%/lib/tools.jar sun.tools.jps.Jps命令是等價的,即jps.exe只是這個命令的一層包裝。下面介紹一些常用的命令工具。

在這里插入圖片描述

2、jps:查看正在運行的Java進程

jps(JVM Process Status Tool)命令用于查看系統(tǒng)內所有的JVM進程,可根據(jù)參數(shù)選項指定是否顯示JVM的執(zhí)行主類[包含main()方法的類],以及進程的本地JVMID(Local Virtual Machine Identifier),對于本地JVM進程來說,進程的本地JVMID與操作系統(tǒng)的進程ID是一致的。簡單來說,就是Java提供的一個顯示當前所有Java進程pid的命令,和Linux系統(tǒng)里的ps命令很相似,ps命令主要是用來顯示當前系統(tǒng)的進程情況,比如查看進程列表和進程ID。在日常工作中,此命令也是最常用的命令之一。

jps的基本使用語法如下:

jps  [ options ] [ hostid ]

1、jps命令[options]選項說明:

在這里插入圖片描述

2、[hostid]說明:

hostid表示目標主機的主機名或IP地址,如果省略該參數(shù),則目標主機為本地主機。如果想要遠程監(jiān)控主機上的Java程序,需要安裝jstatd。對于網(wǎng)絡安全要求非常嚴格的場所,需要自定義策略文件來滿足對特定的主機或網(wǎng)絡的訪問,但是這種技術容易受到IP地址欺詐攻擊。如果由于安全問題無法通過定制的策略文件處理,那么最安全的操作是在主機本地使用jstat和jps工具。

3、使用案例:

Linux上啟動Tomcat(一種Web應用服務器),然后在Linux上面使用ps命令查看Tomcat進程ID使用,如下所示:

     ps -ef | grep"tomcat"

運行結果如下圖所示:

在這里插入圖片描述

可以看到進程ID是1224。使用jps -l命令查看,如下圖上所示:

在這里插入圖片描述

3、jstat:查看JVM統(tǒng)計信息

jstat(JVM Statistics Monitoring Tool)用于收集JVM各方面的運行數(shù)據(jù),顯示本地或遠程JVM進程中的類裝載、內存、垃圾收集、JIT編譯等運行數(shù)據(jù)。在沒有圖形用戶界面時,只提供了純文本控制臺環(huán)境的服務器上,它是運行期定位JVM性能問題的首選工具。常用于檢測垃圾回收問題以及內存泄漏問題。它的功能非常強大,可以通過它查看堆信息的詳細情況。

jstat的基本使用語法如下:

     jstat -<option>[-t] [-h<lines>] <vmid>[<interval>[<count>]]

使用下面的命令可以查看jstat相關參數(shù):

     jstat -h 或 jstat -help

1、[options]選項說明

在這里插入圖片描述

2、[-t]參數(shù)說明

[-t]參數(shù)可以在輸出信息前加上一個Timestamp列,顯示程序的運行時間??梢员容^Java進程的啟動時間以及總GC時間(GCT列),或者兩次測量的間隔時間以及總GC時間的增量,來得出GC時間占運行時間的比例。如果該比例超過20%,則說明目前堆的壓力較大;如果該比例超過90%,則說明堆里幾乎沒有可用空間,隨時都可能拋出OOM異常。

3、[-h]參數(shù)說明

[-h]參數(shù)可以在周期性數(shù)據(jù)輸岀時,輸出設定的行數(shù)的數(shù)據(jù)后輸出一個表頭信息。

4、[interval]參數(shù)說明

[interval]參數(shù)用于指定輸出統(tǒng)計數(shù)據(jù)的周期,單位為毫秒,簡單來說就是查詢間隔時間。

5、[count]參數(shù)說明

[count]用于指定查詢的總次數(shù)。

6、使用案列

由于jstat參數(shù)選項比較多,這里只列舉一個啟動了Tomcat的Linux服務器案例,查看其監(jiān)視狀態(tài),命令如下所示。

在這里插入圖片描述

運行結果如下圖所示:

在這里插入圖片描述

運行結果的各列表示的含義如下表所示:

在這里插入圖片描述

jstat還可以用來判斷是否出現(xiàn)內存泄漏,步驟如下:

  • (1)在長時間運行的Java程序中,可以運行jstat命令連續(xù)獲取多行性能數(shù)據(jù),并取這幾行數(shù)據(jù)中OU列(即已占用的老年代內存)的最小值。
  • (2)每隔一段較長的時間重復一次上述操作,獲得多組OU最小值。如果這些值呈上漲趨勢,則說明該Java程序的老年代內存已使用量在不斷上漲,這意味著無法回收的對象在不斷增加,因此很有可能存在內存泄漏。

4、jinfo:實時查看和修改JVM配置參數(shù)

jinfo(Configuration Info for Java)可用于查看和調整JVM的配置參數(shù)。在很多情況下,Java應用程序不會指定所有的JVM參數(shù)。而此時,開發(fā)人員可能不知道某一個具體的JVM參數(shù)的默認值。在這種情況下,可能需要通過查找文檔獲取某個參數(shù)的默認值。這個查找過程可能是非常艱難的。但有了jinfo工具,開發(fā)人員可以很方便地找到JVM參數(shù)的當前值。上面講解的jps -v命令雖然可以查看JVM啟動時顯示指定的參數(shù)列表,但是如果想要知道未被顯示指定的參數(shù)的系統(tǒng)默認值,就需要用到jinfo工具了。

第二個作用就是在程序運行時修改部分參數(shù),并使之立即生效。并非所有參數(shù)都支持動態(tài)修改,只有被標記為manageable的參數(shù)可以被實時修改。其實,這個修改能力是極其有限的,使用下面的命令查看被標記為manageable的參數(shù)。

     java -XX:+PrintFlagsFinal -version | grep manageable

運行結果如下圖所示:

在這里插入圖片描述

jinfo的基本使用語法如下:

     jinfo  [ options ] pid

1、[ options ]選項說明

jinfo工具options主要選項如下表所示:

在這里插入圖片描述

2、pid說明

Java進程ID,必須要加上。

3、使用案例

由于jinfo可以查看JVM配置信息,也可用于調整JVM的配置參數(shù),下面分兩類案例分別講解如何使用。

4、jinfo用于查看JVM配置信息案例

在這里插入圖片描述

程序很簡單,只需要保證程序在執(zhí)行狀態(tài)即可。首先使用jps命令查看進程ID,如下所示:

     #查看進程ID
     jps -l

執(zhí)行結果如下:

C:\Users\Administrator>jps -l
15008 com.yang.ScannerTest
14820 sun.tools.jps.Jps

上面出現(xiàn)兩個結果,ScannerTest程序的進程ID是15008,另外一個進程ID表示jps命令本身的進程。下面使用jinfo命令來查看JVM配置參數(shù),命令如下:
(1)根據(jù)進程ID查詢全部參數(shù)和系統(tǒng)屬性:

     #查看全部參數(shù)和系統(tǒng)屬性,
     jinfo  15008

因篇幅所限,只展示部分結果,如下所示:

在這里插入圖片描述

結果中含有Java系統(tǒng)屬性(System Properties)和JVM參數(shù)(VM Flags)。

(2)根據(jù)進程ID查詢系統(tǒng)屬性(選項:-sysprops)命令如下:

     #查看系統(tǒng)屬性
     jinfo -sysprops 15008

運行結果如下,篇幅原因只展示部分結果,如下所示:

在這里插入圖片描述

通過Java代碼獲取系統(tǒng)屬性如下代碼清單所示:

在這里插入圖片描述

運行結果如下圖所示:

在這里插入圖片描述

通過比較兩者結果一致。

(3)查看全部JVM參數(shù)配置(選項:flags),命令如下:

     #查看全部JVM參數(shù)配置
     jinfo -flags 15008

運行結果如下圖所示:

在這里插入圖片描述

可以看到里面包含初始堆大小、最大堆大小等參數(shù)配置。

(4)查看某個Java進程的具體參數(shù)的值(選項:-flag name),命令如下:

     #查看JVM是否使用了ParallelGC垃圾收集器
     jinfo –flag UseParallelGC 15008

運行結果如下圖所示:

在這里插入圖片描述

可以看到結果為-XX:+UseParallelGC,其中UseParallelGC前面的“+”表示已經(jīng)使用,如果沒有使用的話,用“-”表示。也可以查看某個參數(shù)的具體數(shù)值,比如查看新生代對象晉升到老年代對象的最大年齡,命令如下:

     #新生代對象晉升到老年代對象的最大年齡
     jinfo -flag MaxTenuringThreshold 15008

在這里插入圖片描述

從結果可知新生代對象晉升到老年代對象的最大年齡是15。

5、jinfo用于修改JVM配置信息案例

(1)開啟或者關閉對應名稱的參數(shù)(-flag [±]name)(或者稱為修改布爾類型的參數(shù))。

首先查看是否開啟輸出GC日志的參數(shù),如果GC日志參數(shù)是開啟狀態(tài),那么使用jinfo命令關閉;如果GC日志參數(shù)是關閉狀態(tài),那么使用jinfo命令開啟,命令如下:

在這里插入圖片描述

對于布爾類型的JVM參數(shù),不僅可以使用-flag [±]name的形式來進行值的改變,也可以使用-flag name=value的形式修改運行時的JVM參數(shù)。但是對value賦值必須是1或者0,1表示“+”,0表示“-”,如下所示:

在這里插入圖片描述

(2)修改對應名稱的參數(shù)(-flag name=value)(或者稱為修改非布爾類型的參數(shù))。

修改非布爾類型MaxHeapFreeRatio的值,命令如下:

在這里插入圖片描述

運行結果如下圖所示:

在這里插入圖片描述

除了使用jinfo查看JVM配置參數(shù)之外,還有如下方式:

在這里插入圖片描述

java -XX:+PrintFlagsInitial執(zhí)行結果如下,展示部分結果:

在這里插入圖片描述

java -XX:+PrintFlagsFinal執(zhí)行結果如下,展示部分結果:

在這里插入圖片描述

輸出結果中包含五列。第一列表示參數(shù)的數(shù)據(jù)類型,第二列表示參數(shù)名稱,第四列表示參數(shù)的值,第五列表示參數(shù)的類別。第三列“=”是參數(shù)的默認值,而“:=”表示參數(shù)被用戶或者JVM賦值了??梢酝ㄟ^“java -XX:+PrintFlagsFinal |grep":="”命令查看哪些參數(shù)是被用戶或者JVM賦值的。java -XX:+PrintFlagsInitial只展示了第三列為“=”的參數(shù)。

java -XX:+PrintCommandLineFlags執(zhí)行結果如下,該參數(shù)輸出被用戶或者JVM設置過的詳細的-XX參數(shù)的名稱和值:

     -XX:InitialHeapSize=268435456
     -XX:MaxHeapSize=4294967296
     -XX:+PrintCommandLineFlags
     -XX:+UseCompressedClassPointers
     -XX:+UseCompressedOops
     -XX:+UseParallelGC

該參數(shù)的結果是java -XX:+PrintFlagsFinal的結果中帶有“:=”的部分參數(shù)??梢酝ㄟ^該命令快捷地查看修改過的參數(shù)。

5、jmap:導出內存映像文件和內存使用情況

jmap(JVM Memory Map)用于生成JVM的內存轉儲快照,生成heapdump文件且可以查詢finalize執(zhí)行隊列,以及Java堆與元空間的一些信息。jmap的作用并不僅僅是為了獲取dump文件(堆轉儲快照文件,二進制文件),它還可以獲取目標Java進程的內存相關信息,包括Java堆各區(qū)域的使用情況、堆中對象的統(tǒng)計信息、類加載信息等。

開發(fā)人員可以在控制臺中輸入命令“jmap-help”,查閱jmap工具的具體使用方式和標準選項配置。jmap的基本使用語法如下:

在這里插入圖片描述

1、[ options ]選項說明

jmap工具[options]主要選項如下表所示:

在這里插入圖片描述

這些參數(shù)和Linux下輸入顯示的命令多少會有一些不同,也受JDK版本的影響。其中選項-dump、-heap、-histo是開發(fā)人員在工作中使用頻率較高的指令。

2、使用案例

(1)-dump選項:導出內存映像文件。

一般來說,使用jmap指令生成dump文件的操作算得上是最常用的jmap命令之一,將堆中所有存活對象導出至一個文件之中。執(zhí)行該命令,JVM會將整個Java堆二進制格式轉儲到指定filename的文件中。live子選項是可選的,如果指定了live子選項,堆中只有存活的對象會被轉儲。

通常在寫dump文件前會觸發(fā)一次Full GC,所以dump文件里保存的都是Full GC后留下的對象信息。由于生成dump文件比較耗時,因此大家需要耐心等待,尤其是大內存鏡像生成dump文件需要耗費更長的時間來完成。

如果想要瀏覽dump文件,大家可以使用jhat(Java堆分析工具)讀取生成的文件,也可以使用可視化工具進行解讀,比如MAT內存分析工具。獲取dump文件有手動獲取和自動獲取兩種方式。

手動獲取的意思是當發(fā)現(xiàn)系統(tǒng)需要優(yōu)化或者需要解決內存問題時,需要開發(fā)者主動執(zhí)行jmap命令,導出dump文件,手動獲取命令如下:

     #手動獲取堆內存全部信息
     jmap -dump:format=b,file=<filename.hprof><pid>
     #手動獲取堆內存存活對象全部信息
     jmap -dump:live,format=b,file=<filename.hprof><pid>

代碼清單如下所示,往堆內存中存放數(shù)據(jù),然后導出dump文件。

在這里插入圖片描述

運行程序,最終該程序會產生內存溢出,在執(zhí)行過程中使用上述命令導出dump文件即可,運行結果如下圖所示:

在這里插入圖片描述

上述命令中,file表示指定文件目錄,這里將文件放到D盤根目錄,10692表示Java進程ID,結果如下圖所示,dump1.hprof就是導出的結果文件。

在這里插入圖片描述

當程序發(fā)生內存溢出退出系統(tǒng)時,一些瞬時信息都隨著程序的終止而消失,而重現(xiàn)OOM問題往往比較困難或者耗時。若能在OOM時,自動導出dump文件就顯得非常迫切??梢耘渲肑VM參數(shù)“-XX:+HeapDumpOnOutOfMemoryError:”使程序發(fā)生OOM時,導出應用程序的當前堆快照。

依然使用上面代碼,在啟動程序之前,在idea中添加如下JVM參數(shù)配置:

     -Xms60m
     -Xmx60m
     -XX:+HeapDumpOnOutOfMemoryError
     -XX:HeapDumpPath=d:/autoDump.hprof

添加參數(shù)如下圖所示:

在這里插入圖片描述

啟動程序,運行結果如下圖所示:

在這里插入圖片描述

從結果可知,程序發(fā)生了內存溢出,此時dump文件自動生成到目標目錄中,如下圖所示:

在這里插入圖片描述

(2)-heap選項:顯示堆內存相關信息

命令如下:

     #1520表示當前進程ID
     jmap -heap 1520

運行結果如下:

在這里插入圖片描述

打印heap的概要信息、GC使用的算法、heap的配置和使用情況,可以判斷當前堆內存使用情況以及垃圾回收情況。

可以看到最大堆大小為60MB,和前面的VM配置信息一致;新生代大小等于Eden區(qū)加From區(qū)加To的大小,總共為20MB,符合新生代和老年代比例大小為2:1;老年代大小為40MB,老年代使用率達到了99.53%,說明老年代空間是不足的。

(3)-hiso選項:顯示堆中對象的統(tǒng)計信息:

     #1520表示當前進程ID
     jmap -histo 1520

運行結果如下,由于篇幅原因,展示部分結果:

在這里插入圖片描述

上面結果中,instances表示當前的實例數(shù)量;bytes表示對象占用的內存大??;classs name表示類名,按照內存大小逆序排列。

(4)-permstat選項:

該選項主要以ClassLoader為口徑輸出永久代的內存狀態(tài)信息,僅對Linux和solaris平臺有效。

(5)-finalizerinfo選項。

該選項主要用來顯示F-Queue中等待Finalize線程執(zhí)行finalize方法的對象,就是說查看堆積在finalizer隊列中的對象。僅對Linux和solaris平臺有效。

(6)-F選項

該選項用于當JVM進程對-dump選項沒有任何響應時,可使用此選項強制執(zhí)行生成dump文件。僅對Linux和solaris平臺有效。

由于jmap將訪問堆中的所有對象,為了保證在此過程中不被應用線程干擾,jmap需要借助安全點機制,讓所有線程不改變堆中數(shù)據(jù)的狀態(tài)。也就是說,由jmap導出的堆快照必定是安全點位置的。這可能導致基于該快照的分析結果存在偏差。例如,假設在編譯生成的機器碼中,某些對象的生命周期在兩個安全點之間,那么:live選項將無法探知到這些對象。另外如果某個線程長時間無法跑到安全點,jmap將一直等待下去。與前面講的jstat不同,垃圾收集器會主動將jstat所需要的摘要數(shù)據(jù)保存至固定位置中,而jstat只需要直接讀取即可。

6、jhat:JDK自帶堆分析工具

jhat(JVM Heap Analysis Tool)命令一般與jmap命令搭配使用,用于分析jmap生成的dump文件(堆轉儲快照)。jhat內置了一個微型的HTTP/HTML服務器,生成dump文件的分析結果后,用戶可以在瀏覽器中查看分析結果。

使用了jhat命令,就啟動了一個http服務,端口是7000,即通過訪問http://localhost:7000/就可以在瀏覽器中查看結果。jhat命令在JDK9中已經(jīng)被刪除,官方建議用VisualVM代替。實際工作中一般不會直接在生產服務器使用jhat分析dump文件。

7、jstack:打印JVM中線程快照

jstack(JVM Stack Trace)用于生成JVM指定進程當前時刻的線程快照(Thread Dump),方便用戶跟蹤JVM堆棧信息。線程快照就是當前JVM內指定進程的每一條線程正在執(zhí)行的方法堆棧的集合。

生成線程快照的作用是可用于定位線程出現(xiàn)長時間停頓的原因,如線程間死鎖、死循環(huán)、請求外部資源導致的長時間等待等問題,這些都是導致線程長時間停頓的常見原因。當線程出現(xiàn)停頓時,就可以用jstack顯示各個線程調用的堆棧情況。

在線程快照中,有下面幾種狀態(tài),如下表所示:

在這里插入圖片描述

其中線程的Deadlock、Waiting on condition、Waiting on monitor entry以及Blocked狀態(tài)需要在分析線程棧的時候重點關注。

jstack的基本使用語法如下:

     jstack [ option ] <pid>

1、[ options ]選項說明

jstack工具[options]主要選項如下表所示:

在這里插入圖片描述

2、使用案例

代碼清單如下演示了線程死鎖,使用jstack命令觀察線程狀態(tài)。

在這里插入圖片描述

上面例子很簡單,啟動了兩個線程,分別獲取對方的資源,如此造成死鎖。下面啟動程序,使用jstack命令查看線程狀態(tài),命令如下,其中1776是程序的進程ID。

     jstack 1776

運行結果如下:

在這里插入圖片描述

從上面結果中可以發(fā)現(xiàn),Thread-1線程和Thread-0線程互相等待對方的資源,問題代碼出現(xiàn)“com.yang.ThreadDeadLock$2.run()”行。在死鎖情況出現(xiàn)時,可以很方便地幫助定位到問題。也可以通過Thread.getAllStackTraces()方法獲取所有線程的狀態(tài),代碼清單如下所示:

在這里插入圖片描述

運行結果如下圖所示,可以看到各個線程的狀態(tài):

在這里插入圖片描述

8、jcmd:多功能命令行

在JDK1.7以后,新增了一個命令行工具jcmd。它是一個多功能的工具,可以用來實現(xiàn)前面除了jstat之外所有命令的功能,比如用它來導出堆、內存使用、查看Java進程、導出線程信息、執(zhí)行GC、JVM運行時間等。jcmd擁有jmap的大部分功能,并且官方也推薦使用jcmd命令代替jmap命令。

至于jstat的功能,雖然jcmd復制了jstat的部分代碼,并支持通過PerfCounter.print子命令來打印所有的Performance Counter,但是它沒有保留jstat的輸出格式,也沒有重復打印的功能。

jcmd的基本使用語法如下表所示:

在這里插入圖片描述

9、jstatd:遠程主機信息收集

之前的指令只涉及監(jiān)控本機的Java應用程序,而在這些工具中,一些監(jiān)控工具也支持對遠程計算機的監(jiān)控(如jps、jstat)。為了啟用遠程監(jiān)控,則需要配合使用jstatd工具。

命令jstatd是一個RMI服務端程序,它的作用相當于代理服務器,建立本地計算機與遠程監(jiān)控工具的通信。jstatd服務器將本機的Java應用程序信息傳遞到遠程計算機。執(zhí)行原理如下圖所示:

在這里插入圖片描述

直接打開jstatd服務器可能會拋出訪問拒絕異常,這是因為jstatd程序沒有足夠的權限,如下圖所示:

在這里插入圖片描述

10、小結

介紹了JDK自帶的命令行工具及其常用參數(shù)。當Java應用和服務出現(xiàn)莫名的卡頓、CPU飆升等問題時,通過JDK自帶的狀態(tài)監(jiān)控命令和圖形化工具,可以非常方便地分析對應進程的JVM狀態(tài),進而定位問題并解決問題。

到此這篇關于JVM 命令行工具的使用的文章就介紹到這了,更多相關JVM 命令行工具內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring中的兩種代理JDK和CGLIB的區(qū)別淺談

    Spring中的兩種代理JDK和CGLIB的區(qū)別淺談

    本篇文章中主要介紹了Spring中的兩種代理JDK和CGLIB的區(qū)別淺談,詳解的介紹了JDK和CGLIB的原理和方法,有需要的朋友可以了解一下
    2017-04-04
  • Spring中Bean的作用域和自動裝配方式

    Spring中Bean的作用域和自動裝配方式

    這篇文章主要介紹了Spring中Bean的作用域和自動裝配方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java內部測試類代碼詳解

    java內部測試類代碼詳解

    這篇文章主要介紹了java內部測試類代碼詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • hibernate查詢緩存詳細分析

    hibernate查詢緩存詳細分析

    這篇文章主要介紹了hibernate查詢緩存詳細分析,包括查詢緩存配置方法及關閉二級緩存的詳細介紹,需要的朋友參考下本文吧
    2017-09-09
  • Java實現(xiàn)合并兩個有序序列算法示例

    Java實現(xiàn)合并兩個有序序列算法示例

    這篇文章主要介紹了Java實現(xiàn)合并兩個有序序列算法,簡單描述了序列合并算法的原理與java合并有序序列的具體操作步驟及相關實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • Java的Function接口與andThen組合及解讀

    Java的Function接口與andThen組合及解讀

    文章介紹了Java 8中的Function接口及其andThen方法,詳細解釋了Function接口的基礎概念、用法、組合機制及應用,包括與compose方法的對比、在Stream API中的使用場景、高級應用場景和最佳實踐,并強調了保持代碼簡潔、可讀性和靈活性的重要性
    2026-04-04
  • 詳解SpringCloud服務認證(JWT)

    詳解SpringCloud服務認證(JWT)

    本篇文章主要介紹了SpringCloud服務認證(JWT),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java集合List與Array的相互轉換

    Java集合List與Array的相互轉換

    本篇文章主要介紹了Java集合List與Array的相互轉換,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 面試官問如何啟動Java?線程

    面試官問如何啟動Java?線程

    這篇文章主要介紹了面試官問如何啟動Java?線程,Java?的線程創(chuàng)建和啟動非常簡單,但如果問一個線程是怎么啟動起來的往往并不清楚,甚至不知道為什么啟動時是調用start(),而不是調用run()方法呢?下面我們就一起進入文章學習這個問題吧
    2021-12-12
  • 如何解決異步任務上下文丟失問題

    如何解決異步任務上下文丟失問題

    在多線程編程中,異步任務可能會導致上下文信息丟失,為了解決這個問題,可以在執(zhí)行異步任務前,通過自定義TaskDecorator拷貝主線程的上下文至子線程,這樣可以確保上下文在異步執(zhí)行過程中得以保留,將定制的TaskDecorator設置至線程池,可以有效地解決上下文丟失問題
    2024-09-09

最新評論

灵璧县| 潞西市| 江陵县| 贺州市| 陆河县| 哈密市| 红安县| 兴宁市| 南宫市| 新蔡县| 普兰店市| 天长市| 洱源县| 乐业县| 大余县| 马鞍山市| 班玛县| 哈巴河县| 无锡市| 宁陵县| 安丘市| 峡江县| 大同市| 正定县| 高阳县| 吉木萨尔县| 富宁县| 阳东县| 明星| 沙雅县| 龙泉市| 高淳县| 泰安市| 财经| 百色市| 巢湖市| 建阳市| 青铜峡市| 来宾市| 澄江县| 阿荣旗|