一.排序算法分類 1.插入排序法 直接插入排序,希爾排序(面試最常問) 2.交換排序 冒泡排序,快速排序(面試最常問) 3.選擇排序 直接選擇排序,堆排序(面試最常問) 4.歸並排序 歸並排序 5.基數排序 以上 ...
堆這種數據結構應用場景很多,最經典的莫過於堆排序。堆排序是一種原地的 時間復雜度為O nlogn 的排序算法。我們今天就來分析一下堆這種數據結構。 一 什么是堆 堆是一種特殊的樹。只要滿足以下兩點,就稱為堆。 堆是一個完全二叉樹。 堆的每一個節點的值都必須大於等於 或小於等於 其子樹中每個節點的值。 對於每個節點的值都大於等於其子樹中每個節點的值的堆,我們叫做 大頂堆 。對於每個節點的值都小於等於 ...
2021-07-27 08:33 0 417 推薦指數:
一.排序算法分類 1.插入排序法 直接插入排序,希爾排序(面試最常問) 2.交換排序 冒泡排序,快速排序(面試最常問) 3.選擇排序 直接選擇排序,堆排序(面試最常問) 4.歸並排序 歸並排序 5.基數排序 以上 ...
volatile是java語言中的一個關鍵字,常用於並發編程,有兩個重要的特點:具有可見性,java虛擬機實現會為其滿足Happens before原則;不具備原子性.用法是修飾變量,如:volatile int i. volatile原理 介紹其可見性先從cpu,cpu緩存和內存的關系入手 ...
Mycat原理 Mycat的原理並不復雜,復雜的是代碼,如果代碼也不復雜,那么早就成為一個傳說了。Mycat的原理中最重要的一個動詞是“攔截”,它攔截了用戶發送過來的SQL語句,首先對SQL語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然后將此SQL發往后端的真實 ...
問題的引出: 傳統的OOP程序經常表現出一些不自然的現象,核心業務中總摻雜着一些不相關聯的特殊業務,如日志記錄,權限驗證,事務控制,性能檢測,錯誤信息檢測等等,這些特殊業務可以說和核心業務沒有根本上 ...
Canal簡介 Canal是阿里開源的一款基於Mysql數據庫binlog的增量訂閱和消費組件,通過它可以訂閱數據庫的binlog日志,然后進行一些數據消費,如數據鏡像、數據異構、數據索引、緩 ...
Flume概念 Flume是一個分布式、可靠、和高可用的海量日志聚合的系統,支持在系統中定制各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定制)的能 ...
上周末有幸參加了Alluxio(之前也叫Tachyon),七牛雲和示說網舉辦的Alluxio上海Meetup,之前我並沒有在真實應用場景中使用過Alluxio,對其適用的應用場景一直報懷疑態度。自信聆聽其創始人的演講之后,感覺這個項目還挺有意思,對Alluxio簡單總結一下 ...
Zookeeper 分布式協調服務 應用之處:發布、訂閱,命名服務,分布式協調和分布式鎖 對比 Chubby: Chubby 被定義為 分布式的鎖服務 為分布式系統提供 松耦合、粗粒度 的分布式鎖功能 其由兩部分組成 提供數據的讀寫接口並管理相關配置數據的服務端 另一部分是客戶端使用 ...