原创 【算法題】判斷素數/質數

判斷素數 埃拉託斯特尼篩法: 這種方法的思想是設置一個標誌數組isPrimes[n],標誌數組的每一位標示相應的數是不是素數,初始化爲全true。 算法從i=2開始,依次將質數的倍數標記爲非素數,即將標記數組的相應位改爲false。 標記

原创 【算法題】字符串匹配算法KMP

詳解見博客 KMP算法 #include <iostream> #include <string> #include <vector> using namespace::std; vector<int> GetNext(string s

原创 【面經筆記】Windows下的動態鏈接(DLL)

使用DLL的優點 共享、模塊化,可方便的組合,重用,升級 基地址和RVA 當一個PE文件裝載時,其進程地址空間中的起始地址就是基地址,對於可執行文件exe,一般爲0x400000,對於DLL文件一般爲0x10000000。 若該地址被佔

原创 【讀書筆記】同步設備I/O與異步設備I/O

同步IO 最方便和常用的對設備數據進行讀寫的函數時ReadFile和WriteFile。 打開設備時如:CreatFile、WSASocket。沒有指定FILE_FLAG_VERLAPPED標誌,則執行同步IO操作。 異步IO 打開

原创 【面經筆記】內存映射、共享內存

知道共享內存嗎? 額,是把同一塊內存映射到兩個進程的地址空間?。。。。。。 (還不如說不知道) 內存映射 內存映射主要應用於三種情況: 系統使用內存映射文件載入EXE,DLL文件。這節省了大量頁交換文件的空間以及程序啓動時間。 開發人

原创 【面經筆記】裝載,CRT

雙擊可執行文件發生了什麼 創建一個獨立的虛擬地址空間 創建虛擬地址空間不是創建空間,而是創建映射函數所需要的相應的數據結構。 讀取可執行文件頭,並建立虛擬空間與可執行文件的映射關係 上一步是建立虛擬空間到物理內存的映射關係,這一步

原创 【算法題】博弈論:數組選數字

給定一個數組,兩個人A、B依次從數組最左端選擇一個或者兩個數字,最後選擇的數字之和較大者贏。假設兩個人都足夠聰明,A先選,給定數組,判斷A、B誰能贏。 分析: 給定Array[0]…Array[n]。 dp[i]表示當前數組爲Array[

原创 修改Ubuntu終端中,Vim插入模式下光標實現爲豎線狀

原文:Change cursor shape in different modes 不同終端版本修改代碼不同。 使用如下命令查看Gnome-Terminal終端的版本: aptitude show gnome-terminal To

原创 【算法題】神奇數

東東在一本古籍上看到有一種神奇數,如果能夠將一個數的數字分成兩組,其中一組數字的和等於另外一組數字的和,我們就將這個數稱爲神奇數。例如242就是神奇數,我們能夠將這個數字分成兩組,分別是{2,2}以及{4},給定區間[l,r],統計這個區