原创 (一)What_is_Machine_Learning

機器學習 定義 機器學習(統計機器學習)是什麼?字面意思就是讓機器(計算機程序)學習,通過這一過程,可以使自身更加智能化(特別是對未知數據進行預測)。Herbert A. Simon 曾對 “學習” 給出以下定義:“如果一個系

原创 (二)Java 虛擬機具體是怎樣運行 Java 字節碼的?

Write Once,Run Anywhere Java 祖師爺就是由於發現用 C++ 開發的過程中會花大量的時間處理內存、不同的指令架構等的問題,所以纔有高“移植性”的Java 誕生。採訪Java 祖師爺的報道鏈接 。  And  t

原创 (二)Model_and_Cost_Function

模型表示、參數學習 模型 成本函數(Cost function) 損失函數(Loss function)是定義在單個訓練樣本上的,也就是就算一個樣本的誤差,用 L 表示。 成本函數(Cost function),也叫代價函數,是

原创 (十)hsdis + JITWatch 分析 JIT

JIT 編譯器會優化熱點代碼,爲了分析需要查看其反彙編指令。 安裝hsdis Hotspot disassembler,其實就是一個動態庫,csdn上就有下載,下載後放在 $JAVA_HOME/jre/lib 目錄下。 經驗是否安裝成功:

原创 (一)JVM 如何處理異常信息?

先上一張圖: 在Java 規範中,所有的異常被定義爲 Throwable 或其子類的實例。其中 Error 表示該線程執行狀態無法恢復,需要終止線程甚至是虛擬機;Exception 可以被捕捉並處理。   異常的設計初衷是將運行時產生

原创 Ubuntu 編譯 OpenJDK 9

Window 環境下編譯太麻煩,本來想在 OS X  編譯,無奈嘗試了好多次,都沒有編譯成功,從錯誤信息推測是系統版本(OS X 10.14)太新了,Xcode 都降到了 9 ,所以只能打開之前的虛擬機在 Ubuntu 上編譯。在此係統上

原创 (三)Feature_Scaling

特徵縮放 目的:讓不同的特徵有相似的取值範圍,確保收斂速度更快。 原因:每個輸入值在大致相同的範圍可以加速梯度下滑,同時θ將在小範圍內快速下降並且在大範圍內緩慢下降, 所以特徵縮放並不是必須的操作。 特徵縮放 當前特徵輸入值除以輸

原创 (八)向量化

public class Foo { public void foo(byte[] src,byte[] dst){ for(int i=0;i<src.length/4;i+=4){

原创 (四)Java 虛擬機是如何加載Java類的?

類的加載過程 類的整個加載過程從類字節流通過虛擬機的類加載器加載到內存供虛擬機使用,到垃圾收集器回收,其生命週期可分爲加載、鏈接、初始化、使用、卸載。其中鏈接可分爲驗證、解析、準備,如下: 加載 加載是虛擬機藉助類加載器查找字節流並且創

原创 Mac 編譯 OpenJDK 8

環境信息 Mac 系統信息: apple$ sw_vers ProductName: Mac OS X ProductVersion: 10.14.2 BuildVersion: 18C54 Xcode 版本: apple$ xcod

原创 (九)JVM之循環優化

循環無關代碼(Loop-invariant Code)外提 如下循環代碼:  package per.william.ex.simd; public class Foo { int foo(int x,int y ,int

原创 (六)對象內存佈局

Java 中創建對象的方式有多種:new 語句、反射機制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法來新建對象。其中,Object.clone 方法和反序列化通過直接複製已有的數據,

原创 JVM 之方法內聯(inline)

方法內聯:在編譯過程中遇到方法調用時,將目標方法的方法體納入編譯範圍之中,並取代原方法調用的優化手段。方法內聯不僅可以消除調用本身帶來的性能開銷,還可以進一步觸發更多的優化。因此,它可以算是編譯優化裏最爲重要的一環。

原创 Xcode 調試之 Hello World

編譯 編譯JKD ,可以查看 Mac 編譯 OpenJDK 8。    調試                               截圖來自(https://segmentfault.com/a/1190000005082098)

原创 hsdis + JITWatch 分析 JIT

JIT 編譯器會優化熱點代碼,爲了分析需要查看其反彙編指令。 安裝hsdis Hotspot disassembler,其實就是一個動態庫,csdn上就有下載,下載後放在 $JAVA_HOME/jre/lib 目錄下。 經驗是否安裝成功: