原创 挖掘算法中的數據結構(一):O(n^2)排序算法之 選擇、插入、冒泡、希爾排序 及 優化

一. 前言 1 . 語言要求 對於算法而言,它其實是與語言無關的,被譽爲算法神書的《算法導論》中都是以僞碼的形式進行編寫。算法更重要的是一種思想,當你想透徹後編代碼實現就不是問題了。由於不同的語言含有獨特的特性,在某些語言實現算法

原创 JVM高級特性與實踐(十一):方法調用 與 字節碼解釋執行引擎(實例解析)

方法調用不等於方法執行,它唯一的任務就是確定被調用方法的版本,即具體調用哪一個方法,暫時不涉及方法內部的運行過程。 在程序運行時,進行方法調用是最普遍、最頻繁的操作,在講解Class文件編譯過程時,已經表明此過程不包含傳統編譯

原创 談談有關設計模式的思想精髓:變繼承關係爲組合關係、如何創建對象(單例、狀態、裝飾者模式)

說起設計模式,最廣爲人知的就是“四人幫”編寫的設計模式,其書的副標題爲軟件中可重用的元素,此書本來是一篇博士論文,它將很多通用的設計思想總結並命名成設計模式,希望開發人員之間通過專有的模式名稱交流,可惜最爲熟悉的是被濫用最多的Si

原创 JVM高級特性與實踐(十三):線程實現 與 Java線程調度

JVM高級特性與實踐(一):Java內存區域 與 內存溢出異常 JVM高級特性與實踐(二):對象存活判定算法(引用) 與 回收 JVM高級特性與實踐(三):垃圾收集算法 與 垃圾收集器實現 JVM高級特性與實踐(四):內存分

原创 JVM高級特性與實踐(十四):線程安全 與 鎖優化

在軟件業發展初期,程序編寫都是以算法爲核心,程序員會把數據和過程分別作爲獨立部分考慮,數據代表問題空間中的客體,程序代碼則用於處理這些數據,這種思維直接站在計算機的角度去抽象問題和解決問題,稱爲面向過程的編程思想。 面向過程的

原创 WireShark抓包 圖解探索網絡請求過程(五層網絡模型、三次握手、滑動窗口協議)

當我們在瀏覽器輸入URL點擊確認後,瀏覽器展示出網頁信息。可你曾想過這其中的過程是怎樣的?理論性較強的朋友可能知道後續DNS會解析地址,然後TCP/IP三次握手建立起連接,緊接着客戶端與服務器開始傳輸數據。不錯,大致過程確實如此,

原创 挖掘算法中的數據結構(三):O(n*logn)排序算法之 快速排序(隨機化、二路、三路排序) 及衍生算法

在上一篇博文中學習了時間複雜度爲 O(n*logn) 的歸併算法,介紹其兩種實現方式——自頂向下和自底向上,不同於O(n^2)排序算法,O(n *logn)在處理百萬級數據量上有明顯的性能優勢。而此篇文章將介紹具有代表性O(n *

原创 挖掘算法中的數據結構(二):O(n*logn)排序算法之 歸併排序(自頂向下、自底向上) 及 算法優化

在上一篇博文中學習了時間複雜度爲 O(n^2)的幾個排序算法(選擇、插入、冒泡、希爾排序),其中尤爲需要注意的是插入排序,在近乎有序的測試用例條件下,此算法的效率會高於O(n*logn)的排序算法,所以它的效率不容小覷。 但是O(

原创 挖掘算法中的數據結構(七):二分搜索樹(刪除、廣度優先遍歷、順序性)及 衍生算法問題

上篇博文介紹了二分查找算法和二分搜索樹的基本操作,如插入、查找、深度優先遍歷,此篇博文將要介紹二分搜索樹的廣度優先遍歷、順序性、侷限性等相關知識,還有二分搜索樹中最複雜的部分——刪除節點及衍生的算法知識,涉及到的知識點如下: 層

原创 優雅設計封裝基於Okhttp3的網絡框架(五):多線程、單例模式優化 及 volatile、構建者模式使用解析

關於多線程下載功能,前四篇博文所講解內容已經實現,接下來需要對代碼進行優化。開發一個新功能並不複雜,難的是考慮到代碼的擴展性和解耦性,後續需要進行的bug修復、完善功能等方面。此篇內容主要講解代碼優化,將從線程優化、單例優化、設計

原创 挖掘算法中的數據結構(六):二分查找 和 二分搜索樹(插入、查找、深度優先遍歷)

此篇文章將介紹二叉搜索樹(Binary Search Tree),同上篇文章介紹的二叉堆本質上類似,都是一個二叉樹。選擇什麼特徵的二叉樹是根據具體問題來決定的,需謹記選擇數據結構的核心在於解決問題,並非爲了使用而使用,而是因爲二叉

原创 小程序調研相關文章鏈接

小程序原理介紹文章大都簡單談論了一下技術實現架構,科普性偏多,可重點看下標記星星鏈接。 此次調研除了之前已知的致力於統一端的美團MpVue、京東Taro前端框架,還了解了去哪兒的娜娜奇腳手架,基於 React 的多端小程序轉譯框架,主

原创 Android熱修復(一):底層替換、類加載原理總結 及 DexClassLoader類加載機制源碼探索

前言 新型產品的誕生,自然是源於人們的需求,而新型技術的出現,也是昭示着技術在日新月異的發展中出現了缺陷,需要提高其“健壯性”,解決問題。萬物誕生皆有因,何物不盡然? —–From LemonGuo 在早期的Android開發中,若

原创 Android 高級UI解密 (四) :花式玩轉貝塞爾曲線(波浪、軌跡變換動畫)

講解此UI系列必然少不了一個奇妙數學曲線—–貝塞爾曲線,它目前運用於App的範圍是在太廣了,最初的QQ氣泡拖拽,到個人界面的波浪效果、Loading波浪效果,甚至於軌跡變化的動畫都可以依賴貝塞爾曲線完成,多麼完美的曲線,妙也! 此篇文章並

原创 Android 源碼詳解:View的事件分發機制

(在此聲明:以下內容爲閱讀任玉剛老師的《Android開發藝術探索》中結合自身理解融合而成) 問題: 1. 點擊事件傳遞過程中,若所有View不消費此事件,結果?1 2. Window是如何傳遞事件給ViewGroup?2 3.