原创 手寫動態代理--模仿jdk動態代理

爲了便於理解jdk動態代理,模仿jdk動態代理的思路,模擬寫一個動態代理demo,V1思路如下: 拼接代理對象源碼,使用文件流寫出$Proxy.java文件 將$Proxy.java動態編譯成.class文件 $Proxy.class文件

原创 第十二章 java多線程程序的性能調優--《java多線程編程實戰指南-核心篇》

java虛擬機對內部鎖的優化 自java6/7開始,java虛擬機對內部鎖的實現進行了一些優化。這些優化主要包括鎖消除、鎖粗話、偏向鎖以及適應性鎖。 鎖消除 鎖消除是JIT編譯器對內部鎖的具體實現所做的一種優化,在動態編譯同步塊的時候,J

原创 HashMap的擴容因子爲什麼是0.75

最近在看HashMap源碼,對於擴容因子=0.75感到很費解,爲什麼在用了75%的容量的時候就要進行擴容呢?數組中明明還有25%的空間沒有使用。爲什麼不等到數組幾乎滿了(擴容因子=0.95)的時候才進行擴容?擴容因子=0.95和擴容因子=

原创 第十二章 多線程編程的硬件基礎與java內存模型--《java多線程編程實戰指南-核心篇》

java虛擬機對內部鎖的優化 自java6/7開始,java虛擬機對內部鎖的實現進行了一些優化。這些優化主要包括鎖消除、鎖粗話、偏向鎖以及適應性鎖。 鎖消除 鎖消除是JIT編譯器對內部鎖的具體實現所做的一種優化,在動態編譯同步塊的時候,J

原创 第十一章 多線程編程的硬件基礎與java內存模型--《java多線程編程實戰指南-核心篇》

目錄   填補處理器與內存之間的鴻溝:高速緩存  數據世界的交通規則:緩存一致性協議 硬件緩衝區:寫緩衝器和無效化隊列 存儲轉發 再探內存重排序 再探可見性 基本內存屏障 java同步機制與內存屏障 volatile關鍵字的實現 sync

原创 ArrayList擴容機制源碼跟進解析

package com.diagrammatize; import java.util.ArrayList; public class ArrayListMain { public static void main(Stri

原创 linux簡單介紹以及常用命令--java程序員掌握

基本網絡配置 VMware三種網絡配置方式 Bridged橋接模式(推薦): VMWare虛擬出來的操作系統就像是局域網中的一臺獨立的主機,它可以訪問網內任何一臺機器,你需要手工爲虛擬系統配置IP地址、子網掩碼,而且還要和宿主機器處於同一

原创 《MySql高級技術篇》--學習筆記

MySQL架構 mysql架構圖:  mysql查詢語句限制性from語句 mysql分層以及可插拔的存儲引擎 連接層 服務層 存儲引擎層 數據存儲層   sql語句: show engines; 查看當前支持的存儲引擎 show

原创 深入理解mysql索引底層數據結構與算法

索引到底是什麼 索引是幫助Mysql高效獲取數據的一種數據結構 索引儲存在哪裏 和數據一樣,索引以文件形式儲存在硬盤上,在MyISAM儲存引擎中,數據和索引文件試試分開儲存的。   MyISAM文件儲存示意圖   在InnoDB中,數據

原创 《深入理解JVM》-java字節碼-張龍

十六進制一位表示二進制的4位,也就是2的4次方=16,一位十六進制表示二進制0000~1111之間的任意值,所以兩位16進制數表示一個字節(一個字節表示8位)       <init>方法是自動生成的無參構

原创 《深入理解JVM》-類的加載-張龍

第一部分:類加載  java中類型的加載、連接和初始化都是在程序運行期間完成的: 加載:查找並加載類的二進制數據 連接: 驗證:確保被加載的類的正確性 準備:爲類的靜態變量分配內存,並將其初始化爲默認值 解析:把類中的符號引用轉換爲直接

原创 Centos7開放及查看端口

1、開放端口 firewall-cmd --zone=public --add-port=5672/tcp --permanent   # 開放5672端口 firewall-cmd --zone=public --remove-port

原创 第四章 牛刀小試:玩轉線程--《java多線程編程實戰-核心篇》

由串行改成併發,需要先找到可併發點。 1.基於數據的分割實現併發化; 2.基於任務的分割實現併發化; 線程所執行的任務按照其消耗的主要資源可劃分爲CPU密集型任務和I/O密集型任務。 線程數的合理性可以根據以下規則設置: 1.對於CPU密

原创 《redis深度歷險》筆記

《redis深度歷險》學習筆記 redis基礎知識,包含常見命令 常用針對key的命令 命令 DEL key:該命令用於在 key 存在時刪除 key EXISTS key:檢查給定 key 是否存在 EXPIRE key

原创 SocketChannel與ServerSocketChannel區別

(1)Socket 和ServerSocke 是一對 他們是java.net下面實現socket通信的類 (2) SocketChannel 和ServerSocketChannel是一對 他們是java.nio下面實現通信的類 支持異步