原创 設計模式與Java語言特性

單例模式【1】:     1. 靜態初始化(餓漢).不管是否使用都會創建 餓漢單例     <tip1【2】>final:對於基本類型數據,final會將值變爲一個常數(創建後不能被修改);但是對於對象句柄(亦可稱作引用或者指針),fin

原创 2020.06.18 note

map.get之後,直接對get到的引用對象進行修改會報錯,必須new出一個新的對象,並拷貝原對象中成員。

原创 深入理解Apache Dubbo與實戰-第3章《Dubbo註冊中心》總結

1、註冊中心概述 主要作用:動態加入、動態發現、動態調整、統一配置; 工作流程: 1)服務提供者啓動時,會向註冊中心寫入自己的元數據信息,同時會訂閱配置元數據信息; 2)消費者啓動時,也會向註冊中心寫入自己的元數據信息,並訂閱服務提供者、

原创 消息隊列與數據庫

Kafka架構原理【1】: kafka架構1、消費模式:producer使用push模式,consumer使用pull模式。 tips:如果採用 Push,消息消費的速率就完全由消費代理控制,一旦消費者發生阻塞,就會出現問題。 Kafka

原创 緩存(Redis與Memcache)

Memcache【1】:多線程、異步IO、KV存儲、內存存儲沒有持久化、採用LRU(Least Recent Used)淘汰算法。 1、內存管理:Slab->Page,內存將按照1MB的大小劃分爲頁,而該頁內存則會繼續被分割爲一系列具有相

原创 Spring源碼深度解析-第5章《bean的加載》總結

1、bean的加載步驟 1)轉換對應的beanName:去除FactoryBean的修飾符,取指定alias所表示的最終beanName; 2)嘗試從緩存中加載單例:創建單例bean的時候會存在依賴注入的情況,而在創建依賴的時候爲了避免循

原创 Spring源碼深度解析-第2章《容器的基本實現》總結

1、Spring中的兩個核心類 DefaultListableBeanFactory:DefaultListableBeanFactory是整個bean加載的核心部分,是Spring註冊及加載bean的默認實現。XmlBeanFactor

原创 Spring源碼深度解析-第1章《Spring整體架構和環境》總結

1、Spring的整體架構: Core Container包含Core、Beans、Context和Expression Language模塊。 Core:Core模塊主要包含Spring框架基本的核心工具類; Beans:Beans模

原创 Spring源碼深度解析-第4章《自定義標籤的解析》總結

1、自定義標籤使用 步驟: 1)創建一個需要擴展的組件; 2)定義一個XSD文件描述組件內容; 3)創建一個文件,實現BeanDefinitionParser接口,用來解析XSD文件中的定義和組件定義; 4)創建一個Handler文件,擴

原创 Spring源碼深度解析-第3章《默認標籤的解析》總結

1、默認標籤一共有4種:import、alias、bean和beans。 2、bean標籤的解析及註冊 大致的邏輯: 1)首先委託BeanDefinitionDelegate類的parseBeanDefinitionElement方法進行

原创 記錄一次請求無響應的問題定位(jstack、VisualVM)

問題場景:測試seata分佈式事務回滾 問題現象:shop模塊調用user模塊創建新的user,並在shop模塊中拋出異常,觸發全局回滾。shop模塊觸發回滾成功,但是user模塊讀取超時。而且後續向user模塊發送請求均被阻塞。 問題分

原创 《代碼精進之路:從碼農到工匠》讀書筆記-實踐部分

12、COLA架構 12.2 典型的應用架構 12.2.2 CQRS 12.2.3 六邊形架構(適配器架構) 在左側,適配器依賴端口,該端口的具體實現會被注入適配器,這個實現包含了用例; 在右側,適配器就是端口的具體實現,他自己將被注

原创 《代碼精進之路:從碼農到工匠》讀書筆記-思想部分

8、抽象 8.5 如何進行抽象 8.5.1 尋找共性 8.5.2 提升抽象層次 8.5.3 構築金字塔 要自上而下地思考,總結概括;自下而上地表達,結論先行。自下而上總結概括的過程就是抽象的過程。   8.6 如何提升抽象思維 8.6.1

原创 《代碼精進之路:從碼農到工匠》讀書筆記-技藝部分

1、命名 1.3 有意義的命名 1.3.1 變量名:如果一個變量名需要註釋來補充說明,那麼很可能說明命名就有問題; 魔術數用常量定義的好處是更易於搜索。 1.3.2 函數名:函數名要具體,空泛的命名沒有意義; 函數的命名要體現做什麼,而不

原创 利用註解實現productId校驗

1、註解的使用 @PermRequired(params = {@Param(index = 0)}, biz = PermBizCategory.PRODUCT, role = PermRoleGroup.OWNERANDCHILDA