原创 一口氣講完了Redis常用的數據結構及應用場景

一、概述 Redis是互聯網技術領域使用最爲廣泛的存儲中間件,它是Remote Dictionary Service(遠程字典服務)的首字母縮寫,Redis以其超高的性能、活躍的社區、詳細的文檔以及豐富的客戶端庫支持在開源中間件領域廣受好

原创 架構雜談——互聯網系統架構演進

一、前言 說到互聯網系統架構,在互聯網行業日漸成熟的今天,一談到這背後的技術體系,很多人腦海中可能就會浮現從網上看到的,一個個龐大的知識圖譜,能說地清楚其中一二的同學,自然是志得意滿,而對於新入行的同學來說,則可能直接就勸退了。 那麼,我們

原创 Dubbo 中 Zookeeper 註冊中心原理分析 一、ZooKeeper註冊中心 二、源碼分析 三、總結

本文通過分析Dubbo中ZooKeeper註冊中心的實現ZooKeeperResitry的繼承體系結構,自頂向下分析了AbstractRegistry(提供了服務數據的本地緩存)、FailbackRegistry(服務註冊訂閱相關的異常重試

原创 好友靠JVM成功進入阿里,阿里大佬力薦的JVM筆記到底有什麼魔力? 優秀的Java開發者 JVM到底該學習什麼 工欲善其事必先利其器 性能優化 JVM從入門到入魔附筆記 JVM與性能優化知識點整理

大家都是有經驗的Java開發人員,想想爲何要學習JVM? [面試?調優?裝逼? ] 不管出於何種原因,總之你得先學好。那怎麼學好呢? 每個人對於JVM的瞭解可能不一樣,這就要考慮到怎麼切入 既然大家都學習過Java,那不妨就從Java開始聊

原创 RocketMQ源碼-NameServer架構設計及啓動流程 1. 架構設計 2. 啓動流程源碼分析 3. 總結

本文我們來分析NameServer相關代碼,在正式分析源碼前,我們先來回憶下NameServer的功能: NameServer是一個非常簡單的Topic路由註冊中心,其角色類似Dubbo中的zookeeper,支持Broker的動態註冊與發

原创 秒殺場景下的業務梳理——Redis分佈式鎖的優化

隨着互聯網的快速發展,商品秒殺的場景我們並不少見;秒殺是一種供不應求的,高併發的場景,它裏面包含了很多技術點,掌握了其中的技術點,雖不一定能讓你面試立馬成功,但那也必是一個閃耀的點! 前言 假設我們現在有一個商城系統,裏面上線了一個商品秒殺

原创 從 JVM 中深入探究 Synchronized 開篇語 Synchronized 使用 synchronized 實現原理 對象頭 偏向鎖 輕量級鎖 重量級鎖

開篇語 Synchronized,Java 友好的提供了的一個關鍵字,它讓開發者可以快速的實現同步。它就像一個星星,遠遠看去就是一個小小的點。但是走近一看,卻是一個龐大的蛋糕。而這篇文章就是要將這個巨大的蛋糕切開,喫進肚子裏面去。 Sync

原创 CompletableFuture實現異步編排

爲什麼需要異步執行? 場景:電商系統中獲取一個完整的商品信息可能分爲以下幾步:①獲取商品基本信息 ②獲取商品圖片信息 ③獲取商品促銷活動信息 ④獲取商品各種類的基本信息 等操作,如果使用串行方式去執行這些操作,假設每個操作執行1s,那麼

原创 基於冪等表思想的冪等實踐

一、爲什麼需要冪等 分佈式場景下,多個業務系統間實現強一致的協議是極其困難的。一個最簡單和可實現的假設就是保證最終一致性,這要求服務端在處理一個重複的請求時需要給出相同的迴應,同時不會對持久化數據產生副作用(即多次操作與單次操作的結果需要

原创 【架構設計】你真的理解軟件設計中的SOLID原則嗎?

前言 在軟件架構設計領域,有一個大名鼎鼎的設計原則——SOLID原則,它是由由Robert C. Martin(也稱爲 Uncle Bob)提出的,指導我們寫出可維護、可以測試、高擴展、高內聚、低耦合的代碼。是不是很牛,但是你們都理解這個設

原创 Spring獲取Bean的9種方式

前言 隨着SpringBoot的普及,Spring的使用也越來越廣,在某些場景下,我們無法通過註解或配置的形式直接獲取到某個Bean。比如,在某一些工具類、設計模式實現中需要使用到Spring容器管理的Bean,此時就需要直接獲取到對應的B

原创 一文搞懂Spring,堪稱Spring源碼終結者 爲什麼要讀Spring源碼? 第一份文檔 第二份文檔 學習視頻推薦: 寫在最後

Spring的影響力想必無需與大家多說,如果你用spring,那麼讀讀源碼有助於對你最重要的工具的理解,好的框架源碼也可以幫助我們理解什麼是好代碼。 剛參加工作那會,沒想過去讀源碼,更沒想過去改框架的源碼;甚至覺得那些有事沒事扯源碼的人就是

原创 GitHub上標星79K的LeetCode算法小抄開放下載了

在大廠面試中我們不可避免的會考到算法,爲什麼大廠一定要考察算法呢?因爲它包含了太多的邏輯思維,可以考察你思考問題的邏輯和解決問題的能力;這一點也是面試官比較看重的,因爲它可以反映出你的潛力,我曾經聽阿里一位資深面試官這樣講過:當一個人邏輯思

原创 ShardingSphere分庫分表schema名稱導致NPE問題排查記錄 問題現象 問題排查 解決方案

前段時間把 ShardingSphere 升級到了 5.1.1 版本,奈何官方版本升級太快跟不上速度,這不最近又發現了一個 BUG。 問題現象 數據庫做了分庫分表,在需要查詢多表數據進行 merge 的時候發生了一個 NPE 的異常。 Ca

原创 Java Netty框架自建DNS代理服務器教程 前言 一、自建DNS代理服務器有哪些優勢 二、自建DNS代理服務器代碼 三、本地測試

前言 DNS協議作爲着互聯網客戶端-服務器通信模式得第一關,在當下每天都有成千上億上網記錄產生得當今社會,其重要性自然不可言喻。在國內比較有名得DNS服務器有電信得114.114.114.114、阿里雲得223.5.5.5,DNSPod得