一、對象頭、Mark Word、monitor、synchronized怎么關聯起來 。1)首先java里面每個對象JVM底層都會為它創建一個監視器monitor,這個是JVM層次為我們保證的。這個監視器就類似一個鎖,哪個線程持有這個monitor的操作權,就相當于獲取到了鎖 。2)...
前言 大家項目中如果有生成隨機數的需求,我想大多都會選擇使用Random來實現,它內部使用了CAS來實現。實際上,JDK1.7之后,提供了另外一個生成隨機數的類ThreadLocalRandom,那么他們二者之間的性能是怎么樣的呢? Random的使用 Random類是J...
有些時候我們需要把網站頁面變成黑白色或灰色,特別是對于一些需要悼念的日子,以及一些影響力很大的偉人逝世或紀念日的時候,都會讓網站的全部網頁變成灰色(黑白色),以表示我們對逝者或者英雄的緬懷和悼念! ‘敶蠹铱吹饺镜膬热荻甲兂闪嘶疑,...
如果問你在日常開發中用到的最多的一個 Java? 類是什么,阿粉敢打賭絕對是 String.class?。說到 String? 大家都知道 String 是一個不可變的類;雖然用的很多,那不知道小伙伴們有沒有想過怎么樣創建一個自己的不可變的類呢?這篇文章阿粉就帶大家來實踐...
日常工作中 Map 絕對是我們 Java 程序員高頻使用的一種數據結構,從最早的Iterator,到java5支持的foreach,再到java8 Lambda,你經常使用的是哪一種? 通過 entrySet 來遍歷 1、通過 for 和 map.entrySet() 來遍歷 第一種方式是采用 for 和 M...
了解如何將數十種常見的圖像文件類型(包括但不限于 PNG 和 JPG)分別轉換為 GIF 和 WebP 格式! ∪绻覀儨蕚湓诰為特定目的重新格式化圖像,我們選擇的新格式需要準確反映我們設想的用例。否則,我們會在不經意間扼殺我們自己的效率,最重要的是,冒...
這篇文章的內容將講解以下知識點: for循環和while循環區別 、賔or循環和while循環區別 · for(初始動作;條件;每輪的動作){} · for中的每一個表達式都是可以省略的 · for(條件;)==while(條件) 案例:階乘 寫...
最近工作需要研究了一會別人寫的庫,其中充滿著各種"回調函數",因此把自己理解給記錄下來,存檔! ∈紫任覀儊砜纯椿卣{函數 這個概念的具體由來,百度百科的示義如下: 回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為...
場景引入,問題初現 很多同學出去面試,都會被問到一個常見的問題:說說你對volatile的理解? 不少初出茅廬的同學可能會有點措手不及,因為可能就是之前沒關注過這個。但是網上百度一下呢,不少文章寫的很好,但是理論扎的太深,文字太多,圖太少...
一、前言 Trie 的歷史 字典樹 Trie 這個詞來自于 retrieval,于 1912 年,Axel Thue 首次抽象地描述了一組字符串數據結構的存放方式為 Trie 的想法。這個想法于 1960 年由 Edward Fredkin 獨立描述,并創造了 Trie 一詞。你看看,多少程序員為了...
在日常開發的過程中我們經常會需要調用第三方組件或者數據庫,有的時候可能會因為網絡抖動或者下游服務抖動,導致我們某次查詢失敗! ∵@種時候我們往往就會進行重試,當重試幾次后依舊還是失敗的話才會向上拋出異常進行失敗。接下來阿粉就給大家演示...
一、前言 堆的歷史 堆的數據結構有很多種體現形式,包括;2-3堆、B堆、斐波那契堆,而在 Java API 中最常用的是用于實現優先隊列的二叉堆,它是由 JWJ Williams 在 1964 年引入的,作為堆排序算法的數據結構。另外在 Dijkstra 算法等幾種高效的圖...
前言 在之前的文章中,講到了面向的 3 大特性(封裝、繼承、多態)和面向對象設計的 5 大原則(SRP、OCP、LSP、DIP、ISP)。此外,我們還講了如何創建一個類,并且在創建類后如何構造一個對象。然后還介紹了類中的屬性和方法,并對構造方法和引用也...
一、概述 當我們在容器中運行 Java 應用程序時,可能希望對其進行調整參數以充分利用資源! ≡诒窘坛讨,我們將了解如何在運行 Java 進程的容器中設置 JVM 參數。本文將重點關注常見的 -Xmx 和-Xms 標志! ×硗,我們還將研究使用某些 Java 版...
在本文中,你可以了解一些可能沒有聽說過的有用的 Java 特性。這是我最近使用的功能的私人列表,或者是我在閱讀有關 Java 的文章時偶然發現的。我不會關注語言方面,而是關注 API! 1. 延遲隊列【Delay Queue】 如您所知,Java 中有許多類型的集...
前陣子在知乎上看到這個問題,一開始覺得還挺無厘頭的,但細細一想卻發覺這里面很考驗對語言的理解。于是寫下了我的理解,今天把回答搬運到這里,與大家一起分享! ∵@個問題看起來有點無厘頭,但仔細想想卻非?简灤鹬鲗 Java 這門語言的理解。如果...
在我們平常的編碼中,通常會將一些對象保存起來,這主要考慮的是對象的創建成本。比如像線程資源、數據庫連接資源或者 TCP 連接等,這類對象的初始化通常要花費比較長的時間,如果頻繁地申請和銷毀,就會耗費大量的系統資源,造成不必要的性能損失!...
1. 什么是Buffer 緩沖區 緩沖區(Buffer):就是在內存中預留指定大小的存儲空間用來對輸入/輸出(I/O)的數據作臨時存儲,這部分預留的內存空間就叫做緩沖區 緩沖區本質上是一個可以讀寫數據的內存塊,可以理解成是一個數組,該對象提供了一組方法,...
在本文中,我們將學習在Java中把一個String截斷到所需的字符數的集中方法! ∈紫,我們將探索使用JDK本身來實現這一目標的方法。然后,我們將研究如何使用一些流行的第三方庫來實現這一目標! ∈褂肑DK截斷一個字符串 Java提供了許多方便的方法...
實際的業務項目開發中,大家應該對從給定的list中剔除不滿足條件的元素這個操作不陌生吧? 很多同學可以立刻想出很多種實現的方式,但你想到的這些實現方式都是人畜無害的嗎?很多看似正常的操作其實背后是個陷阱,很多新手可能稍不留神就會掉入其中...