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

news2024/11/22 14:46:49

引入依赖

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: 1208

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/spring_blog?characterEncoding=utf8&use
    username: root
    password: 12345678
    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

3.2创建application-prod.yml文件

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

# 应用服务 WEB 访问端口
server:
  port: 1208

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/spring_blog?characterEncoding=utf8&use
    username: root
    password: "@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.coloradmin.cn/o/2245382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣力扣力:860柠檬水找零

860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 需要注意的是&#xff0c;我们一开始是没有任何钱的&#xff0c;也就是说我们需要拿着顾客的钱去找零。如果第一位顾客上来就是要找零那么我们无法完成&#xff0c;只能返回false。 分析&#xff1a; 上来我们先不分…

[开源] SafeLine 好用的Web 应用防火墙(WAF)

SafeLine&#xff0c;中文名 “雷池”&#xff0c;是一款简单好用, 效果突出的 Web 应用防火墙(WAF)&#xff0c;可以保护 Web 服务不受黑客攻击 一、简介 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注…

【动手学深度学习Pytorch】1. 线性回归代码

零实现 导入所需要的包&#xff1a; # %matplotlib inline import random import torch from d2l import torch as d2l import matplotlib.pyplot as plt import matplotlib import os构造人造数据集&#xff1a;假设w[2, -3.4]&#xff0c;b4.2&#xff0c;存在随机噪音&…

Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程

环境&#xff1a; keil版本为5.38&#xff0c;版本务必高于5.30 STM32F4的pack包版本要高于2.9 软件包下载地址&#xff1a;https://zhuanlan.zhihu.com/p/262507061 一、更改Keil中编译器 更改后编译&#xff0c;会报很多错&#xff0c;先不管。 二、更改头文件依赖 观察…

数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall

数据集-目标检测系列- 花卉 玫瑰 检测数据集 rose >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 贵在坚持&#xff01; 数据样例项目地址&#xff1a; * 相关项目 1&#xff09;数据集可视化项…

Linux驱动编程 - kmalloc、vmalloc区别

目录 前言&#xff1a; 1、区别 2、使用差异 一、kmalloc、kzalloc、kfree 1、动态申请 1.1 kmalloc() 1.2 kzalloc() 2、内存释放 3、示例 二、vmalloc、vzalloc、vfree 1、动态申请 1.1 vmalloc() 1.2 vzalloc() 2、内存释放 3、示例 前言&#xff1a; Linux内…

使用低成本的蓝牙HID硬件模拟鼠标和键盘来实现自动化脚本

做过自动化脚本的都知道&#xff0c;现在很多传统的自动化脚本方案几乎都可以被检测&#xff0c;比如基于root&#xff0c;adb等方案。用外置的带有鼠标和键盘功能集的蓝牙HID硬件来直接点击和滑动是非常靠谱的方案&#xff0c;也是未来的趋势所在。 一、使用蓝牙HID硬件的优势…

VideoCrafter模型部署教程

一、介绍 VideoCrafter是一个功能强大的AI视频编辑和生成工具&#xff0c;它结合了深度学习和机器学习技术&#xff0c;为用户提供了便捷的视频制作和编辑体验。 系统&#xff1a;Ubuntu22.04系统&#xff0c;显卡&#xff1a;4090&#xff0c;显存&#xff1a;24G 二、基础…

#渗透测试#SRC漏洞挖掘#Python自动化脚本的编写05之多线程与多进程

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

C++多继承:一个子类继承多个父类的情况

C的类继承大家还算比较了解。它主要包括单继承、多继承、虚继承这几方面。 单继承就是一个子类只继承一个父类&#xff0c;多继承就是一个子类继承多个父类。 其实在C中&#xff0c;一个子类继承多个父类的情况还是比较常见的。比如&#xff0c;一个子类需要同时继承两个父类…

在windows电脑上安装docker服务

以下是在 Windows 电脑上安装 Docker 服务的详细步骤&#xff1a; 一、下载 Docker Desktop for Windows 系统要求&#xff1a;Windows 操作系统需要是 Windows 10&#xff08;64 位&#xff09;专业版、企业版或教育版&#xff0c;或者是 Windows 11。并且系统要开启了硬件虚…

单片机UART协议相关知识

概念 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发传输器&#xff09; 是一种 异步 串行 全双工 通信协议&#xff0c;用于设备一对一进行数据传输&#xff0c;只需要两根线&#xff08;TX&#xff0c;RX&#xff09;。 异步&…

XXL-JOB执行任务的SpringBoot程序无法注册到调度中心

文章目录 1. 问题呈现2. 问题产生的原因2.1 原因一&#xff1a;执行器和调度中心部署在不同的机器上2.2 原因二&#xff1a;调度中心部署在云服务器上 3. 解决方法3.1 方法一&#xff1a;将执行器和调度中心部署在同一台机器上3.2 方法二&#xff1a;手动指定执行器的ip地址&am…

Ettus USRP X410

总线连接器: 以太网 RF频率范围: 1 MHz 至 7.2 GHz GPSDO: 是 输出通道数量: 4 RF收发仪瞬时带宽: 400 MHz 输入通道数量: 4 FPGA: Zynq US RFSoC (ZU28DR) 1 MHz to 7.2 GHz&#xff0c;400 MHz带宽&#xff0c;GPS驯服OCXO&#xff0c;USRP软件无线电设备 Ettus USRP X410集…

哋它亢SEO技术分析:如何提升网站在搜索引擎中的可见性

文章目录 哋它亢SEO技术分析&#xff1a;如何提升网站在搜索引擎中的可见性网站的基本情况SEO优化分析与建议1. 元数据优化2. 关键词优化3. URL结构4. 图像优化5. 移动端优化6. 网站速度7. 结构化数据&#xff08;Schema Markup&#xff09;8. 内链与外链9. 社交分享 哋它亢SEO…

将网站地址改成https地址需要哪些材料

HTTPS&#xff08;安全超文本传输协议&#xff09;是HTTP协议的扩展。它大大降低了个人数据&#xff08;用户名、密码、银行卡号等&#xff09;被拦截的风险&#xff0c;还有助于防止加载网站时的内容替换&#xff0c;包括广告替换。 在发送数据之前&#xff0c;信息会使用SSL…

mongodb多表查询,五个表查询

需求是这样的&#xff0c;而数据是从mysql导入进来的&#xff0c;由于mysql不支持数组类型的数据&#xff0c;所以有很多关联表。药剂里找药物&#xff0c;需要药剂与药物的关联表&#xff0c;然后再找药物表。从药物表里再找药物与成分关联表&#xff0c;最后再找成分表。 这里…

端到端的专线管理与运维:实时掌握专线的运行状态

在当今高度信息化的时代&#xff0c;专线服务已成为企业数据传输的重要组成部分。为了确保专线服务的高效、稳定运行&#xff0c;我们采用了先进的端到端管理模式&#xff0c;对专线的运行状态和质量进行全面监控。本文将从专线管理的必要性、端到端管理模式的优势、实施步骤以…

SpringBoot(8)-任务

目录 一、异步任务 二、定时任务 三、邮件任务 一、异步任务 使用场景&#xff1a;后端发送邮件需要时间&#xff0c;前端若响应不动会导致体验感不佳&#xff0c;一般会采用多线程的方式去处理这些任务&#xff0c;但每次都需要自己去手动编写多线程来实现 1、编写servic…

PostgreSQL常用字符串函数与示例说明

文章目录 coalesce字符串位置(position strpos)字符串长度与大小写转换去掉空格(trim ltrim rtrim)字符串连接(concat)字符串替换简单替换(replace)替换指定位置长度(overlay)正则替换(regexp_replace) 字符串匹配字符串拆分split_part(拆分数组取指定位置的值)string_to_array…