原创 引用計數算法的缺陷

public class ReferenceCountingGC { public Object instance = null; private static final int _1MB = 1024*1024;

原创 @EnableAspectJAutoProxy註解的原理(SpringAOP的原理)

spring使用aspectj提供的庫進行切入點解析和匹配,解釋與aspectj 5相同的註釋。但是,AOP運行時仍然是純SpringAOP,並且不依賴於AspectJ編譯器或weaver。 springAOP不管是用jdk動態代理還是c

原创 Rabbitmq之發送端事務和確認

官網說明 爲什麼存在確認機制 根據官網翻譯過來: 根據定義,使用消息傳遞代理(如rabbitmq)的系統是分佈式的。由於發送的協議方法(消息)不能保證到達對等方或被對等方成功地處理,因此發佈者和消費者都需要一種傳遞和處理確認的機制。rab

原创 spring boot中使用Rabbitmq消息隊列

SpringBoot整合RabbitMq pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

原创 java.util.function包的使用

Consumer Consumer是一個函數式接口,表示接受一個參數,沒有返回結果。 @FunctionalInterface public interface Consumer<T> { void accept(T t);

原创 ApplicationContextAware的使用理解

想象這麼一個場景,一個單例bean中依賴有原型bean我們怎麼去注入? spring中我瞭解的大致有兩種方式,一種是@Lookup依賴查找,另一種就是實現ApplicationContextAware  使用方法 @Service @S

原创 centos7上安裝kerberos附java使用kerberos案例

1.1安裝kerberos服務端 先更新yum yum update 安裝依賴包 yum -y install krb5-libs krb5-server 1.2.配置/etc/krb5.conf # Configuration s

原创 tomcat源碼解析一tomcat整體架構

1.什麼是tomcat? tomcat是servlet規範的一種實現(https://jcp.org/en/jsr/detail?id=340),通俗講tomcat就是一個servlet的容器,每一個servlet代表了不同的業務處理邏輯

原创 SpringCloud之feign

官方文檔 feign是什麼 用官方文檔的話來解釋: feign是一個聲明性web服務客戶端。它使編寫web服務客戶端變得更容易。使用feign創建一個接口並對其進行註釋。它有可插入的註釋支持,包括外部註釋和jax-rs註釋。feign還支

原创 SpringCloud之ribbon

官方文檔 ribbon是什麼?  Spring Cloud Ribbon是基於Netflix Ribbon實現的一套客戶端負載均衡的工具。 簡單的說,Ribbon是Netflix發佈的開源項目,主要功能是提供客戶端的軟件負載均衡算法,將N

原创 Rabbitmq之交換機

生產者將消息發送到消息系統的時候,不是直接發送到隊列,而是發送到交換機,由交換機路由到相應的隊列 交換機有三種路由模式 1.direct 交換機通過一個routing key和隊列綁定,當生產者生產消息的時候指定一個routing k

原创 Rabbitmq之消息重複消費

消息隊列出現消息重複的原因有多種 消息隊列並不能保證消息的唯一,所以我們只能在業務層面上做這些控制 1.全局唯一id,比如通過消息隊列來生成訂單,那訂單號就是唯一的,在進行插入數據庫之前先判斷是否這個訂單號是否已經存在了,如果已經存在了,

原创 Rabbitmq之消費端確認

當消費者從消息隊列中拉取了一條消息,去處理某個業務的時候出現了異常,那這條消息沒有被正確消費的時候我們該怎麼處理呢? rabbitmq有一個確認機制 首先看一下如果我們不做確認的話是一種什麼情況 public class Connect

原创 Rabbitmq的安裝和helloWorld

安裝 mac安裝rabbitmq很簡單 brew install rabbitmq 更新命令 brew reinstall babbitmq或者brew upgrade rabbitmq 啓動服務,在安裝目錄/usr/local/Cell

原创 事務的隔離級別

存在兩個事物(T1,T2)同時運行 髒讀:T1讀取了已經被T2修改但還未提交的字段,由於某種原因,T2事物回滾,則T1讀取的內容是臨時且無效的。 不可重複讀:T1讀取一個字段,之後T2更新了該字段,T1在此讀取該字段值發生了變化。 幻讀: