原创 Redis Jedis原理 自定義Redis客戶端

通常我們調用Jedis提供的API來操作Redis,本文將手寫一個簡單的Redis客戶端,實現Jedis的set、get和incr功能。 用Jedis連接NIO服務端,發送指令 NIO服務端以前寫過,代碼就不貼了,可參考此鏈接Ja

原创 spring 對於注入的理解

"注入"的概念 本文討論的"注入",指的是spring給Bean注入屬性(也可以稱之爲"裝配"),並非其他注入。 與"注入"相關的概念 配置spring容器有三種風格:xml、annotation和java config,當然也可

原创 Java基礎 線程 & 線程池

線程 Java多線程三種實現方式 自定義類繼承Thread類,重寫run()方法,new MyThread().start() 自定義類實現Runnable接口,重寫run()方法,new Thread(new MyRunnab

原创 Java基礎 單例模式

餓漢式 是否懶加載:否 是否線程安全:是 // 餓漢式單例模式 public class HungryManSingletonMode { private static final HungryManSingletonMo

原创 Java基礎 sync+long、Atomic、LongAdder性能比較

import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.LongAdder; public class SyncVsAt

原创 spring spring mvc原理

spring mvc原理 spring mvc初始化 spring容器初始化執行refresh()方法,走到最後一步finishRefresh()方法 finishRefresh()方法內部調用ApplicationListen

原创 spring 源碼筆記 啓動過程(七) invokeBeanFactoryPostProcessors(beanFactory)

第七步:invokeBeanFactoryPostProcessors(beanFactory) invokeBeanFactoryPostProcessors(beanFactory)調用鏈 main:9, Annotation

原创 spring 源碼筆記 spring-web如何實現servlet規範

servlet 3.0 規範 角色:應用方(spring) + servlet + web容器(tomcat) servlet 3.0 規範 規範提供ServletContainerInitializer接口,應用方提供實現類。

原创 隨筆 數據庫敏感數據加密存儲

場景 應公司安全部門要求,需要對數據庫敏感數據進行加密存儲(第一期只包含證件號&手機號)。 由於這是一個技改類需求,與業務無關,我們考慮用自定義註解+aop來做(orm用mybatis,aop選用Aspectj)。這樣做對業務代碼

原创 隨筆 統計用戶每天使用時長

場景 有這麼個業務需求,要統計用戶每天使用app的時長(後臺運行也算)。 經過討論決定把打開app、並且爲登陸狀態的時間作爲開始時間;把關閉、崩潰、強殺進程或者登出的時間作爲結束時間,由客戶端統計,發送給服務端進行計算。 計算時間

原创 spring 源碼筆記 啓動過程(十三) finishBeanFactoryInitialization(beanFactory)

第十三步:finishBeanFactoryInitialization(beanFactory) 第一次調用Bean後置處理器:判斷Bean是否需要代理 第一次調用Bean後置處理器調用鏈 resolveBeforeInstan

原创 spring Bean生命週期

本文關於spring Bean生命週期,做了一個簡單的Demo(Annotation風格),spring版本:5.2.0.RELEASE。 運行結果 build.gradle添加spring-context依賴 // http

原创 Java基礎 代理模式

代理模式是很常見的一種設計模式,大量使用在AOP,他的主要目的是: 控制目標對象的訪問 修改目標對象的方法(網上常見的說法叫增強,其實也可以削弱,所以我認爲"修改"更恰當) 遵循開閉原則 本文將通過幾個簡單Demo層層深入代理

原创 spring 源碼筆記 兩次推斷構造方法

第二次調用Bean後置處理器:第一次推斷構造方法 第二次調用Bean後置處理器調用鏈 createBeanInstance:1210, AbstractAutowireCapableBeanFactory (org.springf

原创 zookeeper zookeeper原理

zookeeper原理 角色劃分 客戶端(client) 服務端(server):領導者(leader,可讀可寫可監聽)+追隨者(follower,可讀可監聽)+觀察者(observer,不參與選舉投票和提議投票,可讀可監聽) z