疏漏總結 二十一

2021-10-07 19:17:17 字數 1177 閱讀 8197

使用者態和核心態。

處於使用者態執行時,程序所能訪問的記憶體空間和物件受到限制,其所處於占有的處理器是可被搶占的

處於核心態執行時,則能訪問所有的記憶體空間和物件,且所占有的處理器是不允許被搶占的。

redis pipline

客戶端將執行的命令寫入到緩衝中,最後由exec命令一次性傳送給redis執行返回。

redis string的儲存方式

string在redis內部儲存預設就是乙個字串,被redisobject所引用,當遇到incr、decr等操作時會轉成數值型進行計算,此時redisobject的encoding欄位為int。

軟引用和幻象引用

軟引用主要來實現快取記憶體機制,是乙個可有可無的東西,如果記憶體夠,就不會被**,但是如果記憶體不夠了,就會被gc掉,軟引用都會被儲存在乙個引用佇列中。

幻象引用:要oom了,就直接**幻象引用的物件。

hashmap不是有序儲存

因為有個取餘運算,所以不是。

mysql buffer pool,change buffer

(1)緩衝池(buffer pool)是一種常見的降低磁碟訪問的機制;

(2)緩衝池通常以頁(page)為單位快取資料;

(3)緩衝池的常見管理演算法是lru,memcache,os,innodb都使用了這種演算法;

(4)innodb對普通lru進行了優化:

將緩衝池分為老生代和新生代,入緩衝池的頁,優先進入老生代,頁被訪問,才進入新生代,以解決預讀失效的問題

頁被訪問,且在老生代停留時間超過配置閾值的,才進入新生代,以解決批量資料訪問,大量熱資料淘汰的問題

索引下推。

不使用索引條件下推優化時儲存引擎通過索引檢索到資料,然後返回給mysql伺服器,伺服器然後判斷資料是否符合條件。 當使用索引條件下推優化時,如果存在某些被索引的列的判斷條件時,mysql伺服器將這一部分判斷條件傳遞給儲存引擎,然後由儲存引擎通過判斷索引是否符合mysql伺服器傳遞的條件,只有當索引符合條件時才會將資料檢索出來返回給mysql伺服器。

10萬的topk

hashmap統計頻率然後大頂堆小頂堆。

C語言開發總結(二十一)

c語言記憶體管理分析 歡迎進入記憶體這片雷區。偉大的bill gates 曾經失言 640k ought to be enough for everybody bill gates 1981 程式設計師們經常編寫記憶體管理程式,往往提心吊膽。如果不想觸雷,唯一的解決辦法就是發現所有潛伏的地雷並且排除...

疏漏總結 二十三

change buffer change buffer的最主要目的是將二級快取的結果儲存下來,減小二級索引隨機io的延遲與消耗,這裡注意二級索引和聚簇索引又不一樣,因為二級索引有可能是不唯一的。當我們執行更新語句的時候,像insert update delete這種語句,在使用了之後,會更新二級索引...

Python Signal 訊號 (二十一)

常用訊號型別sigint 終止程序 中斷程序,不可通過signal.signal 捕捉 相當於ctrl c sigterm 終止程序 軟體終止訊號,可通過signal.signal 捕捉 預設訊號,當os.kill 沒有指明訊號型別時,預設的是該訊號 sigkill 終止程序 殺死程序,不可捕捉 相...