原创 java線程池深入二

1.設計層面 首先要有任務抽象,這裏可以是Runnable及Callable的實現類。有了任務後,執行任務的一般是線程,但如果當前線程不夠時希望任務能夠被暫時緩存,之後有空閒線程後再被消費。所以就有了任務隊列。 空閒線程就是從這個隊列取任

原创 訂單分表分庫方案

一.檢查遷移原則: 1.開啓新表查詢邏輯時,不能出現新表與舊錶數據及狀態不一致。否則會有數據錯誤問題。 2.遷移並行期間,如果出現錯誤,要有預案 3.分階段,小步遷移,做好開關,出現異常回退 4.數據對賬,業務對賬用於發現問題 5.啓用新

原创 volatile深入

一.目的 減少併發開銷。 實現線程可見性,與禁止重排序。 最終解決的問題是: 線程1執行以下邏輯: 初始化資源;//[1] 設置initFlag=true;//[2] 線程2執行以下邏輯: if(initFlag){[3] 獲取

原创 rocketmq注意點

1.消費者與生產者如何負載均衡 生產者發送: 重試3次,循環負載。其中一臺broker掛了,如果存在另外一臺broker有這個topic則往這臺發送。 思者:borker單點,可以佈署多組master,slave。每組master都

原创 java序列化深入

一.目的: 網絡傳輸對象,數據庫存儲對象,文件存儲對象時都需要實現serializable 序列化id使用: serialVersionUID,反序列化時如果這個id與序列化時id不同會報錯: java.io.InvalidClassE

原创 閃購業務架構選型

閃購特點: 瞬時併發流量大。 業務模式: 用戶下單扣相應sku庫存,超過20分鐘(或其它時間)未支付,則回收庫存。 設計原則: 保證不超賣及不少賣的情況下,提升併發性能。 保證服務穩定性,做限流,做預案。 數據庫是瓶頸,減少到數據

原创 paxos分享

一.paxos解決什麼問題 解決多個結點,如何就某個值達成一致。 具體應用有: 1.zk的選舉算法,在這個場景下一致性協議保證的是誰是leader這個值在集羣中的一致性。 二.算法流程 整個paxos角色定義: 1.leader

原创 dubbo zk應用

一.dubbo應用zk目的 作爲服務註冊中心,服務消費方從zk上獲取服務提供方信息。新增服務提供方或者服務提供方down機,能夠及時的通知到服務消費方。 二.註冊服務,對於zk的部分源碼解讀 對於註冊一個服務,會在zk上創建相應

原创 技術焦慮症

有技術焦慮症是個好處。 陳皓大牛的文章: https://coolshell.cn/articles/8088.html

原创 disruptor應用

文章: http://blog.csdn.net/dc_726/article/details/41381715 http://wiki.jikexueyuan.com/project/disruptor-getting-started

原创 mysql深入三-鎖

http://hedengcheng.com/?p=771 以下基於innodb存儲引擎。 一.問題 1.鎖標記在哪? 在索引上。 更新,刪除操作加x鎖。 如果update條件是主鍵,則只會加在主鍵對應聚簇索引上。 如果update條

原创 mysql深入二

側重,主從複製,mysql客戶端與服務端交互。 一.客戶端查詢服務整體流程 客戶端查詢 -> 查詢緩存 -> sql解析器 -> 查詢優化器 -> 執行引擎 客戶端與服務端通信採用半雙工形式。 不要查詢大量數據,因爲採用reques

原创 spring ioc解析

一.概述 產品化,定製化,核心。擴展功能在覈心之上進行。 統一的bean的抽象表示:BeanDefinition. 核心是管理bean的生命週期及依賴注入。 可擴展性也表現在bean的生命週期中,可以加入用戶的一些代碼來對bea

原创 業務架構改進一

1.交易太重,需拆分 冗餘了多個業務。 且view層和交易流程服務在一個工程裏。view層變化則需要影響核心流程。 當某個業務發生改變時,需要影響其它業務。 合代碼經常衝突,並且容易出現合併錯誤,交易組下不同小組的人通常只熟悉自己負責的

原创 敏捷開發

http://ifeve.com/how-to-do-team-work-from-alibaba/ 一個團隊,每位成員爲團隊目標負責。 一.核心方法 0.每位團隊成員會團隊目標負責 團隊成員可以提出改進的想法,只要該想法符合團隊