這篇文章的內容將講解以下知識點: 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中剔除不滿足條件的元素這個操作不陌生吧? 很多同學可以立刻想出很多種實現的方式,但你想到的這些實現方式都是人畜無害的嗎?很多看似正常的操作其實背后是個陷阱,很多新手可能稍不留神就會掉入其中...
通過理解和使用JVM和JVM參數,開發人員和最終用戶都可以診斷故障并改進Java應用程序的性能! ‘斈憔帉懺创a時,你是在編寫供人類閱讀的代碼。在代碼被編譯成機器語言之前,計算機不能執行源代碼。機器語言是一個通用術語,指的是特定機器所需的任意...
基本介紹 相信大家對二維碼都不陌生,生活中到處充斥著掃碼登錄的場景,如登錄網頁版微信、支付寶等。最近學習了一下掃碼登錄的原理,感覺蠻有趣的,于是自己實現了一個簡易版掃碼登錄的 Demo,以此記錄一下學習過程! 嶋H上是面試的時候被問到...
今天給大家介紹一個小知識點,但是會非常的實用,就是平時我們寫Java代碼的時候,如果要對字符串進行切割,我們巧妙的運用一些技巧,可以把性能提升5~10倍。下面不說廢話,直接來給大家上干貨! 工作中常用的split()切割字符串效率高嗎? 首先,我...
Java程序是基于GC的,在啟動初始,就申請了足量的內存池,再加上JIT等編譯器的實時優化,速度并不比直接用C++語言寫的慢。Java語言同時由于反射和可觀測等特點,再加上JFR這種神器,在發生問題的時候比二進制文件更容易找到它的根源! ∽罱诳碦CA(...
四種拒絕策略: 預先配置 配置線程池! 核心線程和最大線程都盡量設置的小一點,分別設置成 1 和 2 小碼code阻塞隊列設置固定長度的有界隊列,長度為 1 小碼code線程工廠設置默認線程工廠 // 核心線程數 int corePoolSize = 1...
前言 大家好,一直以來我都本著用最通俗的話理解核心的知識點, 我認為所有的難點都離不開 「基礎知識」 的鋪墊。目前正在出一個Java多線程專題長期系列教程,從入門到進階, 篇幅會較多, 喜歡的話,給個關注 ~ 適合人群 · 有一定的Java基礎。...