亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中JVM常用參數(shù)配置教程(提供配置示例)

 更新時(shí)間:2024年06月07日 09:11:00   作者:kerwin_code  
這篇文章主要給大家介紹了關(guān)于Java中JVM常用參數(shù)配置的相關(guān)資料, jvm的參數(shù)有很多,必須知道參數(shù)分類并且記住面試常見的幾個(gè)參數(shù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在實(shí)際開發(fā)和部署中一個(gè)合格的碼農(nóng)都會(huì)對(duì)JVM的一些參數(shù)做合理的配置,比如內(nèi)存配置參數(shù)、GC策略配置參數(shù)、日志配置參數(shù)、異常信息參數(shù)等,本文會(huì)列出一些常用的JVM參數(shù)以及通過一些例子演示配置后的效果。

PS:本文使用JDK1.8

一、內(nèi)存參數(shù)配置

// 設(shè)置JVM使Server模式,特點(diǎn)是啟動(dòng)速度較慢,但運(yùn)行時(shí)性能和內(nèi)存管理效率很高,適用于生產(chǎn)環(huán)境。在具有64位能力的JDK環(huán)境下默認(rèn)啟用該模式。
-server 

// 設(shè)置元空間最大值, 默認(rèn)是-1, 即不限制, 或者說只受限于本地內(nèi)存大小,如果超過這個(gè)值會(huì)內(nèi)存溢出。
-XX:MaxMetaspaceSize=256m
// 指定元空間觸發(fā)Fullgc的初始閾值(元空間無固定初始大小), 以字節(jié)為單位,默認(rèn)是21M,達(dá)到該值就會(huì)觸發(fā)full gc進(jìn)行類型卸載, 同時(shí)收集器會(huì)對(duì)該值進(jìn)行調(diào)整: 如果釋放了大量的空間, 就適當(dāng)降低該值; 如果釋放了很少的空間, 那么在不超過-XX:MaxMetaspaceSize(如果設(shè)置了的話) 的情況下, 適當(dāng)提高該值。這個(gè)跟早期jdk版本的-XX:PermSize參數(shù)意思不一樣,-XX:PermSize代表永久代的初始容量。
// 觸發(fā)一次元空間Full GC后就會(huì)重新計(jì)算該值,建議設(shè)置成和最大內(nèi)存一致
-XX:MetaspaceSize=256m

// 設(shè)置最大堆內(nèi)存,默認(rèn)是物理內(nèi)存的1/4,內(nèi)存的單位可以是m g,并且不區(qū)分大小寫
-Xmx2g 或者 -XX:MaxHeapSize=2048m
// 設(shè)置初始值堆內(nèi)存,默認(rèn)是物理內(nèi)存的1/64,內(nèi)存的單位可以是m g,并且不區(qū)分大小寫
-Xms2g 或者 -XX:InitialHeapSize=2048m
// 設(shè)置年輕代內(nèi)存大小,默認(rèn)和老年代1\2,-XX:NewSize初始化年輕代大小 -XX:MaxNewSize最大年輕代大小
-Xmn1g 或者 -XX:NewSize=1g -XX:MaxNewSize=1g
// 設(shè)置每個(gè)線程的堆棧大小 默認(rèn)是1024k,這個(gè)是最大內(nèi)存并不是開啟一個(gè)線程馬上就會(huì)消耗這么多內(nèi)存
-Xss512k 或者 -XX:ThreadStackSize=512k

// 年輕代占用堆比例(如果有配置-Xmn,那么會(huì)以-Xmn配置為準(zhǔn))
// 默認(rèn) -XX:NewRatio=2新生代占1,老年代占2,年輕代占整個(gè)堆的1/3
// 假如 -XX:NewRatio=4新生代占1,老年代占4,年輕代占整個(gè)堆的1/5 NewRatio值就是設(shè)置老年代的占比,剩下的1給新生代
-XX:NewRatio=2 
// 用來設(shè)置新生代中eden空間和from/to空間的比例.含義:-設(shè)置為8代表 eden使用80%的新生代內(nèi)存 from和to各用10%,默認(rèn)為8
-XX:SurvivorRatio=8
// 禁用Survivor區(qū)自適應(yīng)策略默認(rèn)是開啟的,如果不關(guān)閉這個(gè)配置新生代eden區(qū)和s0 s1區(qū)會(huì)在gc后自動(dòng)調(diào)整大小,如果設(shè)置了-XX:SurvivorRatio也只有在沒有GC之前有效只要GC后就會(huì)重新動(dòng)態(tài)計(jì)算
-XX:-UseAdaptiveSizePolicy

// 擴(kuò)張堆內(nèi)存的時(shí)機(jī)
// 堆內(nèi)存使用率大于70時(shí)擴(kuò)張堆內(nèi)存,如果最大堆內(nèi)存=初始堆內(nèi)存時(shí)該參數(shù)無效,默認(rèn)值70
-XX:MaxHeapFreeRatio=70
// 縮小堆內(nèi)存的時(shí)機(jī)
// 堆內(nèi)存使用率小于40時(shí)縮減堆內(nèi)存,如果最大堆內(nèi)存=初始堆內(nèi)存時(shí)該參數(shù)無效,默認(rèn)值40
-XX:MinHeapFreeRatio=40

// 字符串常量池hash桶大小 類似于HashTable,最小值1009 默認(rèn)60013 不可動(dòng)態(tài)擴(kuò)容
-XX:StringTableSize=60013

// 設(shè)置直接內(nèi)存大小,NIO(Non-blocking I/O)中通過ByteBuffer等對(duì)象分配的堆外內(nèi)存
// 默認(rèn)情況下,直接內(nèi)存的大小可能會(huì)與Java堆的最大值 (-Xmx) 相同
-XX:MaxDirectMemorySize=512m

二、垃圾收集器配置

// 配置使用Serial單線程垃圾收集器,虛擬機(jī)運(yùn)行在Client模式下的默認(rèn)值
// 新生代使用Serial  老年代則使用SerialOld
-XX:+UseSerialGC

// 配置使用ParNew垃圾收集器
// 新生代使用ParNew 老年代則使用Serial Old
-XX:+UseParNewGC

// 配置使用Parallel Scavenge垃圾收集器,虛擬機(jī)運(yùn)行在Server模式下的默認(rèn)值
// 新生代使用Parallel Scavenge 老年代使用Parallel Old收集器
-XX:+UseParallelGC

// 配置使用Parallel Old垃圾收集器
// 新生代使用Parallel Scavenge 老年代使用Parallel Old收集器
-XX:+UseParallelOldGC

// 配置使用CMS垃圾收集器
// 新生代使用ParNew 老年代使用CMS+Serial Old收集器
-XX:+UseConcMarkSweepGC

// 配置使用G1垃圾收集器
-XX:+UseG1GC

可以通過jinfo -flags 進(jìn)程號(hào)查看對(duì)應(yīng)Java程序啟動(dòng)參數(shù),我本地使用的JDK1.8默認(rèn)使用的ParallelGC

三、GC策略配置

3.1、基礎(chǔ)通用配置

// GC停頓時(shí)間,垃圾收集器會(huì)嘗試用各種手段達(dá)到這個(gè)時(shí)間,比如減小年輕代
-XX:MaxGCPauseMillis 

// 新生代晉升老年代閾值 默認(rèn)是15 不同回收算法不同
-XX:MaxTenuringThreshold=15

// 對(duì)象動(dòng)態(tài)年齡判斷默認(rèn)50%  當(dāng)一批對(duì)象大小>=survivor區(qū)的50%時(shí)這批對(duì)象會(huì)直接放入老年代
-XX:TargetSurvivorRatio=50

// 默認(rèn)值是0沒有限制 大于這個(gè)值的參數(shù)直接在老年代分配
// 這樣做的目的是避免在Eden區(qū)和兩個(gè)Survivor區(qū)之間發(fā)生大量的內(nèi)存復(fù)制
‐XX:PretenureSizeThreshold=1m

// 忽略手動(dòng)調(diào)用GC, System.gc()的調(diào)用就會(huì)變成一個(gè)空調(diào)用,完全不觸發(fā)GC
-XX:+DisableExplicitGC 

// 內(nèi)存頁的大小
-XX:LargePageSizeInBytes=128m 

// 設(shè)定GMT區(qū)域,避免CentOS坑爹的時(shí)區(qū)設(shè)置
-Duser.timezone=GMT+8

// FullGC 前執(zhí)行MinorGC  默認(rèn)是開啟的
-XX:+ScavengeBeforeFullGC

3.2、Parallel 和 Parallel Old 常用參數(shù)配置

// 調(diào)整垃圾回收的時(shí)間和總時(shí)間的占比 公式 1/(1+ratio)  ratio默認(rèn)是99,100分鐘運(yùn)行時(shí)間默認(rèn)不能超過1分鐘的GC時(shí)間,ratio一般設(shè)置為19
-XX:GCTimeRatio=99

// GC最大暫停毫秒數(shù) 默認(rèn)是200毫秒 和-XX:+GCTimeRatio有沖突,堆內(nèi)存小回收速度才會(huì)快,而-XX:+GCTimeRatio需要保證一定時(shí)間內(nèi)GC時(shí)間不能超過一個(gè)臨界值需要增加內(nèi)存才能減小GC時(shí)間比,需要找到一個(gè)兩個(gè)參數(shù)的合理值
-XX:MaxGCPauseMillis=200ms

// 設(shè)置垃圾回收線程數(shù)量 默認(rèn)是CUP內(nèi)核數(shù)量
-XX:ParallelGCThreads=4

3.3、CMS 常用參數(shù)配置

// GC最大暫停毫秒數(shù) 默認(rèn)是200毫秒
-XX:MaxGCPauseMillis=200ms

// 為了加快此階段處理速度,減少停頓時(shí)間,可以開啟初始標(biāo)記并行化
-XX:+CMSParallelInitialMarkEnabled

// CMS并行線程數(shù)量,并行線程用于執(zhí)行 CMS 垃圾回收器的并行階段,如初始標(biāo)記階段和重新標(biāo)記階段
// 默認(rèn)值為系統(tǒng)的邏輯處理器數(shù)量減1,目的是為了保留一個(gè)處理器用于應(yīng)用程序線程
-XX:ParallelCMSThreads=3

// CMS并發(fā)線程數(shù)量,并發(fā)線程用于執(zhí)行 CMS 垃圾回收器的并發(fā)階段,如初始標(biāo)記階段、并發(fā)標(biāo)記階段和并發(fā)清理階段。
// 默認(rèn)值為系統(tǒng)的邏輯處理器數(shù)量減1,目的是為了保留一個(gè)處理器用于應(yīng)用程序線程
-XX:ConcGCThreads=3

// 執(zhí)行CMS的內(nèi)存占比 percent=80 當(dāng)我的老年代內(nèi)存達(dá)到80%觸發(fā)垃圾回收 默認(rèn)是92% 應(yīng)為CMS采用標(biāo)記清除需要給浮動(dòng)垃圾(在最后一步并發(fā)清除時(shí)其它沒有被標(biāo)記的垃圾遺留)預(yù)留空間 
-XX:CMSInitiatingOccupancyFraction=percent

// 該參數(shù)需要配合XX:CMSInitiatingOccupancyFraction使用,只使用設(shè)定的回收閾值(-XX:CMSInitiatingOccupancyFraction設(shè) 定的值),如果不指定,JVM僅在第一次使用設(shè)定值,后續(xù)則會(huì)自動(dòng)調(diào)整
-XX:+UseCMSInitiatingOccupancyOnly 

// 重新標(biāo)記階段前提前進(jìn)行一次新生代GC,因?yàn)橹匦聵?biāo)記也會(huì)判斷新生代對(duì)象是否引用老年代對(duì)象,有些時(shí)候新生代對(duì)象已經(jīng)沒有被GC root對(duì)象引用但是還沒有GC時(shí),重新標(biāo)記會(huì)掃描到新生代對(duì)象并且保留新生代對(duì)象引用的老年代對(duì)象,默認(rèn)關(guān)閉false
-XX:CMSScavengeBeforeRemark=true

// 執(zhí)行完Full GC后對(duì)內(nèi)存空間進(jìn)行壓縮整理 默認(rèn)開啟
-XX:+UseCMSCompactAtFullGollection

// 設(shè)置在執(zhí)行多少次Full GC后對(duì)內(nèi)存空間進(jìn)行壓縮整理 默認(rèn)0次,只要觸發(fā)Full GC就會(huì)進(jìn)行內(nèi)存壓縮
-XX:CMSFullGCsBeforeCompaction=0

// 垃圾回收時(shí)是否同時(shí)卸載不用的class信息,默認(rèn)關(guān)閉
-XX:+CMSClassUnloadingEnabled

3.4、G1 常用參數(shù)配置

// 指定分區(qū)大小(1MB~32MB,且必須是2的N次冪),不設(shè)置默認(rèn)會(huì)根據(jù)堆大小分配
// 堆內(nèi)存為1G默認(rèn)1024個(gè)1MB分區(qū)、堆內(nèi)存為2G默認(rèn)2048個(gè)1MB分區(qū)、堆內(nèi)存為4G默認(rèn)2048個(gè)2MB分區(qū)、堆內(nèi)存為4G默認(rèn)2048個(gè)2MB分區(qū)、堆內(nèi)存為6G默認(rèn)6144個(gè)1MB分區(qū)、堆內(nèi)存為8G默認(rèn)2048個(gè)4MB分區(qū)、以此類推
-XX:G1HeapRegionSize=2m

// 目標(biāo)暫停時(shí)間(默認(rèn)200ms) 
-XX:MaxGCPauseMillis=200ms

// 新生代內(nèi)存初始空間(默認(rèn)整堆5%) 
// PS: 因?yàn)镴DK版本問題,在啟動(dòng)時(shí)可能會(huì)出現(xiàn) "Error: VM option 'G1NewSizePercent' is experimental and must be enabled via -XX:+UnlockExperimentalVMOptions."
// 如果出現(xiàn)上述問題,在啟動(dòng)參數(shù)中添加-XX:+UnlockExperimentalVMOptions即可
-XX:G1NewSizePercent=5

// 新生代內(nèi)存最大空間 (默認(rèn)整堆60%) 
-XX:G1MaxNewSizePercent=60

// Survivor區(qū)的填充容量(默認(rèn)50%),Survivor區(qū)域里的一批對(duì)象(年齡1+年齡2+年齡n的多個(gè) 年齡對(duì)象)總和超過了Survivor區(qū)域的50%,此時(shí)就會(huì)把年齡n(含)以上的對(duì)象都放入老年代 
-XX:TargetSurvivorRatio=50

// 最大年齡閾值(默認(rèn)15) 
-XX:MaxTenuringThreshold=15

// 老年代占用空間達(dá)到整堆內(nèi)存閾值(默認(rèn)45%),則執(zhí)行新生代和老年代的混合收集(MixedGC) 
-XX:InitiatingHeapOccupancyPercent=45

// region中的存活對(duì)象低于這個(gè)值時(shí)才會(huì)回收該region,如果超過這個(gè)值,存活對(duì)象過多,回收的的意義不大(默認(rèn)65%)。 
-XX:G1MixedGCLiveThresholdPercent=65

// 在一次回收過程中指定做幾次篩選回收(默認(rèn)8次),在最后一個(gè)篩選回收階段可以回收一會(huì),然后暫?;厥?,恢復(fù)系統(tǒng)運(yùn)行,一會(huì)再開始回收,這樣可以讓系統(tǒng)不至于單次停頓時(shí)間過長(zhǎng)。 
-XX:G1MixedGCCountTarget=8

// gc過程中空出來的region是否充足閾值,在混合回收的時(shí)候,對(duì)Region回收都是基于復(fù)制算法進(jìn)行的,都是把要回收的Region里的存活對(duì)象放入其他Region,然后這個(gè)Region中的垃圾對(duì)象全部清理掉,這樣的話在回收過程就會(huì)不斷空出來新的Region,一旦空閑出來的Region數(shù)量達(dá)到了堆內(nèi)存的5%,此時(shí)就會(huì)立即停止混合回收,意味著本次混合回收就結(jié)束了(默認(rèn)5%)。
-XX:G1HeapWastePercent=5

四、GC日志配置

// 設(shè)置日志目錄和日志名稱
-Xloggc:/data/logs/gc-%t.log

// 開啟滾動(dòng)生成日志 默認(rèn)關(guān)閉
-XX:+UseGCLogFileRotation
// 滾動(dòng)GC日志文件數(shù),默認(rèn)0不滾動(dòng),保留最多5個(gè)日志文件
-XX:NumberOfGCLogFiles=5
// GC文件滾動(dòng)大小,需開啟UseGCLogFileRotation,每個(gè)文件最大為20MB
-XX:GCLogFileSize=20M 

// 在進(jìn)行GC的前后打印出堆的信息
-XX:+PrintHeapAtGC 
// 打印新生代晉升詳情
-XX:+PrintTenuringDistribution
// 打印字符串常量池堆信息
-XX:+PrintStringTableStatistics
// 打印GC信息
-verbose:gc 
// 打印GC詳細(xì)信息 
-XX:+PrintGCDetails
// 輸出GC的時(shí)間戳(以基準(zhǔn)時(shí)間的形式)
-XX:+PrintGCTimeStamps
// 輸出GC的時(shí)間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintGCDateStamps 
// 打印當(dāng)前JVM參數(shù)信息 建議在每個(gè)程序中都添加上
-XX:+PrintCommandLineFlags
// 產(chǎn)生GC的原因(默認(rèn)開啟)
-XX:+PrintGCCause

五、dump 日志參數(shù)配置

5.1、OutOfMemory異常時(shí)生成dump文件

// 默認(rèn)關(guān)閉
// 可以通過jinfo -flag [+|-]HeapDumpOnOutOfMemoryError <pid> 或 jinfo -flag HeapDumpOnOutOfMemoryError=<value> <pid> 來動(dòng)態(tài)開啟或設(shè)置值
-XX:+HeapDumpOnOutOfMemoryError
// 設(shè)置文件存儲(chǔ)路徑
// 當(dāng)HeapDumpOnOutOfMemoryError開啟的時(shí)候,dump文件的保存路徑,默認(rèn)為工作目錄下的,可以通過配置指定保存路徑
-XX:HeapDumpPath=/data/dump/jvm.hprof

5.2、發(fā)生Full GC時(shí)生成dump文件

不推薦開啟會(huì)增加整體停頓時(shí)間

// 在Full GC前dump
-XX:+HeapDumpBeforeFullGC
// 在Full GC后dump
-XX:+HeapDumpAfterFullGC
// 設(shè)置Dump保存的路徑
-XX:HeapDumpPath=/data/dump/jvm.hprof

六、其它參數(shù)配置

// JVM自身故障導(dǎo)致進(jìn)程奔潰時(shí),會(huì)有一個(gè)日志文件生成,它包含了導(dǎo)致crash的重要信息,通過分析文件來查找crash原因
-XX:ErrorFile=/data/logs/error.log

// JDK1.6開始,默認(rèn)server模式下開啟了這個(gè)參數(shù),意為當(dāng)jvm檢測(cè)到程序在重復(fù)拋一個(gè)異常
// 在執(zhí)行若干次后會(huì)將異常吞掉,這里的若干次在jdk1.7測(cè)得是20707。即執(zhí)行20707次后,stackTrace 長(zhǎng)度會(huì)為0。有時(shí)這不利于我們排錯(cuò),通過指定OmitStackTraceInFastThrow,可禁用這功能
-XX:-OmitStackTraceInFastThrow

七、配置示例

需要配置的參數(shù)信息

// 配置新生代使用Parallel Scavenge 老年代將會(huì)使用Parallel Old收集器
-XX:+UseParallelOldGC
// 配置元空間最大內(nèi)存和初始內(nèi)存
-XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m
// 配置最大堆內(nèi)存、初始內(nèi)存、新生代占用內(nèi)存
-Xmx512m -Xms512m -Xmn256m
// 配置關(guān)閉動(dòng)態(tài)調(diào)整新生代eden和from to大小比例
-XX:-UseAdaptiveSizePolicy
// 配置忽略手動(dòng)調(diào)用GC和時(shí)區(qū)
-XX:+DisableExplicitGC -Duser.timezone=GMT+8
// 配置開啟記錄OOM Dump信息和存儲(chǔ)地址
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvm.hprof
// 配置打印當(dāng)前JVM參數(shù)信息
-XX:+PrintCommandLineFlags
// 配置開啟GC日志輸出
-verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -Xloggc:./gc-%t.log
// 配置關(guān)閉重復(fù)多次拋同一個(gè)異常不輸出
-XX:-OmitStackTraceInFastThrow
// 配置JVM自身故障導(dǎo)致宕機(jī)時(shí)日志輸出目錄
-XX:ErrorFile=./error.log

7.1、在IDEA中配置JVM參數(shù)

  • 配置參數(shù)(注意文件的輸出目錄,我這里會(huì)直接輸出在當(dāng)前目錄)
-XX:+UseParallelOldGC
-XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m
-Xmx20m -Xms20m -Xmn10m
-XX:-UseAdaptiveSizePolicy
-XX:+DisableExplicitGC -Duser.timezone=GMT+8
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvm.hprof
-XX:+PrintCommandLineFlags
-verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -Xloggc:./gc-%t.log
-XX:-OmitStackTraceInFastThrow
-XX:ErrorFile=./error.log
  • 配置流程

     

    在這里插入圖片描述

7.2、通過 Java -jar 啟動(dòng)配置

# 應(yīng)用配置示例
nohup java -XX:+UseParallelOldGC -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -Xmx512m -Xms512m -Xmn256m -XX:-UseAdaptiveSizePolicy -XX:+DisableExplicitGC -Duser.timezone=GMT+8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./jvm.hprof -XX:+PrintCommandLineFlags -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -Xloggc:./gc-%t.log -XX:-OmitStackTraceInFastThrow -XX:ErrorFile=./error.log -jar app.jar > app.log 2>&1 &

總結(jié) 

到此這篇關(guān)于Java中JVM常用參數(shù)配置的文章就介紹到這了,更多相關(guān)Java JVM常用參數(shù)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解JSON與?Java對(duì)象之間的轉(zhuǎn)化

    詳解JSON與?Java對(duì)象之間的轉(zhuǎn)化

    在現(xiàn)在的日常開發(fā)中,不管前端還是后端,JSON?格式的數(shù)據(jù)是用得比較多的,甚至可以說無處不在。所以本文主要來講講JSON?格式的數(shù)據(jù)與?Java?對(duì)象之間的轉(zhuǎn)化吧
    2023-03-03
  • SpringBoot整合Sa-Token實(shí)現(xiàn)登錄認(rèn)證的示例代碼

    SpringBoot整合Sa-Token實(shí)現(xiàn)登錄認(rèn)證的示例代碼

    本文主要介紹了SpringBoot整合Sa-Token實(shí)現(xiàn)登錄認(rèn)證的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SpringMVC4+MyBatis+SQL Server2014實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離

    SpringMVC4+MyBatis+SQL Server2014實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離

    這篇文章主要介紹了SpringMVC4+MyBatis+SQL Server2014實(shí)現(xiàn)讀寫分離,需要的朋友可以參考下
    2017-04-04
  • Java 實(shí)現(xiàn)Excel文檔添加超鏈接的代碼

    Java 實(shí)現(xiàn)Excel文檔添加超鏈接的代碼

    超鏈接即內(nèi)容鏈接,通過給特定對(duì)象設(shè)置超鏈接,可實(shí)現(xiàn)載體與特定網(wǎng)頁、文件、郵件、網(wǎng)絡(luò)等的鏈接,點(diǎn)擊鏈接載體可打開鏈接目標(biāo),在文檔處理中是一種比較常用的功能,本文將介紹通過Java程序給Excel文檔添加超鏈接的方法,感興趣的朋友一起看看吧
    2020-02-02
  • java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名

    java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名

    這篇文章主要介紹了java批量采集豌豆莢網(wǎng)站Android應(yīng)用圖標(biāo)和包名,主要用在做主題時(shí)替換這些常見應(yīng)用的圖片,需要的朋友可以參考下
    2014-06-06
  • java GUI編程之布局控制器(Layout)實(shí)例分析

    java GUI編程之布局控制器(Layout)實(shí)例分析

    這篇文章主要介紹了java GUI編程之布局控制器(Layout),結(jié)合實(shí)例形式分析了java GUI編程中布局控制器(Layout)具體功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • Spring Boot集成Mybatis的實(shí)例代碼(簡(jiǎn)潔版)

    Spring Boot集成Mybatis的實(shí)例代碼(簡(jiǎn)潔版)

    這篇文章主要介紹了Spring Boot集成Mybatis簡(jiǎn)潔版的教程,需要的朋友可以參考下
    2018-02-02
  • 使用Java實(shí)現(xiàn)簡(jiǎn)單串口通信

    使用Java實(shí)現(xiàn)簡(jiǎn)單串口通信

    這篇文章主要介紹了使用Java實(shí)現(xiàn)簡(jiǎn)單串口通信,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Intellij IDEA Debug調(diào)試技巧(小結(jié))

    Intellij IDEA Debug調(diào)試技巧(小結(jié))

    這篇文章主要介紹了Intellij IDEA Debug調(diào)試技巧(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 解析SpringBoot中@Autowire注解的實(shí)現(xiàn)原理

    解析SpringBoot中@Autowire注解的實(shí)現(xiàn)原理

    在開發(fā)Java項(xiàng)目時(shí),依賴注入是一種常見的實(shí)現(xiàn)方式,SpringBoot框架通過@Autowired注解來實(shí)現(xiàn)依賴注入的功能,本文將介紹SpringBoot中 Autowired注解實(shí)現(xiàn)的原理
    2023-06-06

最新評(píng)論