原创 Java多線程開發系列之六:無限分解流----Fork/Join框架

Fork譯爲拆分,Join譯爲合併Fork/Join框架的思路是把一個非常巨大的任務,拆分成若然的小任務,再由小任務繼續拆解。直至達到一個相對合理的任務粒度。然後執行獲得結果,然後將這些小任務的結果彙總,生成大任務的結果,直至彙總成最初巨大

原创 談談一致性哈希算法

一致性哈希算法是1997年由麻省理工的幾位學者提出的用於解決分佈式緩存中的熱點問題。大家有沒有發現,我們之前介紹的例如快排之類的算法是更早的六七十年代,此時分佈式還沒有發展起來,大家往往還在提高單機性能。但是九十年代開始,逐漸需要用分佈式集

原创 Java網絡編程----通過實現簡易聊天工具來聊聊NIO

前文我們說過了BIO,今天我們聊聊NIO。NIO 是什麼?NIO官方解釋它爲New lO,由於其特性我們也稱之爲,Non-Blocking IO。這是jdk1.4之後新增的一套IO標準。爲什麼要用NIO呢?我們再簡單回顧下BIO:阻塞式IO

原创 Java網絡編程----通過實現簡易聊天工具來聊聊BIO

IO模型即輸入輸出模型,我們今天主要來聊的是java網絡編程中的IO模型---BIO模型。BIO即阻塞式IO,Blocking IOblocking [ˈblɒkɪŋ] v. 堵塞; 阻塞; 堵住(某人的路等); 擋住(某人的視線等);

原创 Springboot通過谷歌Kaptcha 組件,生成圖形驗證碼

圖形驗證碼屬於老生常談了,具體細節這裏就不說了。生成圖形驗證碼的辦法非常多,今天講解一種通過Kaptcha組件快速生成圖形驗證碼的方法。Kaptcha是谷歌開源的一款簡單實用的圖形驗證碼組件。我個人推薦它的最大原因是容易上手,採用約定大於配

原创 統一建模語言UML---類圖

什麼是統一建模語言,來看看百科中的介紹統一建模語言(Unified Modeling Language,UML)是一種爲面向對象系統的產品進行說明、可視化和編制文檔的一種標準語言,是非專利的第三代建模和規約語言。UML是面向對象設計的建模工

原创 淺談雙指針技巧(二)---通過雙指針判斷鏈表成環問題

在上一篇文章(https://www.cnblogs.com/jilodream/p/16666435.html)中,我們已經知道可以通過快慢指針,最終判斷一個單向鏈表是否成環。一般在判斷存在環之後,還有一個經典的問題:查找環的起點節點是哪

原创 淺談雙指針技巧(三)利用快慢指針,查找鏈表中指定位置節點

前面兩篇文章主要介紹了,快慢指針在鏈表環中的應用。除此之外,我們還常常利用快慢指針來查找單向鏈表中指定位置的節點。常見的經典題目有:1、查找倒數i位置的的節點2、查找中間節點我們依次來看一、查找快慢指針查找單鏈表中位於倒數第i個位置的元素力

原创 淺談雙指針技巧(一)---通過雙指針判斷鏈表成環問題

雙指針是算法中非常重要的一個解決問題的思路。雙指針顧名思義,就是有兩個指針。根據雙指針的方向及速度,我們一般將雙指針分爲以下幾種場景1、快慢雙指針2、左右雙指針所謂快慢雙指針是指,兩個指針,一個快指針,一個慢指針,按照相同的方向,從鏈表(或

原创 Springboot 通過FastJson實現bean對象和Json字符串互轉

Json格式在後臺服務中的重要性就不多說了,直入正題。首先引入pom文件,這裏使用的是1.2.83版本 1 <dependency> 2 <groupId>com.alibaba</groupId>

原创 Java多線程開發系列之五:Springboot 中異步請求方法的使用

Springboot 中異步線程的使用在過往的後臺開發中,我們往往使用java自帶的線程或線程池,來進行異步的調用。這對於效果來說沒什麼,甚至可以讓開發人員對底層的狀況更清晰,但是對於代碼的易讀性和可維護性卻非常的差。開發人員在實際使用過程

原创 Idea在商店無法搜索到插件

背景:我使用的版本是IDEA ultimate 2019.2 版本印象中,最初安裝的時候,商店還是可以用的,突然有一點,就無法使用了。下邊直入正題: 解決辦法:1、首先瀏覽器登陸下:https://plugins.jetbrains.co

原创 服務限流原理及算法

限流是啥?維基百科是這樣解釋的:在計算機網絡中,頻率限制被應用在控制網絡接口收到或發送的請求頻次,它可以被用來阻止dos攻擊或者是網絡爬蟲。直白點說,就是限制服務收到或發出的請求頻次,保證整體服務可以正常健康的使用。談到這裏有人會想,只要我

原创 布隆過濾器的原理及應用

布隆過濾器是1970年由布隆提出的。他其實是一個很長的二進制向量外加一系列的隨機函數函數來組成。 在正式說到布隆過濾器時,我們要先聊這樣一個話題:在解決工程類問題時,很多問題的回答並不是只有這兩種布爾狀態:是 or 否而可能是這兩種狀態:一

原创 B樹的進化版----B+樹

C++爲什麼叫C plus plus?這是由於C++相當於繼承C的語法後,增加了各方面的能力,所擴展出的一種新語法。在軟件領域中 plus 有增加的味道。在這裏B +樹也一樣,是B樹的增強版。在學習B+樹之前,最好是對B樹有一定的瞭解。不瞭