原创 Consul實現原理---Raft算法

 公司的註冊中心要調研選型,不再使用Eureka,我負責這件事,先調研了Consul,Raft算法真的很巧妙,可惜的是consul的一些設計架構無法在我們公司生產環境使用。 Raft將一致性問題分解成了三個獨立的部分:leader選舉、日

原创 Nacos參數配置詳解

Nacos客戶端版本 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-di

原创 Redis實現源碼-字符串基礎數據類型分析

        Redis並沒有直接使用C語言中的字符串類型,而是自己設計了一種數據結構,在Redis中,C語言中的字符串只使用在一些字符串值不會發生修改的地方,比如打印日誌。它爲什麼要這樣做?這樣做的好處是什麼呢?讓我們先來了解一下這種

原创 MySQL索引

一、索引的類型     1.主鍵索引:不能重複,不能爲空     2.唯一索引:不能重複,可以爲空     3.普通索引:無限制     4.組合索引:不能爲空     5.全文索引二、索引的優點     1.使用索引可以提高查找數據的效

原创 DDOS攻擊、DOS攻擊、CC攻擊和防禦

                                                            一、DDoS攻擊介紹     DDoS攻擊是Distributed Denial of Service的縮寫,意思是分

原创 懶漢式創建單例模式線程安全問題

一、synchronized加鎖      public class Student {              private static Student student;         private Student(){}

原创 CyclicBarrier

一、CyclicBarrier作用     它允許一組線程互相等待,直到到達某個公共屏障點。在設計一組固定大小的線程的程序中,這些線程必須不時地相互等待,這時CyclicBarrier很有用。因爲該Barrier在釋放線程後可以重用,所以

原创 網站應用微信登錄開發

                                                 一、授權流程     微信OAuth2.0授權登錄讓微信用戶使用微信省份安全登錄第三方應用或網站,在微信用戶授權登錄已接入微信OAuth2.

原创 Hystrix生產環境中的線程池大小以及Timeout超時時長優化經驗總結

注:發現一篇好文章忍不住分享一下 PS:感覺寫的格式有點亂,整理了一下,並加上了一些自己的看法   原文:https://blog.csdn.net/kang123488/article/details/79512226 一、生產環境線程

原创 Dubbo架構

一、什麼是Dubbo                 1.Dubbo是一個分佈式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,SOA服務治理方案。使我們告別WebService   模式中的WSDL,以服務者和消費者的方式在

原创 數據庫與緩存雙寫不一致保障方案

 一.cache aside pattern 先刪除緩存再修改數據庫                 ?? 爲什麼是刪除不是更新                         1.先更新緩存而後修改數據庫,若修改數據庫失敗(網絡故障),

原创 APM

 一、當系統某一模塊的部分功能訪問很慢,怎樣檢測?             1.檢查線上10臺機器各硬件負載指標均正常(硬件)             2.查詢線上10臺會員系統日誌,出現大量請求Timeout(網絡)          

原创 接口的平滑升級

一、暴露調用信息                 1.通過RPC方案調用接口首先需要服務端將調用的信息暴露給服務端,一般暴露的信息有三部分:接口信息、模型信息、異常。                 2.暴露接口的通常做法是接口和實現分離

原创 事務、Spring的事務、4種事務特性、4中隔離級別、傳播行爲

           一、事務概念                 指作爲單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向數據的資源。通過將一

原创 線程上下文切換

            一、爲什麼要減少線程上下文切換                 當CPU從執行一個線程切換到執行另外一個線程的時候,它需要先存儲當前線程的本地的數據,程序指針等,然後載入另一個線程的本地數據,程序指針等,最後纔開始