原创 布隆過濾器

引言我們知道檢查一個元素是否在某一個集合中,使用HashSet是比較好的選擇,因爲在不發生Hash碰撞的情況下它的時間複雜度爲常數級別,但是在數據量比較大的情況下,使用HashSet將會佔用大量的內存空間。舉個例子,長城防火牆有100億個需

原创 MySQL中的幾種索引介紹

索引是加快我們查找數據的利器,MySQL中的索引有很多種類型,它們是在存儲引擎層實現的,這意味着不同的存儲引擎支持的索引類型可能不同,即使相同,底層工作原理也可能不同 (關於存儲引擎在在前幾天的文章裏有介紹),我們這裏以索引類型分類,分別介

原创 RabbitMQ分佈式部署方案簡介

當單臺RabbitMQ的性能不能滿足我們的要求時,我們需要對其進行分佈式部署,官方提供了三種方式來實現RabbitMQ的分佈式部署,他們之間可以多種組合共同部署,我們分別介紹下Clustering這種方式屬於原生的“集羣”,該種方式在邏輯上

原创 MySQL之存儲引擎

MySQL由於其開源擴展方便等諸多優點成爲互聯網公司首選的數據庫。本文介紹一下MySQL的存儲引擎,那麼數據庫和存儲引擎是什麼關係?這要先從MySQL的架構開始講起。MySQL架構MySQL在邏輯上主要可以分爲5層,從上到下分別是 “連接器

原创 Kafka吞吐量高的原因

這幾天在學習kafka,看了一些書和博文,看到了一篇博文感受頗深(深感大學的課程其實是非常重要的),所以這裏就把這篇文章精簡一下,順便當給自己鞏固一下知識。注:本文如與《寫程序的康德--kafka爲什麼這麼快》有雷同,純屬我抄他的。衆所周知

原创 RabbitMQ最佳實踐

保證隊列中有儘量少的消息堆積當隊列中堆積過多消息時會給內存帶來極大的壓力,爲了釋放內存Rabbit會將消息刷至磁盤,當有大量消息需要刷新至磁盤時,會造成隊列的阻塞進而影響系統吞吐量。當你的rabbit爲集羣部署時,重啓的時候會重新建立索引,

原创 Kafka還是RabbitMQ?

現在的系統已經離不開消息隊列,我們可以用他做異步,做解耦,做流處理,做可靠傳輸。市面上的消息隊列也有很多,比如阿里雲的oss,RocketMQ,ZeroMQ,RabbitMQ,Kafka等,甚至Java中的List也可以稱爲一個簡單的消息隊

原创 Mybatis與之類型處理器

我們在使用mybatis獲取數據庫數據或者設置sql參數時,mybatis會將指定的java類型轉成合適的數據庫類型,一般情況下,使用mybatis預置的類型處理器都可以解決,剛開始寫代碼的時候總不知道對應數據庫類型該使用哪種java類型與

原创 Linux關於磁盤空間相關命令

Linux主機需要定時清理日誌文件騰出空間,但有時候清理完日誌文件後發現硬盤空間還是爆滿,這個時候就需要手動查找出無用大文件進行清理。這裏記錄下常用的查看磁盤大小的命令以及一些問題。du:用於列出每個文件或文件夾的大小du是我們平常使用最多

原创 關於限流

我們的web服務可能由於過高的qps導致系統崩潰,爲了應對這一現象,衍生出了負載均衡,服務降級,緩存等技術,這裏簡單總結一下另一種保護系統的技術--限流。限流,顧名思義,就是限制一段時間內的流量,使流量保持在可控範圍之內,保障系統安全。限流

原创 關於BigDecimal

我們都知道,在java中浮點數由double與float表示,他們在計算的時候會出現精度問題,比如我們期望得到的結果是2.03,結果卻得到了不精確的數字,這個涉及到計算機原理,不詳細展開。因爲不精確的關係,當涉及到錢的計算時,我們便不能使用

原创 SpringBoot初始化分析

之前分析過Spring的初始化過程,現在由於微服務的流行,大家紛紛用起了SpringBoot,爲了跟上潮流,這裏也簡單分析一下SpringBoot的啓動過程。使用springboot啓動一個微服務十分簡單,只需要在啓動類上調用SpringA

原创 Java中的四種引用

引用在java中無處不在,一個對象的引用狀態也影響着jvm對其的回收。這裏簡單介紹一下java中的四種引用。引用強度按照順序依次減弱。1.強引用強引用是最常見的引用類型,平時用的最多,類似“X x = new X()” 的形式即爲強引用,只

原创 Java中的阻塞隊列簡介

生產者消費者模型相信大家都知道,我們使用普通的任務隊列時要手動防止併發,代碼比較繁瑣,JDK給我們提供了線程安全的阻塞隊列BlockingQueue來簡化我們的代碼。總覽BlockingQueue是一個接口,他定義了阻塞隊列中的總體行爲,我

原创 Docker簡介

由於微服務的興起,docker技術也變得火爆起來,docker作爲一種容器技術主要用來替代虛擬機作爲應用部署的解決方案。三個基本概念1.鏡像docker鏡像是一個特殊的文件系統,能夠提供容器運行時所需的資源。如果接觸過dockerfile的