原创 類對象切割對虛函數調用的影響

背景 現在有CFish和CAnimal兩個類,並且CFish類繼承於CAnimal類,它們都有breath這樣的接口,只是表現形式不同,所以用虛函數來定義,類關係如下圖所示; 圖一 類圖關係 其代碼實現如下: //基類 class C

原创 MMU和TLB

MMU和TLB 記得那家芯片公司給我電話面試的時候,別的都還好,可是他問我什麼是MMU,我只能幹瞪眼。今天在看《Linux內核源碼(陳莉君)》的時候,無意中看到第二章內存地址這一節,學習如下: 在任何一臺計算機上,都存在一個程序能產

原创 Leetcode—154. Find Minimum in Rotated Sorted Array II

問題描述: Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? Would this affect the run

原创 線程的概念和多線程模型

線程的基本概念 引入進程的目的,是爲了使多道程序併發執行,以提高資源利用率和系統吞吐量;而引入線程,則是爲了減小程序在併發執行時所付出的時空開銷,提高操作系統的併發性能。 線程最直接的理解就是“輕量級進程”,它是一個基本的CPU執行單

原创 Quicksort 快速排序—注意點以及代碼實現(筆試手寫代碼)

Quicksort排序是一種不穩定的平均時間複雜度O(nlogn)的比較排序。但是快速排序是實際排序應用中最好的選擇。因爲他O(nlogn)隱含的常數因子非常小。原址排序:不需要額外的空間,在原空間進行交換排序。不穩定排序:是因爲Part

原创 Leetcode—221.Maximal Square 最大正方形

問題描述: Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's and return its ar

原创 Leetcode——639.Decode Ways II

題目描述: A message containing letters from A-Z is being encoded to numbers using the following mapping way: 'A' -> 1 'B

原创 Leetcode—152. Maximum Product Subarray 最小乘積子串

問題描述: Find the contiguous subarray within an array (containing at least one number) which has the largest product. F

原创 Leetcode—174. Dungeon Game 倒序DP

問題描述: The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeo

原创 Libevent源碼剖析一——引子

引子: 八月開始找工作的日子了,作爲985高校二流計算機學院某渣碩,回顧下自己的碩士生活,基本都在寫論文中度過了。由於各種原因不想再繼續搞論文,一心決定找工作。碩士期間項目做得也不是很多,因此想找一些開源項目進行學習,提高自己的編程能力。

原创 Libevent源碼剖析基礎篇——雙向鏈表隊列TAILQ

工作的主要內容是tcp/ip,平臺是FreeBSD,而且在內核態開發,所以很多情況下會涉及內核的一些數據結構和宏,比如說mbuf和TAILQ等。 TAILQ是FreeBSD/linux內核對雙向隊列操作的一種抽象,抽象程度不亞於C++,

原创 Libevent源碼剖析——事件event

Libevent 是基於事件驅動(event-driven)的,從名字也可以看到 event 是整個庫的核心。event 就是 Reactor 框架中的事件處理程序組件;它提供了函數接口,供 Reactor 在事件發生時調用,以執行相應的

原创 Leetcode—200.Number of Islands

問題描述: Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by w

原创 Linux下如何用/proc命令查找進程狀態信息——當前目錄,內存佔用,描述符等

參加阿里的面試,問到一個問題,如何在Linux下使用命令行查詢進程的狀態信息,比如進程的當前目錄,進程的內存佔用等情況。當時的第一反應是使用top命令能夠得到所有的進程信息。但是面試官好像不是很滿意,因此我回去之後查閱了相關的資料,發現可

原创 Leetcode—139. Word Break

問題描述: Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can