原创 自制哈希表 同 系統Hashtable分析對比

文章目錄定義哈希數組,Node、Entity類put方法get方法remove方法 定義哈希數組,Node、Entity類 //這一部分已在上一篇介紹哈希表的文章中說過 //我的: int length = 100; publ

原创 紅黑二叉樹優化哈希表

文章目錄一、紅黑二叉樹簡介二、定義結點、顏色等三、左旋四、右旋五、插入 續哈希表那兩篇博客 哈希表 自制哈希表 同 系統Hashtable分析對比 我們已經知道了哈希表有多麼多麼的牛逼,但是呢,有沒有想過一個問題:對於用拉鍊法

原创 微信紅包算法(最後一個人搶到的紅包比平均值小的可能性非常大!!!)

先上結果: 按照傳聞的微信官方的搶紅包算法,模擬 五個人,總共五塊錢,重複搶100000次,平均下來,最後搶的那個人,搶到的紅包爲 下面上三種搶紅包算法 方法一 0到總錢取隨機值,然後總錢減去隨機值,作爲下次隨機的總錢,以此類推

原创 Java文件讀寫(一)

這篇博客介紹怎樣利用Java的讀寫功能實現 文件複製 文件加密 提升讀寫性能 一、文件的讀 Java中讀取和寫入文件都是通過流來進行的 圖片來源:https://blog.csdn.net/zhangbinu/article

原创 232. 用棧實現隊列 --19/11/9

題目: 方法一: 使用兩個棧,進行push操作時,判斷outstack是否空,如果非空,就把Outstack pop到Instack,然後再往instack裏面push元素 class MyQueue { Stack<I

原创 Java利用文件讀寫對位圖文件進行重繪

這篇博客主要介紹用Java讀一個位圖文件,並把它打印出來。 一、靈魂畫手繪製位圖文件 二、使用UltraEdit對文件進行分析 在這裏關於位圖文件的數據不詳細分析,有問題的可以參考博客: https://blog.csdn.

原创 (遞歸實現)206.反轉鏈表、24. 兩兩交換鏈表中的節點--19\11\8

反轉鏈表 遞歸思路: 通過遞歸反轉函數,把頭結點傳到最後,然後再往前走 class Solution { public ListNode reverseList(ListNode head) { if

原创 虛擬機字節碼執行引擎(一)——運行時棧幀結構

棧幀中包括:局部變量表、操作數棧、動態鏈接、方法出口。 動態連接 在Java虛擬機類加載機制(二)——類加載的過程中已介紹過類加載過程中的解析階段,是將符號引用轉換爲直接引用,但是是靜態的。 在與運行期間轉化爲直接引用就是動態連

原创 703. 數據流中的第K大元素 --19/11/10

題目: 思路: 既然要找第k個大的元素,那麼只需要保留前k個最大的元素即可,只要再加入元素,就往這k個元素裏面放,比k個元素的最小值小,就不放,比最小值大,就放進去,最後返回的是k個元素的最小值。 這裏用到優先隊列priorit

原创 通過Java字節碼深入理解Java執行過程及JVM底層結構

在讀本文時,可以參考我的另外兩篇介紹jvm的博客。 JVM底層結構 Java堆內存介紹及簡單性能調優 生成一個字節碼文件 首先我們編寫一個簡單的Java文件 在文件夾中找到這個文件,可以看到只有一個.java 文件 在命令行使

原创 Java虛擬機類加載機制(二)——類加載的過程

加載 將類的.class文件中的二進制數據讀入到內存中 將其放在運行時數據區的方法區內 然後再內存中創建一個java.lang.Class對象用來封裝類在方法區內的數據結構 簡單地說,加載:在硬盤上查找並通過IO讀入字節碼文

原创 Java垃圾收集方法

對象是否已死 引用計數算法 給對象添加一個引用計數器,每當一個地方要引用它時,計數器的值就加一;當引用失效,計數器值就減一。 看似合理,但是沒法解決對象間互相引用的問題。 可達性分析算法 通過“GC Roots”的對象作爲起始點,

原创 HotSpot 對象存活判定、垃圾回收算法

在進行全局性的垃圾回收時,JVM爲保持一致性,Stop The World ,(原因在JVM性能調優已經提到過,爲了防止在某個鏈條上新產生的垃圾對象永遠無法被發現)。 枚舉根節點 當發生STW停下來之後,JVM並不需要檢查所有的引

原创 JVM底層結構

引言 Java的優點:一次編寫,處處執行,即跨平臺。 Java如何做到跨平臺呢? 首先看這張圖片,我們寫的Java代碼,通過Javac編譯成字節碼文件,然後通過Java命令進入jvm。但是在不同的平臺上機器碼不一樣,所以jvm一個

原创 自制鏈表隊列 同 系統庫中LinkedList 方法性能對比

本文介紹用鏈表實現一個隊列,並同系統隊列比較在運行一千萬個數時增、刪、查功能的性能 首先,創建結點,包括next、data屬性 我的: private node root; //根節點 private node last; //尾