原创 如何保證RabitMQ消息不被重複消費(如何保證消息消費時的冪等性)

上篇博客主要講了消息可靠性傳遞,那麼是不是大家也想了解怎麼保證消息隊列消費的冪等性? 如何保證MQ的消費是冪等性的,需要結合具體的業務來看  :   比如你拿個數據要寫庫,你先根據主鍵查一下,如果這數據都有了(最好帶有時間戳字段,每次更

原创 redis面試最叼的問題系列

Redis在互聯網技術存儲方面使用如此廣泛,幾乎所有的後端技術面試官都要在Redis的使用和原理方面對小夥伴們進行各種刁難。作爲一名在互聯網技術行業打擊過成百上千名【請允許我誇張一下】的資深技術面試官,看過了無數落寞的身影失望的離開,略感

原创 (二)MyBatis調用動態代理解析----MyBatis源碼解析

如果我們要使用MyBatis進行數據庫操作的話,大致要做兩件事情:  1. 定義DAO接口  在DAO接口中定義需要進行的數據庫操作。  2. 創建映射文件  當有了DAO接口後,還需要爲該接口創建映射文件。映射文件中定義了一系列SQL語

原创 springboot集成druid連接池(數據庫密碼加密)

1.springboot默認連接池 習慣使用springboot的小夥伴通過開始學習springboot鏈接數據庫時,都會嘗試着官方文檔來 學習,所以springboot默認支持的數據庫連接池c3p0和 dhcp,大家應該都很熟悉了吧,

原创 Mybatis-generator配置說明

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator

原创 springboot熱部署之idea和eclipse

相信大家在用springboot開發web應用時都遇到過改動頁面上一個地方就需要重啓下服務的困惑,現在推薦給大家一種熱部署方法,可以改動頁面內容時無需重啓服務,提高開發效率;親測好使在idea1.pom.xml文件需要調整添加依賴注:熱部

原创 (一)MyBatis初始化過程解析----MyBatis源碼解析

1. 準備工作 爲了看清楚MyBatis的整個初始化過程,先創建一個簡單的Java項目,目錄結構如下圖所示: 1.1 Product 產品實體類 public class Product { private long id;

原创 (三)MyBatisSqlSession創建及簡要解析----MyBatis源碼解析

       上一篇我們介紹了mybatis動態代理,文章末尾也寫了要繼續分析excutor,但是第三講再講解excutor執行分析之前,我必須要帶領大家回顧下SqlSession的創建過程,這樣有助於接下來excutor的理解。 Sq

原创 git 操作大全

針對git使用大全不斷豐富一.git 初始化倉庫1.先在碼雲或者github上新建一個項目2.在本地目錄下執行以下操作git init git add . git config user.name '****' git config us

原创 (五)Mybatis Sql如何解析執行(1)--MyBatis源碼解析

通過前面一些篇幅,我們整理了sqlSession和executor關係之後,接下來就要看看具體一條sql是怎麼被解析執行了,先看下query代碼。 對應的mapper配置文件我也補上,後續會將代碼打包發佈到github上 <mappe

原创 過濾器跟攔截器的區別和使用

1、首先要明確什麼是攔截器、什麼是過濾器 1.1 什麼是攔截器: 攔截器,在AOP(Aspect-Oriented Programming)中用於在某個方法或字段被訪問之前,進行攔截然後在之前或之後加入某些操作。攔截是AOP的

原创 (六)Mybatis Sql如何解析執行(2)--MyBatis源碼解析

上篇博客講解了如何解析sql,不過SqlNode.apply()後,Sql還是個半成品。只處理了"${}"這種佔位符,"#{}"這種佔位符還沒有處理,而且Sql執行時的參數也沒有生成。 我們再回顧下DynamicSqlSource.get

原创 mycat實現簡單的mysql讀寫分離

什麼是mycat呢? 簡單理解爲一個MySQL中間件,它支持分流、基於心跳的自動故障切換,支持讀寫分離,支持mysql主從,基於Nio管理線程的高併發…  詳見官網:http://www.mycat.io/  爲什麼需要mysql集

原创 TCP和UDP的主要區別

TCP UDPTCP與UDP基本區別  1.基於連接與無連接  2.TCP要求系統資源較多,UDP較少;   3.UDP程序結構較簡單   4.流模式(TCP)與數據報模式(UDP);   5.TCP保證數據正確性,UDP可能丟包   6

原创 (七)Mybatis Sql如何解析執行StatementHandler(3)--MyBatis源碼解析

這篇博客我們來學習下StatementHandler是如何解析執行sql的,帶你一起看下整個執行過程,一起學習。 SimpleExecutor執行sql過程 當BoundSql加載完成之後,下一步就是執行select/update/ins