原创 延遲初始化的線程安全實現
1. 延遲初始化的不恰當實現 非線程安全版本 在單例模式中,很多時候會使用延遲初始化(lazy initialization),即在第一次使用時才初始化對象,以推遲高開銷的對象初始化工作。下面是非線程安全的延遲初始化代碼: p
原创 Flex & Bison
1. 文件結構 Flex和Bison的源代碼文件都是由定義,規則,用戶自定義函數三部分組成的,結構如下 { definitions } %% { rules } %% { user subroutes } 2. 聯合使用Flex和B
原创 連續子數組的最大和
給出一個整數序列S,其中有N個數,定義其中一個非空連續子序列T中所有數的和爲T的“序列和”。 對於S的所有非空連續子序列T,求最大的序列和。 至少有以下三種解法: 動態規劃 時間複雜度O(n) void max_subarray_
原创 在阿里雲CentOS7上搭建ftp服務器
當我再次被各種出站入站規則玩弄,在搜索引擎的幫助走出泥淖後,我決定記下這次經歷 1. FTP服務器的部署 1.1 安裝vsftpd 筆者使用的是阿里雲的ECS服務器(這不是廣告,而是提醒:P),操作系統爲CentOS7。首先,安裝
原创 大數的計算
這類問題的相同之處在於,數的大小超出了原生數據類型所能表示的範圍。如果用Python或者Java,就不必再看下去了。。。。。。 大數的模冪運算 給定x和y,求x的y次冪模k的餘數 unsigned int quick_power_mo
原创 PostgreSQL配置遠程連接
開啓相應的防火牆端口 在$PGDATA/pg_hba.conf中加入如下配置,開啓遠程訪問 在$PGDATA/postgresql.conf中更改默認配置,監聽所有IP地址
原创 靜態鏈接
《程序員的自我修養——鏈接、裝載與庫》讀書筆記 靜態鏈接要解決的問題是將幾個目標文件鏈接起來成爲形成一個可執行文件。現在的鏈接器一般都採用一種叫做兩步鏈接(Two-pass Linking)的方法。 第一步,地址與空
原创 可執行文件的裝載
《程序員的自我修養——鏈接、裝載與庫》讀書筆記 可執行文件只有裝載到內存中以後才能被CPU執行。早期的程序裝載的基本過程就是把程序從外部存儲器讀到內存中的某個位置。隨着硬件MMU的誕生,多進程、多用戶、虛擬存儲的操作系
原创 彙編語言(1)——從機器到彙編
《彙編語言(王爽 著)》讀書筆記 1. 彙編語言的出現 最早期出現的計算機,是名副其實的“計算”機。這個機器可以執行一系列特定的指令,即機器指令。而由機器指令構成的集合被稱爲指令集,也就是我們說的機器語言。機器指令是由一系列的二進
原创 ELF基本結構
《程序員的自我修養——鏈接、裝載與庫》讀書筆記 編譯器編譯源代碼後產生的文件叫做目標文件。它們經過鏈接後可以形成庫文件或者可執行文件。主流平臺的可執行文件格式主要有Windows下的PE(Portable Execut