原创 Zookeeper實現分佈式鎖詳細步驟,你一定要知道

前幾天分享了分佈式鎖的三種實現方案(我們是這樣一步一步實現分佈式鎖的),其中對於zookeeper實現方式,有些朋友說想知道實現的總體流程。那麼今天我就來將zookeeper的具體實現流程通過一步一圖的形式再來說一下,然後大家可以根據前面

原创 RabbitMQ、Kafka、RocketMQ正確選型姿勢【消息中間件篇】

大家想一想在你們平時開發的系統裏面有沒有這種情況,就是你們系統會調用到第三方接口服務,而且這個接口服務是在你流程裏面進行同步調用的,這個時候你們的系統性能是直接和第三方接口服務掛鉤的,也就是第三方接口服務性能的好壞直接影響到你自己的系統。

原创 爲什麼你每次被問到HashMap底層原理都一知半解,這次徹底搞定它

我相信,HashMap這個容器,在我們Java程序開發中是經常出現在我們的代碼中的,主要用來存儲鍵值對的數據。它是應用更加廣泛的哈希表實現。而且,我們經常在面試中,經常被問到hashMap的底層實現,怎麼存放數據的,怎麼過去數據的,它的加

原创 註解實現對象的屬性賦值

在做一些業務時,從前臺獲取的數據用實體接收後,可能需要有字段轉換才能存儲到庫中,或從庫中查找的數據,會做一些轉換或處理再返回給前臺視圖view。 有一個簡單的BeanUtils.copyProperties(source, target,

原创 Python+Flask+Gunicorn 在linux生產環境上真實部署方案

最近經常碰到朋友問Python能不能做在線web服務,會不會不安全啥的。其實,這些擔心是多餘了點哈,Python是當然完全可以做這些事情的呀。 Python提供web在線接口服務肯定是沒問題的,其實最大的問題是,大家並不知道怎麼部署到生產

原创 數據庫分庫分表,動態擴容縮容方案

昨天我們分享了怎麼不停機進行分庫分表數據遷移(數據庫分庫分表,生產環境不停機數據遷移)後來有好多朋友問我,說他們的系統雖然也到了差不多分表的地步了,但是,不知道具體拆分多少張表,分多了又怕浪費公司資源,分少了又怕後面怎麼去擴容,還有另一些

原创 數據庫分庫分表後,我們怎麼保證ID全局唯一

上兩篇講到了我們的系統在面臨大併發讀取的時候,採用了讀寫分離主從複製(數據庫讀寫分離方案,實現高性能數據庫集羣)的方案去應對,後來又面臨了大併發寫入的時候,系統數據庫採用了分庫分表的方案(數據庫分庫分表方案,優化大量併發寫入所帶來的性能問

原创 java類加載機制,再也不怕面試官的刁難

上一篇我們詳細的講解了java 虛擬機的內存模型(要想精通java,你必須得知道java的內存模型,不忽悠),並且知道了我們寫的代碼分別是怎麼存在JVM的哪個內存區域中。今天我們來看另一個重要的問題,類加載機制的核心知識,這個知識也是面試

原创 一致性哈希算法,在分佈式開發中你必須會寫,來看完整代碼

今天我想先給大家科普下一致性哈希算法這塊,因爲我下一篇文章關於緩存的高可用需要用到這個,但是又不能直接在裏面寫太多的代碼以及關於一致性hash原理的解讀,這樣會失去對於緩存高可用的理解而且會造成文章很長,有擔心有些朋友還沒接觸過一致性哈希

原创 Linux生產環境CPU使用率100%,教你定位到具體函數

在我們項目部署上線的時候,我們是不是會經常去Linux服務器上查查服務器的CPU使用率,或者是運維經常會盯Linux的CPU使用率,發現監控報了60%的一般就會報警了,到了100%那就慘啦,做我開發的我們如果自己程序運行時CPU使用率一直

原创 緩存讀寫策略 Cache Aside Pattern,開發必備

我們在前面講到了當我們業務面臨大量寫併發的時候,將數據庫開發成分佈式存儲系統,然後又介紹了NoSql數據庫與關係型數據庫互相配合,以用來更好的服務與我們的業務發展。但隨着併發的持續增加,存儲數據量的增多,數據庫的磁盤 IO 逐漸成了系統的

原创 【Java面試題】搞定 BAT 的 Java 技術面試,集合詳解篇(上)

先來看看集合的繼承關係圖,如下圖所示:   其中: 外框爲虛線的表示接口,邊框爲實線的表示類; 箭頭爲虛線的表示實現了接口,箭頭爲實線的表示繼承了類。 爲了方便理解,我隱藏了一些與本文內容無關的信息,隱藏的這些內容會在後面的章節中進行詳

原创 LRU緩存淘汰算法真實實現方案

我們在平時項目開發中是不是會遇到這樣的場景,每次訪問的時候需要去取內存裏的數據,沒取到就添加到內存,但是,又不想取到的內存是過於陳舊的。那這塊我們該怎麼去設計算法,從而很合理的去管理我們內存的數據呢? 今天,給大家分享一個在我們開發中比較

原创 Spring 核心知識講解,太簡單啦!

Spring Framework 簡稱 Spring,是 Java 開發中最常用的框架,地位僅次於 Java API,就連近幾年比較流行的微服務框架 SpringBoot,也是基於 Spring 實現的,SpringBoot 的誕生是爲了

原创 Java 集合就這麼簡單-附面試題

集合有兩個大接口:Collection 和 Map,本文重點來講解集合中另一個常用的集合類型 Map。 以下是 Map 的繼承關係圖: Map 簡介 Map 常用的實現類如下: Hashtable:Java 早期提供的一個哈希表實現,