原创 Linux(C/C++)下的文件操作open,fopen

open是Linux下的底層系統調用函數,fopen是C/C++下的標準I/O庫函數,帶輸入/輸出緩衝。 Linux下的fopen是open的封裝函數,fopen最終還是要調用底層的系統調用open。 所以在Linux下如果對設備

原创 100層樓2個雞蛋,如何得知雞蛋能承受幾層的撞擊

有一棟樓共100層,一個雞蛋從第N層及以上的樓層落下來會摔破, 在第N層以下的樓層落下不會摔破。給你2個雞蛋,設計方案找出N,並且保證在最壞情況下, 最小化雞蛋下落的次數。 我們先假設最壞情況下,雞蛋下落次數爲x,即我們爲了找出

原创 蓄水池抽樣算法 (Reservoir Sampling Algorithm)

蓄水池抽樣算法簡介 蓄水池抽樣算法是隨機算法的一種,用來從N個樣本中隨機選擇K個樣本,其中N非常大(以至於N個樣本不能同時放入內存)或者N是一個未知數。其時間複雜度爲O(N),包含下列步驟 (假設有一維數組 S, 長度未知,需要從

原创 給定一個函數rand()能產生0到n-1之間的等概率隨機數,問如何產生0到m-1之間等概率的隨機數?

題目:給定一個函數rand()能產生1到n之間的等概率隨機數,問如何產生1到m之間等概率的隨機數? 先把問題特殊化,例如原題變爲給定一個函數rand5(),該函數可以隨機生成1-5的整數,且生成概率一樣。現要求使用該函數構造函數r

原创 C++面試題(~01)

馮諾依曼體系結構 馮諾依曼體系結構用於存儲程序方式,指令和數據不加區別混合存儲在同一存儲器中。有如下特點: 一律用二進制數表示數據和指令; 順序執行程序。執行前,將需要的程序和數據先放入存儲器(PC爲內存),當執行時把要執行的程

原创 15. 3Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets i

原创 x86架構下,頁面大小爲什麼是4K?

前提:32位邏輯空間的計算機OS,兩級頁表,每個頁中每個條目佔4bytes,即32位的數據 以上前提是目前X86架構的32爲系統的真實情況; 設頁大小爲X(byte),則X/4爲每個頁可以存取的條目的個數,兩級頁表的地址轉換關係

原创 Shared_ptr詳解

shared_ptr在boost庫中已經有多年了,C++11又爲其正名,把他引入了STL庫,放到了std的下面,可見其頗有用武之地;但是shared_ptr是萬能的嗎?有沒有什麼樣的問題呢?本文並不說明shared_ptr的設計原

原创 Linux中的五種I/O模型

概念說明 用戶空間和內核空間 現在操作系統都是採用虛擬存儲器,那麼對32位操作系統而言,它的尋址空間(虛擬存儲空間)爲4G(2的32次方)。操作系統的核心是內核,獨立於普通的應用程序,可以訪問受保護的內存空間,也有訪問底層硬件設備

原创 Linux服務器程序規範

Linux服務器程序規範 Linux服務器程序一般都是以後臺進程形式運行,後臺進程又稱爲守護進程(daemon),其沒有控制終端,不會意外接收到用戶輸入。守護進程的父進程通常是init進程(PID爲1的進程); Linux服務器

原创 如何定義一個只能在堆上(棧上)生成對象的類?

在C++中,類的對象建立分爲兩種: 一種是靜態建立,如A a; 另一種是動態建立,如A* ptr=new A;這兩種方式是有區別的。 靜態建立一個類對象,是由編譯器爲對象在棧空間分配內存,通過直接移動棧頂指針,挪出適當的空間,

原创 7. Reverse Integer

Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 click to show spoilers

原创 Linux下各種最大數目

ulimit命令查看和更改系統限制 ulimit命令詳解 ulimit用於shell啓動進程所佔用的資源,可以用來設置系統的限制; 語法格式:ulimit [-acdfHlmnpsStvw] [size] 在/etc/securi

原创 6. ZigZag Conversion

The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to di

原创 9. Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. Some hints: Cou