原创 select * from user 這條 SQL 語句,背後藏着哪些不可告人的祕密?

作爲一名 Java開發人員,寫 SQL 語句是常有的事,但是你知道 SQL 語句背後的處理邏輯嗎?比如下面這條 SQL 語句: select * from user where id=1 執行完這條語句後,我們就會得到 id 爲 1 的用戶

原创 熟悉這幾道 Redis 高頻面試題,面試不用愁

1、說說 Redis 都有哪些應用場景? 緩存:這應該是 Redis 最主要的功能了,也是大型網站必備機制,合理地使用緩存不僅可以加 快數據的訪問速度,而且能夠有效地降低後端數據源的壓力。 共享Session:對於一些依賴 session

原创 一題算法|求隨機數索引

題目描述 給定一個可能含有重複元素的整數數組,要求隨機輸出給定的數字的索引。 您可以假設給定的數字一定存在於數組中。 注意: 數組大小可能非常大。 使用太多額外空間的解決方案將不會通過測試。 題目示例 int[] nums = new

原创 一題算法|求最長和諧子序列

和諧子序列的定義 和諧數組是指一個數組裏元素的最大值和最小值之間的差別正好是1,也就是說我們需要找出比該元素大於或者相等的元素 LeetCode 題目: 給定一個整數數組,你需要在所有可能的子序列中找到最長的和諧子序列的長度 題目示

原创 職場中你忽略的細節,都是別人晉升的祕密

作爲職場新人,在職場這門學問中,我們都還沒有入門,這是我聽完曹政老師的知識星球年終福利課《職場的真相》之後的感悟,曹政老師這門課針對的就是我們這樣的職場新人,在課中曹政老師講述了他自己當年在職場中所犯的錯誤並且指導年輕人該如何在職場中前行,

原创 借 redis cluster 集羣,聊一聊集羣中數據分佈算法

Redis Cluster 集羣中涉及到了數據分佈問題,因爲 redis cluster 是多 master 的結構,每個 master 都是可以提供存儲服務的,這就會涉及到數據分佈的問題,在新的 redis 版本中採用的是虛擬槽分區技術來

原创 深入解析 ConcurrentHashMap 實現內幕,吊打面試官,沒問題

在開發中,我們經常使用 HashMap 容器來存儲 K-V 鍵值對,但是在併發多線程的情況下,HashMap 容器又是不安全的,因爲在 put 元素的時候,如果觸發擴容操作,也就是 rehash ,就會將原數組的內容重新 hash 到新的擴

原创 三分鐘帶你入門 redis 高可用架構之哨兵

什麼是哨兵? 哨兵(Sentinel)是 redis 的高可用性解決方案,前面我們講的主從複製它是高可用的基礎,需要人工介入才能完成故障轉移,哨兵可以解決這個問題,在主從複製情況下,當主節點發生故障時,哨兵可以自動的發現故障並且完成故障轉移

原创 Java 淺拷貝、深拷貝,你知多少?

這是今天我們在技術羣裏面討論的一個知識點,討論的相當激烈,由於對這一塊使用的比較少,所以對這一塊多少有些盲區。這篇文章總結了所討論的內容,希望這篇文章對你有所幫助。 在 Java 開發中,對象拷貝或者說對象克隆是常有的事,對象克隆最終都

原创 一文帶你深入瞭解 redis 複製技術及主從架構

主從架構可以說是互聯網必備的架構了,第一是爲了保證服務的高可用,第二是爲了實現讀寫分離,你可能熟悉我們常用的 MySQL 數據庫的主從架構,對於我們 redis 來說也不意外,redis 數據庫也有各種各樣的主從架構方式,在主從架構中會涉及

原创 一文帶你深入瞭解 Redis 的持久化方式及其原理

Redis 提供了兩種持久化方式,一種是基於快照形式的 RDB,另一種是基於日誌形式的 AOF,每種方式都有自己的優缺點,本文將介紹 Redis 這兩種持久化方式,希望閱讀本文後你對 Redis 的這兩種方式有更加全面、清晰的認識。 RDB

原创 詳細講解 Redis 的兩種安裝部署方式

Redis 是一款比較常用的 NoSQL 數據庫,我們通常使用 Redis 來做緩存,這是一篇關於 Redis 安裝的文章,所以不會涉及到 Redis 的高級特性和使用場景,Redis 能夠兼容絕大部分的 POSIX 系統,例如 Linux

原创 硬件內存模型到 Java 內存模型,這些硬核知識你知多少?

Java 內存模型跟上一篇 JVM 內存結構很像,我經常會把他們搞混,但其實它們不是一回事,而且相差還很大的,希望你沒它們搞混,特別是在面試的時候,搞混了的話就會答非所問,影響你的面試成績,當然也許你碰到了半吊子面試官,那就要恭喜你了。Ja

原创 這一次,終於系統的學習了 JVM 內存結構

最近在看《 JAVA併發編程實踐 》這本書,裏面涉及到了 Java 內存模型,通過 Java 內存模型順理成章的來到的 JVM 內存結構,關於 JVM 內存結構的認知還停留在上大學那會的課堂上,一直沒有系統的學習這一塊的知識,所以這一次我把

原创 你的 Java 併發程序 Bug,100% 是這幾個原因造成的

可見性問題 可見性是指一個線程對共享變量進行了修改,其他線程能夠立馬看到該共享變量更新後的值,這視乎是一個合情合理的要求,但是在多線程的情況下,可能就要讓你失望了,由於每個 CPU 都有自己的緩存,每個線程使用的可能是不同的 CPU ,這就