原创 Mybatis系列8-mybatis和spring結合分析

我們之前使用的時候創建SqlSessionFactory、加載配載文件等步驟都是手動代碼執行的,和spring集合後這些都可以託管給spring自動執行。 mybatis和spring結合的時候主要依賴三個類SqlSessionFac

原创 Mybatis系列7-核心主流程分析

在前面的文章中,寫了一個mybatis樣例執行了一次查詢,大致分爲四步:加載配置文件、獲得session、獲得Mapper對象、執行查詢。 1.配置文件加載 老規矩由於配置文件加載時候用到了建造者模式,先介紹下這個設計模式。 1.1

原创 Mybatis系列2-一級緩存和二級緩存

1.一級緩存 一級緩存默認會啓用,存在於 SqlSession 的生命週期中,在同一個SqlSession 中查詢時, MyBatis會把執行的方法和參數通過算法生成緩存的鍵值,將鍵值和查詢結果存入一個Map對象中。如果同一個SqlS

原创 Mybatis系列1-Mybatis介紹和配置

Mybatis前身是iBatis,本質是一種半自動的ORM框架,除了POJO和映射關係之外,還需要編寫SQL語句。 1.mybatis樣例 (1)配置文件mybatis-config.xml <configuration> <pro

原创 Mybatis系列6-對象的創建和賦值

mybatis從數據庫查出數據來後,需要創建實體對象並設值,然後返回。這個過程是通過JDK的反射實現的。mybatis只是對JDK的反射進行封裝,避免每次調用JDK反射的重複性代碼。 mybatis封裝JDK反射有五個關鍵類: (1)

原创 redis系列5-集羣

1.主從複製 在從節點配置文件中加上slaveof 主節點ip,並且設置上只讀slave-read-only=yes。主從複製肯定是有延遲的,repl-disable-tcp-nodelay參數決定是否關閉TCP_NODELAY,默認

原创 redis系列6-RESP協議

redis原生的API,如果要發送N個命令,需要發送N個請求。這種比較耗費網絡連接,我們可以借用redis提供的Pipeline管道一次發送多個命令執行。 Pipeline管理實際上就是基於RESP協議。 1.RESP協議 RESP(

原创 Mybatis系列3-日誌源碼分析

mybatis本身沒有提供日誌的實現,引入的是第三方組件。mybatis支持多個第三方日誌插件,優先級由低到高爲slf4J、commonsLoging、Log4J2、Log4J和JdkLog。 這裏有兩個問題: (1)mybatis只

原创 redis系列2-慢查詢

1.慢查詢 redis命令的生命週期:發送、排隊、執行、返回。慢查詢只統計執行的時間。 2.慢查詢配置 慢查詢的閾值設置: (1)動態設置 config set slowlog-log-slower-than 10000 如果需要持久

原创 redis系列4-持久化

redis持久化分爲兩種:RDB和AOF。 1.RDB RDB持久化把當前進程數據生成快照(.rdb)文件保存到硬盤的過程,有手動觸發和自動觸發。 (1)手動觸發 手動觸發有有save和bgsave兩命令。 save命令:阻塞當前Re

原创 MQ系列1-ActiveMQ

1.JMS JMS(Java Messaging Service)是Java平臺上有關面向消息中間件的技術規範,實際上是一套api,ActiveMQ而是這個規範的一個具體實現。 JMS規範: 連接工廠:負責創建一個JMS連接 JMS

原创 redis系列1-數據結構和命令

1.數據結構 1.1 字符串 可以是字符串,還有數字,二進制(圖片 音頻 視頻),最大不能超過512MB。 命令: set:無論是否存在鍵值都設置成功。 setnx:不存在鍵name時,返回1設置成功,存在失敗返回0。可用分佈式鎖

原创 Netty系列2-IO模型

網絡編程中IO分爲阻塞和非阻塞、同步和異步。 1.同步和異步 同步和異步關注的是結果消息的通信機制 同步:同步的意思就是調用方需要主動等待結果的返回 異步:異步的意思就是不需要主動等待結果的返回,而是通過其他方式回調函數等。 2.阻塞

原创 dubbo系列2-服務的發現源碼分析

根據上一節的DubboNamespaceHandler,服務的發現我們主要分析ReferenceBean。 1. ReferenceBean ReferenceBean在初始化後調用getObject方法。 public v

原创 dubbo系列1-服務的發佈源碼分析

dubbo實際上就是提供方將服務暴露出來,消費方找到服務進行調用。所以我們重點分析就是這兩點,其他地方以後有時間在分析。 1.dubbo的啓動 我們平常啓動dubbo都是通過一個Main函數,這個函數是dubbo中內置的。 p