原创 Android AIDL proxy/stub 分析

AIDL的作用     由於每個應用程序都運行在自己的進程空間,並且可以從應用程序UI運行另一個服務進程,而且經常會在不同的進程間傳遞對象。在Android平臺,一個進程通常不能訪問另一個進程的內存空間,所以要想對話,需要將對象分解成操作系

原创 c++中cin,cin.get()的區別

cin>>通常只能讀取一個單詞。cin.get()可以讀取固定長度的字符串,含空格等符號。 一、使用cin函數 由於cin通過空格、製表符、換行符來界定字符串的。故cin在獲取字符時只讀取一個單詞長度,對於有空格的字符串其空格後面字符讀不了

原创 C++中cin.clear()函數的說明及具體使用

當我們使用cin函數作爲輸入的時候,可能會出現輸入錯誤的問題,例如下面給出的例子 #include <iostream>     using namespace std; int main() {     int number;     c

原创 ndroid AIDL與proxy,stub

1.簡單使用 利用android studio開發aidl還是非常方便的,建立一個aidl的後綴文件,在service與activity分別完成實現與引用就可以了 舉例: aidl文件 interface IMyAidlInterfa

原创 C++中關於new及動態內存分配的思考

如何實現一個malloc? malloc_tutorial.pdf ————————————————————————————————————     我們知道,使用malloc/calloc等分配內存的函數時,一定要檢查其返回值是否爲“空

原创 C++中函數返回臨時對象和本地對象的區別

    C++中函數返回臨時對象和本地對象的區別                 在C++中如果函數返回值是對象的時候,那麼該直接返回臨時對象呢,還是先在函數體內構造好一個本地 對象,然後返回。如果可以直接返回臨時對象,那麼我們就返回臨時對

原创 C++ const volatile constexpr static

前言 這是面試官比較喜歡問的問題,咱們把它解決掉,開始。 volatile 遇到這個關鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進行優化,從而可以提供對特殊地址的穩定訪問。 當要求使用 volatile 聲明的變量的值的時候,系統總是重

原创 Linux內核的任務

1.從技術層面講,內核是硬件與軟件之間的一箇中間層。作用是將應用層序的請求傳遞給硬件,並充當底層驅動程序,對系統中的各種設備和組件進行尋址。 2.從應用程序的層面講,應用程序與硬件沒有聯繫,只與內核有聯繫,內核是應用程序知道的層次中的最底層

原创 求解C++常量左值引用爲什麼可以綁定一個右值

如題,正常情況下引用代表變量的一個別名,如: int a = 1; int &b = a; //ok(b是a的一個別名,兩者指向相同的內存地址) int &c = 2;//error(不能將非常量左值引用綁定到右值2) const int

原创 STL——仿函數(函數對象)

一、仿函數(也叫函數對象)概觀 仿函數的作用主要在哪裏?從第6章可以看出,STL所提供的各種算法,往往有兩個版本,其中一個版本表現出最常用(或最直觀)的某種運算,第二個版本則表現出最泛化的演算流程,允許用戶“以template參數來指定所要

原创 與 C++11 多線程相關的頭文件

C++11 新標準中引入了四個頭文件來支持多線程編程,他們分別是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。   <atomic>:該頭文主要聲明瞭兩個類, std::

原创 Android HAL層庫加載原理

Android HAL層庫加載原理 Android HAL層的由來:由於市面做移動芯片的廠商很多,大部分廠商考慮到自己硬件的設計架構、安全、專利等方面原因,不願意公開自己的這方面代碼,也出於不同廠商硬件架構不太一樣,適配開發難度週期長,GO

原创 C++基礎知識:泛型編程

1.泛型編程的概念 ---不考慮具體數據類型的編程模式 Swap 泛型寫法中的 T 不是一個具體的數據類型,而是泛指任意的數據類型. 2.函數模板 - 函數模板其實是一個具有相同行爲的函數家族,可用不同類型進行調用 - 函數模板可以根據

原创 C++STL----容器高效使用

1. 容器中對象拷貝高效、防剝離發生的方法:          使容器包含指針而不是對象。( ps:STL容器是在創建拷貝,相比數組,是動態創建,節省時間和空間)   2. 總是調用empty()而不

原创 Android Binder機制(一)

binder用於android進程間的通訊。客戶端程序和系統服務,客戶端進程之間,都是通過binder進行進程間通訊的。 1.客戶端程序和系統服務 客戶端和系統服務通訊的入口:cotext.getSystemService(Str