原创 代碼整潔之道——有意義的命名(筆記)

名副其實 選個好名字要花時間,但省下來的時間會比花掉的多。注意命名,而且一旦發現有更好的名稱,馬上換掉舊的。 變量、函數或類的名稱應該已經答覆了所有的大問題。它該告訴你,它爲什麼會存在,它做什麼事,應該怎麼用。如果名稱需要註釋

原创 Gradle依賴管理

Gradle依賴庫緩存 Gradle拉取的aar庫保存在本地的~/.gradle文件夾和~/.m2文件夾中。由於早期版本的Gradle在緩存的處理上有些問題,有時會出現aar更新後無法生效的問題,可以通過刪除上面緩存的方式進行修復

原创 Https建立過程

HTTPS建立連接過程HTTPS定義HTTPS本質HTTPS建立連接過程客戶端建立TLS連接服務器發回證書客戶端驗證服務器證書客戶端和服務器協商對稱密鑰使用對稱密鑰開始通信 HTTPS定義 在HTTP之下增加一個安全層,用於保障H

原创 觀察者模式

觀察者模式定義使用場景主要角色SubjectConcrete SubjectObserverConcrete Observer優點缺點 定義 定義對象間一種一對多的依賴關係,使得每當一個對象改變狀態,則所有依賴於它的對象都會得到通

原创 關於加密

關於加密對稱加密非對稱加密數字簽名 對稱加密 加密算法 解密算法 密鑰 密鑰 原數據 ————>密文————>原數據 常用的算法有:DES、AES 非對稱加密 加密算法 加密算法

原创 關於Http協議

關於Http協議格式Request MethodsStatus CodeHeader HTTP: Hypertext Transfer Protocal 格式 示例:http://github.com/user/?gender=m

原创 策略模式

策略模式定義使用場景 定義 定義了一系列的算法,並將每一個算法封裝起來,而且使它們還可以相互替換. 讓算法獨立於使用它的客戶而獨立變化. 使用場景 針對同一類型問題的多種處理方式,僅僅是具體行爲有差別時 需要安全地封裝多種同一類

原创 原型模式

原型模式定義使用場景 定義 用原型實例指定創建對象的種類,並通過拷貝這些原型創建新的對象 使用場景 類初始化需要消耗非常多的資源 通過new產生一個對象需要非常繁瑣的數據準備或訪問權限 一個對象需要提供給其他對象訪問,而且各個調

原创 抽象工廠方法模式

抽象工廠方法模式定義四到模塊 定義 爲創建一組相關或者是相互依賴的對象提供一個接口,而不需要指定它們的具體類. 四到模塊 雖然抽象工廠方法模式的類繁多,但主要還是分四類: AbstractFactory:抽象工廠角色 Concr

原创 狀態模式

狀態模式定義使用場景 定義 當一個對象的內在狀態改變時允許改變其行爲,這個對象看起來像是改變了其類 使用場景 一個對象的行爲取決於它的狀態,並且它必須在運行時根據狀態改變它的行爲 代碼中包含大量與對象狀態有關的條件語句

原创 面向對象的六大原則

面向對象六大原則單一職責原則 Single Responsibility Principle開閉原則 Open Close Principle里氏替換原則 Liskov Substitution Principle依賴倒置原則 D

原创 Android 8.0 啓動Service適配(Not allowed to start service Intent)

問題現象: App出現異常: java.lang.IllegalStateException: Not allowed to start service Intent  xxxx    app is in background uid U

原创 LeetCode 3. 無重複字符的最長子串

無重複字符的最長子串 給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 示例 1: 輸入: “abcabcbb” 輸出: 3 解釋: 因爲無重複字符的最長子串是 “abc”,所以其長度爲 3。 示例 2: 輸入:

原创 LeetCode 67. 二進制求和

二進制求和 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入爲非空字符串且只包含數字 1 和 0。 示例 1: 輸入: a = “11”, b = “1” 輸出: “100” 示例 2: 輸入: a = “1010”,

原创 沉浸式狀態欄設置

1. 在layout中設置 android:fitsSystemWindows="true" 2. 在app的build.gradle中導入 implementation 'com.readystatesoftware.systemb