原创 Drawable系列之-Drawable簡介

Drawable有很多種,它們都表示一種圖像的概念,但是它們又不全是圖片,通過顏色也可以構造出各式各樣的效果。在實際開發中,Drawable常被用來作爲View的背景使用。Drawable一般都是通過XML來定義的,當然我們也可以通過代碼

原创 Drawable系列之-BitmapDrawable

這幾乎是最簡單的Drawable了,它表示的就是一張圖片。在實際開發中,我嗎可以直接引用原始圖片即可,但是也可以通過XML的方式來描述它,通過XML來描述的BitmapDrawable可以設置更多的效果,如下所示: 下面是它的各個屬性的

原创 Java併發基礎知識(一)

()一、Java裏的程序天生就是多線程的,那麼有幾種新啓線程的方式? 正確的答案應該是2種:1、類Thread;2、接口Runnable,有些人覺得應該是3個,還有一個是Callable接口,其實這個和Runnable是重複的,我們看源碼

原创 Android Glide4.10.0引發的血案

今天下載最新的android studio3.5.1,導入了一個老項目,項目中的glide版本爲4.8.0,可正常使用。 後來把glide版本升級爲4.10.0,也是可以運行的,但在項目裏面有一個功能用到glide加載圖片,竟然崩潰了,以

原创 AES加密加固

一、反編譯 1.定義:利用編譯程序從源語言編寫的源程序產生目標程序的過程。 2.怎麼進行反編譯? 先了解apk對文件構造 二、加固方案的手段 1.反模擬器:模擬器運行apk,可以用模擬器監控到apk的各種行爲,所以在實際的加固apk運行

原创 Java併發基礎知識(四)

阻塞隊列 阻塞隊列 隊列   隊列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲

原创 Java併發基礎知識(二)

ThreadLocal辨析 與Synchonized的比較 ThreadLocal和Synchonized都用於解決多線程併發訪問。可是ThreadLocal與synchronized有本質的差別。synchronized是利用鎖的機制,

原创 Java併發基礎知識(五)

線程池 爲什麼要用線程池? Java中的線程池是運用場景最多的併發框架,幾乎所有需要異步或併發執行任務的程序都可以使用線程池。在開發過程中,合理地使用線程池能夠帶來3個好處。 第一:降低資源消耗。通過重複利用已創建的線程降低線程創建和銷

原创 Java併發基礎知識(三)

CAS基本原理 什麼是原子操作?如何實現原子操作? 假定有兩個操作A和B(A和B可能都很複雜),如果從執行A的線程來看,當另一個線程執行B時,要麼將B全部執行完,要麼完全不執行B,那麼A和B對彼此來說是原子的。 實現原子操作可以使用鎖,鎖