原创 冒泡排序(c/c++算法學習過程筆記)

一、思想 像冒泡一樣,從前到到後遍歷數組,前後做對比,前面比後面大的則交換(升序) 二、冒泡排序(未優化的)代碼實現,升序:遍歷找出最大值,時間複雜度O(n平方) void swap(int* num1,int*num2){

原创 選擇排序(c/c++算法學習記錄)

一、思想   遍歷找出最小值,再進行交換,時間複雜度O(n平方)   二、代碼實現 void swap(int* num1,int*num2){ int temp; temp = *num1; *num1 = *

原创 單鏈表的代碼(java)

1、單鏈表代碼實現     /** * 文件描述:手寫單鏈表以及單鏈表的翻轉(不考慮代碼優化的情況) * 作者:chenjingkun708 * 創建時間:2020/3/20 * 更改時間:2020/3/20 */ publi

原创 Java HashMap源碼分析與手寫

1. HashMap是怎樣一種數據結構 數組+ 鏈表 + 紅黑樹(jdk1.8引入,後面也是按照jdk1.8的來分析)   2. HashMap爲什麼取值快?       HashMap在存儲的時候,根據key的hash值(實際上還右移1

原创 樹-數據結構與算法(學習記錄過程筆記)

一、樹的定義?      程序中什麼是樹?       符合下面兩點定義的,可以成爲程序中的樹的結構:      1、有且只有存在一個根節點      2、有若干互不相交的子節點,從子節點出發,又是一個子樹,子樹也是一個樹(所以可以用遞歸

原创 HashMap、HashSet、TreeMap、TreeSet、LinkedHashMap的數據結構以及適用場景

HashMap:                  數組+鏈表+紅黑樹實現。通過hashcode映射方式,能更快的查詢。一般用於對健值對方式快速查詢的使用場景。但是線程不安全,線程的安全的話可以使用tableMap,但tableMap的鎖

原创 EventBus的優化——KeventBus

一、前言 eventbus3.0的優缺點分析: eventbus基於觀察者模式,用很少的代碼,幫我們實現很多功能,使我們的代碼變得很優雅。但是大面積的使用eventbus之後,會發現一些很嚴重的問題 需要創建很多的類來區分訂閱方

原创 加密過程安全研究

數據加密安全   一、不加密的數據有何安全問題? 1、數據容易被不法問題抓包,一覽無餘,特別是密碼,與金融相關的數據,數據安全問題尤其重要。 2、易被篡改,接收方與發送方的內容不一致。 3、沒有鑑權,易被假冒身份。 網絡數據安全建議使用H

原创 Android 進程通信方式

一、android 提供了幾種進程通信(IPC)方式: 1、共享內存(只能用於共享,傳遞得用Binder)       實現方式: 序列化到內存,如paracelable和serializable序列化到共享內存(有其中一個進程提供)  

原创 Android註解、反射、泛型的學習記錄

註解:        Annotation其實就是代碼裏的特殊標記, 它用於替代配置文件,也就是說,傳統方式通過配置文件告訴類如何運行,有了註解技術後,開發人員可以通過註解告訴類如何運行,註解本身對程序運行不會發生什麼變化,而通過反射取得

原创 搜索二叉樹的手寫

/** * 文件描述:手寫二叉搜索樹(左小右大的) * 作者:chenjingkun708 * 創建時間:2020/3/24 * 更改時間:2020/3/24 */ public class MyBinarySearchTr

原创 快速排序算法(C\C++算法學習過程記錄)

一、快速排序思想      快速排序是冒泡排序的改善算法,冒泡排序只能在相鄰的兩個值之間進行比較交換,這樣交換的次數比較多的情況下,效率比較低,而快速排序的思想是分治和遞歸的思想,取定數組其中一個值作爲基數,將待排序數組排序分爲左邊小於基