原创 Springboot整合ElasticSearch的官方API實例

前言:在上一篇博客中,我介紹了從零開始安裝ElasticSearch,es是可以理解爲一個操作數據的中間件,可以把它作爲數據的存儲倉庫來對待,它具備強大的吞吐能力和計算能力,其基於Lucene服務器開發,在搜索領域具有統治般的地位。平時可以

原创 高併發服務的幾條優化經驗

   前言: 如何優化高併發服務,這裏指的是qps在20萬以上的在線服務,注意不是離線服務,在線服務會存在哪些挑戰呢?①無法做離線緩存,所有的數據都是實時讀的 ②大量的請求會打到線上服務,對於服務的響應時間要求較高,一般都是限制要求在300

原创 二叉樹的所有遍歷非遞歸實現

前言:二叉樹的遍歷形式有很多,比如前序、中序、後序、層序遍歷,在最近的一次面試中,面試官要求手寫層序遍歷代碼(非遞歸的形式),由此可見遍歷的重要性.本篇博客我們就來看一下二叉樹的幾種遍歷方式.本篇博客語言均採用java實現: 目錄: 一:二

原创 淺談分佈式一致性算法raft

前言:在分佈式的系統中,存在很多的節點,節點之間如何進行協作運行、高效流轉、主節點掛了怎麼辦、如何選主、各節點之間如何保持一致,這都是不可不面對的問題,此時raft算法應運而生,專門 用來解決上述問題。對於分佈式的一致性算法,著名的有pax

原创 那些jdk中坑你沒商量的方法

前言:jdk作爲我們每天必備的調用類庫,裏面大量提供了基礎類供我們使用.可以說離開jdk,我們的java代碼寸步難行,jdk帶給我們的便利可謂是不勝枚舉,但同時這些方法在使用起來也存在一些坑,如果不注意就很容易掉入到陷阱裏面,導致程序拋出錯

原创 基於springboot的mysql實現讀寫分離

前言:   首先思考一個問題:在高併發的場景中,關於數據庫都有哪些優化的手段?常用的有以下的實現方法:讀寫分離、加緩存、主從架構集羣、分庫分表等,在互聯網應用中,大部分都是讀多寫少的場景,設置兩個庫,主庫和讀庫,主庫的職能是負責寫,從庫主要

原创 如何解決TOP-K問題

前言:最近在開發一個功能:動態展示的訂單數量排名前10的城市,這是一個典型的Top-k問題,其中k=10,也就是說找到一個集合中的前10名。實際生活中Top-K的問題非常廣泛,比如:微博熱搜的前100名、抖音直播的小時榜前50名、百度熱搜的

原创 聊聊二分算法

前言:   二分查找作爲很常見的一種算法,基本思想是定義頭和尾雙指針,計算中間的index指針,每次去和數組的中間值和目標值進行比較,如果相同就直接返回,如果目標值小於中間值就將尾指針重新賦值爲中間值-1,頭指針不變,相當於從左邊區域去找;

原创 字節跳動筆試題:鏈表反轉

前言  從業快4年,最近愈發感覺到算法的重要性.作爲一名後端開發,在實際工作中,算法的應用其實是十分多的,比如我們熟悉的LinkedList、jdk的底層排序,算法的重要性大家都有目共睹,也基本成了入職大廠不可或缺的基本能力。最近就聽羣裏的

原创 深入分析mysql爲什麼不推薦使用uuid或者雪花id作爲主鍵

前言:在mysql中設計表的時候,mysql官方推薦不要使用uuid或者不連續不重複的雪花id(long形且唯一),而是推薦連續自增的主鍵id,官方的推薦是auto_increment,那麼爲什麼不建議採用uuid,使用uuid究竟有什麼壞

原创 jdk和dubbo的SPI機制

前言:開閉原則一直是軟件開發領域中所追求的,開閉原則中的"開"是指對於組件功能的擴展是開放的,是允許對其進行功能擴展的,“閉”,是指對於原有代碼的修改是封閉的,即不應該修改原有的代碼。對於一個高度集成化的、成熟、穩健的系統來講,永遠不是封閉

原创 何謂架構

前言:在這個知識分享的爆炸時代,鑑於java生態的完整和繁榮,各種框架、中間件和工具包供我們使用。連新培訓出來的人都知道ssm,微服務、集羣、多線程、隊列、高併發等技術,技術的間隔性正變得越來越小,彷彿我們只需要按部就班的去使用別人說的框架

原创 ElasticSearch的API使用

前言:之前寫過如何安裝ElasticSearch(以下簡稱ES)以及簡單的crud的使用實例的博客,不過ElasticSearch的版本變化太快,像之前的5.6版本使用的TransPortClient目前已經無法使用了,官方的API變化較快

原创 LFU的基本原理與實現

前言:之前有寫過一篇關於LRU的文章鏈接https://www.cnblogs.com/wyq178/p/9976815.html  LRU全稱:Least Recently Used:最近最少使用策略,判斷最近被使用的時間,距離目前最遠的

原创 如何判斷單向鏈表有環?

前言:鏈表在開發過程中屬於出現頻次十分高的一種數據結構,在java中,比如我們熟知的LinkedList、HashMap底層結構、LinkedHashMap、AQS等都使用到了鏈表,關於單向鏈表有幾個經典問題 1:如何判斷鏈表有環  2:如