原创 快速排序

快速排序採用了分而治之的策略(divide and conquer,D&C),一種著名的遞歸式問題解決方法。 分而治之的工作原理: 找出簡單的基線條件 確定如何縮小問題的規模,使其符合基線條件 使用遞歸實現數組元素求和: ja

原创 選擇排序算法解析

選擇排序是遍歷列表,然後每次將最大或者最小的數保存到新的列表,這樣就得到了排好序的列表。選擇排序時間複雜度爲O(n^2) 實現選擇排序的基本步驟如下: 先從第一個元素開始,相鄰的兩個元素進行比較,最後得出第一次比較中最小的元素;

原创 IO系列之字節流和字符流

IO流的分類 根據處理數據類型的不同分爲:字符流和字節流 根據數據流向不同分爲:輸入流和輸出流 進行輸入、輸出操作一般都會按照如下步驟進行: 通過File類定義一個要操作文件的路徑 通過字節流或字符流的子類對象爲父類

原创 Spring Cloud集成ELK完成日誌收集實戰(elasticsearch、logstash、kibana)

簡介 對於日誌來說,最常見的需求就是收集、存儲、查詢、展示,開源社區正好有相對應的開源項目:logstash(收集)、elasticsearch(存儲+搜索)、kibana(展示),我們將這三個組合起來的技術稱之爲ELK,所以說E

原创 IO系列之對象序列化

1. 對象序列化介紹 對象序列化的目標是將對象保存到磁盤中,或允許在網絡中直接傳輸對象。對象序列化機制允許把內存中的Java對象轉換成平臺無關的二進制流,從而允許把這種二進制流持久地保存在磁盤上,通過網絡將這種二進制流傳輸到另一個

原创 JAVA NIO(二)緩衝區(Buffer)

文章目錄1. 緩衝區基本概念2. 直接緩衝區與非直接緩衝區2.1 直接緩衝區2.2 非直接緩衝區 1. 緩衝區基本概念 緩衝區(Buffer):在java NIO中負責數據的存取。緩衝區就是數組,用於存儲不同數據類型的數據 根

原创 JAVA NIO(四)NIO非阻塞式網絡通信

1. 阻塞與非阻塞 傳統的IO流都是阻塞式的。也就是說,當一個線程調用read()或write()時,該線程被阻塞,直到有一些數據被讀取或寫入,該線程在此期間不能執行其他任務。因此,在完成網絡通信進行 IO 操作時,由於線程會阻

原创 IO系列之緩衝流詳解

緩衝流是一個包裝流,目的起緩衝作用. 1. 緩衝流的作用 不帶緩衝的操作,每讀一個字節就要寫入一個字節,由於涉及磁盤的IO操作相比內存的操作要慢很多,所以不帶緩衝的流效率很低。 帶緩衝的流,可以一次讀很多字節,但不向磁盤中寫入,只

原创 JAVA NIO(三)通道(Channel)

1. 通道(Channel) 通道(Channel):由java.nio.Channels包定義的。Channel表示IO源與目標打開的連接。Channel類似於傳統中的“流”,只不過Channel本身不能直接訪問數據,Chan

原创 java實現文件夾的拷貝(複製文件夾)

複製文件夾其實就是通過遞歸複製文件的過程,具體實現如下: /** * 複製文件夾(使用緩衝字節流) * @param sourcePath 源文件夾路徑 * @param targetPath 目標

原创 vim常用命令總結 (轉)

1.刪除字符  要刪除一個字符,只需要將光標移到該字符上按下"x"。2.刪除一行  刪除一整行內容使用"dd"命令。刪除後下面的行會移上來填補空缺。3.刪除換行符  在Vim中你可以把兩行合併爲一行,也就是說兩行之間的換行符被刪除了:命令

原创 Spring系列(一)Spring裝配bean詳解

裝配(wiring): 創建應用對象之間協作關係的行爲。 依賴注入的本質是裝配。 1 Spring配置的可選方案 Spring容器負責創建應用程序中的bean並通過DI來協調這些對象之間的關係。 Spring提供了三種主要的裝配機制:

原创 Spring系列(二)Spring bean的高級裝配詳解

1 環境與profile 在開發軟件的時候,有一個很大的挑戰就是將應用程序從一個環境遷移到另一個環境。在開發階段中,某些相關做法可能並不適合遷移到生產環境中,甚至遷移過去也無法正常工作。數據庫配置就是比較常見的例子。 Spring爲環境相

原创 mysql系列(六)SQL語句之從數據庫中查詢數據

前言 一、檢索數據(基礎查詢) 1.1 檢索單個列 1.2 檢索多個列 1.3 檢索所用列 1.4 檢索不同的行(即返回沒有重複的數據) 1.5 限制結果 1.6 使用完全限定的表名 二、排序 2.1 單個排序 2.2

原创 mysql系列(八)sql語句之創建計算字段

前言 有時候儲存在數據庫表中的數據不是應用程序所需的格式,例如想在一個字段中既顯示公司名又顯示顯示公司地址,但這兩個信息一般保存在不同的表列中,這時候就需要使用計算字段,直接從數據庫中檢索出轉換、計算或者格式化的數據,而不是直接返回數據庫