Fork me on GitHub
摘要:前面我們講了 "《Redis 性能優化的 13 條軍規!》" ,其中最重要的一條就是使用 Redis 的集群功能,那么本文我們就來看看,如何用 1s 鐘的時間來創建一個 Redis 集群。 Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它將數據分布在不同的服務 閱讀全文
posted @ 2020-03-27 17:14 王磊的博客 閱讀 (13) 評論 (0) 編輯
摘要:Redis 是基于單線程模型實現的,也就是 Redis 是使用一個線程來處理所有的客戶端請求的,盡管 Redis 使用了非阻塞式 IO,并且對各種命令都做了優化(大部分命令操作時間復雜度都是 O(1)),但由于 Redis 是單線程執行的特點,因此它對性能的要求更加苛刻,本文我們將通過一些優化手段, 閱讀全文
posted @ 2020-03-27 17:12 王磊的博客 閱讀 (55) 評論 (0) 編輯
摘要:Java 14 在 2020.3.17 日發布正式版了,但現在很多公司還在使用 Java 7 或 Java 8,每當看到 Java 又發布新版本心里就慌得一匹。不過此版本并不是 LTS (長期支持版) 版本,所以不要慌,我們先來了解一下好了,等 LTS 版本發布后再用也不遲。 版本說明 現在 Jav 閱讀全文
posted @ 2020-03-22 17:57 王磊的博客 閱讀 (90) 評論 (0) 編輯
摘要:因為我說:volatile 是輕量級的 synchronized,面試官讓我回去等通知! volatile 是并發編程的重要組成部分,也是面試常被問到的問題之一。不要向小強那樣,因為一句:volatile 是輕量級的 synchronized,而與期望已久的大廠失之交臂。 volatile 有兩大特 閱讀全文
posted @ 2020-03-18 09:03 王磊的博客 閱讀 (744) 評論 (2) 編輯
摘要:面試問題 Redis 如何實現查詢附近的人? 涉及知識點 1. Redis 中如何操作位置信息? 2. GEO 底層是如何實現的? 3. 如何在程序實現查詢附近的人? 4. 在實際使用中需要注意哪些問題? 視頻答案 視頻地址:https://www.bilibili.com/video/av8936 閱讀全文
posted @ 2020-03-09 13:48 王磊的博客 閱讀 (377) 評論 (3) 編輯
摘要:本文以面試問題「Redis 中的過期元素是如何被處理的?」為切入點,用視頻加圖文的方式和大家聊聊 Redis 過期元素被處理的相關知識點。 涉及的知識點 1. 過期刪除策略有哪些? 2. 這些過期策略有哪些優缺點? 3. Redis 使用的是什么過期策略? 4. Redis 是如何優化和執行過期策略 閱讀全文
posted @ 2020-03-03 11:53 王磊的博客 閱讀 (314) 評論 (1) 編輯
摘要:1 考察知識點 本題考察的知識點有以下幾個: 1. Keys 和 Scan 的區別 2. Keys 查詢的缺點 3. Scan 如何使用? 4. Scan 查詢的特點 2 解答思路 1. Keys 查詢存在的問題 2. Scan 的使用 3. Scan 的特點 3 Keys 使用相關 1)Keys 閱讀全文
posted @ 2020-02-27 19:05 王磊的博客 閱讀 (403) 評論 (0) 編輯
摘要:多年前曾看過一個關于黃磊的采訪,其中大部分的內容已經忘記的差不多了,其中有一句話一直記憶深刻,他說:“人生有很多階段,每一個階段都有它的快樂和苦澀,但這些你無法跨過去也不能退回來,你要做的就是享受每一個階段所特有的快樂”,那一刻猶如醍醐灌頂,讓我記憶至今。 29 歲之后,開始覺得人生沒有方向,不知道 閱讀全文
posted @ 2019-12-22 22:05 王磊的博客 閱讀 (938) 評論 (5) 編輯
摘要:Redis 的讀寫都是在內存中,所以它的性能較高,但在內存中的數據會隨著服務器的重啟而丟失,為了保證數據不丟失,我們需要將內存中的數據存儲到磁盤,以便 Redis 重啟時能夠從磁盤中恢復原有的數據,而整個過程就叫做 Redis 持久化。 Redis 持久化也是 Redis 和 Memcached 的 閱讀全文
posted @ 2019-11-17 22:45 王磊的博客 閱讀 (707) 評論 (2) 編輯
摘要:1.過期設置 Redis 中設置過期時間主要通過以下四種方式: expire key seconds:設置 key 在 n 秒后過期; pexpire key milliseconds:設置 key 在 n 毫秒后過期; expireat key timestamp:設置 key 在某個時間戳(精確 閱讀全文
posted @ 2019-11-12 19:08 王磊的博客 閱讀 (472) 評論 (0) 編輯
摘要:作為關系型數據庫中一項非常重要的基礎功能——事務,在 Redis 中是如何處理并使用的? 1.前言 事務指的是提供一種將多個命令打包,一次性按順序地執行的機制,并且保證服務器只有在執行完事務中的所有命令后,才會繼續處理此客戶端的其他命令。 事務也是其他關系型數據庫,所必備的一項非常重要的能力。以支付 閱讀全文
posted @ 2019-10-28 21:00 王磊的博客 閱讀 (518) 評論 (0) 編輯
摘要:《Java面試全解析》是我在 GitChat 發布的一門電子書,全書總共有 15 萬字和 505 道 Java 面試題解析,目前來說應該是最實用和最全的 Java 面試題解析了。 我本人是 2009 年參加編程工作的,一路上在技術公司摸爬滾打,前幾年一直在上海,待過的公司有 360 和游久游戲,因為 閱讀全文
posted @ 2019-10-23 20:00 王磊的博客 閱讀 (654) 評論 (0) 編輯
摘要:在開始學習深克隆和淺克隆之前,我們先來看下面代碼,有什么問題? 程序執行結果: 可以看出,如果使用等號復制時,對于值類型來說,彼此之間的修改操作是相對獨立的,而對于引用類型來說,因為復制的是引用對象的內存地址,所以修改其中一個值,另一個值也會跟著變化,原理如下圖所示: 因此為了防止這種問題的發生,就 閱讀全文
posted @ 2019-09-18 09:31 王磊的博客 閱讀 (275) 評論 (0) 編輯
摘要:RocketMQ 是一款分布式消息中間件,最初是由阿里巴巴消息中間件團隊研發并大規模應用于生產系統,滿足線上海量消息堆積的需求, 在 2016 年底捐贈給 Apache 開源基金會成為孵化項目,經過不到一年時間正式成為了 Apache 頂級項目。早期阿里曾經基于 ActiveMQ 研發消息系統, 隨 閱讀全文
posted @ 2019-07-03 19:20 王磊的博客 閱讀 (1442) 評論 (0) 編輯
摘要:如果使用 SpringBoot 多??櫸⒉嫉酵獠?Tomcat,可能會遇到各種各樣的問題。本文歸納了以下 8 個原則和發布時經常出現的 4 個問題的解決方案,掌握了這些原則和解決方案,幾乎可以解決絕大數 SpringBoot 發布問題。 SpringBoot 多??櫸⒉嫉?8 大原則 1 在發布??? 閱讀全文
posted @ 2019-06-20 15:45 王磊的博客 閱讀 (1198) 評論 (0) 編輯
摘要:JVM(Java 虛擬機)算是面試必問的問題的了,而但凡問 JVM 一定會問的第一個問題就是:講一講 JVM 的組成?那本文就注重講一下 JVM 的組成。 首先來說 JVM 的組成分為,整體組成部分和運行時數據區組成部分,一般開發者關注的和面試官問的都是后者,但本文會詳細講解以上兩個組成部分。 一、 閱讀全文
posted @ 2019-04-10 09:01 王磊的博客 閱讀 (2094) 評論 (0) 編輯
摘要:本文會使用排除法的手段,來講解新生代的區域劃分,從而讓讀者能夠更清晰的理解分代回收器的原理,在開始之前我們先來整體認識一下分代收集器。 分代收集器會把內存空間分為:老生代和新生代兩個區域,而新生代又會分為:Eden 區和兩個 Survivor區(From Survivor、To Survivor), 閱讀全文
posted @ 2019-02-22 09:25 王磊的博客 閱讀 (1081) 評論 (0) 編輯
摘要:全文共 2195 個字,讀完大約需要 8 分鐘。 如果垃圾回收的算法屬于內存回收的方法論的話,那本文討論的垃圾回收器就屬于內存回收的具體實現。 因為不同的廠商(IBM、Oracle),實現的垃圾回收器各不相同,而本文要討論的是 Oracle 的 HotSpot 虛擬機所使用的垃圾回收器。 常用垃圾回 閱讀全文
posted @ 2019-02-13 09:53 王磊的博客 閱讀 (1051) 評論 (1) 編輯
摘要:全文共 1890 個字,讀完大約需要 6 分鐘。 上一篇我們講了垃圾標記的一些實現細節和經典算法,而本文將系統的講解一下垃圾回收的經典算法,和Hotspot虛擬機執行垃圾回收的一些實現細節,比如安全點和安全區域等。 因為各個平臺的虛擬機操作內存的方法各不相同,且牽扯大量的程序實現細節,所以本文不會過 閱讀全文
posted @ 2019-01-25 08:09 王磊的博客 閱讀 (602) 評論 (1) 編輯
摘要:好的文章是能把各個知識點,通過邏輯關系串連起來,讓人豁然開朗的同時又記憶深刻。 導讀:對象除了生死之外,還有其他狀態嗎?對象真正的死亡,難道只經歷一次簡單的判定?如何在垂死的邊緣“拯救”一個將死對象?判斷對象的生死存活都有那些算法?本文帶你一起找到這些答案。 在正式開始之前,我們先來了解一下垃圾回收 閱讀全文
posted @ 2019-01-21 09:29 王磊的博客 閱讀 (559) 評論 (0) 編輯
摘要:實現效果圖: 上圖合成了2個人視頻,中途有1個人先離開之后又重新加入了房間。 一、業務場景 業務場景是這樣的:多個用戶(2 4人)直播的視頻,合成為一個視頻,這期間要滿足2個條件:首先,錄制途中可能有一個或多個用戶不定次數的離線、重進(網絡差和人為操作)的情況;第二,要保證合成的視頻和錄制的效果是一 閱讀全文
posted @ 2019-01-16 19:13 王磊的博客 閱讀 (613) 評論 (4) 編輯
摘要:導讀:詳細而深入的總結,是對知識“豁然開朗”之后的“刻骨銘心”,想忘記都難。 Java虛擬機(Java Virtual Machine)下文簡稱jvm,上一篇我們對jvm有了大體的認識,進入本文之后我們將具體而詳細的介紹jvm的方方面面,而本文主要講的是jvm的組成,了解了它,就揭開了jvm的神秘面 閱讀全文
posted @ 2019-01-13 19:21 王磊的博客 閱讀 (1193) 評論 (0) 編輯
摘要:提到Java虛擬機(JVM),可能大部分人的第一印象是“難”,但當讓我們真正走入“JVM世界”的時候,會發現其實問題并不像我們想象中的那么復雜。唯一真正令我們恐懼的,其實是恐懼本身。而作為整個JVM系列的首篇,本文將帶你解除剛開始學習JVM時的種種疑惑。比如:什么是JVM?為什么學習JVM?怎么有效 閱讀全文
posted @ 2019-01-06 18:40 王磊的博客 閱讀 (1007) 評論 (0) 編輯
只有注冊用戶登錄后才能閱讀該文。 閱讀全文
posted @ 2018-12-29 16:25 王磊的博客 閱讀 (1292) 評論 (12) 編輯
摘要:反射和動態代理放有一定的相關性,但單純的說動態代理是由反射機制實現的,其實是不夠全面不準確的,動態代理是一種功能行為,而它的實現方法有很多。要怎么理解以上這句話,請看下文。 一、反射 反射機制是 Java 語言提供的一種基礎功能,賦予程序在運行時自?。╥ntrospect,官方用語)的能力。通過反射 閱讀全文
posted @ 2018-12-11 18:33 王磊的博客 閱讀 (966) 評論 (0) 欧洲青年联赛