原创 矩陣中的路徑

**請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。 路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。 如果一條路徑經過了矩陣中的某一個格子,則之後不能再次進入

原创 Java 集合中 TreeSet的 Comparable 與Comparator兩個接口的實現方法

TreeSet 是可排序的集合 要實現該集合必須要在類裏或者集合構造器中傳入 實現比較器接口的方法,否則會報錯 一共有兩種 :Comparable 和 Comparator Comparator 在TreeSet的有參構造器中傳入

原创 Java併發編程 - CAS 底層剖析

Java併發編程 - CAS 底層剖析   由volatile關鍵字可知,他可以保證JMM內存模型的可見性和有序性(禁止指令重排序)但是不能保證原子性,導致線程安全問題,我們可以加synchronized關鍵字來解決但是對於有些業務來說,

原创 非遞歸實現二叉樹的中序遍歷

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *

原创 java JVM 對象與內存

對象的創建 一 判斷是否需要類加載 虛擬機遇到new 指令時,先去常量池中檢查有沒有這個類的符號引用,並且檢查這個符號引用代表的類是否已被加載,解析和初始化過。如果沒有,必須先執行類加載過程 二 對象內存的分配 在確定了對象的空間

原创 操作系統概論

操作系統 作業管理之進程調度 就緒隊列 排隊機制 選擇運行進程的委派機制 新老進程的上下文委派機制 老進程如果沒處理完就要保存退出 非搶佔式調度: 處理器一旦分配給某個進程,就讓進程一直使用下去 調度程序不以任何原因搶佔正在被使用

原创 JAVA類加載器總結

一個java類在系統中要面臨編譯和運行兩種過程 編譯是指將java文件通過javac命令轉換爲字節碼生成 .class文件 而運行是將.class文件交給jvm虛擬機運行。 類的加載就是運行的初期,jvm加載.class文件,解析

原创 Java 異常處理總結

Java異常類層次結構圖: Error: 是程序無法處理的錯誤,大部分與代碼編寫者無關,是jvm內部的運行錯誤,比如OutofMemoryError。 Exception: 是程序可以處理的錯誤 異常還分爲可查異常和不可查異常:

原创 java JVM 系統架構

類加載器 這裏寫過: https://blog.csdn.net/qq_30519765/article/details/102990891 本地方法接口 本地方法接口的作用是融合不同的編程語言爲java所用,因爲當一些功能

原创 JAVA併發之阻塞隊列

一.BlockingQueue: BlockingQueue是java.util.concurrent包下的一個隊列類,從1.5開始,用於解決高併發環境中的隊列應用,主要是生產者消費者問題 支持兩個附加操作的Queue,這兩個操作是獲取元

原创 Spring源碼解析 利用FactoryBean操作

實現FactoryBean方法來給容器中註冊bean: import com.zdj.demo.person.Person4; import org.springframework.beans.factory.FactoryBea

原创 Spring源碼解析 Bean的生命週期

容器管理bean的生命週期 我們可以自定義初始化和銷燬方法;容器在bean進行到當前生命週期的時候來調用我們自定義的初始化和銷燬方法 //@Scope("prototype") @Bean(initMethod="init

原创 Spring源碼解析 自動裝配

自動裝配; Spring利用依賴注入(DI),完成對IOC容器中中各個組件的依賴關係賦值; 1)、@Autowired:自動注入: 1默認優先按照類型去容器中找對應的組件:applicationContext.getBean(Bo

原创 KMP 算法模板(背)

#include<iostream> using namespace std; const int N = 100010,M = 10010; char p[M],q[N]; int m,n; int ne[N]; int ma

原创 Spring 源碼解析 @Value

//使用@Value賦值; //1、基本數值 //2、可以寫SpEL; #{} //3、可以寫${};取出配置文件【properties】中的值(在運行環境變量裏面的值) @Value("張三") private S