原创 MyBatis中批量插入和批量更新

批量插入 <!-- 批量添加資金流水 --> <insert id="batchInsertFlowData" parameterType="java.util.List"> insert into

原创 Java虛擬機運行時數據區

Java虛擬機在執行Java程序的過程中會把它管理的內存劃分爲若干個不同的數據區域。這些數據區域都有各自的用途,以及創建和銷燬的時間,有的區域隨着虛擬機進程的啓動而存在,有些則依賴用戶線程的啓動和結束而建立和銷燬。Java虛擬機所

原创 CAS和ABA問題

CAS CAS全稱是CompareAndSwap,是一條CPU的原子指令,其作用是讓CPU經過比較後原子地更新某個位置的值,CAS是靠硬件實現的,JVM只是封裝了彙編調用,那些AtomicInteger類便是使用了封裝彙編的接口。

原创 HashMap

HashMap繼承於AbstractMap,實現了Map接口,同時標記了Cloneable和Serializable接口。 public class HashMap<K,V> extends AbstractMap<K,V

原创 2018年終考評的反思

2018年的年終考評得了B。領導和我溝通完績效後,內心是有些焦慮的。心路歷程如下,mark一下。 個人情況 我確實沒有投入百分百精力在工作中,2018年我完成了人生的兩件大事:買房和結婚。 4月份入職新東家後,我在地鐵上的時間完全沒

原创 LinkedList

類定義 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.

原创 ConcurrentHashMap

ConcurrentHashMap繼承於AbstractMap,實現了ConcurrentMap接口,同時標記了Serializable接口。 爲什麼要使用ConcurrentHashMap HashMap是非線程安全的,在多線程場景下

原创 ZooKeeper在Mac上集羣部署

集羣模式 集羣模式有如下兩種: 1)使用多臺機器,在每臺機器上運行一個ZooKeeper Server進程; 2)使用一臺機器,在該臺機器上運行多個ZooKeeper Server進程。 在生產環境中,一般使用第一種形式。在本地環境

原创 disconf啓動流程

如圖所示,applicationContext.xml文件中注入了3個和disconf相關的bean。在容器啓動的時候,這3個bean將被實例化。 啓動流程如下: loadConfig 該階段導入配置,包括: (1)導入系統配置d

原创 Spring事務使用場景

常規調用 @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) methodA{ …… try{

原创 disconf回調

disconf可以隨時同步配置文件的變化到倉庫中。也就是說,配置文件中的參數發生了變化,應用系統會隨時獲取到最新的參數值。這依靠的是watch+callback機制。 Watch 第一次掃描時,在開啓disconf的情況下,會在zk上建立

原创 memcached的內存管理機制

memcached是一個高效的分佈式內存cache,默認使用SlabAllocation機制管理內存,其主要思想是按照預先規定的大小,將分配的內存分割成特定長度的塊以存儲相應長度的key-value數據記錄,以完全解決內存碎片問題。 S

原创 java io之文件下載

下載文件 下面的代碼展現瞭如何從頁面上下載服務器上的文件。服務器上文件以windows系統上的HOSTS文件舉例。 主要思路是利用FileInputStream獲得服務器上文件的句柄,定義一個緩衝區字節數組,每次讀一個數組長度的字節到輸

原创 bean元素的屬性

使用Spring框架時,我們經常會在xml文件裏裝配bean。今天我們認識一下bean元素裏的屬性都有着哪些用處。 <bean abstract="true" autowire-candidate="default" autow

原创 kafka簡介

分佈式流平臺 Apache Kafka™是一個分佈式流平臺,我們認爲流式平臺(a streaming platform)有以下三個關鍵的能力: 1.它允許你發佈和訂閱流記錄(streams of records)。從這個角度上說,它接近