原创 Netty實戰:設計一個IM框架就這麼簡單!

bitchat 是一個基於 Netty 的 IM 即時通訊框架 項目地址:https://github.com/all4you/bitchat 快速開始 bitchat-example 模塊提供了一個服務端與客戶端的實現示例,可以參照該示

原创 Java程序員注意了:奠定你發展的黃金五年,你準備如何把握好?

在Java業界流行着一種說法——黃金5年,就是從程序員入職時算起,前五年的工作選擇直接影響整個職業生涯的職業發展和薪資走向。如何把握這五年,從一個剛入行的菜鳥蛻變成一個處事不驚的大佬,這是一個涉及到自身的專業知識儲備和選擇的難題,那麼,一個

原创 Spring Cloud微服務如何設計異常處理機制?

前言 今天和大家聊一下在採用Spring Cloud進行微服務架構設計時,微服務之間調用時異常處理機制應該如何設計的問題。我們知道在進行微服務架構設計時,一個微服務一般來說不可避免地會同時面向內部和外部提供相應的功能服務接口。面向外部提供的

原创 備戰2020年:Java研發崗千道面試題總結:MyBatis+Redis+Spring...

互聯網 Java 工程師面試題 MyBatis(27道) ZooKeeper(28道) Dubbo(30道) Elasticsearch(24道) Memcached(23道) Redis(40道) MySQL(50道) Java 併發

原创 心裏沒點B樹,怎能吃透數據庫索引底層原理?

二叉樹(Binary Search Trees) 二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(Left Subtree)和“右子樹”(Right Subtree)。二叉樹常被用於實現二叉查找樹和二叉堆。 二叉樹有如下特

原创 Java數據結構和算法系列———隊列

目錄 1、隊列的基本概念 2、Java模擬單向隊列實現 3、雙端隊列 4、優先級隊列 5、總結 1、隊列的基本概念 隊列(queue)是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)

原创 SpringCloud 註冊中心 Eureka 集羣是怎麼保持數據一致的?

服務註冊中心不可能是單點的,一定會有一個集羣,那麼集羣中的服務註冊信息如何在集羣中保持一致的呢? 首先要明確的是 Eureka 是弱數據一致性的。 下面從2個方面來說明: 什麼是弱數據一致性 Eureka 是如何同步數據的 1. 弱數

原创 2019年末尾總結面試常問的基礎22道Java面試題,值得收藏學習!

1)集合類:List和Set比較,各自的子類比較(ArrayList,Vector,LinkedList;HashSet,TreeSet) List:元素是有順序的,元素可以重複因爲每個元素有自己的角標(索引)  |-- ArrayLis

原创 一篇文章告訴你什麼是架構模式和架構風格

本文探討如下幾個問題: 架構模式和架構風格有區別嗎? 什麼是架構模式? 什麼是架構風格? 架構模式和架構風格的區別是什麼? 有哪些架構模式? 有哪些架構風格? 架構模式=架構風格? 如果你搜索「架構模式和架構風格的區別」,你會發現答案千

原创 一文教你學會遞歸解題

前言 遞歸是算法中一種非常重要的思想,應用也很廣,小到階乘,再在工作中用到的比如統計文件夾大小,大到 Google 的 PageRank 算法都能看到,也是面試官很喜歡的考點 最近看了不少遞歸的文章,收穫不小,不過我發現大部分網上的講遞歸的

原创 面試中經常被JAVA多線程虐的看過來!

前言 Java多線程即時面試中進行被問及到的高階知識點,也是衡量一名Java程序員是否資深的關鍵標準之一。今天這篇文章作者將對Java多線程進行一次全面的總結,希望能夠對各位朋友進一步理解Java多線程起到幫助! 正文 如果對什麼是線程、什

原创 Spring Cloud微服務運維神器之Consul Template?

Spring Cloud微服務架構淺析 這篇文章中要和大家分享下的就是在Spring Cloud微服務架構模式中被運維小哥用的很爽的一個工具Consul Template? 在具體介紹Consul Template是個什麼東西之前,我們先來

原创 如何利用緩存機制實現JAVA類反射性能提升30倍

前言 在實際工作中的一些特定應用場景下,JAVA類反射是經常用到、必不可少的技術,在項目研發過程中,我們也遇到了不得不運用JAVA類反射技術的業務需求,並且不可避免地面臨這個技術固有的性能瓶頸問題。 通過近兩年的研究、嘗試和驗證,我們總結出

原创 Java對象爲啥要實現Serializable接口?

導讀 最近這段時間一直在忙着編寫Java業務代碼,麻木地搬着Ctrl-C、Ctrl-V的磚,在不知道重複了多少次定義Java實體對象時“implements Serializable”的C/V大法後,腦海中突然冒出一個思維(A):問了自己

原创 Sprint Boot如何基於Redis發佈訂閱實現異步消息系統的同步調用?

前言 在很多互聯網應用系統中,請求處理異步化是提升系統性能一種常用的手段,而基於消息系統的異步處理由於具備高可靠性、高吞吐量的特點,因而在併發請求量比較高的互聯網系統中被廣泛應用。與此同時,這種方案也帶來了調用鏈路處理上的問題,因爲大部分應