原创 劍指Offer:順時針打印矩陣
劍指Offer:順時針打印矩陣 題目描述 輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數字1
原创 劍指Offer:從上往下打印二叉樹
劍指Offer:從上往下打印二叉樹 題目描述 從上往下打印出二叉樹的每個節點,同層節點從左至右打印。 題目分析 這道題主要是隊列的應用,我們首先要了解,隊列是先進先出,我們把第一層即根節點放入隊列中,先打印的就是根節點,接着放入第二
原创 算法:歸併排序
算法:歸併排序 歸併排序 歸併操作 歸併排序也是一種高級排序算法,它的主要操作就是歸併。歸併是什麼意思呢? 歸併操作(merge),也叫歸併算法,指的是將兩個已經排序的序列合併成一個序列的操作。歸併排序算法依賴歸併操作。 舉個簡
原创 劍指Offer:二叉樹的鏡像
劍指Offer:二叉樹的鏡像 題目題目 操作給定的二叉樹,將其變換爲源二叉樹的鏡像。 8 / \ 6 10 / \ / \ 5 7 9 11
原创 Java進階教程:Streams API
Java進階教程:Streams API Stream是啥 首先明確一點,Stream流和IO包裏的InputStream、OutputStream是完全不同的概念!它是Java 8 中引入的新特性,Stream可以對集合元素進行各種高
原创 GIT實踐:解決本地修改導致不能PULL
GIT實踐:解決本地修改導致不能PULL 情景描述 本地修改了代碼,修改之後並未提交,此時PULL,就會報錯! 解決方法 報錯後,GIT告訴我們兩種解決方案: 提交修改 暫時存儲起來 他提到的git stash命令能夠
原创 算法:快速排序
算法:快速排序 快速排序 其實我第一次聽到快速排序的時候,我就很納悶,因爲不像冒泡、插入、歸併、選擇排序等等,名稱即原理!這個直接把特性用作名稱的,我就很震驚! 咱還是直接瞅一眼百科的解釋吧! 快速排序是冒泡排序的改進。
原创 劍指Offer:調整數組順序使奇數位於偶數前面
劍指Offer:調整數組順序使奇數位於偶數前面 題目描述 輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 題目分析
原创 劍指Offer:二進制中1的個數
劍指Offer:二進制中1的個數 題目描述 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。 題目分析 我們學習兩個位運算: 第一個是右移: 在Java中右移動又分爲: 有符號右移(如上圖,正數補
原创 Java分佈式:ZooKeeper
Java分佈式:ZooKeeper
原创 Java分佈式:分佈式鎖之Redis實現
Java分佈式:分佈式鎖之Redis實現 分佈式鎖系列教程重點分享鎖實現原理 Redis鎖原理 核心命令 Redis分佈式鎖的原理是基於其SETNX命令,我們來看SETNX的解釋。 實現過程 使用SETNX完成同步鎖的流程
原创 Java分佈式:分佈式鎖之數據庫實現
Java分佈式:分佈式鎖之數據庫實現 分佈式鎖系列教程重點分享鎖實現原理 鎖實現原理 創建一張名爲methodLock的數據庫表,爲方法名字段(method_name)添加唯一性約束。 CREATE TABLE `methodLo
原创 Java分佈式:分佈式鎖之Zookeeper
Java分佈式:分佈式鎖之Zookeeper 分佈式鎖系列教程重點分享鎖實現原理 引入ZooKeeper ZooKeeper是什麼呢? ZooKeeper 是一個開源的分佈式協調服務,它可以在分佈式系統中共享配置,協調鎖資源,提供命
原创 SpringBoot小技巧:統一異常處理
SpringBoot小技巧:統一異常處理 情景描述 對於接口的定義,我們通常會有一個固定的格式,比如: 但是調用方在請求我們的API時把接口地址寫錯了,就會得到一個404錯誤,且不同於我們定義的數據格式。 我們需要在發生這