原创 JVM學習筆記(5)之字節碼文件剖析

使用javap -verbose命令分析一個字節碼文件時,將會分析該字段的魔數、版本號、常量池、類信息、類的構造方法、類中的方法信息、類變量與成員變量等信息 魔數:所有的.class字節碼文件的前4個字節都是魔數,魔

原创 CentOs7防火牆命令(持續添加中...)

查看開放的端口 netstat -anp 查看指定的端口是否開啓 firewall-cmd --query-port=666/tcp 對外開放端口 firewall-cmd --add-port=123/tcp --p

原创 JVM學習筆記(6)之字節碼文件剖析2

上一篇字節碼文件剖析完了常量池表,接下去我們剖析字節碼整體結構的剩下的內容,如下圖所示 Java字節碼整體結構剖析圖 access_flags(訪問標誌),類型是u2,說明長度佔據2個字節,數量是1 訪問標誌信息包括該Cl

原创 多線程學習筆記2-volatile

volatile關鍵字 保證線程可見性 public class VolatileDemo { /*volatile*/ boolean flag = true; public void m() {

原创 二進制、八進制、十六進制轉換及原碼、反碼、補碼轉換

二進制、八進制、十六進制轉換及原碼、反碼、補碼轉換 二進制 如果說十進制是人類的計算度量單位,那麼二進制就是機器識別的計算度量單位 ,十進制逢十進一,例如9+1=10,到10進位,各位數爲0,十位數則加1爲1,寫出來則爲10,在

原创 多線程學習8之線程池(下)

Executors 創建線程池的工廠類,有創建多種不同線程池的方法 Executors.newSingleThreadExecutor 這個方法創建一個單線程的線程池,單線程的線程池的好處是比直接創建的線程易於維護,並且功能更

原创 Java中Bitmap的實現

說bitmap之前,我們要明白數字在內存中的表示,如果說byte用8個二進制位表示,即可以表示個數,每個byte佔8位,即每個byte佔8行,在內存中這樣形象的表示: 而bitmap結構,充分利用了每一行所有的位數,它將每個位置

原创 centos7 docker安裝及docker常用命令使用

前置條件 yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliy

原创 centos 7安裝redis

yum install wget 安裝wget cd ~ 進入用戶目錄 mkdir soft 創建soft目錄 cd soft 進入soft目錄 wget http://download.redis.io/releases/re

原创 多線程學習筆記7之線程池

Executors 創建線程池的類,提供四種線程池: newCachedThreadPool創建一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閒線程,若無可回收,則新建線程 示例代碼: public class C

原创 多線程學習之synchronized

synchronize 可重入鎖 public class ReentrantDemo { synchronized void m1(){ System.out.println("m1 start.

原创 多線程學習筆記5之ThreadLocal和強 軟 弱 虛引用

ThreadLocal ThreadLocal中有一個Map,爲每個線程維護一個副本,保證每個線程中的數據進行隔離,下面我們看一個小程序 public class ThreadLocalDemo { static Per

原创 多線程學習筆記6之容器

Hashtable 同步表 跟HashMap一樣,不同的是Hashtable線程安全的,效率比較低,鎖的整個表,只支持一個線程同時運行,一般使用它的替代者ConcurrentHashMap ConcurrentHashMap 同步

原创 多線程學習4之阻塞、喚醒線程

LockSupport 阻塞、喚醒線程 LockSupport類的park,unpark方法用來阻塞和喚醒線程,類似於wait、notify,下面以代碼實例舉例 public class LockSupportDemo {

原创 多線程學習筆記3之ReentrantLock

比較LongAdder、AtomicLong、synchronized(Long)效率 public class AtomicVsSyncVsLongAdder { static long count2 = 0L;