原创 redis源碼學習--數據結構:ziplist實現

本文接上篇"redis源碼學習–數據結構:ziplist設計" https://blog.csdn.net/dmgy614262711/article/details/105879969 一下是entry定義的數據結構 /* We

原创 redis源碼學習--數據結構:鏈表

redis源碼學習–數據結構之鏈表 redis中的鏈表介紹 redis中使用的是雙向鏈表,定義在目錄src\adlist.c中,結構體定義在同名的頭文件中。 src\adlist.c封裝了鏈表的API 鏈表的結構分表頭和節點。 表

原创 redis源碼學習--數據結構:ziplist設計

redis源碼學習–數據結構:ziplist設計 ziplist的重點在於壓縮,爲了高效使用內存,需要對數據結構進行壓縮。鏈表結構理論上需要有額外的空間存儲指針字段,所以ziplist實際上用的是連續內存。 下面介紹ziplist

原创 最短路徑和最少花費問題--動態規劃

求最短路徑的dijkstra算法,可以看成是一個動態規劃的方法。 動態規劃算法通常基於一個遞推公式及一個或多個初始狀態。當前子問題的解將由上一次子問題的解推出。 dijkstra雖然沒有遞推公式,但是滿足將大問題分解成子問題,當前問題

原创 算法導論--動態規劃

自我感覺對於動態規劃還比較不熟悉,所以專門看了《算法導論》裏面第15章,動態規劃這一章。對其中的鋼條切割、矩陣鏈乘法、最長公共子序列和最優搜索二叉樹這些問題有一定了解。 動態規劃是一種解決最優化問題的方法,而不是一種算法。通常需要解決的

原创 Linux程序設計--12.5.2用互斥量進行同步

另一種用在多線程中的同步訪問的方法是使用互斥量,它允許程序員鎖住某個對象,使得每次只有一個對象訪問它。爲了控制對關鍵代碼的訪問,必須在進入這段代碼之前鎖住一個互斥量,然後在完成操作之後解鎖他。 用於互斥量的基本函數和用於信號量的函數非常相

原创 數據結構(C語言):鏈表,約瑟夫問題

開始學習數據結構,把寫過的代碼發上來,希望可以給有需要的人一個參考。 //本代碼由 大漠孤煙 整理編寫,並驗證通過 //求解約瑟夫問題,涉及到鏈表節點的生成,節點的插入和刪除,對理解鏈表非常有好處 //N個節點圍城一圈,從第一個

原创 最短路徑問題以及包含過路費的問題--動態規劃式的解法

求最短路徑的dijkstra算法(詳細算法原理自行百度,本文簡單從動態規劃角度思考),可以看成是一個動態規劃的方法。 動態規劃算法通常基於一個遞推公式及一個或多個初始狀態。當前子問題的解將由上一次子問題的解推出。 dijkstra雖然