原创 Java鎖機制

Java鎖的劃分 Java鎖具體可分爲悲觀鎖/樂觀鎖、自旋鎖/適應性自旋鎖、偏向鎖、輕量級鎖/重量級鎖、公平鎖和非公平鎖、可重入鎖/非可重入鎖、共享鎖/排他鎖 具體劃分如下: 樂觀鎖VS悲觀鎖 概念 對於同一個數據的併發操作,

原创 Java中的Volatile關鍵字

問題根源 在多線程運行場景中,每個線程可能運行與 不同的CPU中,每個線程的讀寫都是操作自己CPU所在的高速緩存,但操作的數據存儲在堆中,作爲共享變量,每個線程操作的實際上是自己本地線程的副本,在併發 編程中,可能就會存在緩存不一

原创 JVM 內存結構介紹整理

Jvm內存模型 JVM內存共分爲虛擬機、堆、方法區、程序計數器、本地方法棧五個部分。 虛擬機棧 每個線程都有一個私有的棧,隨着線程創建而創建。每個棧空間都存放着棧幀,每個方法都會創建一個棧幀,棧幀主要存放了局部變量列表(

原创 Java Object對象

Object.getClass()和Object.class區別 類名.class叫做“類字面量”,因class是關鍵字, 所以類名.class編譯時確定。而getclass()是某個具體的方法來調用,是運行時根據實際實例確定,

原创 Java Synchronized鎖

一、Synchronized鎖的重入 (1)當一個線程獲得一個對象的鎖時,改鎖裏運行時可以再次請求獲取該對象的鎖 (2)該線程請求其他線程持有的對象鎖時,該線程會阻塞住,請求自己持有的對象鎖時會請求成功 (3)Synchronized鎖住

原创 Spring Bean 的生命週期

  Bean的完整生命週期經歷了各種方法調用,這些方法可以劃分爲以下幾類: 1、Bean自身的方法  :  這個包括了Bean本身調用的方法和通過配置文件中<bean>的init-method和destroy-method指定的方法 2

原创 Spring之路—註解

【@Component】——標註一個普通的Spring Bean類 【@Controller】——標註一個控制器組件類 【@Service】——標註一個業務邏輯組件類 【@Repository】——標註一個Dao的組件類 【@Bean】—

原创 短連接和長連接掃盲

短連接 連接->傳輸數據->關閉連接 比如HTTP是無狀態的的短鏈接,瀏覽器和服務器每進行一次HTTP操作,就建立一次連接,但任務結束就中斷連接。 具體就是 瀏覽器client發起並建立TCP連接 -> client發送HttpReque

原创 Spring Cloud服務框架概述

【Spring Cloud】 Spring Cloud爲開發者提供了快速構建分佈式系統的通用模型的工具(包括配置管理、服務發現、熔斷器、智能路由、微代理、控制總線、一次性令牌、全局鎖、領導選舉、分佈式會話、集羣狀態等)。 主要項目包括:

原创 Java 中的ThreadLocal

What is ThreadLocal ? 1.ThreadLocal 是一個創建線程局部變量的類 2.通常情況下 ,一個對象中創建的變量是可以被任何一個線程訪問的,也就是共享變量,ThreadLocal 創建的變量只能被當前線程訪問,其

原创 SpringBoot集成Mybatis

SpringBoot與SpringFrameWork最大的區別是約定優於配置,今天嘗試下如何使用註解而不是基於XML配置來使用Mybatis 【SpringBoot集成Mybatis】 1.pom依賴配置 <!-- 導入Mysql數據庫

原创 Linux高頻率命令收集

【Linux命令】 1.跳到文本的最後一行:按“G”,即“shift+g” 2.跳到最後一行的最後一個字符 : 先重複1的操作即按“G”,之後按“$”鍵,即“shift+4”。 3.跳到第一行的第一個字符:先按兩次“g”, 4.跳轉到當前

原创 Python爬蟲爬取大街網工作數據

最近工作狀態不飽滿,想看看招聘網站上Java工程師都能給多少錢,於是就試試動手寫爬蟲,最開始使用的是requests,結果發現請求一直報403,估計是網站都有反爬蟲手段,目前水平有限,不知道怎麼反爬蟲,看來這條路行不通 # -*- co

原创 Mybatis中的CDATA標籤

CDATA 指的是不應由 XML 解析器進行解析的文本數據,使用改標籤主要是防止由於mybatis的xml配置文件解析錯誤 比如在XML中,"<"  解析器會把該字符解釋爲新元素的開始;"&"  解析器會把該字符解釋爲字符實體的開始。 當

原创 Linux Git常用 操作命令

【Git Commond】 1.git checkout 查看本地所有修改 2.git checkout -- 文件路徑 丟棄當前選中文件 3.git checkout . 丟棄本地所有修改 4.git branch 查看本地分支 5.g