原创 進程內存分佈

進程內存分佈   之前一直在分析棧,棧這個東西的作用也介紹得差不多了,但是棧在哪兒還沒有搞清楚,以及堆、代碼、全局變量它們在哪兒,這都牽涉到進程的內存分佈。 linux 0.01 的進程內存分佈   內存分佈隨着操作系統的更新換代,越來

原创 static變量 及 作用域控制

static變量 及 作用域控制 一、static變量   static變量放在函數中,就只有這個函數能訪問它;放在函數外就只有這個文件能訪問它。 下面我們看看兩個函數中重名的static變量是怎麼區別開來的(static.c): #i

原创 內存對齊

內存對齊 爲什麼要進行內存對齊   在計算機組成原理中我們學到:一塊內存芯片一般只提供 8 位數據線,要進行 16 位數據的讀寫可採用奇偶分體來組織管理多個芯片, 32 位也類似:   這樣,連續的四個字節會分佈在不同的芯片上,送入地

原创 未初始化全局變量

未初始化全局變量   爲下一篇介紹進程內存分佈做準備,這一篇先來介紹一下未初始化全局變量:   未初始化全局變量,這名字就很直白,就是 C 程序中定義成全局作用域而又沒有初始化的變量,我們知道這種變量在程序運行後是被自動初始化爲 全0

原创 Binder Q&A

binder mmap 的內存是每個進程獨立的嗎?會存在拷貝? 是獨立的(1MB - 8KB),用於接收數據。發送 BC_TRANSACTION/BC_REPLY (請求/回包)的時候拷貝buffer(參數)和 offsets(參數中

原创 commit 和 push 的臨界點

  估計很多使用 git 的同學把握不住什麼時候應該 commit, 什麼時候又應該把未提交的 commits 都 push 上去, 今天我就把我的理解說一說。   首先,有一條原則應該是要遵循的: 提交描述 = 提交的修

原创 64位系統能使用多少內存

疑問 我們知道32位win7一般只能使用4GB內存,原因是如果按照地址寬度是32bit(其實並不是)來算的話系統最多隻能管理232 字節的內存(通過補丁的方式可以使32位win7突破4GB的限制,關鍵詞:ReadyFor4GB,後面我會講

原创 直接能用的數據結構

本篇算是對集合類的總結。   常用的數據結構有:數組、鏈表、棧、隊列、樹、圖。 這些數據結構都可以直接或間接地用 stl、util 中的集合類來表示: 數據結構 數組 鏈表 棧 隊列 樹 圖 C++ vector list list li

原创 Android JNI(NDK)開發總結

早就知道Java有個jni可以調用本地化代碼,一直沒有動力去研究它,現在公司想通過在Android中調用本地化代碼來申請較多的內存以突破Android對單個進程的內存限制,這確實是可行的:我的Nexus4內存2G,Android限制每個進

原创 VirtualBox裝ghost XP

一直使用"免費"的VMware,總覺得良心不安, 特別是走向工作崗位後尊重版權的意識越來越強烈, 心裏想着還是用正版或者開源的好,於是就看上了開源的VirtualBox。 VirtualBox支持VMware的vmdk格式的虛擬硬盤,

原创 git如何知曉文件差異

  求兩版本之間的差異是一個動態規劃問題   git 能發現任何的改動,但它是怎麼發現的呢?難道它監控了我們對文件的讀寫操作? git 纔沒這麼雞凍……它是通過比較新舊版本,掐指一算算出來的O(∩_∩)O。   首先假設我們只能通過以下3

原创 封裝 WinSock C/S 通信

  最近在做一個小東西的時候又用上了TCP通信,之前用VB做過,用java做過,用MFC的CSocket也做過,不敢說精通此道,但體會還是有的,這次打算用C++與WinSock來實現一個DLL,這樣不論是MFC程序還是非MFC程序都能用

原创 git版本管理的優點

  如果軟件規模比較大、或者多人開發,應該進行版本管理以避免源碼的混亂。   之前還沒用過 git 的時候,我以爲版本管理就是給自己的程序自動升級版本號的軟件(從 2.6.39 自動升級到 2.6.40),以至於當我看了 git、svn、

原创 安裝git和創建版本庫

安裝 git   首先介紹一下 git 是怎麼誕生的: 2005 年,當時 linux 內核使用商業軟件 BitKeeper 進行版本管理。Samba的作者Andrew Tridgell 試圖嘗試對 BitKeeper 反向工程, 以開

原创 用String分析固定格式的文本

  上學期做一個任務:從 log文件 中提取出 java異常(Exception)的相關信息。 log文件的每一行都有固定的格式:包括 時間戳、信息類型、信息內容 等等。   一開始我想這是不是得用編譯原理那套工具 lex、yacc 來做