原创 linux /proc/buddyinfo 解讀

The Linux kernel doesn't consider all of your physical RAM to be one great big undifferentiated pool of memory. Instead

原创 我所理解的“讀書百遍,其義自現”

小時候背誦名言佳句的時候早就知道“讀書百遍,其義自現”這句話,意思大概是,把書多讀幾遍其中的含義自然理解了。初中、高中,甚至大學的時候,好像從來沒有對這句話有過什麼感覺,畢業後工作了3年才慢慢開始對這句話有了些許的感觸。在自己看內核代碼或

原创 限制printk打印頻率函數printk_ratelimit

    在Linux內核代碼裏當需要限制printk打印頻率時會用到__ratelimit或printk_ratelimit(封裝了__ratelimit)。 /*

原创 linux kernel 2.6.10 編譯

之前看《linux device drivers》的時候用的是2.6.18的內核,最後發現與驅動有關的內容內核中還真變了不少。 爲了更好地學習linux 驅動,決定編譯一下linux 2.6.10,畢竟那本書就是以這個版本爲基礎的。 用2

原创 人生的財富不只限於金錢

健康、帥氣等等這些都是人生的財富,而且有很多東西如果失去了,即使有了再多的錢也可能無法挽回,比如健康的身體。 所以,在追求物質的同時一定要好好注意身體的保養。

原创 程序員如何保持身體健康

1 避免久坐,久坐久視對脖子,腰,眼睛都是極大的傷害; 2 工作之外儘量少用電腦,抽時間多走走,多鍛鍊身體。 點贊 收藏 分享 文章舉報 lkkey80 發佈了44 篇原創文章

原创 Gcc Inline 函數

1.      編譯時使用–Winline,讓gcc對標誌成inline但不能被展開的函數給出警告信息。 2.      Inline是一種優化,只在有優化的編譯選項中起作用,若編譯時沒使用-O選項,任何函數都不會被內聯。 3.     

原创 最長遞增子序列LIS算法

DP O(n2)的算法是比較容易想到的,但用時間複雜度爲O(n2)的方法解 poj 3903 Stock Exchange 問題時 tle。故需要更快的算法,下面介紹一個O(nlogn)的DP + 二分查找的算法。 p[i] 5 2

原创 快速預分配磁盤空間

在開發過程中有時候需要爲某個文件快速地分配固定大小的磁盤空間,爲什麼要這樣做呢? (1)可以讓文件儘可能的佔用連續的磁盤扇區,減少後續寫入和讀取文件時的磁盤尋道開銷; (2)迅速佔用磁盤空間,防止使用過程中所需空間不足。 具體的例子有wi

原创 字節對齊

有效對齊值 = min(結構自身對齊值, 指定對齊值)。 1. 結構自身對齊值: (1)基本數據類型:char --1, short -- 2, int --4; (2) 結構體或類:所有成員自身對齊值中的最大值; 2. 指定對齊值 #p

原创 查看內核緩存TCP/UDP數據佔用的內存大小

可通過/proc/net/sockstat查看 cat /proc/net/sockstat sockets: used 159 TCP: inuse 49 orphan 0 tw 2 alloc 61 mem 487 UDP: in

原创 編譯時斷言

運行時斷言大家都用過,但如果想當某個條件不滿足時在編譯時就讓程序編譯不通過,即編譯時斷言(不能產生副作用)是什麼樣子的呢。可參考如下: 1, 參考linux內核靜態斷言 /* Force a compilation error if c

原创 帶寬時延積、TCP 滑動窗口和擁塞窗口

帶寬時延積(BDP),帶寬 * RTT,代表了在信道中傳輸但沒有被確認的數據量。 一般來說,TCP Window Size == BDP,纔能有效利用帶寬,具體要根據實際網絡來進行Tunning。 “滑動窗口”用於接收方通知發送方自己可以

原创 linux打印函數調用堆棧

在X86上,backtrace 依賴 於寄存器EBP回溯調用棧,若編譯時使用了-fomit-frame-pointer選項,會使backtrace失效。 以下內容引自http://www.kernel.org/doc/man-pages/

原创 元素選擇問題

問題描述:從n個元素中選擇第k小的元素。此問題存在最壞情況下時間複雜度爲O(n)的算法,但本文不作討論本文介紹一種使用“快速排序”算法的思想求解此問題的方法,平均時間複雜度O(nlogn) 。 “快速排序算法”的實質是“遞歸與分治”,以序