原创 關於爲什麼ReentrantLock不是樂觀鎖的一些猜想

1.衆所周知,ReentrantLock是一個悲觀鎖,但是查看源碼,發現底層實現使用的是compareAndSet相關方法實現的,於是產生疑問:爲什麼ReentrantLock使用的和CAS一樣的compareAndSet相關的方

原创 設計模式(七): 單例模式(懶漢、餓漢、靜態內部類、雙重檢驗鎖、枚舉、序列化反序列化、反射攻擊、容器單例)

1. 定義 優點 缺點 特性: (1)私有構造函數 (2)線程安全 (3)延遲加載 (4)序列化和反序列化 (5)反射攻擊 2. 懶漢模式 多線程創建: 主函數直接調用 開啓線程調試:類型設置爲Thread 開始調試

原创 關於秒殺場景的全面分析總結

1.技術層面 1.高訪問壓力隔離 將秒殺系統獨立部署,甚至使用獨立域名,使其與網站完全隔離。 2.用戶在秒殺開始前,通過不停刷新瀏覽器頁面以保證不會錯過秒殺.但是持續刷新商品頁面詳情頁會對服務器造成壓力 重新設計秒殺商品頁面,不使

原创 Spring Boot2.0版本源碼(一):Spring Boot啓動整體流程預覽

1. 項目啓動 1.框架初始化,也就是new Application()的過程 2.框架啓動,也就是new Application(),run()方法執行 3.自動裝配 2.框架初始化 1.配置資源加載器:用於加載resourc

原创 mysql(九): innoDB各種鎖機制(解釋普通索引和唯一索引鎖算法的區別)

1.各種鎖機制 2 加鎖機制 樂觀鎖:假定大概率不會發生併發更新衝突,訪問、處理數據過程中不加鎖,只在更新數據時再根據版本號或時間戳判斷是否有衝突,有則處理,無則提交事務; 悲觀鎖:假定大概率會發生併發更新衝突,訪問、處理數據前

原创 zookeeper中的從選paxos和fast paxos算法到實現分佈式鎖和分佈式隊列

1.paxos算法 爲什麼需要paxos 相關概念:Paxos算法是基於消息傳遞且具有高度容錯特性的一致性算法,是目前公認的解決分佈式一致性問題最有效的算法之一,其解決的問題就是在分佈式系統中如何就某個值(決議)達成一致。 解釋爲

原创 hadoop中mapreduce的shuffle過程詳細解釋

1.mapreduce整體執行流程 input – split切片 – map – map shuffle – 分成多個partition – reduce shuffle – reduce拉去對應的partition 到相應的r

原创 Spring Boot2.0版本源碼(十):Spring Boot的Start的解析之自定義starter

start是一個可插拔的插件,如果是直接引入一個jar,還需要將jar中的數據注入到spring boot當中纔可以使用,springboot starer可以自定注入 下面我們就自定義一個starter 首先是新建一個sprin

原创 Spring Boot2.0版本源碼(十):Spring Boot的Start的解析之starter原理解析

之前的章節中講過Spring Boot2.0版本源碼(九):Spring Boot的Servlet容器Tomcat工廠類的加載,這個章節中有講解@EnableAutoConfiguration註解實現對starter的自動注入的過

原创 Spring Boot2.0版本源碼(十):Spring Boot的Start的解析之@Conditional註解

@Conditional註解是根據我們的條件來判斷是否需要注入某個bean @ConditionalOnBean表示是否存在某個bean @ConditionalOnMissingBean表示不存在bean @Condition

原创 Spring Boot2.0版本源碼(九):Spring Boot的Servlet容器個性化參數配置原理

我們可以在application.properties文件中寫入server.port=9000使得我們的tomcat容器啓動的時候,會在9000端口。 我們之前講解bean的注入的過程中Spring Boot2.0版本源碼(五

原创 Spring Boot2.0版本源碼(九):Spring Boot的Servlet容器Tomcat工廠類的加載

在主程序中,使用了@SpringBootApplication註解,它其實使用了@EnableAutoConfiguration註解來完成一系列操作,@EnableAutoConfiguration註解import了AutoCon

原创 Spring Boot2.0版本源碼(九):Spring Boot的Servlet容器啓動解析整體流程

下面是tomcat的容器架構 tomcat處理請求 1. 環境類型判斷 在SpringApplication類初始化的時候會判斷當前的環境類型, @SuppressWarnings({ "unchecked", "rawtyp

原创 Spring Boot2.0版本源碼(八):Spring Boot的註解的解析出Bean之整體流程

裏面有一個BeanDefinitionRegistryPostProcessor的實現類ConfigurationClassPostProcessor,它的postProcessBeanDefinitionRegistry()方

原创 Spring Boot2.0版本源碼(七):Spring Boot的屬性配置解析

使用: 指定配置文件 配置文件中配置屬性 實現CommandLineRunner, EnvironmentAware接口即可 運行程序,打印環境屬性: 下面是常見的spring ware 1. 查看aware的調用關係