[JAVA] Maven cimpile 時遇到 PKIX path building failed 解法

當編譯maven的時候遇到
Could not transfer metadata org.sonarsource.sonar-packaging-maven-plugin:sonar-packaging-maven-plugin/maven-metadata.xml from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 

...繼續閱讀 »

[JAVA] JDK 內建的監控工具 jConsole

近期工作上需要監控 我用的JAVA開發的 api .
查看log ,被叫用的時候常常顯示剩餘heap memory過低.

這開啟Windows的工作管理員, 偏偏記憶體使用量和CPU都沒有飆高.
但log裡面檢查記憶體過低的告警就是一直寫.

從log看的即時性沒有那麼高, 比較無法知道當下的狀態.

...繼續閱讀 »

[Java] Maven Dependencies 問題解決法

最近開發專案需要使用客製化的Repository.
依照對方提供的資訊在pom.xml 中加入了對應的repository還有dependency.

但進行Maven Update的時候出現了錯誤訊息.

The container 'Maven Dependencies' references non existing library XXXXXXXX​
 

...繼續閱讀 »

[JAVA] 使用Logger 紀錄程序日誌

很多時候程式執行會有問題,
是資料異常還是邏輯不正確,
這時候就需要埋log把執行的當下內容寫下來.
之後進行佐證.

JAVA 內本身就有一個元件可以用Logger
java.util.logging.Logger 也存在很久了, 1.4就存在.
這邊來說下他的使用方式.

...繼續閱讀 »

[JAVA] 反組譯工具

如果沒有做版控, 那就無法得知線上版本和手上程式的差異,
或者開發人員已經離職了.
或者很多時候我們手上只有 .jar的檔案, 卻沒有source code.
這時候我們就需要使用工具來反組譯看看程式的內容.

這邊介紹幾套反組譯的工具.

...繼續閱讀 »

[JAVA] 關於修飾字 transient

將物件實作了Serilizable ,這個物件即可被序列化,java中這種序列化提供了很多便利,我們不深入探討序列化的過程,只要這個類別實作了Serilizable,這個類別的所有屬性和方法都會自動序列化。

那修飾字 transient 是作什麼用的呢? 
java 的transient關鍵字為我們提供了便利,我們只需要實作Serilizable介面,將不需要序列化的屬性前加上修飾字 transient,序列化物件的時候,這個屬性就不會序列化到指定的目的地中。

...繼續閱讀 »

[JAVA] Callable,Runnable比較與用法

編寫多執行緒程式是為了實作多工的同步執行,從而能夠更好地提高執行速度。一般有三種方法,
Thread,Runnable,Callable.

Runnable和Callable的區別是,
(1)Callable規定的方法是call(),Runnable規定的方法是run().
(2)Callable在執行後可返回值,而Runnable在執行後不能返回值
(3)call方法可以拋出異常,run方法不可以
(4)執行Callable會返回Future物件,表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並檢索計算的結果。通過Future物件可以瞭解執行情況,可取消執行,還可獲取執行結果。

...繼續閱讀 »