原创 在 Spring Boot 項目中實現文件下載功能

(一)需求 在您的 springboot 項目中,可能會存在讓用戶下載文檔的需求,比如讓用戶下載 readme 文檔來更好地瞭解該項目的概況或使用方法。 所以,您需要爲用戶提供可以下載文件的 API ,將用戶希望獲取的文件作爲下載

原创 Spring Boot + MyBatis 多數據源解決方案

(一)需求 基於 Spring Boot + MyBatis 是目前最流行的後端 CRUD 開發框架組合,在 CRUD 項目開發過程中,往往會需要連接多個數據庫。目前解決方案有 JPA 多數據源方案、AOP 動態切換等,但都比較複

原创 Linux 用 tar.gz 壓縮包安裝 MySQL 5.7

1. 準備工作 下載 請前往 MySQL 官網 下載所需的安裝包。 在下載頁面進行如下選擇,下載 tar.gz 壓縮包。 上傳並解壓 使用 Xftp 或 rz 命令將壓縮包上傳到 Linux 服務器 /usr/local/ 路徑

原创 SSH遠程重啓Tomcat時無法找到JAVA_HOME也連接不上SAP

1. catalina.sh添加Java環境變量 在Agent上通過SSH命令重啓目標應用服務器的Tomcat時: ssh root@server_ip "/usr/local/tomcat/bin/startup.sh" 可能

原创 添加Agent和應用服務器之間的SSH互信

背景及概念 CICD已經成爲了各公司敏捷開發的重點,而CICD中除了開發部分,自動部署也是極爲重要的一環。 之前的博文也介紹了Atlassian公司的自動化發佈工具Bamboo,運用它可以大大減少運維人員在發佈應用過程中的重複操作

原创 趣味MySQL:查詢NBA球員的冠軍總數

1. Kobe or Lebron? 寫這篇博客的目的完全來自於一位朋友在我朋友圈的評論,他半開玩笑地說,你試試用SQL查出科比和勒布朗的奪冠總數。我是一個資深NBA球迷,同時也是科蜜(科比.布萊恩特的球迷),所以我覺得用我的職業

原创 MySQL 調優:直接 JOIN or 先子查詢再 JOIN?

1. 問題背景 最近,一個朋友的項目經理指出他的 SQL 寫得有問題。 朋友的 SQL 大致如下,他的想法是常規操作,直接使用 JOIN … ON … 做聯表查詢: select needed cols... from t1 i

原创 基於Spring Security OAuth2的SSO(單點登錄)

1. Theories What is SSO? 單點登錄(Single Sign On),簡稱爲 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應

原创 都是MyBatis分頁工具PageHelper惹的禍 —— 記一次加入GROUP BY分組查詢成功,不分組則失敗的奇怪現象Debug過程

項目技術框架 請您打開世界上最好使的Java編譯器IntelliJ IDEA,建一個SpringBoot項目,保證項目中包含以下依賴: 後端框架:SpringBoot + JUnit 數據庫持久化:MySQL + MyBatis

原创 記一次基於JUnit的代碼平穩升級:使用JDK8日期新特性處理項目中的日期相關邏輯

本文工作 本文記錄瞭如何使用JDK8基於DateTimeFormatter和LocalDateTime的工具類JDK8DateUtils取代舊版的基於SimpleDateFormat和Date的工具類DateUtils,在此過程中

原创 MockMVC登錄後測試SpringBoot項目包含Shiro Subject的控制層方法

UnavailableSecurityManagerException 在常規SpringBoot項目中,我們往往在單元測試類中直接使用@Autowired註解注入Bean實例,並在Test方法中調用實例方法。但如果該項目加入了S

原创 JaCoCo生成Java + Maven項目的代碼覆蓋率檢測報告

代碼覆蓋率 What is Code Coverage - from Wikipedia In computer science, test coverage is a measure used to describe the

原创 Java實用工具類-根據當前weekday返回分段排序的週一至週日

需求 如圖所示,當: weekday = 1時,返回Set:[1, 2, 3, 4, 5, 6, 7] weekday = 2時,返回Set:[2, 3, 4, 5, 6, 7, 1] weekday = 3時,返回Set:[3

原创 基於Bitbucket和Bamboo的SpringBoot項目CICD(持續集成和部署)

基本概念 簡單地說,Bitbucket是公司內部的Git遠端源碼管理工具,相當於Gitlab或Github;Bamboo是自動化運維工具,可以構建、打包、部署,相當於Jenkins。 可以前往Atlassian官網瞭解Bitbuc

原创 MongoDB在拷貝數據庫時無法連接數據源主機的問題及解決方案

使用db.copyDatabase(from, to, host),例如: db.copyDatabase("windowsdb", "linuxdb", "windows-ip") 命令在Linux上的MongoDB備份Win