原创 【操作系統】進程/線程模型

1. 進程的基本概念 1.1 多道程序設計(Multi-Programming) 首先從多道程序設計開始,以便更好的理解進程的必要性。 在早期沒有多道程序設計之前,操作系統只有一個物理程序計數器,這樣多個程序只能串行執行,在引入多

原创 【數據結構與算法精煉】LeetCode No.136 : Single Number,由一道算法題想到的關於XOR運算的使用

引言 數據結構與算法,是程序員的內功修煉。甚至有開發者還提出了程序=數據結構+算法。 少俠我之前參加校招的時候,也是憑藉在手撕代碼環節出色的算法解題思路獲得面試官的稱讚並擊敗衆多競爭者最後拿到字節跳動等大廠的offer。 爲了保持

原创 【數據結構與算法精煉】LeetCode No.169 : Majority Element,由一道算法題想到的關於多數投票算法(Boyer-Moore Voting)的使用

引言 數據結構與算法,是程序員的內功修煉。甚至有開發者還提出了程序=數據結構+算法。 少俠我之前參加校招的時候,也是憑藉在手撕代碼環節出色的算法解題思路獲得面試官的稱讚並擊敗衆多競爭者最後拿到字節跳動、搜狐等大廠的offer。 爲

原创 【操作系統】死鎖避免之銀行家算法

引言 銀行家算法(Banker’s Algorithm)是由Dijkstra提出,基本思想是仿照銀行發放貸款時採取的控制方式而設計的一種死鎖避免的算法。 實現思路 當一個進程申請使用資源的時候,銀行家算法通過先嚐試分配給該進程資源

原创 Java併發編程(七):深入淺出隊列同步器AQS原理及面試要點

文章目錄1 AQS簡介2 同步隊列CLH2.1 同步狀態state的維護2.2 Node節點2.3 AQS原理圖2.4 入隊2.5 出隊3 條件隊列Condition4 獨佔式鎖4.1 獨佔鎖的獲取4.2 獨佔鎖的釋放4.3 可中

原创 Java併發理論(二):as-if-serial規則和happens-before規則詳解

引言 我們知道爲了提高並行度,優化程序性能,編譯器和處理器會對代碼進行指令重排序。指令重排序可參看指令重排序和數據依賴性詳解。但爲了不改變程序的執行結果,儘可能地提高程序執行的並行度,我們需要了解as-if-serial規則和ha

原创 【EasyExcel】後臺開發如何利用EasyExcel優雅的操作Excel

文章目錄引言優雅的讀取Excel優雅的寫入Excel優雅的小結點點關注,不會迷路 引言 EasyExcel是當前性能最佳的Excel導出工具,本篇少俠將帶領大家一起在後臺開發中優雅的使用EasyExcel。 優雅的讀取Excel

原创 Java併發編程(六):volatile原理詳解

文章目錄volatile簡介volatile的初體驗volatile的實現原理和內存語義1 實現原理2 內存語義點點關注,不會迷路 volatile簡介 之前少俠已經介紹過synchronized關鍵字,volatile也一樣是J

原创 Java併發理論(一):指令重排序與數據依賴性

文章目錄1 爲什麼需要指令重排序?2 重排序的分類3 重排序的過程4 重排序對多線程的影響5 數據依賴性點點關注,不會迷路 先附上思維導圖,本篇重點介紹指令重排序,主要爲了下篇的as-if-serial和happens-befor

原创 Java併發編程(五):synchronized原理詳解及鎖優化

文章目錄1 引言2 synchronized實現原理2.1 監視器鎖(monitor)機制2.2 獲取鎖和釋放鎖的內存語義3 synchronized的鎖優化3.1 JVM中對象的內存區域3.2 偏向鎖3.3 輕量級鎖3.4 各種

原创 StringUtils的常用方法

引言 開發中String類是經常用到的對象類型,String類自帶很多優秀的方法,但是在開發中還有另一個工具類StringUtils更全面,用起來也是更香。今天少俠就稍微來做下小結。 在進入小結之前先要配置pom.xml並導包:

原创 【HTTP】這一次,終於徹底弄清了POST和GET請求的區別

1 引言 我想大家在面試中應該經常有被問到POST和GET請求的區別,很多人都會回答諸如POST比GET安全,GET比POST傳輸的長度要少之類的,然而,這會是面試官想要的答案麼?這樣的回答聽上去難免像是囫圇吞棗的背誦下來的,並且

原创 Java併發編程(四):CyclicBarrier原理詳解

1 引言 少俠在之前的一篇博客介紹閉鎖CountDownLatch的時候有提到CyclicBarrier,那麼它究竟是什麼呢?本篇文章和你們一起揭開它神祕的面紗。 關於CountDownLatch的原理和用法可以閱讀下篇,附傳送門

原创 【Java集合】系列二:搞定HashSet(本篇源碼基於Java11)

1 概念 HashSet實現Set接口,由哈希表(實際上是一個HashMap實例)支持。它保存的都是非重複的元素,不保證set的迭代順序。此類允許使用null元素。 對於HashSet而言,它是基於HashMap實現的,HashS

原创 你想要的String面試的知識點,這裏都有

引言 Java中的String是每個開發者不得不正視的類。在面試以及開發中總是會出現它瀟灑不拘的身影。今天少俠就和大家一起征戰String,讓它徹底臣服在我們六十米長的大刀下。 面試開始 此時,一個穿着西裝的漂亮小姐姐瀟灑的進入會