Linux下Jenkins自动化部署SpringBoot应用

Linux下Jenkins自动化部署SpringBoot应用

1、 Jenkins介绍

官方网址:https://www.jenkins.io/

2、安装Jenkins

2.1 centos下命令行安装

访问官方,点击文档:

在这里插入图片描述

点击 Installing Jenkins:

在这里插入图片描述

点击 Linux:

在这里插入图片描述

在这里插入图片描述

选择 Red Hat/Alma/Rocky,就可以看到相关的安装命令:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# 安装安装包
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
# 启动
sudo systemctl daemon-reload
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins

其它版本的安装请参考:https://pkg.jenkins.io/redhat-stable/

# 本文安装
# 下载镜像
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

# 安装
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

# 更新
yum upgrade

# 安装 Java 环境
yum install java-11-openjdk

# 安装 Jenkins
yum install jenkins

# 启动
systemctl daemon-reload
systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins

2.2 错误处理

2.2.1 错误1

如果报错:

$ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
--2022-11-15 09:38:52-- https://pkg.jenkins.io/redhat-stable/jenkins.repo
Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.2.133, 151.101.66.133,
151.101.130.133, ...
Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.2.133|:443... connected.
ERROR: cannot verify pkg.jenkins.io's certificate, issued by ‘/C=US/O=Let's
Encrypt/CN=R3’:
Issued certificate has expired.
To connect to pkg.jenkins.io insecurely, use `--no-check-certificate'.

请使用下面的命令:

wget --no-check-certificate -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 或者
yum install -y ca-certificates
2.2.2 错误2

如果报错:

$ yum install jenkins
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bupt.edu.cn
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.bfsu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 jenkins.noarch.0.2.414.3-1.1 将被 安装
--> 解决依赖关系完成

依赖关系解决

=====================================================================================================================
 Package                   架构                     版本                             源                         大小
=====================================================================================================================
正在安装:
 jenkins                   noarch                   2.414.3-1.1                      jenkins                    85 M

事务概要
=====================================================================================================================
安装  1 软件包

总计:85 M
安装大小:85 M
Is this ok [y/d/N]: y
Downloading packages:
警告:/var/cache/yum/x86_64/7/jenkins/packages/jenkins-2.414.3-1.1.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID ef5975ca: NOKEY


jenkins-2.414.3-1.1.noarch.rpm 的公钥尚未安装

请使用下面的命令:

$ yum install jenkins --nogpgcheck 

2.3 启动状态

# 查看启动状态
# systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
   Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2023-10-21 13:16:13 CST; 10s ago
 Main PID: 5851 (java)
    Tasks: 53
   Memory: 1.1G
   CGroup: /system.slice/jenkins.service
           └─5851 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war...

1021 13:15:49 opengauss jenkins[5851]: c251022ca0c2478794f84f67117810d9
1021 13:15:49 opengauss jenkins[5851]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
1021 13:15:49 opengauss jenkins[5851]: *************************************************************
1021 13:15:49 opengauss jenkins[5851]: *************************************************************
1021 13:15:49 opengauss jenkins[5851]: *************************************************************
1021 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.192+0000 [id=30]        INFO        jenkins.In...ation
1021 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.203+0000 [id=23]        INFO        hudson.lif...nning
1021 13:16:13 opengauss systemd[1]: Started Jenkins Continuous Integration Server.
1021 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        h.m.Downlo...aller
1021 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        hudson.uti...pt #1
Hint: Some lines were ellipsized, use -l to show in full.

3、访问Jenkins

访问地址:http://192.168.143.175:8080

在这里插入图片描述

查看密码并且输入密码:

$ cat /var/lib/jenkins/secrets/initialAdminPassword
c251022ca0c2478794f84f67117810d9

在这里插入图片描述

选择安装推荐的插件,Jenkins 便会开始自动下载安装:

在这里插入图片描述

下载完之后会自动跳转到下一个页面:

在这里插入图片描述

填写信息点击保存并完成:

在这里插入图片描述

会跳转到另一个页面:

在这里插入图片描述

点击保存并完成:

在这里插入图片描述

点击开始使用 Jenkins:

在这里插入图片描述

4、插件的安装

使用推荐安装方式只能帮我们安装一部分最为常用的插件,有某些插件如 maven 等还是需要我们手动去安装的。

点击 “Manage Jenkins” --> “插件管理”:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里可以看到我们需要的插件,按需下载即可。

5、卸载Jenkins

# 在卸载Jenkins之前,首先停止Jenkins服务
$ systemctl stop jenkins

# 禁止其在系统启动时自动运行
$ systemctl disable jenkins

# 卸载Jenkins软件包
$ yum clean all
$ yum remove jenkins

# 删除Jenkins相关目录和文件
$ rm -r /var/lib/jenkins
$ rm -rf /etc/default/jenkins
$ rm -rf /var/cache/jenkins
$ rm -rf /var/run/jenkins

# 删除Jenkins配置文件和日志目录
$ rm -r /etc/sysconfig/jenkins
$ rm -r /var/log/jenkins

# 删除Jenkins用户和用户组
$ userdel jenkins
$ groupdel jenkins

# 删除Jenkins的YUM源文件
$ rm /etc/yum.repos.d/jenkins.repo

# 删除Jenkins的系统服务配置文件
$ rm /usr/lib/systemd/system/jenkins.service
$ rm /etc/systemd/system/jenkins.service

# 删掉相关安装目录
$ rm -rf /root/.jenkins/

# 删掉war包
$ rm -rf /webapps/jenkinsapp/

# 删掉剩余相关
$ rm -rf /usr/lib/firewalld/services/jenkins.xml
$ rm -rf /var/cache/yum/x86_64/7/jenkins
$ rm -f /var/lib/yum/repos/x86_64/7/jenkins

# 彻底删除残留文件
$ find / -iname jenkins | xargs -n 1000 rm -rf

6、Jenkins全局配置

需要配置的有 jdk、git、maven 工具。

6.1 JDK安装

# 下载地址
# http://www.oracle.com/technetwork/java/javase/downloads/index.html
# 使用的版本
# jdk-8u212-linux-x64.tar.gz

# 1、解压
$ tar -zxvf jdk-8u212-linux-x64.tar.gz

# 2、重命名
$ mv jdk1.8.0_212 jdk1.8

# 3、添加环境变量
$ vim /etc/profile
export JAVA_HOME=/home/zhangshixing/java/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH

# 4、生效
$ source /etc/profile 

# 5、查看版本
$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

# 6、查看路径
$ which java
/home/zhangshixing/java/jdk1.8/bin/java

6.2 git安装

# 使用yum安装
$ yum -y install git
$ git --version
# 使用安装包安装:
# 1、下载安装包
# https://mirrors.edge.kernel.org/pub/software/scm/git/
wget -O git-2.22.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.20.0.tar.gz

# 2、解压安装包
$ tar -zxvf git-2.22.0.tar.gz

# 3、进入解压后的文件夹
$ cd git-2.22.0

# 4、安装需要的依赖
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

# 5、在安装编译源码所需依赖的时候,yum会自动帮你安装git,这时候你需要先卸载这个旧版的git
$ yum -y remove git

# 6、编译git源码
$ make prefix=/usr/local/git all

# 7、安装git至/usr/local/git路径
$ make prefix=/usr/local/git install

# 8、配置环境变量
$ vim /etc/profile 
$ export PATH=$PATH:/usr/local/git/bin

# 9、使配置文件生效
$ source /etc/profile

# 10、查看git是版本
$ git --version
git version 2.22.0

# 11、查看路径
$ which git
/usr/local/git/bin/git

6.3 Maven安装

# 下载地址
# https://dlcdn.apache.org/maven/maven-3
# 使用的版本
# apache-maven-3.3.9-bin.tar.gz

# 1、解压
$ tar -zxvf apache-maven-3.3.9-bin.tar.gz

# 2、创建maven资源库目录
$ mkdir -p /home/zhangshixing/maven/m2/repository

# 3、编辑settings.xml文件
$ cd /home/zhangshixing/maven/apache-maven-3.3.9/conf
$ vim settings.xml
# 将原文件内容全部删除,添加新的配置内容
$ :1,.d

# 4、新的配置内容
<?xml version="1.0" encoding="UTF-8"?>
<settings
    xmlns="http://maven.apache.org/SETTINGS/1.2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
    <localRepository>/home/zhangshixing/maven/m2/repository</localRepository>
    <pluginGroups></pluginGroups>
    <proxies></proxies>
    <servers></servers>
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
    <profiles></profiles>
</settings>

# 5、添加环境变量
$ vim /etc/profile
MAVEN_HOME=/home/zhangshixing/maven/apache-maven-3.3.9
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME PATH

# 6、重新加载配置文件
$ source /etc/profile

# 7、查看版本
$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /home/zhangshixing/maven/apache-maven-3.3.9
Java version: 1.8.0_212, vendor: Oracle Corporation
Java home: /home/zhangshixing/java/jdk1.8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

# 8、查看路径
$ which mvn
/home/zhangshixing/maven/apache-maven-3.3.9/bin/mvn

6.4 进行配置

点击 “Manage Jenkins” --> “Tools”:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

全部配置完成之后,点击保存、点击应用。

7、新建git仓库并上传代码

在这里插入图片描述

8、任务的创建与执行

登入 Jenkins,点击 “新建 Item”,输入任务名称并选择构建一个多配置项目;

在这里插入图片描述

在这里插入图片描述

点击确定,之后我们作出如下配置:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击保存:

在这里插入图片描述

返回面板,点击按钮执行此任务:

在这里插入图片描述

执行结果:

在这里插入图片描述

一个简单的自动化部署应用就完成了。

9、Jenkins通过脚本的方式运行mvn命令不识别的处理方式

如果我们进行如下的配置:

在这里插入图片描述

则会报如下的错误:

/tmp/jenkins8798212945672749251.sh:行1: mvn: 未找到命令

解决方法:把 maven 的 mvn 弄个快捷方式到sbin下就可以解决:

ln -s $MAVEN_HOME/bin/mvn /usr/sbin/mvn

10、配置git凭据

修改 Git 配置:

在这里插入图片描述

点击添加:

在这里插入图片描述

输入相关信息并且点击添加:

在这里插入图片描述

重新选择:

在这里插入图片描述

保存然后重新运行。

11、配置应用服务器信息

应用服务器,就是将来 Jenkins 将代码构建成 jar 包后,要上传的服务器的信息(地址、用户名以及密码)。

首先安装 Publish Over SSH 插件:

在这里插入图片描述

然后进行配置:

在这里插入图片描述Publish Over SSH各个参数介绍

  • Passphrase:使用用户名、密码 SSH 登录时,这里输入用户名密码。使用私钥登录时,这里是私钥的密

    码。

  • Path to key:要使用的 SSH 私钥在Jenkins主机上的路径。路径可以是绝对路径,也可以是相对于

    JENKINS_HOME目录的路径。

  • Key:私钥

  • Disable exec:移除该插件执行命令的能力。如果选中该选项,则 SSH Servers 的高级部分中的

    Disable exec 选项将被忽略。

  • Name:名称。

  • Hostname:服务器 IP。

  • Username:登录服务器用户名。

  • Remote Directory:登录服务器后的根目录,后面 Jenkins默认发送制品到此目录下。

用户名密码方式:

在这里插入图片描述

在这里插入图片描述

密钥方式:

# 在目标服务器上执行,也就是需要上传目录的服务器
# 生成rsa密钥,回车
$ ssh-keygen -t rsa

# 把公钥内容追加到认证文件中
$ cat id_rsa.pub >> authorized_keys

# 授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys

$ vim /etc/ssh/sshd_config
PemitRootLogin yes

# 重启
$ service sshd restart

在这里插入图片描述

在这里插入图片描述

点击保存。

在项目中进行配置打包好的文件进行上传:

在这里插入图片描述

# 目标服务器上执行
$ pwd
/opt/data

$ ls
jenkins_demo-0.0.1-SNAPSHOT.jar

我们可以在上传完安装包之后执行一个部署脚本:

# /opt/data/deploy.sh

#!/bin/bash

export JAVA_HOME=/home/zhangshixing/java/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH

JAR_PATH=/opt/data
JARFILE=jenkins_demo-0.0.1-SNAPSHOT.jar

cd $JAR_PATH

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9

java -jar $JARFILE > out.log &

if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi

修改项目中的执行命令:

在这里插入图片描述

重新运行,然后访问,看安装包是否启动:

$ curl -X GET http://192.168.143.175:9999/hello
Hello World!
$ pwd
/opt/data

$ ls
deploy.sh  jenkins_demo-0.0.1-SNAPSHOT.jar  out.log

我们可以看到程序正常启动,并且可以正常访问。

12、自动构建

好了,现在我们的项目还不是自动构建,也就是当我们向 Gitee 上的代码仓库提交代码之后,并不会触发 Jenkins

的自动构建,得我们手动点击构建按钮,接下来我们再来继续配置,实现自动触发构建。

为了实现自动触发构建,我们需要修改两个地方。

12.1 安装Gitee插件

在这里插入图片描述

12.2 修改Jenkins

首先在 Jenkins 的当前项目中,配置一下触发构建的规则:

在这里插入图片描述

在这里插入图片描述

大家注意,在网页上 Jenkins 已经给出了将来要配置的 Webhook 的地址了,大家直接拷贝该地址即可。

# webhook地址
http://192.168.143.175:8080/gitee-project/first%20jenkins

# webhook密码
373930de602b51fad08a301b2aca8ab2

12.3 配置Webhook

接下来在 Gitee 的项目中,配置 WebHook,在当前项目中,选择管理选项卡,左边菜单点击 WebHooks,然后

点击添加 WebHook。

在这里插入图片描述

我们这里的 192.168.143.175 不是公网IP,所以gitee上配置会有问题,这里只演示配置方式。

配置之后我们可以点击测试看是否配置成功。

12.4 修改代码push代码

push代码之后就会触发Jenkins自动打包部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/115181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

剑指offer --- 从尾到头打印链表

目录 前言 一、读懂题目 二、思路分析 三、代码呈现 总结 前言 当我们需要访问单向链表中特定位置值时&#xff0c;算法复杂度往往是O(n)&#xff0c;在得到靠后节点的值时不可避免地从前向后遍历访问链表&#xff0c;那么当应题目要求从尾到头打印链表时&#xff0c;至少…

matlab双目标定中基线物理长度获取

在MATLAB进行双目摄像机标定时,通常会获得相机的内参,其中包括像素单位的焦距(focal length)以及物理单位的基线长度(baseline)。对于应用中的深度估计和测量,基线长度的物理单位非常重要,因为它直接影响到深度信息的准确性。有时候,您可能只能获取像素单位的焦距和棋…

布雷斯悖论和借贷式拥塞控制

先看布雷斯悖论&#xff0c;新增一条路不但没减少交通延滞&#xff0c;反而降低了服务水准&#xff0c;下面一个简单的例子&#xff1a; 关于布雷斯悖论的讨论已经太多&#xff0c;我给出个新解释&#xff0c;这和我引出 借贷式拥塞控制 (差论证和编码)有关。 看一个不严谨但更…

Airtest工具根据App页面文字信息提取坐标进行截图保存在自定义文件夹

Airtest工具根据App页面文字信息提取坐标进行截图保存在自定义文件夹 一、项目背景 在一个项目中&#xff0c;选项被选中和未选中的节点元素的属性值无变化&#xff0c;通过AI识别率达不到百分百&#xff0c;想着通过计算图片的HSV值来判断选择能否被选中。&#xff08;HSV比…

聊聊我对AI Agents技术的一些看法

小伙伴们&#xff01;我来兑现承诺啦&#xff5e; ps&#xff1a;接下来期待什么内容&#xff0c;欢迎在评论区留言&#xff01; 今天&#xff0c;我们就来聊聊大模型 Agent。 最近这几个月&#xff0c;Agent 这一概念可谓火出天际&#xff0c;从 AutoGPT 一周 6 万 star 刷新…

云安全—K8s APi Server 6443 攻击面

0x00 前言 在未授权的一文中&#xff0c;详细描述了k8s api中的8080端口未授权的问题&#xff0c;那么本篇主要来说6443端口的利用。 0x01 API连接攻击面 1.匿名用户访问 匿名开放方式&#xff1a;kubectl create clusterrolebinding cluster-system-anonymous --clusterro…

K8S部署时IP问题

本次环境搭建需要安装三台Centos服务器&#xff08;一主二从&#xff09;&#xff1b;搭配的前提时做好ip的设置 主机IP规划 IP地址的设定需要根据自己主机来设置&#xff0c;在虚拟机的虚拟网络编辑器中看他给你的ip&#xff1b;不要查什么ipconfig了。 在虚拟网络编辑器中…

Ansible中的任务执行控制

循环 简单循环 {{item}} 迭代变量名称 loop: - value1 - value2 - ... //赋值列表{{item}} //迭代变量名称循环散列或字典列表 - name: create filehosts: host1tasks:- name: file moudleservice:name: "{{ item.name }}"state: "{{…

UG\NX二次开发 先设置默认颜色再创建对象

文章作者:里海 来源网站:里海NX二次开发3000例专栏 感谢粉丝订阅 感谢 qq_42461973 订阅本专栏,非常感谢。 简介 有粉丝问,可不可以先设置默认颜色再创建对象?这个是可以的,下面是例子: 效果 代码 #include "me.hpp" using namespace std;

毅速丨3D打印结合拓扑优化让轻量化制造更容易

轻量化可以减少产品的重量&#xff0c;提高产品的性能和效率&#xff0c;同时减少能源消耗和排放。尤其在航空航天、汽车制造造等行业对轻量化追求更高。当前&#xff0c;随着制造技术的发展&#xff0c;拓扑优化结合3D打印为轻量化制造带来的显著的优势正在逐渐凸显。 首先&am…

APM建设踩了哪些坑?去哪儿旅行分布式链路追踪系统实践

一分钟精华速览 分布式链路追踪系统在企业的APM体系中扮演着重要的角色。本文分享了去哪儿旅行构建分布式链路追踪系统的实践经验。从APM整体架构设计入手&#xff0c;讲述了日志收集、Kafka传输和Flink任务处理等环节的性能优化实践和踩坑经验。 同时&#xff0c;作者结合丰…

绝地求生msvcp140.dll丢失报错怎么办,这四个方法都可以解决

在回答这个问题之前&#xff0c;我们先来了解一下什么是msvcp140.dll。msvcp140.dll是微软Visual C 2015 Redistributable的一个组件&#xff0c;它包含了许多运行库文件&#xff0c;用于支持各种应用程序的正常运行。当你在玩《绝地求生》&#xff08;俗称“吃鸡”&#xff09…

深入了解 CPU 的型号、代际架构与微架构

大家好&#xff0c;我是飞哥&#xff01; 在 10 月 16 号的时候&#xff0c;Intel 正式发布了第 14 代的酷睿处理器。但还有很多同学看不懂这种发布会上发布的各种 CPU 参数。借着这个时机&#xff0c;我给大家深入地讲讲 CPU 的型号规则、代际架构与微架构方面的知识。 CPU 在…

谈一谈SQLite、MySQL、PostgreSQL三大数据库

每一份付出&#xff0c;必将有一份收货&#xff0c;就像这个小小的果实&#xff0c;时间到了&#xff0c;也就会开花结果… 三大数据库概述 SQLite、MySQL 和 PostgreSQL 都是流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;但它们在功能、适用场景和性…

力扣每日一题94:二叉树的中序遍历

题目描述&#xff1a; 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&#x…

【第28例】IPD体系进阶 | 需求管理:需求实现过程

目录 简介 内容详解 CSDN学院相关推荐 作者简介 简介 继续 IPD 体系中的需求管理相关的专题。 先来看看整个需求管理涉及的过程内容: 需求管理流程主要包含五个阶段: 需求收集; 需求分析; 需求分发/分配;

EasyExcel动态复杂表头导出方法

目录 需求分析解决方案数据问题数据导入 需求分析 公司数据比较特殊有一部分数据需要动态修改导致信息导入时表头是不确定的&#xff0c;但其中又有一部分表头是固定的&#xff0c;如下图所示&#xff0c;如果表头全部是固定的话可以通过EasyExcel实体类的注解很轻松的解决&am…

Java自学第3课:Java语言流程控制和字符串

1 复合语句 复合语句是以区块为单位的语句&#xff0c;也就是{}内的内容。 2 条件语句 if (布尔表达式){语句序列}else{语句序列} 有个好玩的是&#xff0c;对年龄段的分段&#xff0c;其实以前的思维是有点冗余的&#xff0c;比如a<100 & a>90&#xff0c;在复合…

文本内容转换成语音播放的工具:Speech Mac

Speech Mac版是一款适用于Mac电脑的语音合成工具。它将macOS语音合成器的所有功能整合到一个易于使用的界面中。通过Speech Mac版&#xff0c;用户可以选择40多种声音和语言&#xff0c;方便地将文本转换为语音。用户可以将文本拖放或粘贴到Speech中&#xff0c;并随时更改语音…

巴黎奥运会将基于阿里云实现云上转播

10月31日&#xff0c;2023杭州云栖大会&#xff0c;奥林匹克广播服务公司与奥林匹克频道服务公司首席技术官索蒂里斯萨拉穆里斯&#xff08;Sotiris SALAMOURIS&#xff09;表示&#xff0c;过去5年阿里云作为奥运会转播的基础设施&#xff0c;让奥运故事触达了更多全球观众。 …
最新文章