享興趣,傳播快樂,
增長見聞,留下美好!
親愛的您,這里是LearningYard學苑。
今天小編為大家帶來
[小高分享(3):一招搞定Excel表格數據亂碼問題]
歡迎您的訪問!
Share interest,spread happiness,i
ncrease knowledge,and leave beautiful.
Dear,this is the LearingYard Academy!
Today,the editor brings the
“Xiao Gao's sharing(3)One trick to solve the Excel table data garbled problem。”
Welcome to visit!
1、問題簡介:
Introduction to the problem:
在用Excel表格收集數據信息(如身份證號碼、電話號碼、銀行卡號等)時,常常會出現輸入長串數字后變成亂碼的情況。重新輸入一遍,還是亂碼。這是一個很普遍的問題,讓很多經常編輯表格的朋友感到頭疼。小編本人也是被煩惱過很多次,終于摸索出解決的方法。下面就以身份證號碼為例,將方法分享給大家。
When using Excel to collect data information (such as ID card number, telephone number, bank card number, etc.), it often appears that a long string of digits becomes garbled. Enter it again, it's still garbled. This is a very common problem, which makes many friends who often edit tables feel headache. Xiaobian myself has also been troubled many times, and finally found a solution. The following will take the ID card number as an example to share the method with you.
2、具體操作:
Specific operation:
首先,打開需要編輯的Excel表格,選中變成亂碼的數據。
First, open the Excel table you want to edit and select the data that has become garbled.
接著,在數據最前面輸入一個引號。注意:需要在輸入法為英文的情況下輸入引號。
Next, enter a quotation mark at the beginning of the data. Note: You need to enter quotes when the input method is in English.
最后,再點擊回車即可。
Finally, hit Enter again.
當有一豎列亂碼數據時,也可以用另外一種方法:設置單元格格式。
When there is a column of garbled data, you can also use another method: set the cell format.
首先,將身份證號這一豎列全部選中。右鍵點擊設置單元格格式。
First, select all the vertical columns of the ID number. Right click to format the cell.
然后點擊【分類】中的【數值】,將小數位數改為0即可。
Then click [Value] in [Category] and change the number of decimal places to 0.
3、方法總結:
Method summary:
當只有一個數據出現問題(變成亂碼)時,可以直接在數據前加上一個英文引號;當需要編輯一豎列數據時,就需要將單元格格式設置為數值,并將小數位數改完0。
When only one data is faulty (it becomes garbled), you can directly add an English quotation mark before the data. When you want to edit a column of data, you need to format the cells to numeric values and change the number of decimal places to 0.
今天的分享就到這里了,
如果您對文章有獨特的想法,
歡迎給我們留言。
讓我們相約明天,
祝您今天過得開心快樂!
That's all for today's sharing.
If you have a unique ideaabout the article,
please leave us a message,
and let usmeet tomorrow.
I wish you a nice day!
本文由learningyard新學苑原創,如有侵權,請聯系我們。
部分內容參考于bilibili、百度
翻譯來源:百度翻譯
文案&排版:高杰
審核:許江越
法一:在idea安裝目錄下的bin文件夾中找到idea.exe.vmoptions/idea64.exe.vmoptions 兩個文件,在這兩個文件中加上如下兩行:
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8(若加第一條不好用,嘗試再加上此條)
方法二:在配置Tomcat容器時做參數處理
Server選項卡--->VM options 加一行:-Dfile.encoding=UTF-8
Startup/connection選項卡--->勾選pass environment variable | 手動添加:
JAVA_OPTS / -Dfile.encoding=UTF-8 & JAVA_TOOL_OPTIONS / -Dfile.encoding=UTF-8
方法三:在Tomcat目錄的conf文件夾中找到logging.properties文件
將其中的“java.util.logging.ConsoleHandler.encoding=UTF-8”
改為
“java.util.logging.ConsoleHandler.encoding=GBK”
方法四:在idea的的導航欄內找到Help選項,在Help中找到Edit Custom VM options...選項
者 | 鄭祎
責編 | Elle
前言
IntelliJ IDEA Community Edition(社區版)不支持Tomcat,不想花錢購買Ultimate版本,也不想使用Eclipse,嘗試通過其他方式使IDEA社區版支持Tomcat。
嘗試的方法
2.1. Smart Tomcat插件
在IDEA社區版(2019.2.4)中安裝了Smart Tomcat插件,并使用其啟動Tomcat應用,遇到了以下問題:
Web應用的class文件未被自動拷貝到對應的Web應用根目錄中,導致Web應用的代碼未被加載,需要手工處理,使用不方便;
Tomcat日志只生成了localhost_access_log.txt日志文件,沒有生成catalina.log、localhost.log等日志文件,排查問題不方便。
使用Smart Tomcat插件遇到問題之后,放棄了使用該插件,沒有再去分析是否因為使用方法不當。
可行方法
3.1. 說明
之后通過Gradle腳本,使IDEA社區版支持Tomcat(也支持IDEA Ultimate版)。
完成的Gradle腳本及示例Web工程代碼可以從 https://github.com/Adrninistrator/IDEA-IC-Tomcat/ 、 https://gitee.com/adrninistrator/IDEA-IC-Tomcat/ 下載,腳本內容很短,有效行數不超過200行,處理也很簡單。
通過上述Gradle腳本,結合IDEA的功能,在完成配置后,可以實現以下功能,能夠達到與Eclipse或IDEA Ultimate版本對Tomcat支持的功能接近的效果。
一鍵啟動Tomcat并加載Web應用
一鍵停止Tomcat(應用實例可以接收到Web容器銷毀通知)
一鍵啟動可調試的Tomcat(Web應用)
一鍵從Tomcat(Web應用)啟動時開始調試
3.2. 依賴環境
IDEA
使用IntelliJ IDEA Community Edition 2019.2.4版本。
Tomcat
支持Tomcat 7、8、9版本(測試過Tomcat 7.0.55、7.0.79、8.5.20、9.0.30版本),理論上也支持Tomcat 5、6版本(未測試)。
Gradle
支持Gradle 4、5、6版本(測試過Gradle 4.1、4.7、5.6.4、6.0.1版本)。
JDK
使用JDK 1.8.0_144版本。
操作系統
使用Windows 7 x64 SP1版本。
3.3. IDEA中執行Gradle腳本
假設存在以下Gradle任務:
task testTask {
doFirst {
println "測試-" + System.getProperty("arg")
}
}
3.3.1. 在Terminal中執行
在IDEA的Terminal中執行以上Gradle任務時,可以通過gradle或gradlew命令,以命令行的方式執行,并可以通過“-D”前綴指定傳遞給Gradle腳本的JVM參數,與執行Java程序時類似。
執行上述任務的Gradle命令示例如下所示:
gradle testTask -Darg=abc
gradlew testTask -Darg=abc
執行的結果如下所示:
> Task :testTask
測試-abc
3.3.2. 在Run/Debug Configurations中執行
打開IDEA的“Run/Debug Configurations”窗口,點擊加號后,從彈出菜單中選擇“Gradle”,可以新增一個配置,用于執行對應的Gradle任務。
打開“Configuration”標簽頁,對參數進行修改。
點擊“Gradle project”右側的圖標,選擇當前項目;
在“Tasks”右側填入需要執行的Gradle任務名稱,如“testTask”;
在“VM options”右側填入需要傳遞給Gradle腳本的JVM參數,如“-Darg=test_arg”,點擊箭頭圖標可以展開編輯框。
在Run/Debug Configurations中完成配置后,可以選中對應的配置,點擊執行按鈕開始執行。
執行的結果在“Run”窗口中顯示,如下所示:
當需要修改Run/Debug Configurations使用的Gradle時,可以打開IDEA的“File | Settings | Build, Execution, Deployment | Build Tools | Gradle”菜單,修改“Use Gradle from”選項。
3.3.2.1. 解決在Run/Debug Configurations中執行Gradle腳本中文亂碼問題
在Run/Debug Configurations中執行Gradle腳本或編譯過程時,輸出的中文可能亂碼。
或如下圖所示:
進行以下設置,可以解決上述中文亂碼問題。
打開IDEA的“Help”“Edit Custom VM Options...”菜單;
在打開的文件最后增加“-Dfile.encoding=UTF-8”;
重啟已打開的IDEA后生效。
3.4. 在IDEA中進行遠程調試
3.4.1. 在IDEA創建遠程調試配置并獲取調試參數
打開IDEA的“Run/Debug Configurations”窗口,點擊加號后,從彈出菜單中選擇“Remote”,可以新增一個配置,用于進行遠程調試。
打開“Configuration”標簽頁,對參數進行修改。
“Debugger mode”選項保持“Attach to remote JVM”
“Transport”選項保持“Socket”
“Host”參數保持“localhost”
“Port”參數指定被調試的Java進程監聽的調試端口
“Use module classpath”選擇被調試的Java進程對應的源代碼模塊
“Command line arguments for remote JVM”展示的調試參數不能編輯,會跟隨上方的參數變化。
“Transport”選項“Socket”對應調試參數“transport=dt_socket”
“Port”參數對應調試參數“address=”
3.4.2. 增加調試參數后啟動被調試Java進程
復制“Command line arguments for remote JVM”對應的調試參數,將其添加到被調試Java進程的JVM參數中,啟動Java進程。
需要注意,IDEA調試配置中的Port參數,與被調試Java進程使用的調試參數中的address參數值需要相同,即調試器連接的端口需要與被調試Java進程監聽的端口一致。
3.4.3. 在IDEA啟動調試
選中對應的遠程調試配置,點擊調試按鈕開始調試,與使用IDEA啟動Java進程并調試類似。
調試啟動成功后,在“Debug”“Console”窗口提示“Connected to the target VM”,如下所示。
點擊停止按鈕可以停止調試,IDEA的“Debug”窗口會出現類似“Disconnected from the target VM, address: 'localhost:5555', transport: 'socket'”的提示。
停止被調試Java進程時,IDEA啟動的調試會自動結束。
停止調試后,不會使被調試的Java進程退出。
當對Tomcat進行調試時,停止調試后在Tomcat窗口會出現類似“Listening for transport dt_socket at address: 5555”提示。
以上調試方法也支持非Web應用,以及遠程的Java進程。
3.5. runTomcat.gradle腳本使用方法
將runTomcat.gradle腳本拷貝至Java Web應用工程中,在build.gradle腳本中添加“apply from: 'runTomcat.gradle'”。
3.5.1. 任務及參數說明
runTomcat.gradle腳本中提供了名稱為“startTomcat”的任務,用于啟動Tomcat并加載Web應用。
在腳本中使用了以下參數。
3.5.1.1. 環境變量
TOMCAT_HOME_4IDEA
TOMCAT_INSTANCE_4IDEA
3.5.1.2. JVM參數
appName
noBuild
contextPath
arg4Tomcat
3.5.2. 環境配置
在使用提供的Gradle腳本runTomcat.gradle時,首先需要完成環境配置,“TOMCAT_HOME_4IDEA”環境變量配置需要增加,“TOMCAT_INSTANCE_4IDEA”環境變量的配置可選。
在完成環境變量配置后,需要重啟已打開的IDEA后生效。
為了驗證環境變量配置是否已生效,可在IDEA的Terminal中執行“echo %TOMCAT_HOME_4IDEA%”,當配置完成時會輸出對應的環境變量值,未配置或未生效時會輸出“%TOMCAT_HOME_4IDEA%”。
3.5.3. 使用場景
3.5.3.1. 正常啟動Tomcat進程
正常啟動Tomcat進程,加載示例工程中的Web應用的Gradle命令如下所示:
gradlew startTomcat -DappName=test-tomcat -Darg4Tomcat="-DtestValue=aaabbbccc -Dlog.home=E:\desktop\log-test"
在以上示例中,指定當前應用對應的Tomcat實例的名稱,以及Web應用的上下文路徑,均為“test-tomcat”,指定啟動Tomcat時使用的JVM參數為“"-DtestValue=aaabbbccc -Dlog.home=E:\desktop\log-test"”。
第一次執行上述Gradle命令時(或刪除了當前應用對應的Tomcat實例的目錄后),Gradle腳本輸出的結果如下所示:
> Configure project :
noBuild參數值:
> Task :clean
> Task :compileJava
> Task :processResources
> Task :classes
> Task :startTomcat
appName參數值: test-tomcat
contextPath參數值: test-tomcat
arg4Tomcat參數值: -DtestValue=aaabbbccc -Dlog.home=E:\desktop\log-test
tomcatDir參數值: C:\program\apache-tomcat-7.0.55
instanceDir參數值: C:\Users\user\.tomcat_idea
當前路徑: E:\IDEA-IC-Tomcat
當前應用使用的Tomcat實例目錄: C:\Users\user\.tomcat_idea\test-tomcat
生成Web應用所需文件
生成Web應用所需文件-完成
判斷是否需要創建Tomcat實例
創建Tomcat實例
文件不存在: C:\Users\user\.tomcat_idea\test-tomcat\conf\Catalina\localhost\test-tomcat.xml
寫入文件: C:\Users\user\.tomcat_idea\test-tomcat\conf\Catalina\localhost\test-tomcat.xml
生成bat停止腳本文件: C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-stop.bat
文件不存在: C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-stop.bat
寫入文件: C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-stop.bat
生成bat啟動腳本文件: C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-start.bat
文件不存在: C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-start.bat
寫入文件: C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-start.bat
當以上Gradle腳本執行成功后,會啟動Tomcat,Tomcat進程會產生單獨的命令行窗口。
使用瀏覽器訪問示例工程的Controller,URL為“ http://localhost:8080/test-tomcat/testrest/get ”,輸出結果為當前時間戳及“testValue”對應的JVM參數值,訪問結果如下所示:
3.5.3.2. 使用Tomcat實例啟動腳本啟動Tomcat進程
runTomcat.gradle腳本的“startTomcat”任務執行時,會在當前Web應用對應的Tomcat實例目錄生成啟動腳本,如前文輸出的示例“C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-start.bat”。
當不需要對Web應用重新編譯時,可以直接執行上述啟動腳本,啟動Tomcat進程,加載Web應用。
3.5.3.3. 停止Tomcat進程
在示例工程中,TestPostConstructLazyFalse.preDestroy方法使用了@PreDestroy注解,該方法會在應用停止階段執行,會在當前目錄生成名稱為“preDestroy-”及當前時間戳的目錄。
3.5.3.3.1. 直接關閉Tomcat窗口(應用實例無法接收到Web容器銷毀通知)
將Tomcat窗口關閉,可以停止Tomcat進程。
通過該方法停止Tomcat進程,會使Tomcat進程直接結束,應用實例無法接收到Web容器銷毀通知,示例工程的TestPostConstructLazyFalse.preDestroy方法不會執行,當前目錄不會生成目錄。
3.5.3.3.2. 使用Tomcat實例停止腳本停止Tomcat進程(應用實例可以接收到Web容器銷毀通知)
runTomcat.gradle腳本的“startTomcat”任務執行時,會在當前Web應用對應的Tomcat實例目錄生成停止腳本,如前文輸出的示例“C:\Users\user\.tomcat_idea\test-tomcat\test-tomcat-stop.bat”。
執行上述停止腳本,會執行Tomcat提供的stop命令,可以停止Tomcat進程,應用實例可以接收到Web容器銷毀通知,示例工程的TestPostConstructLazyFalse.preDestroy方法會執行,當前目錄會生成目錄,如下所示。
3.5.3.4. 調試Web應用
以下在IDEA創建遠程調試配置并獲取調試參數的過程,可以參考前文對應內容。
3.5.3.4.1. 進程啟動后調試
啟動Tomcat進程
獲取到調試參數如下所示:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5555
在執行Gradle “startTomcat”任務時,添加以上參數至arg4Tomcat參數中(可添加到IDEA的“Run/Debug Configurations”的Gradle配置中),如下所示:
gradlew -DappName=test-tomcat
-Darg4Tomcat="-DtestValue=aaabbbccc -Dlog.home=E:\desktop\log-test -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5555"
執行以上Gradle命令后,啟動Tomcat進程。
啟動IDEA調試
之后可以在IDEA中啟動調試。
對URI“/testrest/get”對應的TestRestController.get方法設置斷點,通過瀏覽器訪問后,IDEA調試器進入斷點,可在“Debug”“Debugger”窗口查看。
3.5.3.4.2. 從進程啟動開始調試(操作兩次)
以上使用的調試參數中的suspend參數值為“n”,被調試的進程在啟動時不會暫停線程,會正常啟動。只支持先啟動被調試進程,再進行調試。
當需要從進程啟動開始調試時,需要將調試參數中的suspend參數值設為“y”,被調試的進程在啟動時會暫停線程,等待調試器連接address指定的端口后,才會繼續啟動。
啟動Tomcat進程
當需要從進程啟動開始調試時,調試參數示例如下。
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5555
將Gradle任務“startTomcat”的“arg4Tomcat”參數中配置的“suspend”參數設置為“y”,再通過該命令啟動Tomcat,Tomcat窗口只顯示“Listening for transport dt_socket at address: 5555”,未顯示其他內容,即Tomcat進程此時在等待調試器連接address參數對應的端口,未完成啟動。
啟動IDEA調試
在Web應用初始化階段會執行的代碼設置斷點,例如在示例工程的帶有@PostConstruct注解的TestPostConstructLazyFalse.postConstruct方法設置斷點。
在IDEA啟動調試,查看Tomcat窗口日志已更新,說明Tomcat進程已啟動。
查看IDEA調試窗口,已進入以上設置的斷點,證明可以從Web應用啟動開始調試。
3.5.3.4.3. 從進程啟動開始調試(一鍵完成)
以上從進程啟動開始調試的操作需要先啟動Tomcat進程,再啟動IDEA調試,可以優化為一鍵完成。
打開IDEA的“Run/Debug Configurations”窗口,選擇“Remote”配置,點擊“Before launch: Activate tool window”下方的加號按鈕,選擇“Run Gradle task”。
彈出“Select Gradle Task”窗口,“Gradle project”“Tasks”“VM options”參數配置,可參考在IDEA添加Gradle配置,通過“startTomcat”任務啟動Tomcat進程的步驟,需要確保“VM options”參數填寫的“arg4Tomcat”參數中的調試參數“suspend”為“y”。
“Before launch: Activate tool window”下方的列表會出現配置的Gradle任務。
完成以上配置后,在啟動IDEA調試之前,會執行指定的Gradle任務“startTomcat”,以“suspend=y”的調試參數啟動Tomcat進程。可以實現一鍵從進程啟動開始調試,與IDEA Ultimate版或Eclipse對Web應用從啟動開始調試的效果類似。
3.5.3.4.4. 調試Tomcat的類
當需要對Tomcat的類進行調試時,需要將Tomcat的lib目錄添加至IDEA的Web應用工程的依賴中,否則調試時無法查看Tomcat的類。
打開IDEA的“Project Structure”窗口,選擇“Project Settings”“Modules”標簽頁,在打開的窗口中選擇Web項目主模塊,選擇“Dependencies”標簽頁,點擊加號按鈕,選擇“JARs or directories...”菜單。
在彈出的窗口,選擇當前使用的Tomcat的安裝目錄的lib目錄。
完成添加后,Tomcat的lib目錄會出現在“Dependencies”標簽頁的最下方。
當刷新Gradle后,項目配置會重置,以上添加的依賴會被清理,需要重新添加。
完成以上配置后,在Tomcat的org.apache.catalina.startup.HostConfig$DeployDescriptor類run方法設置斷點,從進程啟動開始調試,可以在IDEA的Debug窗口看到已進入斷點。該方法是Tomcat啟動時執行的第一個Tomcat的類的方法。
3.6. 其他說明
生成Web應用所需文件調整
runTomcat.gradle腳本中buildFiles4WebApp方法用于生成Web應用所需文件,拷貝的目錄與文件可以根據實際情況調整。
調試端口需要確保未被監聽
被調試Java進程的調試參數中指定的adderss參數對應的調試端口,需要確保未被監聽,否則被調試Java進程會啟動失敗,窗口會自動消失,Tomcat的提示如下。
重新創建Tomcat實例
當因為需要修改使用的Tomcat版本,或其他原因,導致需要重新創建Web應用使用的Tomcat實例時,需要將對應的Tomcat實例目錄刪除,如“C:\Users\user.tomcat_idea\test-tomcat”,之后再執行Gradle的startTomcat任務。
Tomcat實例目錄配置修改與日志查看
當前Web應用對應的Tomcat實例目錄,在執行Gradle “startTomcat”任務時會輸出,如“C:\Users\user.tomcat_idea\test-tomcat”。
當需要修改當前Web應用對應的Tomcat使用的HTTP服務端口、SSL配置、線程池數量等參數時,可以修改Tomcat實例目錄的“conf\server.xml”文件,說明略。
當需要同時啟動多個Tomcat進程分別加載不同的Web應用時,需要先修改對應Tomcat實例的“conf\server.xml”文件中的監聽端口,避免不同的Tomcat實例使用同一個端口導致不可用。
Tomcat實例目錄的“logs”目錄保存了Tomcat日志文件,使用默認配置時,包括“catalina.log”“localhost.log”“localhost_access_log.txt”“host-manager.log”“manager.log”等。
3.7. 原理說明
通過runTomcat.gradle腳本啟動Tomcat進程并加載Web應用,與Eclipse或IDEA Ultimate(2018.3及之前版本)的原理類似,如下所示。
3.7.1. 生成Web應用所需文件
當noBuild參數未指定或為空時,會先執行Gradle的classes任務完成編譯,再執行buildFiles4WebApp方法,完成以下操作:
將編譯生成的class文件拷貝至“build/tomcat/WEB-INF/classes”目錄中
將“src/main/resources/”目錄(配置文件)拷貝至“build/tomcat/WEB-INF/classes”目錄中
將“src/main/webapp/”目錄(靜態資源與WEB-INF/web.xml文件)拷貝至“build/tomcat”目錄中
將依賴的jar包拷貝至“build/tomcat/WEB-INF/lib”目錄中
3.7.2. 生成Tomcat實例
判斷當前應用使用的Tomcat實例目錄是否已存在,若已存在時則不再處理。
當前應用使用的Tomcat實例目錄不存在時,進行以下操作生成Tomcat實例:
在“TOMCAT_INSTANCE_4IDEA”環境變量參數值對應的目錄,或當前用戶目錄的“.tomcat_idea”目錄中,創建當前Web應用使用的Tomcat實例目錄,使用Gradle “startTomcat”任務執行時的“appName”參數值作為目錄名稱;
將“TOMCAT_HOME_4IDEA”環境變量參數值指定的,需要使用的Tomcat安裝目錄的bin、conf目錄拷貝至當前Web應用使用的Tomcat實例目錄中;
在當前Web應用使用的Tomcat實例目錄創建logs、temp、work目錄。
3.7.3. 處理Tomcat上下文描述符文件
上下文描述符是一個XML文件,其中包含與Tomcat相關的上下文配置,例如命名資源或會話管理器配置等。當Tomcat啟動時,上下文描述符會被首先部署。可參考 https://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html 。
上下文描述符需要保存在當前Web應用使用的Tomcat實例目錄的“conf\Catalina\localhost”目錄中,當前Web應用的上下文路徑與上下文描述符文件名相同(不含.xml后綴),上下文路徑的大小寫與文件名的大小寫一致。
runTomcat.gradle腳本會檢查當前Web應用對應的Tomcat實例的上下文描述符,若文件已存在且內容不需要修改,則不執行寫入操作;若文件不存在或文件內容需要修改,則執行文件寫入操作。
3.7.4. 生成Tomcat實例啟動/停止腳本
Tomcat實例啟動/停止腳本會保存在當前Web應用對應的Tomcat實例目錄中。
runTomcat.gradle腳本會檢查對應的腳本文件,在需要寫入時進行寫入操作。
在啟動腳本中會調用Tomcat實例目錄的“bin\startup.bat”腳本;在停止腳本中會調用Tomcat實例目錄的“bin\shutdown.bat”腳本。
3.7.5. 啟動Tomcat
runTomcat.gradle腳本會執行生成的Tomcat實例啟動腳本,以啟動Tomcat。
3.7.6. 調試Web應用
以上的遠程調試使用了JDWP(Java Debug Wire Protocol),可參考 https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/jdwp-spec.html ,JDWP是用于調試器與其調試的Java虛擬機之間的通信協議。
JPDA(The Java Platform Debugger Architecture)包含三個接口,供調試器在桌面系統的開發環境中使用。JDWP屬于其中一個,JPDA的說明可參考 https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/ 。
在JPDA連接和調用詳細信息(https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/conninv.html )中,說明當suspend參數為“y”時,VMStartEvent會使用SUSPEND_ALL作為暫停策略;當suspend參數為“n”時,VMStartEvent會使用SUSPEND_NONE作為暫停策略。
參考
https://docs.oracle.com/javase/8/docs/jdk/api/jpda/jdi/com/sun/jdi/request/EventRequest.html ,說明SUSPEND_ALL在事件發生時會暫停全部線程;SUSPEND_NONE在事件發生時不會暫停線程。
根據以上說明可知,當Java進程的調試參數中的suspend參數為“y”時,在啟動時會暫時全部線程;suspend參數為“n”時,在啟動時不會暫時線程。
作者:鄭祎,Java后臺開發
*請認真填寫需求信息,我們會在24小時內與您取得聯系。