原创 最大子數組的和
最大子數組的和 在給定的一個數組中,找出連續的一部分數組,使其中的元素和最大。例如輸入1,-2,5,3,-3,7,-2,-1,輸出的最大子數組和爲12。 ①如果什麼都不考慮,用最直接的辦法來求解,即三重for循環來
原创 快速排序
快速排序 原理 和之前學習到的歸併排序一樣,快速排序也使用了分治的思想。假設現有一個數組a[start,end],對這個數組進行快速排序分了下面三個步驟: 分解:在數組a[start,end]中確定一個標準(一般是找a[
原创 選擇排序
選擇排序 1)原理:對於一個將要排序的數組A[n],先找出最小元素(升序排列),將其與A[0]交換,接着在數組下標爲1~n-1的元素中尋找最小值,與A[1]交換,直到排序結束。 2)C語言實現: void main
原创 Thinking In Java筆記(第五章 初始化與清理(三))
第五章 初始化與清理 5.6 成員初始化 Java盡力保證:所有變量在使用前都能得到恰當的初始化。對於方法的局部變量,Java以編譯錯誤的形式來保證。如下: void f() { int i; i++; /
原创 Java垃圾回收(一) 內存回收簡介
內存回收簡介 在Java中,它的內存管理包括兩個方面:內存分配和內存回收,這兩個方面的工作都是由JVM自動完成的,降低了Java程序員的學習難度,避免了像C/C++直接操作內存的危險。但這也使很多程序員不關心內存分配的問題
原创 Java反射機制學習筆記
Java反射機制 簡介 通過反射API可以獲取程序在運行時刻的內部結構。反射API中提供的動態代理可以原生實現AOP中的方法攔截功能。通過反射獲取到的Java類內部結構後再進行運用,和直接運用這個類效果相同,但額外的提供了
原创 Thinking In Java筆記(第八章 多態)
第八章 多態 在面向對象的程序設計語言中,多態是繼抽象和技能之後的第三種基本特徵。多態不但能夠改善代碼的組織結構和可讀性,還能夠創建可擴展的程序。 多態的作用是用來消除類型之間的耦合關係。 8.1 再論向上轉型
原创 Thinking In Java筆記(第七章 複用類)
第七章 複用類 複用代碼是Java衆多引人注目的功能之一,但想要成爲極具革命性的語言,僅僅能夠複製代碼並對之加以改變是不夠的,它還必須能夠做更多的事情。 Java中所有事物都是圍繞着類來展開的。通過創建新類來複用代
原创 Thinking In Java筆記(第五章 初始化與清理(二))
第五章 初始化與清理(二) 5.5 清理:終結處理和垃圾回收 清理的工作常常被忽略,Java有垃圾回收器負責回收無用對象佔據的內存資源。但也有特殊情況:假定對象(並非使用new)獲得了一塊”特殊”的內存區域,由於垃圾回收器
原创 Java代理模式
Java代理模式 代理可以分爲:靜態代理(StaticProxy)和動態代理(DynamicProxy)。 代理概念 爲某個對象提供一個代理,以控制這個對象的訪問。代理類和委託類有共同的父類和父接口,這樣在任何使用
原创 Thinking In Java筆記(第四章 控制執行流程)
第四章 控制執行流程 Java中使用了C的所有流程控制語句。在Java中涉及的關鍵字包括if-else,while,do-while,for,return,break,continue以及選擇語句switch。然而Java
原创 歸併排序(MERGE_SORT)
歸併排序(MERGE_SORT) 1)分治思想 :歸併排序用到了一種稱爲分治法的設計方法,分治法的思想就是將原問題的分解成爲幾個規模小的但是類似於原問題的子問題,遞歸的求解子問題,之後再合併子問題的解,來組成原問題的解。
原创 Java垃圾回收(二) 堆內存的分代回收
堆內存的分代回收 Java針對堆的垃圾回收,將堆分爲了三個較小的部分:新生代、老年代、持久代。新生代主要使用複製和標記-清除垃圾回收算法,年老代主要使用標記-整理垃圾回收算法,因此java虛擬中針對新生代和年老代分別提供了
原创 插入排序(INSERTION_SORT)
插入排序(INSERTION_SORT) 1)原理 : 插入排序對於少量的元素排序是一個有效的算法。插入排序的工作方式像是在拿撲克牌一樣,最開始的時候手裏是空的,每抽到一張牌就將其在另一隻手上按一定的規律排好序,直到所有的
原创 Volley框架解析(六)-----Cache接口及其默認實現類解析
Volley框架解析(六)—–Cache接口及其默認實現類解析 1. 前言(可直接無視跳過 不知不覺Volley的源碼分析到了Cache接口部分了,前面涉及到網絡的部分都介紹完了,在處理網絡請求返回的數據時,會根據request