原创 淺談線程和進程的區別

進程和線程是什麼? 首先你要理解cpu的概念,計算機上的所有操作都是由cpu來執行的,cpu將要執行的操作分爲一個個的任務,這些任務我們就可以理解爲進程,而這些任務又分爲一些細粒度更小的子任務,這些子任務就稱作線程 cpu輪流執行任務

原创 淺談Java中的異常種類

前言 一般來講,關於報錯信息主要分爲兩大類,即Exception(異常) 和 Error(錯誤),有時候我們用“異常”來統稱這兩種情況,在本文中,將會就這兩種情況做進一步的講解 同時,在這裏我先聲明,本文將不含Java對異常的處理方式

原创 Spring的IOC中屬性注入的過程

背景 上一篇從源碼解讀Spring的IOC講解了spring容器的初始化以及依賴注入的過程,但是在其中有一個很重要的部分暫時還沒講。可能已經有人發現了,那篇文章雖然講解了IOC容器創建對象的整個流程,但是好像並沒有涉及我們的依賴對象以

原创 從源碼分析DBCP數據庫連接池的原理

背景 數據庫連接池的概念大家應該都很熟悉,類似dbcp、c3p0,還有如今常用的druid等,使用時無非就是從網上抄幾段配置,調一下參數,但是深入理解數據庫連接池的原理在如今的Java開發中還是很有必要的,這裏以dbcp爲例,簡要分析

原创 快速搭建基於註解的Dubbo項目

安裝註冊中心 首先安裝註冊中心,這裏我們選用zookeeper,直接去Apache官網下載,下載地址Apache ZooKeeper™ Releases 安裝後進入bin目錄,啓動zkServer.cmd即可,如果是在linux上,就

原创 從源碼解讀Spring的AOP

概念 IOC和AOP作爲Spring的兩大核心,如果你接觸過Spring框架,那就一定需要了解這兩個核心部分的工作原理。IOC控制反轉(或者說依賴注入)的部分已經在我的從源碼解讀Spring的IOC文章中有介紹,這篇文章主要來講解AO

原创 從源碼解讀Spring的IOC

概念 IOC(Inversion Of Control),即控制反轉,或者說DI(Dependency Injection),依賴注入,都屬於Spring中的一種特點,可以統稱爲IOC 控制反轉,即控制權的反轉,也就是說將內置對象創

原创 函數式編程——Java中的lambda表達式

背景 在JDK1.8之前,我們經常會遇到下面這幾種場景: 無法傳入方法,只能傳入對象 Thread thread = new Thread(new Runnable() { @Override public vo

原创 深入淺出Java多線程之ThreadLocal

介紹 ThreadLocal作爲JDK1.2以來的一個java.lang包下的一個類,在面試和工程中都非常重要,這個類的主要目的是提供線程本地的變量,所以也有很多地方把這個類叫做線程本地變量 從字面理解,這個類爲每個線程都創建了一個本

原创 從源碼分析ConcurrentHashMap

介紹 作爲線程安全的HashMap,Java提供了Hashtable和ConcurrentHashMap兩種實現,而Hashtable控制線程安全的方式僅僅是用synchronized對方法加鎖,這種低效且過時的方法已經不適合如今的開

原创 Java源碼概覽——HashMap

HashMap簡介 如果你瞭解過數據結構,就應該理解散列表的概念,類似於數學中函數的概念,通過一個自變量映射到一個因變量上。如果把鍵值當作自變量,對應的值當作因變量,這樣我們就得到了一些鍵值對,保存這些鍵值對的數據結構我們就叫做散列表

原创 Leetcode題解——287. Find the Duplicate Number尋找重複數

代碼實現 只想抄個答案把題過了的可以直接複製下面的代碼: class Solution { public: int findDuplicate(vector<int>& nums) { int slow = 0, fast =

原创 Leetcode題解:405. 數字轉換爲十六進制數

題目描述: 數字轉換爲十六進制數(Convert a Number to Hexadecimal) 給定一個整數,編寫一個算法將這個數轉換爲十六進制數。對於負整數,我們通常使用 補碼運算 方法。 注意: 十六進制中所有字母(a-f

原创 求最長迴文子串——Manacher算法詳解

迴文子串問題 迴文子串問題通常會給出一個字符串,然後找出這個字符串中最長的迴文子串。 迴文串即爲正讀和反讀一致的字符串,比如”aa",“abba”,"abcba"等。判別一個字符串是否爲迴文串很容易想到的方法是: 設立兩個遊標,分別

原创 學着寫chrome插件 (一)—— 瞭解chrome插件並自己寫一個小demo

寫在前面 本篇教程適用於chrome瀏覽器以及一系列類似360極速瀏覽器等使用chrome內核的瀏覽器 你至少需要點亮了以下技能點: html js json 儘量需要以下技能點: css jquery vue chrome插