原创 android studio在ndk中打log

android.ndk { moduleName = "JniLib"//so庫的名字 ldLibs.addAll(['android', 'log']) } 新版的dsl像上面添加(現在基

原创 創建對象和繼承

1.創建對象 //工廠模式---無法識別對象,無法知道對象類型 function createPerson(name, age) { var person = new Object(); person.name =

原创 Glide緩存機制

1.LinkedHashMap——http://blog.csdn.net/lxj1137800599/article/details/54976180 2.cleanupCallable(涉及到ThreadPoolExecut

原创 js事件瀏覽器兼容案例

var EventUtil = { //返回對event對象的引用 getEvent: function (event) { return event ? event : window.event;

原创 android studio使用ndk編程的注意點

1.無法確定AssetManager的簽名 這是因爲native函數中存在不常用的類,而我們需要,唯一的方法就是從sdk中取出android.jar,後綴名改成rar,然後解壓到某個目錄,最後在javah中添加bootstrap

原创 volatile,synchronized,ReentrantLock

synchronized 實現機制:反編譯以後monitor 優化:自旋鎖,適應自旋鎖,輕量級鎖等 所謂自旋鎖,就是讓該線程等待一段時間,不會被立即掛起,看持有鎖的線程是否會很快釋放鎖。怎麼等待呢?執行一段無意義的循環即可(自

原创 android studio編寫jni,ndk程序(不用mk文件)

1.快速生成頭文件 (1)打開as的Terminal,輸入cd app/src/main/java (2)通過javah生成頭文件:javah -d ../jni -jni test.ndkdemo.PrintUtil(包名+類

原创 原型和閉包(整理)

匿名函數:function後面沒有標識符。匿名函數中this指向window 閉包:有權訪問另一個作用域中的變量的函數。有兩種情況:函數作爲返回值(在一個函數內部創建另一個函數),函數作爲參數傳遞 每個函數function都有一

原创 動態代理

1.重要參數: 在java的動態代理機制中,有兩個重要的類或接口,一個是 InvocationHandler(Interface)、另一個則是 Proxy(Class),這一個類和接口是實現我們動態代理所必須用到的。 (1)In

原创 源碼閱讀--騰訊Tinker熱修復框架

先要配置這麼一段話:後面會談到爲什麼以及如何改變這些默認設置 public static void installTinker(ApplicationLike appLike) { //or you can

原创 Rxjava2學習

1.去重 Flowable.just(1, 1, 1, 2, 2, 3, 4, 5) .distinct() .subscribe(new Consumer<Inte

原创 post和get的區別

參考:菜鳥學院 點贊 收藏 分享 文章舉報 勇敢地追 發佈了223 篇原創文章 · 獲贊 23 · 訪問量 18萬+ 私信

原创 類加載器

類加載器基本概念 顧名思義,類加載器(class loader)用來加載 Java 類到 Java 虛擬機中。一般來說,Java 虛擬機使用 Java 類的方式如下:Java 源程序(.java 文件)在經過 Java 編譯器編譯

原创 編譯時註解(三)Arouter源碼講解

項目中我們有時需要跨模塊startActivity,但是這樣需要配置menifest,不方便。這時就需要阿里的一個路由框架Arouter Arouter的使用就不再多說了。這篇文章主要講解他的源碼 1.初始化 ARouter.init

原创 CountDownLatch介紹

在項目中,我們通常會執行一些耗時操作,有的時候是同時執行若干個,然後執行完了還要等結果。通常我們會怎麼做呢?Handler,或者runOnUIThread。但是有沒有別的選擇了呢?有的,就是CountDownLatch 先來看個例子