原创 makefile那些事兒

  Make工具的基本用法是很簡單的,但是其強大功能的一面卻爲很多人所不知。本文不是以講解make入門爲目的,而是指出編譯鏈接大型項目所不能不知道的make知識。 (1)make有強大的推理能力。只要make看到一個[.o]文件

原创 linux下目錄的權限解說

在linux系統中,權限概念的重要性相信不需要我來講,所謂的權限無非是r,w,x,文件的各種權限都很好理解,較難理解的是目錄的權限,下面我主要對目錄的權限說一下自己的看法: 1. 目錄的讀權限 看過linux內核方面書的朋友應該都知

原创 dalvik啓動過程

從Zygote進程啓動過程分析過程中,我們知道,dalvik虛擬機的啓動過程是從AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)函數開始的,詳細時序圖如下: 下面我們來逐

原创 TCP/IP之八:廣播、多播與IGMP

廣播作爲一種給所有主機發數據包的方式,在計算機網絡中是必需的,因爲很多情況下都需要這樣的通信方式,因而廣播也很自然地成爲了TCP/IP協議棧的一部分。廣播是通過將目的端置爲特殊的IP地址來實現的,比如以255.255.255.255,會被

原创 TCP/IP之九:UDP用戶數據包協議

至此,我們已經基本討論完網絡接口層和網絡層的主要協議,終於來到傳輸層的領地,傳輸層從內容複雜性上來講基本上是TCP一雄稱霸,另外還有UDP這個小國,本文我們先討論一下UDP。 UDP數據報格式如下: (1)Source Port爲源端口

原创 dalvik核心數據結構

JavaVM, JNIEnv typedef const struct JNINativeInterface* JNIEnv; typedef const struct JNIInvokeInterface* JavaVM; JNI

原创 Android Zygote進程啓動過程

Zygote, 意爲“受精卵”,Android系統中幾乎所有的應用進程都是由Zygote進程孵化出來的,Java環境也是由Zygote創建起來的,它建立了我們app運行所需要的環境,是app的祖先,因此,分析它的啓動以及內部邏輯顯得非常

原创 Android中px、sp、dip的區別

剛剛接觸android開發的同學,在做UI開發的時候都會碰到各種度量單位----px, dp, sp,網上有很多文章講述這三者的不同,當初我剛開始接觸android開發的時候,正是通過網上的這些資料瞭解他們的區別的,但是看完之後仍然不是很

原创 Linux命令行下編輯常用的快捷鍵

  Linux認證考試:Linux命令行下編輯常用的快捷鍵 本文講述了Linux命令行編輯快捷鍵的方法,希望對您有所幫助。 Linux命令行編輯快捷鍵: history 顯示命令歷史列表 ↑(Ctrl+p

原创 TCP/IP之五:traceroute程序

traceroute程序實現原理:該程序給特定主機發送UDP報文,UDP需要封裝在IP分組中進行傳輸,程序通過依次將IP分組中的TTL設爲1,2,3…n,發送不同的UDP報文,這樣就會收到中途路由器的ICMP超時報文,從而可以獲得路由器的

原创 設計模式之C++實現(三)---裝飾者模式(Decorator)

思想本質:動態地給一個對象添加一些額外的職責。就增加功能來說,Decorator模式相比生成子類更爲靈活。 設計要點: 1. 裝飾者和被裝飾對象有相同的超類型。 2. 可以用一個或多個裝飾者包裝一個對象。 3. 裝飾者可以在所委託被裝飾者

原创 TCP/IP之六:路由表與IP選路

路由表: 爲了說明路由表的組成,先看下我的主機路由表: 1: 內核 IP 路由表 2: Destination Gateway Genmask Flags MSS Window

原创 設計模式之C++實現(二)---策略模式(Strategy)

思想本質:策略模式將具體的策略與用戶隔離,用戶不知道使用的具體策略,這樣我們就可以根據需要靈活地替換我們的策略。 策略模式的類圖如下: Strategy是策略抽象類,有很多的具體策略類繼承它,Context負責與用戶的交互,同時可以使

原创 TCP/IP之二:ARP與RARP

ARP協議實現IP地址到物理地址的映射;RARP實現物理地址到IP地址的映射。 ARP/RARP的幀格式如下(圖中的數字表示各個域所佔的字節數): 以太網目的地址6 以太網源地址6 協議類型2 硬件類型2 協議類型2 硬件地址長度1 協議

原创 Object-C基礎—屬性的介紹與使用

        Object-c 2.0引入了屬性的概念,使得我們可以通過點方法來訪問對象的成員變量。假設有一個類爲A, 該類有一個成員對象爲mTest,mTest是一個類型爲B的對象,現在已經有了一個A類的實例對象爲a,爲了能夠用a.m