欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Jenkins一鍵打包部署SpringBoot應(yīng)用

 更新時(shí)間:2023年01月09日 09:09:30   作者:_kairui  
本文主要介紹了Jenkins一鍵打包部署SpringBoot應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一般而言,一個(gè)項(xiàng)目部署的由:拉取代碼->構(gòu)建->測(cè)試->打包->部署等過(guò)程組成,如果我們經(jīng)常需要部署項(xiàng)目,特別是在微服務(wù)時(shí)代,服務(wù)特別多的情況下,不停的測(cè)試打包部署,那估計(jì)得有個(gè)人一整天專(zhuān)門(mén)做這事了,而這事又是繁瑣的重復(fù)無(wú)意義的,所以就需要一套能夠持續(xù)集成、持續(xù)交付、持續(xù)部署的自動(dòng)化構(gòu)建流程。

Jenkins是開(kāi)源CI&CD軟件領(lǐng)導(dǎo)者,提供超過(guò)1000個(gè)插件來(lái)支持構(gòu)建、部署、自動(dòng)化,滿足任何項(xiàng)目的需要。我們可以用Jenkins來(lái)構(gòu)建和部署我們的項(xiàng)目,比如說(shuō)從我們的代碼倉(cāng)庫(kù)獲取代碼,然后將我們的代碼打包成可執(zhí)行的文件,之后通過(guò)遠(yuǎn)程的ssh工具執(zhí)行腳本來(lái)運(yùn)行我們的項(xiàng)目

一、準(zhǔn)備工作

真正的生產(chǎn)環(huán)境上,可能是有多臺(tái)服務(wù)器,但是我是用來(lái)練手,手頭沒(méi)有多余的服務(wù)器,只有一臺(tái)。所以我就將 Jenkins 和我的 Spring Boot 項(xiàng)目都部署到一臺(tái)服務(wù)器上。

由于本次是使用Docker安裝Jenkins,所以需要服務(wù)器上提前安裝好JDK,Maven,Doker三個(gè)必備的環(huán)境配置。這里就不過(guò)多贅述這三個(gè)環(huán)境的安裝了,可以自行查詢(xún)資料安裝

1、檢查 JDK 環(huán)境

java -version

[root@liulihui home]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
[root@liulihui home]# 

2、檢查 Maven 環(huán)境

[root@liulihui home]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven/apache-maven-3.6.3
Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: /usr/local/java/jdk/jdk1.8.0_231/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.80.1.el7.x86_64", arch: "amd64", family: "unix"
[root@liulihui home]# 

3、檢查 Docker 環(huán)境

[root@liulihui home]# docker version
Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.7
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:04:24 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.7
  Git commit:       3056208
  Built:            Tue Oct 25 18:02:38 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.12
  GitCommit:        a05d175400b1145e5e6a735a6710579d181e7fb0
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[root@liulihui home]# 

二、Jenkins的安裝及配置

1、Docker 搜索 jenkins 鏡像

[root@liulihui home]# docker search jenkins
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
jenkins                        DEPRECATED; use "jenkins/jenkins:lts" instead   5585      [OK]       
jenkins/jenkins                The leading open source automation server       3330                 
jenkins/jnlp-slave             a Jenkins agent which can connect to Jenkins…   153                  [OK]
jenkins/inbound-agent                                                          81                   
bitnami/jenkins                Bitnami Docker Image for Jenkins                58                   [OK]
jenkins/agent                                                                  49                   
jenkins/slave                  base image for a Jenkins Agent, which includ…   48                   [OK]
jenkins/ssh-slave              A Jenkins slave using SSH to establish conne…   38                   [OK]
jenkins/ssh-agent              Docker image for Jenkins agents connected ov…   28                   
jenkins/jnlp-agent-docker                                                      8                    
jenkins/jnlp-agent-maven       A JNLP-based agent with Maven 3 built in        7                    
jenkins/pct                    Plugin Compat Tester                            5                    [OK]
jenkins/evergreen              An automatically self-updating Jenkins distr…   5                    
jenkins/jnlp-agent-python      A JNLP-based agent with Python built in         3                    
jenkins/jenkins-experimental   Experimental images of Jenkins. These images…   3                    [OK]
jenkins/jnlp-agent-alpine                                                      2                    
jenkins/jnlp-agent-coresdk                                                     2                    
rancher/jenkins-jenkins                                                        1                    
jenkins/jnlp-agent-node                                                        1                    
jenkins/jenkinsfile-runner     Jenkinsfile Runner packages                     1                    
jenkins/core-pr-tester         Docker image for testing pull-requests sent …   1                    
jenkins/ath                    Jenkins Acceptance Test Harness                 1                    [OK]
jenkins/jnlp-agent-ruby                                                        1                    
rancher/jenkins-slave          Jenkins Build Slave                             0                    [OK]
rancher/jenkins-jnlp-slave 

2、Docker 下載jenkins 鏡像

[root@liulihui home]# docker pull jenkins/jenkins:lts
lts: Pulling from jenkins/jenkins
647acf3d48c2: Pull complete 
832e288237bc: Pull complete 
ea194d1bd1da: Pull complete 
98569593b9fd: Pull complete 
dfe249e8cdf2: Pull complete 
0f6f2e6d37bb: Pull complete 
07fcb98649b6: Pull complete 
1e33c26b1882: Pull complete 
7b24f0e29fe1: Pull complete 
4d90ef3a8f3b: Pull complete 
d98c8e675bea: Pull complete 
b45fc2bf9fd7: Pull complete 
d6e1fda9effc: Pull complete 
3635a44047f2: Pull complete 
486e1776d3bc: Pull complete 
41233d151800: Pull complete 
14a67803c2b3: Pull complete 
Digest: sha256:c1d02293a08ba69483992f541935f7639fb10c6c322785bdabaf7fa94cd5e732
Status: Downloaded newer image for jenkins/jenkins:lts
docker.io/jenkins/jenkins:lts
# 查看鏡像
[root@liulihui home]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
jenkins/jenkins   lts       2a4bbe50c40b   13 months ago   441MB
java              8         d23bdf5b1b1b   5 years ago     643MB
[root@liulihui home]# 

3、Docker容器中運(yùn)行Jenkins

# 命令如下:
docker run -p 9080:8080 --name liulihui-jenkins \
-u root \
-v /mydata/jenkins_home:/var/jenkins_home \
-v /usr/local/java/jdk/jdk1.8.0_231:/usr/local/jdk1.8 \
-v /usr/local/maven/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-d jenkins/jenkins:lts
# 參數(shù)說(shuō)明:
-p 9080:8080	端口映射(將容器的8080端口【后面的8080】映射到服務(wù)器的9080端口【前面的9080】,云服務(wù)器需要開(kāi)通9080端口供外網(wǎng)訪問(wèn))
--name	容器名字
-u root	用戶(hù)名
-v /mydata/jenkins_home:/var/jenkins_home	 將配置文件夾掛在到主機(jī)(:前面的是主機(jī)目錄,后面的是容器目錄)
-v /usr/local/java/jdk/jdk1.8.0_231:/usr/local/jdk1.8	是把linux下的jdk和容器內(nèi)的關(guān)聯(lián)(配置Jenkins時(shí)使用,:前面的是主機(jī)目錄,后面的是容器目錄)
-v /usr/local/maven/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3	是把linux下的maven和容器內(nèi)的關(guān)聯(lián)(配置Jenkins時(shí)使用,:前面的是主機(jī)目錄,后面的是容器目錄)
-v $(which docker):/usr/bin/docker	是可以在Jenkins容器里使用我們Linux下的docker
-v /var/run/docker.sock:/var/run/docker.sock	是可以在Jenkins容器里使用我們Linux下的docker
-d jenkins/jenkins:lts	后臺(tái)啟動(dòng) Jenkins鏡像(最新版)
# 查看docker 正在運(yùn)行的容器
[root@liulihui home]# docker ps 
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
9363f69cc773   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   19 seconds ago   Up 17 seconds   50000/tcp, 0.0.0.0:9080->8080/tcp, :::9080->8080/tcp   liulihui-jenkins

4、Jenkins的配置

運(yùn)行成功后訪問(wèn)該地址登錄Jenkins,第一次登錄需要輸入管理員密碼:http://你的ip:9080/

使用管理員密碼進(jìn)行登錄,可以使用以下命令從容器啟動(dòng)日志中獲取管理密碼:

# 查看日志,獲取管理員密碼
[root@liulihui home]# docker logs liulihui-jenkins
Running from: /usr/share/jenkins/jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
2023-01-05 06:02:04.057+0000 [id=1]	INFO	org.eclipse.jetty.util.log.Log#initialized: Logging initialized @707ms to org.eclipse.jetty.util.log.JavaUtilLog
2023-01-05 06:02:04.141+0000 [id=1]	INFO	winstone.Logger#logInternal: Beginning extraction from war file
2023-01-05 06:02:09.723+0000 [id=1]	WARNING	o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2023-01-05 06:02:09.829+0000 [id=1]	INFO	org.eclipse.jetty.server.Server#doStart: jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 11.0.13+8
2023-01-05 06:02:10.641+0000 [id=1]	INFO	o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2023-01-05 06:02:10.757+0000 [id=1]	INFO	o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
2023-01-05 06:02:10.757+0000 [id=1]	INFO	o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
2023-01-05 06:02:10.758+0000 [id=1]	INFO	o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 660000ms
2023-01-05 06:02:11.848+0000 [id=1]	INFO	hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2023-01-05 06:02:12.155+0000 [id=1]	INFO	o.e.j.s.handler.ContextHandler#doStart: Started w.@216914{Jenkins v2.319.1,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
2023-01-05 06:02:12.204+0000 [id=1]	INFO	o.e.j.server.AbstractConnector#doStart: Started ServerConnector@72cf2de5{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2023-01-05 06:02:12.204+0000 [id=1]	INFO	org.eclipse.jetty.server.Server#doStart: Started @8856ms
2023-01-05 06:02:12.219+0000 [id=23]	INFO	winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2023-01-05 06:02:12.576+0000 [id=30]	INFO	jenkins.InitReactorRunner$1#onAttained: Started initialization
2023-01-05 06:02:12.620+0000 [id=28]	INFO	jenkins.InitReactorRunner$1#onAttained: Listed all plugins
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$2 (file:/var/jenkins_home/war/WEB-INF/lib/guice-4.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023-01-05 06:02:14.226+0000 [id=28]	INFO	jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2023-01-05 06:02:14.231+0000 [id=28]	INFO	jenkins.InitReactorRunner$1#onAttained: Started all plugins
2023-01-05 06:02:14.249+0000 [id=28]	INFO	jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2023-01-05 06:02:15.935+0000 [id=30]	INFO	jenkins.InitReactorRunner$1#onAttained: System config loaded
2023-01-05 06:02:15.936+0000 [id=30]	INFO	jenkins.InitReactorRunner$1#onAttained: System config adapted
2023-01-05 06:02:15.936+0000 [id=30]	INFO	jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2023-01-05 06:02:15.937+0000 [id=30]	INFO	jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2023-01-05 06:02:16.146+0000 [id=44]	INFO	hudson.model.AsyncPeriodicWork#lambda$doRun$1: Started Download metadata
2023-01-05 06:02:16.212+0000 [id=44]	INFO	hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2023-01-05 06:02:19.033+0000 [id=28]	INFO	jenkins.install.SetupWizard#init: 

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

f8bf269a288f4cdd92710f2d41eed6a1

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

2023-01-05 06:03:41.112+0000 [id=44]	INFO	h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2023-01-05 06:03:41.113+0000 [id=44]	INFO	hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
2023-01-05 06:03:41.115+0000 [id=44]	INFO	hudson.model.AsyncPeriodicWork#lambda$doRun$1: Finished Download metadata. 84,965 ms
2023-01-05 06:03:41.912+0000 [id=30]	INFO	jenkins.InitReactorRunner$1#onAttained: Completed initialization
2023-01-05 06:03:41.930+0000 [id=22]	INFO	hudson.WebAppMain$3#run: Jenkins is fully up and running
[root@liulihui home]#

輸入管理員密碼后,就進(jìn)入安裝界面,選擇安裝插件方式,這里我們直接安裝推薦的插件

圖片:

安裝完成后,創(chuàng)建管理員賬號(hào):

進(jìn)入插件安裝界面,聯(lián)網(wǎng)等待插件安裝:

進(jìn)行實(shí)例配置:

點(diǎn)擊保存并完成,Jenkins就安裝已完成

進(jìn)入Jenkins,點(diǎn)擊系統(tǒng)管理->插件管理,進(jìn)行一些自定義的插件安裝

修改插件的站點(diǎn),把原站點(diǎn):https://updates.jenkins.io/update-center.json 改為:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 可以更快的下載插件

圖片:

確保以下插件被正確安裝,未安裝的在可選插件中搜索安裝即可:
(1)根據(jù)角色管理權(quán)限的插件:Role-based Authorization Strategy
(2)把 Jenkins 打包好的 jar 上傳到應(yīng)用服務(wù)器上:Publish Over SSH

已安裝插件Role-based Authorization Strategy

已安裝插件Publish Over SSH

安裝完成后需要重啟一下jenkins,在連接后面加restart就可以重啟jenkins了,或者使用命令:docker restart 容器名字
http://ip:9080/restart 或者 docker restart 容器名字(這里是 http://ip:9080/restart )

5、配置JDK和Maven

通過(guò)系統(tǒng)管理->全局工具配置來(lái)進(jìn)行全局工具的配置,路徑都是jenkins里面的路徑;
jdk配置

maven配置

系統(tǒng)管理->系統(tǒng)配置,找到 Publish Over SSH,配置好要連接的應(yīng)用服務(wù)器(在后面的操作中需要使用jenkins遠(yuǎn)程ssh連接到應(yīng)用服務(wù)器,進(jìn)行構(gòu)建后的應(yīng)用部署運(yùn)行。用戶(hù)名密碼會(huì)導(dǎo)致 jar 包上傳失敗,要在應(yīng)用服務(wù)器上生成 ssh 密鑰對(duì)。)

Centos 7 上創(chuàng)建SSH密鑰查看:http://www.dbjr.com.cn/article/170446.htm

圖片:

Jenkins使用ssh就可以執(zhí)行遠(yuǎn)程的linux腳本了:

進(jìn)入系統(tǒng)管理->憑據(jù)中,添加Gitee登錄賬號(hào)憑據(jù)。接下來(lái)配置 Gitee 的憑證,要根據(jù)這些憑證,才能從 Gitee 上拉取代碼下來(lái)

填寫(xiě)完成后選擇該憑據(jù),就可以正常連接git倉(cāng)庫(kù)了;

所有配置工作都做完了,接下來(lái)我們就可以開(kāi)始構(gòu)建一個(gè)項(xiàng)目了。

三、打包部署SpringBoot應(yīng)用

1、在Jenkins中創(chuàng)建執(zhí)行任務(wù)

圖片:

設(shè)置任務(wù)名稱(chēng)后,選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目:

2、添加git憑據(jù)

添加gitee登錄賬號(hào)憑據(jù)。接下來(lái)配置 gitee 的憑證,要根據(jù)這些憑證,才能從 gitee 上拉取代碼下來(lái)。(如果前面添加了憑證,這里直接選擇就行)

圖片:

填寫(xiě)完成后選擇該憑據(jù),就可以正常連接git倉(cāng)庫(kù)了;

3、添加maven構(gòu)建

maven 構(gòu)建

選擇我們的maven版本,然后設(shè)置maven命令和指定pom文件位置:

增加 構(gòu)建后操作步驟:

因?yàn)榍懊孢\(yùn)行jenkins的時(shí)候已經(jīng)做了目錄的映射,所以jenkins打完包后其實(shí)是會(huì)把包同步到服務(wù)映射的目錄里的。所以這里不需要上傳jar包,直接執(zhí)行xshell命令,進(jìn)入jar包的目錄,執(zhí)行jar包即可

shell腳本:

#第一步是進(jìn)入到服務(wù)器中生成好的jar包的目錄下
cd /mydata/jenkins_home/workspace/demo/target/
#第二步是根據(jù)jar包的名字獲取運(yùn)行的pid,并且將該進(jìn)程殺死
ps -ef | grep demo-0.0.1-SNAPSHOT.jar   |   grep -v   grep   |   awk '{printf $2}'  |  xargs kill -9
#執(zhí)行 前加載一下環(huán)境變量,否則不會(huì)執(zhí)行java -jar 命令
source /etc/profile
#最后一步就是將這個(gè)jar后臺(tái)啟動(dòng)了,并且將日志輸出到warpper.log中。
nohup java -jar demo-0.0.1-SNAPSHOT.jar >demo.log &2>1 &
#睡眠1秒
sleep 1
#輸出內(nèi)容,可不加
echo "啟動(dòng)完成>>>>"

四、立即構(gòu)建

配置完成后,點(diǎn)擊立即構(gòu)建,可以看到控制臺(tái)輸出成功

圖片:

選擇項(xiàng)目打包分支:

分支配置:

服務(wù)部署成功,測(cè)試接口返回成功:

到此這篇關(guān)于Jenkins一鍵打包部署SpringBoot應(yīng)用的文章就介紹到這了,更多相關(guān)Jenkins打包部署SpringBoot應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mybatis實(shí)現(xiàn)分包定義數(shù)據(jù)庫(kù)的原理與過(guò)程

    Mybatis實(shí)現(xiàn)分包定義數(shù)據(jù)庫(kù)的原理與過(guò)程

    這篇文章主要給大家介紹了關(guān)于Mybatis實(shí)現(xiàn)分包定義數(shù)據(jù)庫(kù)的原理與過(guò)程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Springboot+Poi導(dǎo)入Excel表格實(shí)現(xiàn)過(guò)程詳解

    Springboot+Poi導(dǎo)入Excel表格實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了Springboot+Poi導(dǎo)入Excel表格實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot項(xiàng)目啟動(dòng)數(shù)據(jù)加載內(nèi)存的三種方法

    SpringBoot項(xiàng)目啟動(dòng)數(shù)據(jù)加載內(nèi)存的三種方法

    一般來(lái)說(shuō),SpringBoot工程環(huán)境配置放在properties文件中,啟動(dòng)的時(shí)候?qū)⒐こ讨械膒roperties/yaml文件的配置項(xiàng)加載到內(nèi)存中,本文給大家介紹了SpringBoot項(xiàng)目啟動(dòng)數(shù)據(jù)加載內(nèi)存中的三種方法,需要的朋友可以參考下
    2024-04-04
  • Java synchronized關(guān)鍵字和Lock接口實(shí)現(xiàn)原理

    Java synchronized關(guān)鍵字和Lock接口實(shí)現(xiàn)原理

    這篇文章主要介紹了Java synchronized關(guān)鍵字和Lock接口實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java中默認(rèn)的訪問(wèn)權(quán)限作用域解析

    Java中默認(rèn)的訪問(wèn)權(quán)限作用域解析

    這篇文章主要介紹了Java中默認(rèn)的訪問(wèn)權(quán)限作用域,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中Comparable與Comparator的區(qū)別解析

    Java中Comparable與Comparator的區(qū)別解析

    這篇文章主要介紹了Java中Comparable與Comparator的區(qū)別解析,實(shí)現(xiàn)Comparable接口,重寫(xiě)compareTo方法,一般在實(shí)體類(lèi)定義的時(shí)候就可以選擇實(shí)現(xiàn)該接口,提供一個(gè)默認(rèn)的排序方式,供Arrays.sort和Collections.sort使用,需要的朋友可以參考下
    2024-01-01
  • Java?Web?Axios實(shí)現(xiàn)前后端數(shù)據(jù)異步交互實(shí)例代碼

    Java?Web?Axios實(shí)現(xiàn)前后端數(shù)據(jù)異步交互實(shí)例代碼

    Axios作為一個(gè)流行的前端?HTTP?通信庫(kù),可以極大地簡(jiǎn)化前端與后端之間的數(shù)據(jù)交互,這篇文章主要介紹了Java?Web?Axios實(shí)現(xiàn)前后端數(shù)據(jù)異步交互的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • springboot讀取resources下文件的方式詳解

    springboot讀取resources下文件的方式詳解

    最近寫(xiě)讀取模板文件做一些后續(xù)的處理,將文件放在了項(xiàng)目的resources下,發(fā)現(xiàn)了一個(gè)好用的讀取方法,下面這篇文章主要給大家介紹了關(guān)于springboot讀取resources下文件的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • java實(shí)現(xiàn)轉(zhuǎn)圈打印矩陣算法

    java實(shí)現(xiàn)轉(zhuǎn)圈打印矩陣算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)轉(zhuǎn)圈打印矩陣算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Mybatis 中的sql批量修改方法實(shí)現(xiàn)

    Mybatis 中的sql批量修改方法實(shí)現(xiàn)

    在項(xiàng)目中遇到需要批量更新的功能,原本想的是在Java中用循環(huán)訪問(wèn)數(shù)據(jù)庫(kù)去更新,但是心里總覺(jué)得這樣做會(huì)不會(huì)太頻繁了,太耗費(fèi)資源了,效率也很低,查了下mybatis的批量操作,原來(lái)確實(shí)有<foreach>標(biāo)簽可以做到,下面通過(guò)本文給大家介紹下
    2017-01-01

最新評(píng)論