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"

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无人机在森林中的应用!

一、森林资源调查 无人机可以利用遥感技术快速获取所需区域高精度的空间遥感信息&#xff0c;对森林图斑进行精确区划。相较于传统手段&#xff0c;无人机调查具有低成本、高效率、高时效的特点&#xff0c;尤其在地理环境条件不好的区域&#xff0c;调查人员无法或难以到达的…

esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器

MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息协议&#xff0c;旨在设备之间进行通信&#xff0c;尤其是在网络条件较差的情况下。MQTT v3.1.1 和 MQTT v5 是该协议的两个主要版本。 MQTT v3.1.1&#xff1a; 优点&#xff…

什么是SMARC?模块电脑(核心板)规范标准简介三

1. 概念 SMARC&#xff08;Smart Mobility ARChitecture&#xff0c;智能移动架构&#xff09;是一种通用的小型计算机模块定义&#xff0c;基于ARM和X86技术的模块化计算机低功耗嵌入式架构平台&#xff0c;旨在满足低功耗、低成本和高性能的应用需求。这些模块通常使用与平板…

resnet50,clip,Faiss+Flask简易图文搜索服务

一、实现 文件夹目录结构&#xff1a; templates -----upload.html faiss_app.py 前端代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widt…

JavaWeb——JS、Vue

目录 1.JavaScript a.概述 b.引入方式 c.JS的基础语法 d.JS函数 e.JS对象 f.JS事件监听 2.Vue a.概述 b.Vue常用指令 d.生命周期 1.JavaScript a.概述 JavaScript是一门跨平台、面向对象的脚本语言。是用来控制网页行为的&#xff0c;它能使网页可交互。JavaScript和…

MySQL的编程语言

一、MySQL基础 使用系统的全局变量@@VERSION查看当前使用的MySQL的版本信息,SQL语句如下: select @@version; 将局部变量varl声明为char的类型,长度值为10,并为其赋值为“程菲” begin declare var1 char(10); set @var1="程菲"; end 通过局部变量查看d_eams数…

小程序-基于java+SpringBoot+Vue的驾校预约平台设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

阿里云引领智算集群网络架构的新一轮变革

阿里云引领智算集群网络架构的新一轮变革 云布道师 11 月 8 日~ 10 日在江苏张家港召开的 CCF ChinaNet&#xff08;即中国网络大会&#xff09;上&#xff0c;众多院士、教授和业界技术领袖齐聚一堂&#xff0c;畅谈网络未来的发展方向&#xff0c;聚焦智算集群网络的创新变…

【ASR技术】WhisperX安装使用

介绍 WhisperX 是一个开源的自动语音识别&#xff08;ASR&#xff09;项目&#xff0c;由 m-bain 开发。该项目基于 OpenAI 的 Whisper 模型&#xff0c;通过引入批量推理、强制音素对齐和语音活动检测等技术。提供快速自动语音识别&#xff08;large-v2 为 70 倍实时&#xf…

android framework ams/wms常见系统日志(main\system\events\crash,protoLog使用)

重要性 wms和ams的一些系统原生日志能够帮助我们快速定位问题 日志分类 在日常framework工作中常见的日志类别如下&#xff1a; -b , --buffer Request alternate ring buffer, ‘main’, ‘system’, ‘radio’, ‘events’, ‘crash’, ‘default’ or ‘all’. Additiona…

2024年11月16日 星期六 重新整理Go技术

今日格言 坚持每天进步一点点~ 一个人也可以是一个团队~ 学习全栈开发, 做自己喜欢的产品~~ 简介 大家好, 我是张大鹏, 今天是2024年11月16日星期六, 很高兴在这里给大家分享技术. 今天又是休息的一天, 做了很多的思考, 整理了自己掌握的技术, 比如Java, Python, Golang,…

深度解读混合专家模型(MoE):算法、演变与原理

假设一个专家团队共同解决复杂问题。每位专家都拥有独特的技能&#xff0c;团队通过高效分配任务实现了前所未有的成功。这就是混合专家&#xff08;Mixture-of-Experts&#xff0c;MoE&#xff09;模型架构背后的基本思想&#xff0c;这种方法允许机器学习系统&#xff0c;特别…

Area-Composition模型部署指南

一、介绍 本模型可以通过输入不同的提示词&#xff0c;然后根据各部分提示词进行融合生成图片。如下图&#xff1a; 此图像包含 4 个不同的区域&#xff1a;夜晚、傍晚、白天、早晨 二、部署 环境要求&#xff1a; 最低显存&#xff1a;10G 1. 部署ComfyUI 本篇的模型部署…

HTML之列表学习记录

练习题&#xff1a; 图所示为一个问卷调查网页&#xff0c;请制作出来。要求&#xff1a;大标题用h1标签&#xff1b;小题目用h3标签&#xff1b;前两个问题使用有序列表&#xff1b;最后一个问题使用无序列表。 代码&#xff1a; <!DOCTYPE html> <html> <he…

Java基础-内部类与异常处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、Java 内部类 什么是内部类&#xff1f; 使用内部类的优点 访问局部变量的限制 内部类和继承 内部…

C/C++中使用MYSQL

首先要保证下载好mysql的库和头文件&#xff0c;头文件在/usr/include/mysql/目录下&#xff0c;库在/usr/lib64/mysql/目录下&#xff1a; 一般情况下&#xff0c;在我们安装mysql的时候&#xff0c;这些都提前配置好了&#xff0c;如果没有就重装一下mysql。如果重装mysql还是…

华为ensp实验二--mux vlan的应用

一、实验内容 1.实验要求&#xff1a; 在交换机上创建三个vlan&#xff0c;vlan10、vlan20、vlan100&#xff0c;将vlan100设置为mux-vlan&#xff0c;将vlan10设置为group vlan&#xff0c;将vlan20设置为separate vlan&#xff1b;实现vlan10的设备在局域网内可以进行互通&…

Redis知识分享(三)

目录 前言 七、事务管理 7.1事务中的异常处理 八、订阅发布 8.1概述 ​8.2.Redis针对发布订阅相关指令 九、主从复制 9.1主从复制概述 9.2.主从复制的用处 9.3主从复制实现原理 ​9.3.1.psync指令 9.3.2.复制偏移量 9.3.3复制积压缓冲区&节点ID 前言 今天…

Java基础-组件及事件处理(中)

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 BorderLayout布局管理器 说明&#xff1a; 示例&#xff1a; FlowLayout布局管理器 说明&#xff1a; …

【论文阅读】主动推理:作为感知行为的理论

文章目录 主动推理&#xff1a;作为感知行为的理论摘要1.引言2. 主动推理的概念和历史根源3. 主动推理的规范视角—以及它的发展历程 未完待续 主动推理&#xff1a;作为感知行为的理论 Active inference as a theory of sentient behavior 摘要 这篇文章综述了主动推理的历…