原创 Mysql總結之索引

MySQl索引 1,索引的概念 在關係數據庫中,索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列 或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。 目的:提

原创 快速排序之遞歸實現

快速排序的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。 簡單來

原创 【劍指offer】正則表達式 -- Java 實現

題目描述 請實現一個函數用來匹配包括"點"和"星號"的正則表達式。模式中的字符’.‘表示任意一個字符,而’'表示它前面的字符可以出現任意次(包含0次)。 在本題中,匹配是指字符串的所有字符匹配整個模式。例如,字符串aaa與模式a.

原创 Mysql總結之基本語句

Mysql DDL(數據庫定義語言) 1、數據庫 查看所有數據庫:SHOW DATABASES; 切換(選擇要操作的)數據庫: USE 數據庫名; 創建數據庫: CREATE DATABASE [IF NOT EXITS] 數據

原创 歸併排序

基本思想 歸併排序(MERGE-SORT)是利用歸併的思想實現的排序方法,該算法採用經典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞歸求解,而治(conquer)的階段則將

原创 冒泡排序、選擇排序、直接插入排序

我們來了解一下Java中常見的三種排序方式,這裏我們說的是 1.冒泡排序 2.選擇排序 3.插入排序 排序中要考慮到的主要因素是時間複雜度和空間複雜度,時間我們可以用 System.currentTimeMillis()這個來查看

原创 基數排序

要點 基數排序與本系列前面講解的七種排序方法都不同,它不需要比較關鍵字的大小。 它是根據關鍵字中各位的值,通過對排序的N個元素進行若干趟“分配”與“收集”來實現排序的。 不妨通過一個具體的實例來展示一下,基數排序是如何進行的。 設

原创 希爾排序

要點 希爾(Shell)排序又稱爲縮小增量排序,它是一種插入排序。它是直接插入排序算法的一種威力加強版。該方法因DL.Shell於1959年提出而得名。 希爾排序的基本思想是: 把記錄按步長 gap 分組,對每組記錄採用直接插入排

原创 堆排

堆排序 堆排序是利用堆這種數據結構而設計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均爲O(nlogn),它也是不穩定排序。首先簡單瞭解下堆結構。 堆 堆是具有以下性質的完全二叉樹:每個結點的值都大於或等於

原创 【劍指offer】替換空格 -- Java 實現

一、題目描述 請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。 1. 調用自帶函數 public class Solut

原创 【劍指 offer】二維數組中的查找 -- Java 實現

題目描述 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 一、暴力法 分析 挨個

原创 Callable實現多線程及線程運行狀狀態

Callable實現多線程 從最傳統來講如果要進行多線程的實現肯定要依靠的就是Runnable,但是Runnable接口有一個缺點:當線程執行完畢之後無法獲取一個返回值,所以從JDK1.5之後就提出了一個新的線程實現接口:java

原创 Thread與Runnable關係

經過一系列的分析之後可以發現,在多線程的實現過程之中已經有了兩種做法:Thread類、Runnable接口,如果從代碼的結構本身來講肯定是使用Runnable是最方便的,因爲其可以避免單繼承的侷限,同時也可以更好的進行功能的擴充。

原创 基於Runnable接口實現多線程

雖然可以通過Thread類的繼承來實現多線程的定義,但是在Java程序裏面對於繼承永遠都是存在有單繼承侷限的,所以在Java裏面有提供有第二種多線程的主體定義結構形式:實現java.lang.Runnable接口,此接口定義如下: