原创 8、Java內存模型與線程

1、Java內存模型 1.1 主內存和工作內存 Java線程<->工作內存<->內存交互<->主內存 1.2 內存間交互操作 1)lock 2)unlock 3)read 4)load 5)use 6)assign 7)store 8

原创 9、線程安全與鎖優化

1、線程安全的實現方法 1.1 互斥同步(悲觀鎖) 1)synchronized:在同步塊形成monitorenter和monitorexit指令。synchronized是一個重要級的操作。 2)java.util.concurre

原创 排序-冒泡排序

public class BubbleSort { public static void main(String[] args) { int[] a = {10, 9, 7, 101, 23, 44, 12,

原创 2、自動內存管理機制-垃圾收集器與內存分配策略

1、判斷對象是否已死 1.1 引用計數算法? java沒有用引用計數算法,難於解決對象間的相互引用問題。 1.2 可達性分析算法 通過GC Roots爲起點,如果沒有達到一個對象,則不可達。 可作爲GC Roots的對象: 1)棧中的

原创 Tomcat類加載器結構

1、Tomcat可存放jar類庫的地方 1)/common/* : Tomcat和所有Web應用都可以訪問 2)/server/* : 僅Tomcat可以訪問 3)/shared/* : 僅所有Web應用可以訪問 4)另外Web應用

原创 4、虛擬機執行子系統-類文件結構

1、無關性的基石-字節碼(.class) 2、Class類文件的結構 8位字節爲基礎單位的二進制流。 兩種數據類型:無符號數和表。 無符號數:基本的數據類型。 表:無符號數或者其他表複合的數據類型。 2.1 魔數與Class文件的版本

原创 6、虛擬機執行子系統-運行時棧幀結構

運行時棧幀結構 1)局部變量表 2)操作數棧 3)動態連接 4)方法返回地址

原创 1、自動內存管理機制-Java內存區域

1、運行時數據區域 1.1 程序計數器 程序計數器:當前線程所執行的字節碼指示器。字節碼解釋器根據這個計數器的值來選取下一條需要執行的字節碼指令。 線程私有的內存區域。唯一不會出錯OutOfMemoryError。 執行的指令分爲幾種

原创 3、自動內存管理機制-虛擬機性能監控與故障處理工具

1、JDK的命令行工具 1.1 jps:(jvm process status)虛擬機進程狀況 1.2 jstat:(JVM Statistics Monitoring)虛擬機統計信息監視 1.3 jinfo:java配置信息 1.4

原创 5、虛擬機執行子系統-JVM類加載機制

1、類加載步驟 加載-》驗證-》準備-》解析-》初始化-》使用-》卸載 鏈接:驗證-》準備-》解析 初始化時機: 1)new、invoke指令 2)java.lang.refect反射調用 3)初始化子類時,如果父類沒初始化,則觸發父

原创 十一、可擴展模式

1 可擴展的基本思想 所有的可擴展性架構設計,基本思想都是“拆”。 常見的拆分思路有三種: 面向分層拆分。 面向模塊/服務拆分。 面向功能拆分。 2 可擴展方式 不同的拆分方式對應不同的擴展方式,得到不同的架構: 面向分層拆分:分

原创 九、計算高可用

1 主備 2 主從 3 對稱集羣 4 非對稱集羣

原创 JVM詳解

https://www.cnblogs.com/lishun1005/p/6019678.html https://segmentfault.com/a/1190000014395186 https://www.cnblogs.com

原创 Schema與數據類型優化

##Schema與數據類型優化 1. 選擇優化的數據類型 1)更小的通常更好:佔用更少的磁盤、內存和cpu緩存 2)簡單就好:簡單數據類型的操作通常需要更少的cpu週期 3)儘量避免NULL: NULL更難優化,使用索引、索引統計和值

原创 五、計算高性能

1 單服務器高性能 單服務器高性能關鍵之一是服務器採取的網絡編程模型。 網絡編程模型有兩處關鍵點:一、服務器如何管理連接;二、服務器如何處理請求。 1.1 PPC(每個連接一個進程) 1.2 prefork 1.3 TPC(每個連接一