原创 基於Jenkins+Docker+Github實現SpringCloud自動化部署

前言 本博文主要介紹了基於Jenkins+Docker+Github實現了對SpringCloud微服務項目的快速打包、部署。 正文 項目準備 首先有如下SpringCloud項目(這裏以本人的畢設項目舉例),目錄結構如下: b

原创 union當第一個表不存在數據時,再查詢第二個表

前言 在很多業務場景中,我們會出現如下的需求:在某一個表中查詢“熱”數據,查詢不到再去另一個表中查找“冷”數據,此時我們如何通過sql語句實現呢? 正文 首先,創建student和student_2兩個表,如下: CREATE

原创 SpringCloud+Vue解決跨域Session不一致問題

前言 在做項目時,在登錄驗證碼生成環節,後臺生成驗證碼圖像返回給前端,並將驗證碼置於session,用戶填入驗證碼後傳入後臺並驗證。 但在實驗時發現,由於前後端分離項目存在跨域問題,session不再相同,通過輸出 session

原创 idea查看java字節碼工具(jclasslib Bytecode viewer)

前言 在進行java代碼,調試時,有些複雜的情況(如語法糖等)會讓我們難以理解JVM的具體執行細節,此時我們可以通過javap反編譯來查看JVM字節碼,而在ide中,通過jclasslib Bytecode viewer工具,可以

原创 《深入理解計算機系統》之虛擬內存總結

前言 最近看了《深入理解計算機系統》,重溫了許多操作系統和組原的知識。本篇博客主要介紹虛擬內存,讓我們先從ELF-->進程引入。 ELF文件 對於每個程序,其在經歷預處理、編譯、彙編之後,都要經過鏈接器將其鏈接成一個單一的可執行文件。在現

原创 Java反射原理及簡單的源碼解析

前言 首先,瞭解下java類的初始化過程: 編程:將java文件編譯爲.class字節碼文件 加載:類加載器負責根據一個類的全限定名來讀取此類的二進制字節流到JVM內部,並存儲在運行時內存區的方法區,然後將其轉換爲一個與目標類型對

原创 DTO轉VO時,將日期由DATE轉String

前言 當後臺日期爲Date類型時,在進行前端顯示時,如果不加以處理,通過會以時間戳的方式進行渲染,在此情況下,爲了簡化前端對日期數據繁瑣的操作,在後端傳值的時候,可直接將date轉爲string類型。 正文 本文主要介紹的是在DT

原创 SpringCloud之Gateway實現路由轉發

在訪問不同的url時,通過gateway對路徑的攔截,按url的區別分配到不同服務器上。 具體實現 首先創建一個父module,eureka-family,同時開啓consul 服務提供者 創建子module,eureka-cli

原创 Mysql數據庫是否發生死鎖?死鎖的場景

之前在面試中被問到此問題,在此做下筆記! Mysql場景的存儲引擎爲MyISAM和InnoDB,我們以這兩種來分析。 MyISAM 總:MyISAM中不會出現死鎖。 在MyISAM中只用到表鎖,不會有死鎖的問題,鎖的開銷也很小,但

原创 RabbitMQ入門(四、RabbitMQ+SpringBoot)

前言 Springboot對rabbitmq的支持度很高,所以Springboot繼承rabbitmq十分簡便。 首先maven引入amqp <dependency> <groupId>org.springframewor

原创 Java後臺秋招面試題

最近在秋招中,將常見面試題統計下,作此博客。 併發(線程) 爲什麼不推薦使用Executors直接創建線程池 線程池參數分別代表什麼?怎麼配置才合理? JVM中鎖的分類,偏向鎖、輕量級鎖、重量級鎖 操作系統 死鎖產生原因,如

原创 Vue.js密碼框大小寫提示

前言 在寫項目調前端時有如下需求:密碼框大寫時需要加以提示; 項目組件使用的基本是element-ui,由於自己對前端不對熟悉,在這裏做下筆記,也算是給大家提供下參考。 具體實現 首先是密碼框(主要是這句:@keyup.nativ

原创 JVM內存模型和JAVA內存模型的區別

前言 很多人都以爲JAVA內存模型就是JVM內存模式,其實二者是不同的概念,本文針對此,主要講解JVM內存模型和JAVA內存模型的區別。 正文 其實本身二者就是不同的概念,在此我分開來講。 JVM內存模型 JVM內存模式主要分爲:

原创 RabbitMQ入門(一、RabbitMQ基本概念)

什麼叫消息隊列 消息(Message)是指在應用間傳送的數據。消息可以非常簡單,比如只包含文本字符串,也可以更復雜,可能包含嵌入對象。 消息隊列(Message Queue)是一種應用間的通信方式,消息發送後可以立即返回,由消息系

原创 go反射之FieldByName、MethodByName什麼時候加*

前言 首先要明白,Go中結構體方法的定義方式有兩種,包括指針方法和值方法。 如果一個方法的接收者的類型是其所屬類型的指針類型(並非該類型本身),則該方法稱爲一個指針方法。 如果一個方法的接收者類型就是其所屬的類型本身,則該方法稱