原创 【筆記86】非常謹慎地實現 Serializable

  使類的實例可序列化非常簡單,只需實現 Serializable 接口即可。因爲這很容易做到,所以有一個普遍的誤解,認爲序列化只需要程序員付出很少的努力。而事實上要複雜得多。雖然使類可序列化的即時代價可以忽略不計,但長期代價通常是巨大的

原创 Android Gradle使用--詳細版

原文鏈接:http://blog.csdn.net/zhaoyanjun6/article/details/77678577 本文出自【趙彥軍的博客】 關於gradle上邊鏈接這個貼子說的非常具體了 , 但是隨着gradle升級,內容有一

原创 Java的強引用,軟引用,弱引用,虛引用

從 JDK1.2 版本開始,Java 把對象的引用分爲四種級別,從而使程序能更加靈活的控制對象的生命週期。這四種級別由高到低依次爲:強引用、軟引用、弱引用和虛引用。 1、強引用(Strong Reference) 強引用就是我們經常使用的

原创 【筆記85】優先選擇 Java 序列化的替代方案

  當序列化在 1997 年添加到 Java 中時,它被認爲有一定的風險。序列化的一個根本問題是它的可攻擊範圍太大,且難以保護,而且問題還在不斷增多:通過調用 ObjectInputStream 上的 readObject 方法反序列化對

原创 Java中的Heap 和 Stack

棧(stack)與堆(heap)都是Java用來在Ram中存放數據的地方。與C++不同,Java自動管理棧和堆,程序員不能直接地設置棧或堆。 RAM即隨機存儲內存,這種存儲器在斷電時將丟失其存儲內容,故主要用於存儲短時間使用的程序。 R

原创 【筆記87】考慮使用自定義的序列化形式

  在沒有考慮默認序列化形式是否合適之前,不要接受它。一般來說,設計自定義序列化形式時,只有與默認序列化形式所選擇的編碼在很大程度上相同時,才應該接受默認的序列化形式。   對象的默認序列化形式,描述了對象中包含的數據以及從該對象可以訪問

原创 【筆記82】文檔應包含線程安全屬性

錯誤說法:你可能聽說過,可以通過在方法的文檔中查找 synchronized 修飾符來判斷方法是否線程安全。這個觀點有好些方面是錯誤的。在正常操作中,Javadoc 的輸出中沒有包含同步修飾符,這是有原因的。方法聲明中 synchroni

原创 【筆記88】保護性的編寫 readObject方法

  第 50 條介紹了一個不可變的日期範圍類,它包含可變的私有變量 Date。該類通過在其構造器和訪問方法(accessor)中保護性的拷貝 Date 對象,極力維護其約束條件和不可變性。該類代碼如下所示: // Immutable c

原创 【筆記80】executor 、task 和 stream 優先於線程

本書第 1 版中闡述了簡單的工作隊列(work queue)[Bloch01]的代碼。這個類允許客戶端按隊列等待由後臺線程異步處理的工作項目。當不再需要這個工作隊列時,客戶端可以調用一個方法,讓後臺線程在完成了已經在隊列中的所有工作之後,

原创 安卓10.0新特性與開發適配

本文將重點介紹該版本特性中部分需要開發適配的部分。彙總自己踩過的坑以及百度所得,本文會持續更新。 背景:谷歌在GoogleI / O 2019發佈了Android Q Beta X。對當前應用影響重大,急需適配。 API = 29;主要影

原创 組件化和模塊化對比

項目裏面組件化開發和模塊化開發都是常用手段,關於兩者的區別有必要進行一下梳理。   概念: 組件:把重複的代碼提取出來合併成爲組件,功能相對單一,主要目的是重用。位於框架最底層,可供不同功能使用/依賴,獨立性強。 模塊:按功能/業務來進行

原创 Android UI優化技巧

查找Overdraw Overdraw(過度繪製)描述的是屏幕上的某個像素在同一幀的時間內被繪製了多次。在重疊的UI佈局中,如果不可見的UI也在做繪製的操作或者後一個控件將前一個控件遮擋,會導致某些像素區域被繪製了多次,從而增加了CPU,

原创 Android API與Android版本的關係

名稱 Android版本 API版本 Android Q 10.0 29 Pie 9.0 28 Oreo 8.0 – 8.1 26 – 27  Nougat 7.0 – 7.1.2   24 – 25 Marshmallow 6.0 –

原创 Android 5.0、6.0、7.0、8.0主要新特性

Android 5.0(API 21) 1. Android Runtime(ART)。 2. 聲音和振動:如果您當前使用 Ringtone、MediaPlayer 或 Vibrator 類向通知中添加聲音和振動,則移除此代碼,以便系統可

原创 Android 各種版本號說明

gradle中涉及的四個版本號: compileSdkVersion = 28 minSdkVersion = 16 targetSdkVersion = 28 buildToolsVersion = "28.0.3" buildT