当前位置: 首页 > news >正文

28.<Spring博客系统⑤(部署的整个过程(CentOS))>

引入依赖

Spring-boot-maven-plugin

用maven进行打包的时候必须用到这个插件。看看自己pom.xml中有没有这个插件

并且看看配置正确不正常。

注:我们这个项目打的jar包在30MB左右。

            <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin>

部署前的准备

1.linux环境搭建

(我使用的是腾讯云服务器)

Xshell、finalshell只是客户端。通过一些SSH协议等等连接上了云服务器。

通过这个客户端连接服务器。我们的服务器在腾讯的机房。我们的机器大概率是虚拟机的一小块。

Linux发行版:

通用用途(适合个人和企业用户):Ubuntu、Debian、Fedora、openSUSE

企业级发行版(稳定性和支持性强):RHEL、CentOS、AlmaLinux & Rocky Linux、Oracle Linux

我的是CentOS

cat /etc/centos-release

2.Java环境搭建

我们部署Spring项目,只需要JDK和MySQL就行了。

2.1安装MySQL

在 CentOS 上使用 yum 安装 MySQL

1.CentOS 通常默认安装 MariaDB,需先卸载以避免冲突:

sudo yum remove mariadb* -y

2. 添加 MySQL 官方 Yum Repository

MySQL 不在默认的 CentOS 软件仓库中,需要手动添加 MySQL 官方仓库。

sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

3. 启用所需的 MySQL 版本

MySQL 官方仓库默认启用的是 MySQL 8.x。如果需要其他版本(如 MySQL 5.7),可以切换仓库。

查看可用仓库:

yum repolist all | grep mysql

启用 MySQL 5.7(示例):

通过这两行命令。我们再次查看可用仓库发现5.7被启用

sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community

默认仓库

  • mysql80-community 表示 MySQL 8.x
  • mysql57-community 表示 MySQL 5.7

4. 安装 MySQL

运行以下命令安装 MySQL Server:

sudo yum install mysql-community-server

如果安装不了就

如果你确认源可信,可以使用 --nogpgcheck 跳过 GPG 签名检查:

sudo yum install mysql-community-server --nogpgcheck

5. 启动 MySQL 服务

安装完成后,启动 MySQL 服务并设置为开机自启动:

sudo systemctl start mysqld
sudo systemctl enable mysqld

6. 获取初始密码

安装完成后,MySQL 会生成一个随机的 root 用户初始密码:

查看密码:

sudo grep 'temporary password' /var/log/mysqld.log

使用随机生成的密码登录 MySQL 并配置安全选项

7.登录 MySQL:

mysql -u root -p

登录成功!

修改密码: 登录成功后,建议尽快修改 root 用户的密码。你可以使用以下命令来修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '@Qyy2024!'; 

修改密码成功

刷新权限: 修改密码后,执行以下命令使权限生效:

FLUSH PRIVILEGES;

8. 验证安装

查看 MySQL 服务状态:

sudo systemctl status mysqld

登录 MySQL 检查版本:

mysql -u root -p
mysql> SELECT VERSION();

退出mySQL

exit;

 2.2安装JDK

1.更新软件包列表

首先,确保你的系统软件包是最新的:

sudo yum update -y

2. 安装 JDK 8

使用 Yum 安装

CentOS 7 默认的软件仓库中可以找到 OpenJDK 8。你可以使用以下命令来安装:

sudo yum install java-1.8.0-openjdk-devel -y

这将安装 OpenJDK 8(开发工具包)。安装完成后,使用以下命令检查 JDK 版本:

java -version

一、部署 Web 项目到 Linux

1.1部署简介

工作中涉及到的 "环境"

开发环境:开发人员写代码用的机器。  
测试环境:测试人员测试程序使用的机器。  
生产环境(线上环境):最终项目发布时所使用的机器,对稳定性要求很高。  

把程序安装到生产环境上,这个过程称为“部署”,也叫“上线”。  
一旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到。  
换句话说,如果程序有 BUG,这个 BUG 也就被千千万万的用户看到了。  

部署过程至关重要,属于程序开发中最重要的一环。一旦部署出现问题,极有可能导致严重的事故(服务器不可用之类的)。  
为了防止部署出错,一般公司内部都有一些自动化部署工具(如 Jenkins 等)。当前我们先使用手工部署的方式来完成部署。

1.2环境配置

程序正常运行,需要保证环境和程序都正确。我们需要先设置环境。

下面内容都算是在配置环境

二、数据准备

按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构。

2.1进入MySQL

使用下面命令

mysql -u root -p

 然后输入你设定的数据库密码。

进入MySQL

2.2查看所有数据库

SHOW DATABASES;

 

 2.2建立项目数据库

create database if not exists spring_blog charset utf8mb4;

2.3创建并插入用户表的数据 

创建用户表

DROP TABLE IF EXISTS spring_blog.user;
CREATE TABLE spring_blog.user(`id` INT NOT NULL AUTO_INCREMENT,`user_name` VARCHAR ( 128 ) NOT NULL,`password` VARCHAR ( 128 ) NOT NULL,`github_url` VARCHAR ( 128 ) NULL,`delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),
PRIMARY KEY ( id ),
UNIQUE INDEX user_name_UNIQUE ( user_name ASC )) ENGINE = INNODB DEFAULT
CHARACTER SET  = utf8mb4 COMMENT = '⽤⼾表';

插入数据 

INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (1, '祁洋洋', 'd320f77068b94c09917527a01e66641237df2f24979a5640223d68eda19db72f', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');
INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (2, 'lisi', '0f1aa87de7264681bedd1a93ec2a1c7e03f98725955d67127895a573aa54eeea', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');
INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (3, 'wangwu', '9462b4c2bc2a400fae42215063b0da7a8afef7e4684de09de9158af4454a7066', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');
INSERT INTO spring_blog.user (id, user_name, password, github_url, delete_flag, create_time, update_time) VALUES (4, 'luliu', '809a42b7834c42bcbf0344112766947d3c8f106803baf19a0736febd045afe55', 'https://gitee.com/Bwindmill', 0, '2024-11-11 18:06:02', '2024-11-11 18:06:02');

 2.4创建并插入博客表的数据 

drop table if exists spring_blog.blog;
CREATE TABLE spring_blog.blog (`id` INT NOT NULL AUTO_INCREMENT,`title` VARCHAR(200) NULL,`content` TEXT NULL,`user_id` INT(11) NULL,`delete_flag` TINYINT(4) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),PRIMARY KEY (id))ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '博客表';

 

INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (1, '第⼀篇博客', '1111111', 1, 0, '2024-11-12 18:09:29', '2024-11-12 18:09:29');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (2, '代码测试', '你好我是测试的正文', 2, 1, '2024-11-12 18:09:29', '2024-11-12 18:09:29');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (3, '我是第三篇博客', '你好你好我是第三篇博客的正文', 2, 0, '2024-11-12 18:14:53', '2024-11-12 18:14:53');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (4, '这是我今天写的博客11/13', '我真的服了,今天我太坏了了,我大黑阿辉阿訇后哦ID除外反馈就问你打开几句话ID号呕吼后欧欧尼哦i就哦ID哦ijoin1io囧', 1, 0, '2024-11-13 21:31:54', '2024-11-13 21:31:54');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (5, '测试一下', '##在这里写下一篇博客
咋回事呀我回答我i啊好ID
#带娃地哦啊哦判定为', 1, 0, '2024-11-13 21:50:37', '2024-11-13 21:50:37');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (6, '今天是什么日子', '#一、今天
##1.1今天是什么
今天是个好日子。好呀好日子。
##1.2今天能干什么
今天我吃饭了,写了博客系统的好多内容。我还准备早点睡觉呢红红火火恍恍惚惚哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈', 1, 0, '2024-11-13 22:09:02', '2024-11-13 22:09:02');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (7, '今天的博客日记', '##一、这是我新发布的一篇博客
今天我要做的内容有很多。首先上完课。再利用课余时间好好的学习Java呀红红火火恍恍惚惚哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈', 1, 0, '2024-11-14 11:18:29', '2024-11-14 11:18:29');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (8, '哈达', '##在这里写下一篇博客
这是待删除博客', 1, 1, '2024-11-14 22:24:24', '2024-11-14 22:24:24');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (9, '这是我LiSi的文章', '##在这里写下一篇博客
这是我发布的文章,希望大家支持!!!', 2, 0, '2024-11-16 14:02:19', '2024-11-16 14:02:19');
INSERT INTO spring_blog.blog (id, title, content, user_id, delete_flag, create_time, update_time) VALUES (10, '我是第三篇博客', '你好你好我是第三篇博客的正文', 2, 0, '2024-11-16 22:11:53', '2024-11-16 22:11:53');

 

2.5查看我们创建的数据库以及数据表 

 

 

 博客中的数据太多了就不截图了。自此数据准备工作完成。

三、(打prod版本的Jar包)程序配置文件修改

实际工作中,开发环境、测试环境以及生产环境的配置都是不一样的,例如 MySQL 的用户名和密码。
我们可以针对不同的环境,设置不同的配置文件。

3.1创建application-dev.yml文件

写入我们原本的配置文件

# 应用服务 WEB 访问端口
server:port: 1208spring:datasource:url: jdbc:mysql://127.0.0.1:3306/spring_blog?characterEncoding=utf8&useusername: rootpassword: 12345678driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:configuration:map-underscore-to-camel-case: true #配置驼峰⾃动转换 #user_id转userIdlog-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句mapper-locations: classpath:mapper/**Mapper.xml#设置⽇志⽂件的⽂件名
logging:file:name: spring-blog.log

3.2创建application-prod.yml文件

写入部署到linux环境中的配置文件

# 应用服务 WEB 访问端口
server:port: 1208spring:datasource:url: jdbc:mysql://127.0.0.1:3306/spring_blog?characterEncoding=utf8&useusername: rootpassword: "@Qyy2024!"driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:configuration:map-underscore-to-camel-case: true #配置驼峰⾃动转换 #user_id转userId
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句mapper-locations: classpath:mapper/**Mapper.xml#设置⽇志⽂件的⽂件名
logging:file:name: spring-blog.log

在pom.xml添加如下代码

3.3自定义配置pom.xml

​<profiles><profile><id>dev</id><properties><!--自定义配置--><profile.name>dev</profile.name></properties></profile><profile><id>prod</id><properties><!--自定义配置--><profile.name>prod</profile.name></properties></profile></profiles>​

maven中上面会出现一个配置文件。

我们在原本的配置文件

3.4application.yml文件

中写入

spring:profiles:active: ${profile.name}
//    active: @profile.name@

这样我们就可以勾选。便于我们引用不同配置文件了

我们打一个prod版本的jar包。 

多平台文件配置
在多平台部署时,可能需要为不同的操作系统或平台配置不同的文件。根据平台的不同,配置文件的内容也需要做相应调整,确保程序能够在所有目标平台上正确运行。

四、正式部署

4.1创建部署目录

我们将项目部署在

Production-deployment/spring_blog目录下面

4.2将jar包放到部署目录中 

拖动jar包。到这个目录中(由于我使用的是finalshell不支持拖拽方式将 .jar 文件从 Windows 本地环境传输到服务器。)

我使用 SCP 从 Windows 上传 .jar 文件到 CentOS 服务器:

下载并安装 WinSCP。

  • 输入你的服务器 IP 地址、SSH 登录用户名、以及密码。
  • 连接到你的 CentOS 服务器。

然后我就可进行拖拽了

放置成功!

4.3开放端口号

参考链接:

Centos防火墙设置与端口开放的方法

如何还不行就

云服务器上看 安全组 开放1208端口

4.4启动项目!!!

4.4.1通过 java -jar jar包全名(非后台启动方式)

这种方式当我们把启动的窗口关掉。进程也就被杀掉了。

示例:

java -jar spring-blog-0.0.1-SNAPSHOT.jar

启动成功!

不过

4.4.2 nohup .... & (后台启动方式)

完整命令

nohup java -jar spring-blog-0.0.1-SNAPSHOT.jar &

这样启动之后。即便我们关掉启动窗口。服务依然是启动的

这样启动敲空格后是可以直接输入命令的。看错误日志也可以直接在这里看 

检查日志输出

默认情况下,nohup 会将日志输出到 nohup.out 文件。查看该文件内容:

cat nohup.out


如果内容过多,使用 tail 命令查看最新的日志:

tail -n 50 nohup.out

eg:

tail -100f spring-blog.log

查看下面100行日志 

坑点:

通过后台部署。如果 项目进行更新了。我们启动新的jar包。

我们以为更新部署成功。实际上么有。一定要通过

cat nohup.out

看日志

这时候会发现

报错了。端口号已经被使用了。项目部署失败。

解决办法:

1.杀死进程(推荐)

首先查看进程Id.如下图14723就是我们spring_blog系统的进程Id

ps -ef|grep java

使用kill -9 杀掉进程

kill -9 14723

如上图,进程已经被杀死。此时我们就可以发布新的jar包了

2.修改端口号

nohup java -jar spring-blog-0.0.1-SNAPSHOT.jar --server.port=9090 &

不过此时我们就启动了两个程序了。

不过此时日志混在了一起。我们也可以进行指定日志。

4.5启动项目时遇到的问题

4.5.1要我将@profile.name@修改为${profile.name}

spring:profiles:active: @profile.name@

修改为

spring:profiles:active: ${profile.name}

不过这样修改之后还是有点问题。因此我直接 

spring:profiles:active: prod

 自此项目终于启动成功!!!!!

4.5.2无法访问

考虑原因

1.服务未启动

2.端口未开放 

看服务是否启动的方法

1.通过命令

ps -ef|grep java

ps -ef 拿到所有程序

grep java 查询进程里面有java的东西

如图并没有查询到我们的java程序。 这个查出来的只是grep命令。

然后我们启动服务再次查询

2.通过curl

curl http://127.0.0.1:1208/blog_login.html

若能得到Html代码,说明服务已经启动。那么就是端口号未开放了。只需要去开放端口号就行了

 注意事项:

1.在配置文件中 IP 地址依然是:127.0.0.1

2.部署后打开项目的 IP 地址填云服务器的公网IP地址。也就是主机。

我的是 150.158.148.151

3.错误日志跟踪命令

tail -f spring.log | grep "ERROR"

相关文章:

28.<Spring博客系统⑤(部署的整个过程(CentOS))>

引入依赖 Spring-boot-maven-plugin 用maven进行打包的时候必须用到这个插件。看看自己pom.xml中有没有这个插件 并且看看配置正确不正常。 注&#xff1a;我们这个项目打的jar包在30MB左右。 <plugin><groupId>org.springframework.boot</groupId><artif…...

OpenAI震撼发布:桌面版ChatGPT,Windows macOS双平台AI编程体验!

【雪球导读】 「OpenAI推出ChatGPT桌面端」 OpenAI重磅推出ChatGPT桌面端&#xff0c;全面支持Windows和macOS系统&#xff01;这款新工具为用户在日常生活和工作中提供了前所未有的无缝交互体验。对于那些依赖桌面端进行开发工作的专业人士来说&#xff0c;这一更新带来了令人…...

香港站群服务器有助于提升网站在搜索引擎中的排名

拥有253个IP的服务器通常被称为多IP站群服务器。这种服务器架构主要用于集中管理多个网站&#xff0c;允许网站管理员通过一个后台管理系统来高效管理和更新这些网站。 一、主要特点 集中管理&#xff1a;多IP站群服务器通过统一的后台管理系统&#xff0c;可以实现对多个网站…...

YOLOX:使用自己数据集训练模型及改进--1.YOLOX环境搭建及运行

YOLOX环境搭建及运行 YOLO X网络架构是继YOLO v5后,由旷视科技于2021年提出的新一代anthor-free模型,研究者将网络分为输入端、Backbone、PAFPN及Predication,并在Predication提出Decoupled Head、Anchor-free和Multi positives(后文会详细介绍)。 本篇文章介绍如何通过官…...

PyTorch使用教程-深度学习框架

PyTorch使用教程-深度学习框架 1. PyTorch简介 1.1-什么是PyTorch ​ PyTorch是一个广泛使用的开源机器学习框架&#xff0c;特别适合深度学习的应用。它以其动态计算图而闻名&#xff0c;允许在运行时修改模型&#xff0c;使得实验和调试更加灵活。PyTorch提供了强大的GPU加…...

TON商城与Telegram App:生态融合与去中心化未来的精彩碰撞

随着区块链技术的快速发展&#xff0c;去中心化应用&#xff08;DApp&#xff09;逐渐成为了数字生态的重要组成部分。而Telegram作为全球领先的即时通讯应用&#xff0c;不仅仅满足于传统的社交功能&#xff0c;更在区块链领域大胆探索&#xff0c;推出了基于其去中心化网络的…...

“乐鑫组件注册表”简介

当启动一个新的开发项目时&#xff0c;开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间&#xff0c;还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念&#xff0c;旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…...

凹凸/高度贴图、法线贴图、视差贴图、置换贴图异同

参考&#xff1a; 凹凸贴图、法线贴图、置换贴图-CSDN博客 视差贴图 - LearnOpenGL CN 1,Learn about Parallax(视差贴图) - 知乎 “视差贴图”的工作流程及原理(OpenGL) - 哔哩哔哩 法线与置换贴图原理讲解以及烘焙制作&#xff01; - 知乎 1. Bump Mapping 凹凸贴图 BumpMap…...

ZSTD 内存泄漏问题

优质博文&#xff1a;IT-BLOG-CN Zstandard&#xff08;简称zstd&#xff09;是一种无损压缩算法&#xff0c;由Facebook开发并开源。它旨在提供高压缩比和高解压速度的平衡&#xff0c;适用于多种数据压缩需求。 特点 【1】高压缩比&#xff1a; zstd能够在保持较高压缩比的…...

c# npoi操作excel

今天在弄使用npoi对excel表的操作&#xff0c;遇到个问题就是使用workbook通过filestream打开后&#xff0c;让后workbook.write(filestream)居然报文件流关闭了&#xff0c;无法写入&#xff0c;弄了好久都不行&#xff0c;最后通过写2个excel文件来解决&#xff0c;现在看来我…...

十二:HTTP错误响应码:理解与应对

在现代网络技术中,HTTP(超文本传输协议)是浏览器与服务器之间沟通的基础。每当我们访问网站或发送请求,HTTP会返回一个响应码,这些代码不仅可以表示成功,还可以指示各种问题。本文将以HTTP错误响应码为主题,探讨其含义、常见类型及应对措施。 1. 400 Bad Request - 请求…...

Rust学习(六):函数式编程

Rust学习&#xff08;六&#xff09;&#xff1a;函数式编程 我们在前一篇博客中已经介绍了如何通过trait和impl实现Rust的面向对象编程&#xff0c;但是Rust本身实际上并不提倡通过类来解决问题。Rust推崇的是函数式编程&#xff0c;强调将函数作为参数值或者其他函数的返回值…...

使用 Vue 和 Create-Vue 构建工程化前端项目

目录 前言1. 工程化的意义与 Vue 的生态支持2. 搭建 Vue 工程化项目2.1 环境准备2.2 使用 create-vue 创建项目2.2.1 初始化项目2.2.2 安装依赖2.2.3 本地运行 3. Vue 项目的目录结构解析4. Vue 开发流程详解4.1 项目入口与根组件4.1.1 main.js 的作用4.1.2 App.vue 的结构 4.2…...

opencv图片明暗度判断方法

OpenCV 的LAB 颜色空间&#xff08;也称为 CIELAB&#xff09;是一种颜色对手的颜色模型&#xff0c;它旨在模仿人类的色彩感知。LAB 颜色空间由三个分量组成&#xff1a; L: 亮度分量 (Lightness)&#xff0c;范围从 0&#xff08;黑色&#xff09;到 100&#xff08;白色&…...

QT6学习第三天

QT6学习第三天 第一个Widgets项目创建项目项目界面简单介绍编译文件介绍 我在第一天中将重点标了颜色&#xff0c;后边我把一些简单的东西都不写了&#xff0c;写了的都是实际用的东西&#xff0c;就不标颜色了。 第一个Widgets项目 首先我们创建一个widgets项目&#xff0c;…...

计算机网络-MSTP基础实验一(单域多实例)

前面我们已经大致了解了MSTP的基本概念和工作原理&#xff0c;但是我自己也觉得MSTP的理论很复杂不结合实验是很难搞懂的&#xff0c;今天来做一个配套的小实验以及一些配置命令。 一、网络拓扑 单域多实例拓扑 基本需求&#xff1a;SW1为VLAN10的网关&#xff0c;SW2为VLAN20的…...

React合成事件及其核心思想详解

相关联Javascript知识 1.JavaScript 的事件流 事件流是 JavaScript 处理事件的机制&#xff0c;它描述了事件从发生到被处理的过程。事件流主要包括两个阶段&#xff1a;捕获阶段和冒泡阶段。在捕获阶段&#xff0c;事件从文档的根元素开始&#xff0c;逐层向下传播到目标元素&…...

Datawhale模型减肥秘籍Tasking之模型量化

Datawhale模型减肥秘籍Tasking之模型量化 什么是量化&#xff1f;为什么量化&#xff1f;量化基本方法基于k-means的量化线性量化 训练后量化量化粒度动态量化参数的计算 ( Cliping )指数移动平均&#xff08;EMA&#xff09;Min-MaxKL 量化均方误差&#xff08;MSE&#xff09…...

在云服务器搭建 Docker

操作场景 本文档介绍如何在腾讯云云服务器上搭建和使用 Docker。本文适用于熟悉 Linux 操作系统&#xff0c;刚开始使用腾讯云云服务器的开发者。如需了解更多关于 Docker 相关信息&#xff0c;请参见 Docker 官方。 说明&#xff1a; Windows Subsystem for Linux&#xff…...

Redis 的代理类注入失败,连不上 redis

在测试 redis 是否成功连接时&#xff0c;发现 bean 没有被创建成功&#xff0c;导致报错 根据报错提示&#xff0c;需要我们添加依赖&#xff1a; <dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>&l…...

版本控制【Git Bash】【Gitee】

目录 一、什么是版本控制&#xff1f; 二、版本控制的种类&#xff1a; 1、本地版本控制 2、集中版本控制 3、分布式版本控制 三、下载Git Bash 四、Git Bash 配置 五、Git Bash使用 1、切换目录&#xff1a;cd 2.查看当前文件路径&#xff1a;pwd 3.列出当前目录下文件…...

Neo4j Desktop 和 Neo4j Community Edition 区别

Neo4j Desktop 和 Neo4j Community Edition 的主要区别在于它们的用途、功能以及安装和管理方式。以下是这两者的详细对比&#xff1a; 1. Neo4j Desktop Neo4j Desktop 是一个图形化的桌面应用程序&#xff0c;主要为开发人员和个人使用提供了一个便捷的环境来安装、管理和运…...

使用uniapp开发微信小程序使用uni_modules导致主包文件过大,无法发布的解决方法

在使用uniapp开发微信小程序时候&#xff0c;过多的引入uni_modules的组件库&#xff0c;会导致主包文件过大&#xff0c;导致无法上传微信小程序&#xff0c;主包要求大小不超过1.5MB.分包大小每个不能超过2M。 解决方法&#xff1a;分包。 1.对每个除了主页面navbar的页面进…...

HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)事件推荐开发者测试

意图框架向开发者提供真机测试能力&#xff0c;即开发者可连接设备进行调测。开发者完成代码开发之后&#xff0c;功能正式上架应用市场前&#xff0c;可以在HarmonyOS NEXT设备上面进行自验证&#xff0c;打磨体验。真机测试分为三个步骤&#xff1a;基础信息提供&#xff0c;…...

GD32F103 实践-- MCU编译运行

编译 打开固件库示例工程&#xff1a;在SDK路径下找到固件库示例工程&#xff0c;路径通常是SDK\GD32F10x_Firmware_Library_Template\Keil5_project\Project 选择芯片型号&#xff1a;根据你的MCU型号选择&#xff0c;例如GD32F103RCT6 修改宏定义&#xff1a;根据MCU型号修…...

SQL复杂数据类型处理

背景 数据处理中&#xff0c;经常碰到复杂数据类型&#xff0c;需要将他们进行解析才能利用。 复杂数据类型 1、MAP结构转为列 WITH tmp AS ( SELECT {"Users":{"4418":{"UserId":4418,"Score":0,"IsStudent":true},&q…...

ROS第九梯:ROS+VSCode+Python+C++自定义消息发布和订阅

首先,Python版本的ROS项目和C++版本的ROS项目前期创建功能包的步骤基本一致,具体可参考第二章。 费一步:新建msg文件 在功能包(data_input)目录下创建一个msg文件夹,并在msg文件夹下创建一个名为Box的msg文件,具体如下图所示: 该msg文件为一个用于描述3D Box的文件,…...

【Linux】指令 + 压缩与解压

Linux 一.Linux基本指令1.grep2.zip和unzip1.Linux中的压缩文件发送Windows中2.Linux中接收Windows中压缩文件 3.tar&#xff08;重要&#xff09;1.Linux与Linux互传压缩文件 4.bc5.uname 二.Linux相关知识点1.Linux常用热键2.关机操作 一.Linux基本指令 1.grep 行文本过滤工…...

力扣(leetcode)题目总结——动态规划篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏&#xff1a;点击进入 leetcode题目分类 关注走一波 前言&#xff1a;本系列文章初衷是为了按类别整理出力扣&#xff08;leetcode&#xff09;最经典题目&#xff0c…...

数据仓库数据湖湖仓一体解决方案

一、资料介绍 数据仓库与数据湖是现代数据管理的两大核心概念。数据仓库是结构化的数据存储仓库&#xff0c;用于支持企业的决策分析&#xff0c;其数据经过清洗、整合&#xff0c;以固定的模式存储&#xff0c;适合复杂查询。数据湖则是一个集中存储大量原始数据的存储库&…...

织梦网站自适应怎么做/网上推广方式

题目: 给定一个链表&#xff0c;交换每两个相邻的节点并返回其头。 例如&#xff0c;给定1->2->3->4&#xff0c;您应该返回列表2->1->4->3。 您的算法应该仅使用恒定空间。您不能修改列表中的值&#xff0c;只能改变节点本身。 思路&#xff1a;从链表的头节…...

兴义网站建设网站建设/关键词点击优化工具

现在&#xff0c;大多数网站设计师都无法阻止探索设计和UI的世界。 这样就产生了好主意和更好的计划。 他们可能会提出更多特殊效果&#xff0c;这些效果将在当今的现代网站中使用。 现在&#xff0c;我这里是jQuery“ DragN Drop”插件列表。 从桌面应用程序以及涉及此类操作的…...

网站开发投标书/推广渠道平台

spring的整体架构 架构图&#xff1a; 这些模块可以分为以下几个部分&#xff1a; core container core container 包括 core beans EL context core 和 beans 模块是框架的基础部分&#xff0c;提供 IOC 控制反转 和依赖注入的特性。 core模块中包含spring框架的基本核心类&am…...

北京市住房和城乡建设委官方网站/怎么快速推广app

以下是使用C语言编写的计算皮球自由落体的程序: #include <stdio.h>int main() {float height = 100; // 皮球初始高度为100米float distance = height; // 皮球下落的距离float rebound = height; // 皮球反弹的高度// 循环计算皮球第1次到第10次落地的情况for (int…...

网站模板/广州百度seo 网站推广

一、方案背景&#xff1a; 最近由于国内煤炭价格上涨&#xff0c;同时叠加国家碳中和的相关政策影响全国&#xff0c;很多地区出现了有序限电&#xff0c;甚至拉闸限电等多种情况&#xff0c;导致加油站无法正常的运作。为此&#xff0c;加油站都会配备UPS电源为加油站主机及油…...

怎么在百度做网站/杭州免费网站制作

原文转自Understanding Generative Adversarial Networks (GANs)&#xff0c;将其翻译过来进行学习。1. 介绍Yann LeCun将生成对抗网络描述为“近十年来机器学习中最有趣的想法”。 的确&#xff0c;自从2014年由Ian J. Goodfellow及其合作者在文献Generative Adversarial Nets…...