原创 記第一次提交patch給開源項目的經歷

近期由於工作的原因接觸到了openldap的開源庫,在一次偶然的代碼review的情況下發現了一個內存泄漏的bug。對,不是測試發現的,是代碼審覈看出來的。 問題代碼 該項目github源碼路徑爲:https://github.com/o

原创 Linux內存管理——內核內存管理

前言     linux內存管理可以分爲兩部分,內核內存管理,進程內存管理。由於一些條件的限制,比如內核分配內存時不能睡眠,不能像用戶空間那樣奢侈的使用內存,內核的內存分配與用戶空間的內存分配是不太一樣的,本文據此大概討論下內存管理機制。

原创 centos下創建虛擬網卡

虛擬網卡 Tun/Tap 較高版本的linux大都自帶了tun/tap 驅動程序用以實現虛擬網卡的功能,tun表示虛擬的是點對點設備,tap表示虛擬的是以太網設備,這兩種設備針對網絡包實施不同的封裝。利用tun/tap 驅動,可以將tcp

原创 I/O多路轉接之select

什麼是select? 首先它是系統調用,系統提供它用來實現多路複用輸入/輸出模型。利用它可以讓我們的程序來監視多個文件句柄。程序會停在select這裏等待,直到被監視的文件句柄有一個或多個發生了狀態改變。           參數nf

原创 守護進程

守護進程也稱精靈進程(Daemon),它自成一個會話,自成一個進程組,無所謂前臺,無所謂後臺。它獨立於控制終端並且週期性地執行某種任務或等待處理某些發生的事件。 守護進程是一種很有用的進程。Linux的大多數服務器就是用守護進程實現的。

原创 可重入函數和線程安全的區別與聯繫

什麼是線程安全:一個函數被稱爲線程安全的(thread-safe),當且僅當被多個併發進程反覆調用時,它會一直產生正確的結果。反之,如果一個函數不是線程安全的,我們就說它是線程不安全的(thread-unsafe)。 所以,有這麼四類函

原创 【LeetCode】Two Sum

TwoSum Given an array of integers,find two numbers such that they add up to a specific target number. The function tw

原创 【LeetCode】Combination

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For example, If n = 4 and k =

原创 【C++】泛型編程基礎:模板通識

測試環境: Target: x86_64-linux-gnu gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1)什麼是泛型編程?爲什麼C++會有模板?這一切的一切都要從如何編寫一

原创 【LeetCode】sum-root-to-leaf-numbers

【題目】 Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number. An exampl

原创 用C++實現文件壓縮

乍一聽,這個文件壓縮的名字貌似是很高大上的,其實,在數據結構中學完Huffman樹之後,就可以理解這個東西其實不是那麼的高不可攀。 文件壓縮 所謂文件壓縮,其實就是將對應的字符編碼轉換爲另一種佔據字節數較少的編碼來進行存儲。 舉個栗子:

原创 最簡單的server/client程序

編寫了一個最簡單的server/client聊天工具練練手: server.c 的作用是接受client的請求,並與client進行簡單的數據通信,整體爲一個阻塞式的網絡聊天工具。 server.c: #include <stdio.

原创 進程內存印象

 Linux下C程序生成主要由四個步驟組成:預編譯、編譯、彙編、鏈接。編譯器gcc經過 預編譯、編譯、彙編3個步驟將源程序文件轉換成目標文件。如果程序有多個目標文件或程序中使用了庫函數,則編譯器還需要將所有目標文件及所需的庫文件鏈接起來

原创 HTTP協議詳解(真的很經典)

轉自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分

原创 風口的豬-中國牛市--筆試題

題目描述 風口之下,豬都能飛。當今中國股市牛市,真可謂“錯過等七年”。給你一個回顧歷史的機會,已知一支股票連續n天的價格走勢,以長度爲n的整數數組表示,數組中第i個元素(prices[i])代表該股票第i天的股價。假設你一開始沒有股票