原创 冒泡排序(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++算法學習過程記錄)
一、快速排序思想 快速排序是冒泡排序的改善算法,冒泡排序只能在相鄰的兩個值之間進行比較交換,這樣交換的次數比較多的情況下,效率比較低,而快速排序的思想是分治和遞歸的思想,取定數組其中一個值作爲基數,將待排序數組排序分爲左邊小於基