@數據結構

動態 列表
@chang_lehung

深入剖析(JDK)ArrayQueue源碼

深入剖析(JDK)ArrayQueue源碼 前言 在本篇文章當中主要給大家介紹一個比較簡單的JDK為我們提供的容器ArrayQueue,這個容器主要是用數組實現的一個單向隊列,整體的結構相對其他容器來説就比較簡單了。 ArrayQueue內部實現 在談ArrayQueue的內部實現之前我們先來看一個ArrayQueue的使用例子: public void testQueue() { Arr

chang_lehung 頭像

@chang_lehung

昵稱 一無是處的研究僧

@gvenusleo

[數據結構] 03 - 棧和隊列

從數據結構角度看,棧和隊列也是線性表,其特殊性在於棧和隊列的基本操作是線性表操作的子集,它們是操作受限的線性表,因此,可稱為限定性的數據結構。但從數據類型角度看,它們是和線性表大不相同的兩類重要的抽象數據類型。由於它們廣泛應用在各種軟件系統中,因此在面向對象的程序設計中,它們是多型數據類型。 1 棧 1.1 抽象數據類型棧的定義 棧(stack)是限定僅在表尾進行插入或刪除操作的線性表。因此,對棧

gvenusleo 頭像

@gvenusleo

昵稱 GVenusLeo

@yuelianggeimengnalisha

棧和隊列

棧和隊列 一、關於模擬棧使用何種模型 1.順序表:尾插尾刪很快,緩存利用率高,但是要擴容 2.單鏈表:使用鏈表頭作為棧頂來插入刪除數據也很快 3.帶頭雙向循環鏈表:也可以,時間也是O(1) 二、棧的模擬實現 //"stack.h" typedef int type; typedef struct stack { type* a; int top; int capacity;

yuelianggeimengnalisha 頭像

@yuelianggeimengnalisha

昵稱 月亮給蒙娜麗莎

@yongxinz

一個關於 += 的謎題

原文鏈接: 一個關於 += 的謎題 今天在看書過程中發現了一個問題,還挺有意思的,分享給大家。 下面兩個 Python 表達式會產生什麼結果? t = (1, 2, [3, 4]) t[2] += [5, 6] 給四個備選答案: t 變成 (1, 2, [3, 4, 5, 6])。 因為 tuple 不支持對它的元素賦值,所以會拋出 TypeError 異常。 以上兩個都不是。 以上兩個

yongxinz 頭像

@yongxinz

昵稱 alwaysbeta

@jinyeyoudianerliang

MySQL 索引

在 MySQL 中,索引 是通過特定的數據結構來加速查詢操作。MySQL 支持多種類型的索引,其中 B+ 樹索引 是最常見的一種。 1. B+ 樹索引(B+ Tree Index) B+ 樹的特點: 所有數據存儲在葉子節點: 所有的數據都存儲在 B+ 樹的葉子節點中,非葉子節點僅存儲索引。 葉子節點鏈表: B+ 樹的葉子節點通過鏈表連接,使得在進

jinyeyoudianerliang 頭像

@jinyeyoudianerliang

昵稱 今夜有點兒涼

@itchao

算法小白刷了一週 LeetCode 後的思考

Hi,我是 itchao 我自己工作有 2 兩年多的前端開發經驗,但是數據結構與算法一直不好,基本就是一個算法小白的水平。 聽説大公司面試都要手寫算法題,最近為了以後能去更好的公司,然後其實心裏比較着急,打算在 LeetCode 刷題,到現在刷了差不多一週,也一直在掘金髮博客分享刷題經歷,其實也就 6 道題,而且都是數組簡單類型的題目。 自己做題目的時候,感覺思路不太清晰,一般情況下我只能想到暴力

itchao 頭像

@itchao

昵稱 itchao

@jdcdevloper

深入理解MySQL索引底層數據結構

1 引言 在日常工作中,我們會遇見一些慢SQL,在分析這些慢SQL時,我們通常會看下SQL的執行計劃,驗證SQL執行過程中有沒有走索引。通常我們會調整一些查詢條件,增加必要的索引,SQL執行效率就會提升幾個數量級。我們有沒有思考過,為什麼加了索引就會能提高SQL的查詢效率,為什麼有時候加了索引SQL執行反而會沒有變化,本文就從MySQL索引的底層數據結構和算法來進行詳細分析。 2 索引數據結構對比

jdcdevloper 頭像

@jdcdevloper

昵稱 京東雲開發者

@jacklv

提升性能!使用 LinkedHashMap 進行緩存設計的 3 大技巧

在開發中,我習慣使用 ConcurrentHashMap 做緩存,但當需要控制緩存大小並進行緩存淘汰時,我通常依賴第三方緩存框架,如 Caffeine 或 Guava Cache。 最近在閲讀 Mondrian 源碼時,發現了一種新的緩存設計,引發了我的思考,特此記錄。 在 Mondrian 源碼中,有這樣一段代碼: private final MapInteger, MutableConnect

jacklv 頭像

@jacklv

昵稱 抓bug的貓

@invalidnull

什麼是數據結構裏的 Merkle 樹

Merkle 樹,也被稱為 "hash tree",是一種二叉樹的數據結構。這種樹的每個節點都是基於其子節點的一種特殊形式的 hash。具體來説,葉節點的 hash 是由存儲在那裏的數據塊(例如文件或文件的部分)生成的,而非葉節點的 hash 是由其子節點的 hash 生成的。如果 Merkle 樹只有一個節點(也就是根節點),那麼該節點的 hash 就是所有數據的 hash。 Merkle 樹的

invalidnull 頭像

@invalidnull

昵稱 註銷

@chaochenyinshi

數據結構之美-深入理解樹形結構

一 認識樹形結構 樹形結構是一種廣泛應用的非線性數據結構,它在計算機科學和日常生活中都有廣泛的應用。比如文件系統,郵件系統,編譯器語法樹,決策樹,網絡通信,甚至機器學習當中,都有樹形數據結構的影子。本文旨在梳理日常用到的各類樹形結構以及其優點和劣勢,讓瀆者對樹形結構有一個深入的認知和了解。下面列舉幾類常見的樹形結構的應用場景。 1.1 文件系統 計算機中用於存儲和管理文件的一種系統,它使用樹形結構

chaochenyinshi 頭像

@chaochenyinshi

昵稱 用户bPdd2O9

@howiecong

刷題前必學!數組!用JavaScript學數據結構與算法

🧑‍💻JavaScript數據結構與算法-HowieCong 務必要熟悉JavaScript使用再來學! 數組 在 JavaScript 中,數組是一種特殊的對象,用於存儲多個值的有序集合 1. 數組的創建 // 方括號+元素內容 const arr = [1,2,3] // 構造函數,等價於 const arr = [] const arr = new Array();

howiecong 頭像

@howiecong

昵稱 HowieCong

@howiecong

刷題前必學!棧與隊列!用JavaScript學數據結構與算法

🧑‍💻JavaScript數據結構與算法-HowieCong 務必要熟悉JavaScript使用再來學! 一、數組增刪操作 在瞭解棧和隊列前,明確數組中的增刪操作具有什麼樣的特性、對應的方法有哪些: 靈活增刪的數組 數組增加元素的三種方法: unshift方法,添加元素到數組的頭部

howiecong 頭像

@howiecong

昵稱 HowieCong

@howiecong

刷題前必學!鏈表!用JavaScript學數據結構與算法

🧑‍💻JavaScript數據結構與算法-HowieCong 務必要熟悉JavaScript使用再來學! 一、鏈表的基本形態 鏈表和數組都是有序的列表,都是線性結構(有且僅有一個前驅,有且僅有一個後續);不同點在於,鏈表中,數據單位的名稱叫做“結點”,而結點和結點的分佈,在內存中都是離散的 1. 數組的“連續” 在內存中最為關鍵的一個特徵,就是對應一段位於自身上界和下界之間的,一段連

howiecong 頭像

@howiecong

昵稱 HowieCong

@howiecong

刷題前必學!二叉樹!用JavaScript學數據結構與算法

🧑‍💻JavaScript算法與數據結構-HowieCong 務必要熟悉JavaScript使用再來學! 一、樹是什麼? 數據結構中的樹,對於現實世界中的樹簡化——樹根抽象為“根節點”,樹枝抽象為“邊”,樹枝的兩個端點抽象為“結點”,樹葉抽象為“葉子結點” 計算機中的樹如下: 二、樹的重點 樹的層次計算規則:根結點所在的那一層為第一層,其子節點為第二層,以此類推 結點和樹

howiecong 頭像

@howiecong

昵稱 HowieCong

@howiecong

刷題前必學!二叉樹的遍歷!用JavaScript學數據結構與算法

🧑‍💻JavaScript算法與數據結構-HowieCong 務必要熟悉JavaScript使用再來學! 一、遍歷的方式 按照順序規則的不同,遍歷方式有如下四種: 先序遍歷 中序遍歷 後序遍歷 層次遍歷 按照實現方式的不同,遍歷方式又可以分為以下兩種: 遞歸遍歷(先,中,後序遍歷) 迭代遍歷(層次遍歷) 二

howiecong 頭像

@howiecong

昵稱 HowieCong

@howiecong

刷題前必學!時間複雜度和空間複雜度!用JavaScript學數據結構與算法

🧑‍💻JavaScript算法與數據結構-HowieCong 務必要熟悉JavaScript使用再來學! 一、時間複雜度 (1)下面代碼,一共執行了幾次? function traverse(arr){ // 最沒有懸念的是函數裏面的第一行代碼,只會被執行1次 var len = arr.length // 1. i的初始化語句,只有一次,只會被執行1次 //

howiecong 頭像

@howiecong

昵稱 HowieCong

@howiecong

刷題前必學!數組實戰-雙指針!用JavaScript學數據結構與算法

🧑‍💻JavaScript算法與數據結構-HowieCong 務必要熟悉JavaScript使用再來學! 一、兩數求和——Map 原題: 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個數組中同樣的元素。 示例: 給定 nums = [2, 7, 1

howiecong 頭像

@howiecong

昵稱 HowieCong

@howiecong

刷題前必學!鏈表實戰!用JavaScript學數據結構與算法

🧑‍💻JavaScript算法與數據結構-HowieCong 務必要熟悉JavaScript使用再來學! 一、鏈表三種方向 鏈表的處理:合併、刪除等(刪除操作畫個記號) 鏈表的反轉及其衍生題目 鏈表成環問題及其衍生題目 二、鏈表的合併 原題: 將兩個有序鏈表合併為一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有結點組成的。 示例: 輸入:1-2-4, 1-3-4

howiecong 頭像

@howiecong

昵稱 HowieCong

@finally_m

一文講透布隆過濾器原理和實現

布隆過濾器(Bloom Filter)是一種空間效率很高的概率型數據結構,用於測試一個元素是否是一個集合中的成員。它允許一些誤報(false positive),但不允許誤漏(false negative)。這意味着,如果布隆過濾器説一個元素不在集合中,那麼這個元素確實不在集合中;但如果它説一個元素在集合中,那麼這個元素可能在集合中,也可能不在。 布隆過濾器的基本原理: 位數組:布隆過濾器使用

finally_m 頭像

@finally_m

昵稱 威哥愛編程

@laoshideyangrouchuan

ByteByteGo學習筆記:一致性哈希

一、引言 在分佈式系統中,實現水平擴展的關鍵在於能夠有效地分配請求並均勻地將數據分配到各個服務器上。一致性哈希算法作為一種常用的技術,能夠很好地解決這一問題。本文將深入探討一致性哈希算法的原理、實現以及應用場景。 二、重哈希問題 2.1 傳統哈希方法 傳統的哈希方法通常使用取模運算來確定鍵存儲在哪個服務器上,即 serverIndex = hash(key) % N,其中 N 是服務器池的大小。這

@aloudata

重磅活動!3.14,與數智領袖共探 NoETL 指標平台最佳實踐

NoETL 指標平台重塑了指標開發協作模式。Aloudata CAN 以強大的指標定義和查詢加速能力,直連數倉公共層明細數據,自動化代持寬表與彙總表開發,實現了 NoSQL 指標定義、NoETL 指標開發、統一指標管理,一舉解決了指標“開發週期長、口徑不統一、分析不靈活、冗餘成本高”等頑疾,並在金融、消費零售、製造、ICT、能源、航空、醫療等多行業打造了標杆案例,為企業數據開發、消費與管理帶來了顛

aloudata 頭像

@aloudata

昵稱 Aloudata大應科技

@cqu_jiangzhou

可視化圖解算法01:為什麼要學習數據結構與算法

今天,我向大家介紹一門非常重要的課程——《數據結構與算法》。這門課不僅是計算機學科的核心,更是每一位開發者從“小白”邁向“高手”的必經之路。1、為什麼要學習數據結構與算法 1、為什麼要學習數據結構與算法 總的來説,數據結構與算法是: **求職的“敲門磚”**:國內外大廠面試中,70%的考題與數據結構算法相關; **能力的“分水嶺”**:它能區分“功能實現者”和“問題優化者”; **思維

cqu_jiangzhou 頭像

@cqu_jiangzhou

昵稱 cqu_jiangzhou