1. 前言 在 JDK1.8 之后,HashMap 的底層是由數(shù)組、鏈表、紅黑樹來實(shí)現(xiàn)的,當(dāng)數(shù)組長度到 64 的時(shí)候,或者鏈表長度到 8 的時(shí)候,會(huì)調(diào)用 treeifyBin...
1. 前言 在 JDK1.8 之后,HashMap 的底層是由數(shù)組、鏈表、紅黑樹來實(shí)現(xiàn)的,當(dāng)數(shù)組長度到 64 的時(shí)候,或者鏈表長度到 8 的時(shí)候,會(huì)調(diào)用 treeifyBin...
1. 前言 前面的章節(jié)我們介紹了兩種重要的數(shù)據(jù)結(jié)構(gòu),數(shù)組和鏈表,由于他們各自的特性使得他們的優(yōu)缺點(diǎn)非常分明,在查詢速度和插入速度上顧此失彼,不能兼顧,那么有沒有一種數(shù)據(jù)結(jié)構(gòu)可...
1. 前言 通過前面的學(xué)習(xí),我們其實(shí)對 ArrayList 和 LinkedList 已經(jīng)很熟悉了,他們雖然都是繼承自 List,但是前者是基于數(shù)組實(shí)現(xiàn)的,后者是基于鏈表實(shí)現(xiàn)...
1. 前言 我們今天要通過了解鏈表的原理來掌握鏈表這個(gè)重要的數(shù)據(jù)結(jié)構(gòu),隨后用我們了解到的鏈表的知識來重新認(rèn)識一下我們每天都要接觸的最常見的鏈表 java.util.Linke...
1. 前言 棧和隊(duì)列是 Java 數(shù)據(jù)結(jié)構(gòu)中比較簡單但又非常重要的類型,我們需要了解棧和隊(duì)列的存儲(chǔ)原理以及各自的特點(diǎn),熟悉他們各自的常用操作。 2. 后進(jìn)先出 周末陪孩子玩新...
1. 前言 數(shù)組是一種重要的數(shù)據(jù)結(jié)構(gòu),可以利用它作為基礎(chǔ)來實(shí)現(xiàn)很多復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。因此我們要深入理解數(shù)組的存儲(chǔ)原理和特點(diǎn),熟悉它的常用操作,重點(diǎn)掌握它在聲明、查詢、存儲(chǔ)、復(fù)制...
1. 前言 程序員的一天是怎樣開啟的? 清晨打開儲(chǔ)存著各種結(jié)構(gòu)數(shù)據(jù)的冰箱,從雞蛋集 “盒” 中提取了一枚數(shù)據(jù)扔進(jìn)煎鍋,從西蘭花樹形結(jié)構(gòu)上查找最新鮮的一支跟雞蛋一起煎熟,從袋裝...
1. 前言 消息隊(duì)列是一個(gè)容器,可以對程序產(chǎn)生的消息進(jìn)行存儲(chǔ)。消息隊(duì)列的主要用途是削峰、異步、解耦,我們用一個(gè)實(shí)際場景來解釋下。 有一家果汁生產(chǎn)企業(yè),張三是采購員,負(fù)責(zé)采購水...
1. 前言 Redis 其實(shí)就是基于內(nèi)存的鍵值型數(shù)據(jù)庫,與 Oracle 、 SQL Server 、 MySQL 等傳統(tǒng)關(guān)系型數(shù)據(jù)庫相比,它最大的優(yōu)勢就是讀寫速度快。 到底...
1. 前言 Spring 最重要的兩個(gè)功能,就是依賴注入(DI)和面向切面編程 (AOP)。 AOP 為我們提供了處理問題的全局化視角,使用得當(dāng)可以極大提高編程效率。 Spr...
1. 前言 緩存是性能提升的大殺器! 要知道,內(nèi)存的讀寫速度是硬盤的幾十倍到上百倍。緩存實(shí)際上就是利用內(nèi)存的高速讀寫特性,提高熱點(diǎn)數(shù)據(jù)的操作速度。 Spring Boot 中...
1. 前言 安全管理是軟件系統(tǒng)必不可少的的功能。根據(jù)經(jīng)典的“墨菲定律”——凡是可能,總會(huì)發(fā)生。如果系統(tǒng)存在安全隱患,最終必然會(huì)出現(xiàn)問題。 本節(jié)就來演示下,如何使用 Sprin...
1. 前言 因?yàn)楣鹃_發(fā)的項(xiàng)目多、為客戶部署的項(xiàng)目實(shí)例多。工作中我們都會(huì)經(jīng)常遇到,由于某個(gè)客戶的項(xiàng)目突然無法訪問,一堆研發(fā)、售后部門的同事火急火燎處理問題的場景。 所以我非常...
1. 前言 攔截器這個(gè)名詞定義的非常形象,就像導(dǎo)彈要攻擊目標(biāo)的時(shí)候,可能會(huì)被先進(jìn)的反導(dǎo)系統(tǒng)攔截,此處的反導(dǎo)系統(tǒng)就是一種攔截器。 我們開發(fā)的應(yīng)用,對外暴露的是控制器中定義的 A...
1. 前言 定時(shí)任務(wù)絕對是實(shí)際項(xiàng)目中的剛需。 我們想監(jiān)控一個(gè)重點(diǎn)服務(wù)的運(yùn)行狀態(tài),可以每隔 1 分鐘調(diào)用下該服務(wù)的心跳接口,調(diào)用失敗時(shí)即發(fā)出告警信息; 我們想每天凌晨的時(shí)候,將...
1. 前言 程序中出現(xiàn)異常是普遍現(xiàn)象, Java 程序員想必早已習(xí)慣,根據(jù)控制臺輸出的異常信息,分析異常產(chǎn)生的原因,然后進(jìn)行針對性處理的過程。 Spring Boot 項(xiàng)目中...
1. 前言 誰能保證開發(fā)的軟件系統(tǒng)沒有問題?恐怕任何一個(gè)有經(jīng)驗(yàn)的程序員都不敢承諾吧! 在軟件的設(shè)計(jì)、開發(fā)階段,大家都是盡心盡力去做好各項(xiàng)工作,期望能有一個(gè)滿意的效果。 但是一...
1. 前言 一個(gè)項(xiàng)目中使用多個(gè)數(shù)據(jù)源的需求,我們在日常工作中時(shí)常會(huì)遇到。 以商城系統(tǒng)為例,有一個(gè) MySQL 的數(shù)據(jù)庫負(fù)責(zé)存儲(chǔ)交易數(shù)據(jù)。公司還有一套 ERP 企業(yè)信息化管理系...
1. 前言 工作中確實(shí)碰到過一些不知道使用事務(wù)的朋友,毫無疑問會(huì)給項(xiàng)目帶來一些風(fēng)險(xiǎn)。 舉個(gè)簡單的例子吧,網(wǎng)購的時(shí)候需要扣減庫存,同時(shí)生成訂單。如果扣庫存成功了,沒生成訂單,結(jié)...
1. 前言 企業(yè)級應(yīng)用數(shù)據(jù)持久層框架,最常見的應(yīng)該是 Hibernate 和 MyBatis 。 Hibernate 是相當(dāng)徹底的 ORM 對象 - 關(guān)系映射框架,使用 Hi...