原创 Java加載類(Class)文件過程
其實對於任何編程語言而言,編譯和鏈接都是必不可少的環節,對於java而言編譯這環節比較簡單,就是按照JVM指定的規範生成字節碼文件(Class文件),因爲字節碼是JVM能認識的,並且會把這些字節碼翻譯成本地機器的機器指令。至於鏈接這塊,J
原创 Java與C++差異總結(1)
最近的工作是把幾份C++代碼翻譯成java,不搞不知道,一搞嚇一跳,真的很麻煩,C++和java的語法和其他細節差異太大了。下面就把遇到的一些差異整理總結一下: 1. 一維數組的定義: C++:分爲靜態數組和動態數組,其中靜態數
原创 JNI轉換通俗易懂的總結(Java調用C++篇)
相對C++調用java而言,使用JNI實現Java調用C++相對比較簡單點,因爲不用自己啓動和管理一個JVM。 最簡單的流程: 1. 編寫一份簡單的HelloWorld.java class HelloWorld { publi
原创 jedis API接口批量處理包裝(事務,管道,分佈式鎖,lua腳本,發佈訂閱)
import java.util.List; import java.util.Map; import java.util.Set; import
原创 Kafka消息隊列原理總結
最近在測試kafka的讀寫性能,所以借這個機會了解了kafka的一些設計原理,既然作爲分佈式系統,我們還是按照分佈式的套路進行分析。 Kafka的邏輯數據模型: 生產者發送數據給服務端時,構造的是ProducerRecord<Inte
原创 通過字節碼扒一扒java編譯器瞞着我們做了什麼(1)
1. Foreach和泛型語法糖 Map<String,String> map = newHashMap<String,String>(); for(Entry<String, String> iter:test.map.e
原创 Kafka服務端異步刷盤性能測試
前置條件: 每條話單大概0.7K 寫客戶端單線程 props.put("acks","all"); props.put("retries", 0); props.put("batch.size", 16384); props.put("l
原创 通過字節碼深入分析java的枚舉類型enum
1. Java中的枚舉究竟是什麼鬼? 如果從C++轉java的話,會發現一個現象那就是在java中的枚舉跟C++區別非常大,甚至可以說除了名字一樣外,其他實現等都是非常不同的,在C++枚舉更像個常數,而java的枚舉更靠近正常
原创 kafka消息隊列運維工具和相關安裝目錄文件總結
kafka自帶維護腳本工具總結: topic管理腳本:kafka-topics.sh(包括topic的創建,修改,刪除,查詢) 創建topic: sh kafka-topics.sh –zookeeper localip:2181 –cr
原创 Java基本類型的一些總結
Java基本類型的長度以及和C++的對比 Java(字節數) C++(字節數) Byte 1
原创 從字節碼角度分析接口中的成員域
在java中接口是可以有成員變量的,比如下面源碼: public interfaceTestInterface { int a = 999; Stringstr= "hello world"; } 字節碼: Las
原创 從字節碼角度分析泛型類,泛型方法,泛型接口的實現機制(類型擦除)
在java中泛型本質上是個語法糖,跟C++不一樣,java根本不會創建泛型類,一切都只不過是編譯器通過類型擦除機制實現的障眼法而已,比如 源碼: public classChildTest<T> extends test { T
原创 java中File類常用API總結
public class FileTest { /** * * @author : zhengrf1 * @date 創建時間:2017年3月15日 下午5:01:09 */ public static void main(Stri
原创 Java鎖性能提高(鎖升級)機制總結
鎖的使用很難避免,如何儘量提高鎖的性能就顯得比較重要了 鎖偏向 所謂的偏向鎖是指在對象實例的Mark Word(說白了就是對象內存中的開頭幾個字節保留的信息,如果把一個對象序列化後明顯可以看見開頭的這些信息),爲了在線程競爭不激烈的情況下
原创 ReenTrantLock可重入鎖(和synchronized的區別)總結
ReenTrantLock可重入鎖(和synchronized的區別)總結 可重入性: 從名字上理解,ReenTrantLock的字面意思就是再進入的鎖,其實synchronized關鍵字所使用的鎖也是可重入的,兩者關於這個的區別不大。兩