原创 Java的反射機制學習1

Reflection(反射)是被視爲動態語言的關鍵,反射機制允許程序在執行期藉助於Reflection API取得任何類的內部信息,並能直接操作任意對象的內部屬性及方法. 下面以Person類爲例子,對反射進行學習 publi

原创 多線程學習-線程通信

等待/通知機制 等待/通知機制在生活中比比皆是,舉一個例子,廚師與服務員的例子,他們之間的交互在“菜品傳遞臺”。 1、廚師做完一道菜的時間不確定,所以廚師將菜品放到“菜品傳遞臺”上的時間也不確定。 2、服務員取到菜的

原创 JVM垃圾回收器學習筆記01

JVM垃圾回收器學習筆記01JVM GC概述哪些內存需要回收什麼時候回收可達性分析算法如何回收參考 JVM GC概述 垃圾回收器,簡稱GC,也可以說是內存回收器,垃圾回收是JVM中最核心的功能之一。垃圾回收器主要關注三個問題:

原创 java學習-繼承

類的繼承 關鍵字:extends,不支持多重繼承。 子類可以繼承父類中訪問權限設定爲public、protected、default的成員變量和方法。不能訪問權限設定爲private的變量和方法。 成員變量的隱藏和方法的重寫

原创 多線程學習--ThreadLocal類的使用

引入 類ThreadLocal主要解決的就是每個線程綁定自己的值,可以將ThreadLocal類比喻成全局存放數據的盒子,盒子裏可以存儲每個線程的私有數據。使線程變量具有隔離性。 案例 設置兩個線程ThreadA和Threa

原创 多線程學習-停止線程

引入 停止線程是在多線程開發時很重要的技術點,掌握此技術可以對線程的停止進行有效的處理。停止一個線程意味着在線程處理完任務之前停掉正在做的操作,也就是放棄當前操作。 判斷線程是否是停止狀態 Thread類中提供了兩種方法,i

原创 Java多線程簡單介紹-1

1、介紹 多線程比多任務更加有挑戰。多線程是在同一個程序內部並行執行,因此會對相同的內存空間進行併發讀寫操作。這可能是在單線程程序中從來不會遇到的問題。其中的一些錯誤也未必會在單CPU機器上出現,因爲兩個線程從來不會得到真正的並行執行。

原创 多線程學習-方法join的使用

引入 在很多情況下,主線程創建並啓動子線程,如果子線程要進行大量的耗時計算,主線程往往將早於子線程結束之前結束。這時,如果主線程想等待子線程執行完成之後再結束,比如子線程處理一個數據,主線程要取得這個數據的值,就要用到join(

原创 java學習-二分查找

import java.util.Random; import java.util.Scanner; public class BinaryFind { //生成隨機數 然後排序 再二分查找 用作理解二分查找

原创 隊列應用-素數環問題

問題描述: 將從1到n這n個整數圍成一個圓環,若其中任意2個相鄰的數字相加,結果均爲素數,那麼這個環就成爲素數環。 求解思路: 先將1放入素數環,設置一個隊列,將2-n的自然數全部入隊,每次對出對的一個元素k進行測試,若符合

原创 棧的學習-四則運算實例

棧和隊列 棧和隊列是兩種特殊的線性表,特殊之處在於插入與刪除操作的位置受到限制,若插入和刪除只能在線性表的一端進行,則爲棧,特點是後進先出(LIFO);若插入和刪除操作分別在線性表的兩端進行,則爲隊列,特點是先進先出(FIFO

原创 找出一組數中個數超過一半的數

問題描述 問題:找出一組數中個數超過一半的數,時間複雜度O(n) 輸入:一組數(其中必有一個數的個數是超過一半的)例: 1 1 2 4 1 3 1 2 1 輸出:數字 例: 1 代碼 public stat

原创 找出數組中的第K大的元素

問題描述 找出數組中的第K大的元素,時間複雜度爲O(n) 代碼 public class FindK { //隨機取一個基準數pivot,然後遍歷數組一次,比基準數大的逐一的放在最前面,最後返回基準數的位置 /

原创 找出數組中第K大的數

問題:找出數組中第K大的數(類似:找出一個數組中個數超過一半的數,就是找第n/2(n爲數組長度)大的數) 解法思路: 設數組A[0,1.....n-1]       1、隨機選擇數組中的一個數,將該數與A[n-1]交換 2、遍歷數組,遇到

原创 Maven學習筆記二

POM Project Object Model:項目的屬性、依賴、構建配置這些信息都被抽象到項目對象(POM)裏面。 POM組成 -項目基本信息:groupId:artifactiId:packaging:vers