原创 JVM自啓動線程

代碼中不包含創建線程操作,在運行main時, JVM也會自動地啓動其他的線程,這些線程都有特定的功能   Attach Listener :該線程是負責接收到外部的命令,執行該命令,並且把結果返回給發送者。通常我們會用一些命令去要求j

原创 排序算法之歸併排序分析

歸併排序 排序思想: 歸併排序使用的就是分治思想,將一個大問題分解成小的子問題來解決。小的子問題解決了,大問題也就解決了。  這種將大問題分解成小問題的思想與遞歸很像,分治和遞歸的區別就是:分治是一種解決問題的處理思想,遞歸是一種編程技巧

原创 摩爾定律與阿姆達爾定律

摩爾定律 當價格不變時,集成電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,性能也將提升一倍   CPU長期都是以指數型快速提高,但是近年來,CPU主頻始終保持在4G赫茲左右,無法再進一步提升。摩爾定律逐漸失效 阿姆達爾定

原创 203.移除鏈表元素(力扣) Java實現

題目  刪除鏈表中等於給定值 val 的所有節點。 示例: 輸入: 1->2->6->3->4->5->6, val = 6 輸出: 1->2->3->4->5   原鏈表操作 /** * Definition for singly

原创 自檢鏈表代碼的技巧

自檢鏈表代碼尤其要重點留意邊界條件處理,自檢代碼的着手點通常如下: 一、如果鏈表爲空時,代碼是否能正常工作? 二、如果鏈表只包含一個結點時,代碼是否能正常工作? 三、如果鏈表只包含兩個結點時,代碼是否能正常工作? 四、代碼邏輯在處理頭結點

原创 串行、並行和併發

 串行、並行和併發 並行和併發 併發:1.一個處理器。2.邏輯上的同時運行 並行:2.多個處理器。2.物理上的同時運行 併發:一個咖啡機,交替 並行:多個咖啡機   並行:真正的“同時”運行,在同一時刻,有多個任務同時執行。(例如,

原创 876.鏈表的中間節點(力扣) Java實現

給定一個帶有頭結點 head 的非空單鏈表,返回鏈表的中間結點。 如果有兩個中間結點,則返回第二個中間結點。 示例 1: 輸入:[1,2,3,4,5] 輸出:此列表中的結點 3 (序列化形式:[3,4,5]) 返回的結點值爲 3 。

原创 利用數組和鏈表實現一個隊列

什麼是隊列 可以把它想象成排隊買票,先來的先買,後來的人只能站末尾,不允許插隊。 隊列的最大特點就是“先進先出”。 棧有兩個基本操作:入棧 push()和出棧 pop()。入棧和出棧都是在棧頂。 隊列最基本的操作也是兩個:入隊 enque

原创 用數組實現一個循環隊列

public class RoundQueue { private String[] items; private int n; private int front; private int rear;

原创 棧的應用

當某個數據集合只涉及在一端插入和刪除數據,並且滿足後進先出、先進後出的特性,我們就應該首選“棧”這種數據結構。 在函數調用中的應用 操作系統給每個線程分配了一塊獨立的內存空間,這塊內存被組織成“棧”這種結構, 用來存儲函數調用時的臨時變量

原创 排序算法階段總結(二)——如何選擇合適的算法

當數據符合線性排序對數據的要求 當數據符合線性排序的要求時,優先使用線性排序。時間複雜度爲O(n)。 但是對於大多數情況下,數據並不一定符合線性排序的數據要求。   小規模數據 如果對於小規模的數據排序,我們可以選擇時間複雜度是 O(n

原创 數據結構——數組

數組是一種線性表數據結構。它用一組連續的內存空間,來存儲一組具有相同類型的數據。 線性表 線性表就是數據排成像一條線一樣的結構。每個線性表上的數據最多隻有前和後兩個方向。 除了數組,鏈表、隊列、棧等也是線性表結構。 非線性表 與之對應的就

原创 正確理解高併發與多線程的關係

高併發 高併發:大量的請求同時到達服務器,是一種狀態(大量的請求同時到達服務器,所帶來的結果,服務器需要同時處理很多請求。 系統需要應對高併發帶來的後果,如果處理不當,會導致請求的響應速度慢、無響應甚至服務器死機)。   多線程 多線程編

原创 遞歸的技巧以及注意事項

什麼是遞歸 遞歸是一種非常高效、簡潔的編碼技巧,一種應用非常廣泛的算法。 比如DFS深度優先搜索、前中後序二叉樹遍歷等都是使用遞歸。   方法或函數調用自身的方式稱爲遞歸調用,調用稱爲遞,返回稱爲歸。 什麼問題可以用遞歸解決? 1.一個問

原创 類之間的關係

面向對象編程中,除了繼承關係之外,還有一些其他類關係:泛化和實現,依賴,關聯、聚合和組合 繼承也被稱爲Is-A關係,因爲從另一個類繼承而來的類能夠被當成父類來使用   泛化 當一個類表示多個類的共享特徵時,這稱之爲泛化。當一個類表示一般類