原创 【編碼技巧】Java-爲什麼要給方法參數或一些對象的引用加final?

            閱讀源碼時常常會看到一些例如被這樣修飾的方法參數 public void print(final Object obj){ System.out.println(obj); } 你可能會疑問這個final

原创 【算法】【排序】希爾排序

核心思想 爲解決插入排序的最壞情況問題,希爾排序通過一個增量序列先保證區間有序將最壞情況優化掉 注意增量序列必須保證第n個和第n+1互質 算法實現 Java版 public static int[] sort(int[

原创 【HashMap擴容相關的蛛絲馬跡】位運算與取模的奇妙關係

給定一個數保證輸出一定是大於輸入值的2的最小冪 HashMap的tableSizeFor實現了這個函數,下面是細節解析 static final int tableSizeFor(int cap) { //假設傳入3和

原创 有意思的ThreadLocal內存泄露

寫完這篇我再也不用CSDN了 接近007的工作制度讓我沒有自己的時間做自己的事。更別提自己建個博客網站了。。。唉。 正文 天吶,在這家公司寫CRUD寫的我都忘了ThreadLocal實現原理了(DougLea是不是要氣死)。 今天

原创 【算法】【圖論】拓撲排序

引言 發現普林斯頓那本算法和算法導論都側重於用介紹用DFS實現拓撲排序,所以這一篇文章我們來着重套路下用隊列實現拓撲排序的Khan算法。 核心思想 有向圖中的每個節點有入度和出度這兩個屬性,如一個只包含a和b的有向圖中,a到b有且

原创 【算法】【只有自己看得懂系列】計數排序,讓我們擺脫關係排序吧!

Java實現 package mairuis.algorithm.sort; /** * 計數排序 * * @author Mairuis * @date 2019/5/25 */ public class Count

原创 【不幹正事】位運算與取模的奇妙關係

給定一個數保證輸出一定是大於輸入值的2的最小冪 HashMap的tableSizeFor實現了這個函數,下面是細節解析 static final int tableSizeFor(int cap) { //假設傳入3和

原创 【算法】【只有自己看得懂系列】玩轉二叉堆

二叉堆的性質(以最小堆爲例) 每個子節點必須小於等於根節點 堆結構必須是一顆滿二叉樹 應用 優先隊列 預排序 Java實現 package mairuis.algorithm.heap; /** * 最小堆 * 性質

原创 【計算機網絡】常見字節序

大端模式 Big-Endian 儲存 0x12345678 低地址 —> —> 高地址 0x12 0x34 0x56 0x78 小端模式 Little-Endian 儲存 0x12345678 低地址

原创 【算法】【排序】直接插入排序

核心思想 來自於玩撲克牌時從牌堆中取出一張牌,和手中的牌比較後找到合適位置然後插入到手牌中 算法實現 Java版 public static int[] insertSort(int[] data) { /

原创 about symbol. theta omega...

  Short explanation: If an algorithm is of Θ(g(n)), it means that the running time of the algorithm as n (input size)

原创 【Java多線程】volatile關鍵字

volatile的應用 當你的代碼中出現需要一旦發生修改要保證其他線程立即可見的變量,可以使用volatile修飾 volatile的特性: 保證內存的可見性 阻止編譯器指令重排序與CPU指令重排序 保證內存可見性? volati

原创 【Java多線程那些事】各種深坑記錄

1.當你的線程在執行一個可能永久阻塞的操作時一定要使用中斷機制。這樣可以保證線程長時間獲取不到鎖或其他阻塞情況時可以被發現。

原创 【Mysql】用儲存過程來實現從指定日期到指定日期的批量建表吧~

DROP PROCEDURE IF EXISTS `copyTableByDate`; CREATE DEFINER=`root`@`localhost` PROCEDURE `copyTableByDate`( IN `tab

原创 【學習筆記】Java-Concurrent-多線程容器

BlockingQueue 阻塞隊列 高頻函數:   boolean put() 添加一個元素 沒有空間則一直阻塞等待   boolean add() 添加一個元素 沒有空間則拋出IllegalStateException異常   boo