原创 C++-04、可變參數、static關鍵字、const修飾函數的this、實戰類寫法、友元

可變參數 #include <iostream> #include <stdarg.h> // 可變參數的支持 using namespace std; // Java的可變參數: int ... // C++的可變參數寫法:... //

原创 C++-01、特性、常量、引用、重載、布爾

// #include <stdio.h> // C語言的標準支持 #include <iostream> // C++標準支持 C++的與衆不同 using namespace std; // 命名空間 C++ 的特性 (Java語

原创 jni-03、CMakeLists、gradle配置

查看當前設備CPU架構 adb shell getprop ro.product.cpu.abi javah 在jdk10及以上的版本中,已經刪除了javah,使用"javac -h"命令替代"javah" 所以 javah -jni

原创 jni-01、宏、jni函數詳解、數據獲取、類型轉換、簽名規則

宏語法 // TODO 預處理器不是編譯器,預處理器主要完成文本替換的操作(文本替換,以後專門在Linux中去講),預處理器都是用 #xxx 的寫法,並不是註釋哦 /* #i

原创 jni-04、靜態註冊、動態註冊、JavaVM與JNIEnv與jobject的地址問題

動態註冊性能優於靜態註冊 // 默認情況下,就是靜態註冊,靜態註冊是最簡單的方式,NDK開發過程中,基本上使用靜態註冊 // Android 系統的C++源碼:基本上都是動態註冊(麻煩) // 靜態註冊: 優點:開發簡單 // 缺點 //

原创 C++-02、命名空間、構造函數、析構函數

命名空間 #include <iostream> // 聲明std,我們的main函數就可以直接使用裏面的成員,不需要使用 std:: using namespace std; // C++自己的命名空間 (C# .net 命名空間)

原创 jni-05、排序、靜態和非靜態緩存、異常、模擬JNIEnv

排序 Java // public native void sort(int[] arr); external fun sort(arr: IntArray) // static { System.loadLibrary("native-

原创 C++-03、淺拷貝、深拷貝

淺拷貝 #define _CRT_SECURE_NO_WARNINGS // strcpy運行會報錯,支持 #include<iostream> #include<string.h> using namespace std; class

原创 jni-02、lib路徑、數組、對象、引用、extern修飾函數

lib路徑 static { // System.load(D:/xxx/xxxx/xxx/native-lib); 這種是可以絕對路徑的加載動態鏈接庫文件 System.loadLibrary("native-lib");

原创 AtomicInteger原理,CAS 機制,樂觀鎖,ABA問題

示例 val atomicInteger = AtomicInteger(10) atomicInteger.decrementAndGet()// atomicInteger-- 從靜態代碼塊可以看到,在類初始化的時候拿到值的偏移量

原创 XML佈局嵌套多少層會導致OOM

查看setContentView源碼可以看到,最終調用的是rInflate。 首先遍歷所有的節點,假如是普通的view就直接獲取,是Viewgroup的話會調用rInflateChildren, 發現在rInflateChildren裏面調

原创 自定義view哪個構造方法是不能不重寫的

在setContentView源碼可以看到普通view的創建方法是createViewFromTag。 找到view = createView(context, name, null, attrs); 點進去看到根節點的view是通過反射獲

原创 徹底解決軟鍵盤遮擋DialogFragment

問題描述 點擊edittext,彈出軟鍵盤,dialog略微上移,edittext和下面的按鈕還是被遮擋,上移的部分被切割 解決方案 設置dialog的inputMode,取消軟鍵盤彈出自動上移 監聽軟鍵盤彈出事件,動態設置dialog的p

原创 自定義註解繼承AbstractProcessor,編譯時不執行process方法?

問題描述: 繼承AbstractProcessor並重寫init、process、getSupportedAnnotationTypes方法,編譯時init和getSupportedAnnotationTypes都執行了,就是不執

原创 Dart與Java不同的地方

數據類型 基類是num 數值型的操作 運算符: +、 - 、* 、/ 、 ~/ 、 % / 除法 整數+餘數 ~/ 除法 取整 % 取餘 常用屬性: isNaN、isEven、isOdd (是否非數字、奇偶) 常用方法:abs(