Time of Update: 2018-12-05
一、關於malloc很早就想寫這篇文章了,一直拖著沒有寫,是想寫個更完善的版本,不過最近確實沒有太多時間去考慮一個很完整的版本,只有先把這個簡單的版本寫出來了。據說在微軟今年招實習生的時候面過這個題目。malloc()是C語言中動態儲存裝置管理的一組標準庫函數之一,其作用就是從記憶體的動態儲存裝置區(堆)中分配一個長度為size的連續記憶體空間。參數為一個無符號的整數,傳回值則是指向所分配的連續儲存空間起始地址的指標。如果記憶體不足,則函數分配記憶體失敗會返回NULL。在Linux中,每個進程可
Time of Update: 2018-12-05
自己動手寫快速排序快速排序演算法不算複雜的演算法,但是實際寫代碼的時候卻是最容易出錯的代碼,寫的不對就容易死迴圈或者劃分錯誤。所以還是自己動手多寫會印象深刻點。一、初探—樸素的快速排序演算法void quick_sort(int a[], int l, int u){ if (l >= u) return; int m = l; for (int i=l+1; i<=u; i++) { if (a[i] < a[l])
Time of Update: 2018-12-05
題目描述給定兩個鏈表,每個鏈表的結點值為數位各位上的數字,試求出兩個鏈表所表示數位和,並將結果以鏈表形式返回。鏈表的結點定義如下:typedef struct node *pNode;struct node{int data;struct node
Time of Update: 2018-12-05
一、安裝nginx下載nginx源碼包,官網是http://wiki.nginx.org/Main ,為了支援gzip以及Regex,還需要下載pcre和zlib源碼包。pcre網址http://www.pcre.org/,zlib網址http://www.zlib.net/。我下載的nginx版本為1.4.1, pcre版本為8.32,zlib版本為1.2.8。下載完成後,對三個源碼包分別解壓。進入nginx目錄配置。(註:openssl如果系統沒有請安裝先)./configure
Time of Update: 2018-12-05
文章目錄 擴充: 一、二元堆積概念二元堆積一種數組對象,可以被視為一棵完全二叉樹,樹中每個結點和數組中存放該結點值的那個元素對應。樹的每一層都是填滿的,最後一層除外。表示堆的數組有兩個屬性對象,其中length[A]表示數組A中的元素個數,而heap-size[A]則表示存放在A中的堆的元素個數。heap-size[A]<=length[A],也就是說雖然A[1....length[A]]都可以包含有效值,但是A[heap-size[
Time of Update: 2018-12-05
一、Subversion Repositories subversion版本控制倉庫(Repository)與其他版本控制系統並無區別。與工作複本不同之處在於,subversion repository是個抽象的實體,能夠被subversion自己的工具和庫幾乎專有的操作。許多使用者與subversion的互動都是基於工作複本,因此後續會著重介紹subversion中工作複本的操作。二、Revisions
Time of Update: 2018-12-05
《編程之美: 求二叉樹中節點的最大距離》的另一個解法原文地址:http://www.cnblogs.com/miloyip/archive/2010/02/25/1673114.html昨天花了一個晚上為《編程之美》,在豆瓣寫了一篇書評《遲來的書評和感想──給喜愛編程的朋友》。書評就不轉載到這裡了,取而代之,在這裡介紹書裡其中一條問題的另一個解法。這個解法比較簡短易讀及降低了空間複雜度,或者可以說覺得比較「美」吧。問題定義如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,我們姑且定義"
Time of Update: 2018-12-05
在網上搜到一篇有意思的文章,貼過來了。原文地址:http://wangcong.org/blog/archives/2230眾所周知,C語言數組下標是從0開始,其它很多語言皆如此。而 FORTRAN 則是數組下標從1開始的典範。所以就有數組下標是從1開始好還是從0開始好之爭。連《C專家編程》中都如此調侃:數組的下標應該是從0還是從1開始?我提議的妥協方案是0.5,可惜他們未予認真考慮便一口回絕。—— Stan
Time of Update: 2018-12-05
題目找出二叉樹中最大的子樹,該子樹為二叉搜尋樹。所謂最大的子樹就是指結點數目最多的子樹。分析該題目是要找出二叉樹中最大的子樹,該子樹必須是二叉搜尋樹(BST)。子樹的概念需要重點關注一下,以下面一棵二叉樹為例 ____10____ / \ __5_ 15_ / \ \ 1 8
Time of Update: 2018-12-05
文章目錄 擴充尋找數組中第K小的數各種演算法: 前言尋找第K小的數屬於順序統計學範疇,通常我們可以直接在O(NlgN)的時間內找到第K小的數,使用歸併排序或者堆排序對輸入資料按從小到大進行排序,然後選擇第K個即可。然而,我們還有更好的演算法。一、熱身—最大值和最小值首先來看一個簡單的問題,在一個有n個元素的集合中,需要多少次比較才能確定其最小值呢?這可以很容易退出需要n-1次這個上界。虛擬碼如下所示:MINIMUM(A) min =
Time of Update: 2018-12-05
前兩天寫了 基於libsvm中文文本分類 ,只是做到了會用的,要做到知其然知其所以然還是很難的。不過SVM的應用很廣泛,除了文本分類,比如Face Service,手寫辨識,甚至驗證碼識別都可以搞定。 kNN(k最鄰近)演算法相對而言,就簡單得多了。 1,kNN演算法就是找到k個最相似的樣本,這些樣本所在的類,就是當前文檔的所屬的類。如:綠色圓圈表示你想分類的文本,其他是已知類別的樣本。圖中其他形狀和綠色圓圈的距離代表了相似性。如果k =
Time of Update: 2018-12-05
問題描述判定一棵二叉樹是否是完全二叉樹。二叉樹定義如下:struct node { int data; struct node* left; struct node* right; }; typedef struct node BinaryTree;完全二叉樹的定義:若設二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h
Time of Update: 2018-12-05
題目描述給定兩棵二叉樹,根結點為t1和t2,判定這兩棵二叉樹是否同構。所謂二叉樹同構就是指它們的結構相同。 分析為了判定是否同構,可以考慮遞迴來解決。代碼比較簡單,如下所示bool isomorphism(Node* t1, Node* t2){ if(NULL == t1 || NULL == t2) return (NULL == t1) && (NULL == t2); return isomorphism(t1->left,
Time of Update: 2018-12-05
版本控制基礎概念本文主要從理論上說明版本控制的原理,關於Subversion的具體操作命令將在下一篇文章中提及。個人覺得,對這些基本概念的瞭解有助於對subversion版本控制有更好的瞭解。Subversion適用於任何類型的檔案管理,並不局限於編程人員。一、版本庫(The Repository) 版本庫(The
Time of Update: 2018-12-05
《高效能伺服器架構》中提到了SEDA,我搜了一下,發現這篇文章《SEDA效能最佳化的分析和類比》,對於線程數量的建議。假如一個Web請求,代碼執行的時間為ST(Service Time),讀檔案、網路調用之類IO等待時間為為WT(Wait Time),CPU的個數是N、核心數是M則線程數量TC(Thread Count)為: TC= N*M*(1+WT/ST) 假如只有1個單核的CPU,如果IO為40毫秒,程式執行要20毫秒,那麼可以得出如下的執行序列。
Time of Update: 2018-12-05
題目輸入一個正整數數N,輸出所有和為N連續正整數序列。例如輸入15,由於1+2+3+4+5=4+5+6=7+8=15,所以輸出3個連續序列1-5、4-6和7-8。一種運用數學規律的解法假定有k個連續的正整數和為N,其中連續序列的第一個數為x,則有x+(x+1)+(x+2)+...+(x+k-1) = N。從而可以求得x = (N - k*(k-1)/2) /
Time of Update: 2018-12-05
文章目錄 1)定義鏈表結點以及相關內容2)定義棧操作函數3)建立棧4)判斷棧是否為空白5)核心函數pop、push、top
Time of Update: 2018-12-05
1.什麼是進程(Process)和線程(Thread)?有何區別?進程是具有一定獨立功能的程式關於某個資料集合上的一次運行活動,進程是系統進行資源分派和調度的一個獨立單位。線程是進程的一個實體,是CPU調度和指派的基本單位,它是比進程更小的能獨立啟動並執行基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程式計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共用進程所擁有的全部資源。一個線程可以建立和撤銷另一個線程,同一個進程中的多個線程之間可以並發執行。進程
Time of Update: 2018-12-05
Tags: Database schemasRecently, on del.icio.us mailinglist, I asked the question “Does anyone know the database schema of del.icio.us?”. I got a few private responses so I wanted to share the knowledge with the world.The Problem: You want to have a
Time of Update: 2018-12-05
一、源碼安裝apache之前為了測試系統,自己下載源碼編譯安裝了一個apache2.4,安裝apache2.4過程比較簡單,注意在configure時加上參數。配置:./configure --prefix=$APACHE_HOME --enable-mods-shared=most --enable-ssl=shared --with-ssl=$SSL_HOME(--with-ssl是開啟SSL工具,可選項),詳細參數可參見:apache配置參數編譯安裝:makemake