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

驾驭 Linux 云: JavaWeb 项目安全部署

目录

1. 引言

2. Linux 基础指令

2.1 ls 展示目录/文件

2.2 pwd 查看所在路径

2.3 mkdir 创建文件夹

2.4 cd 切换路径

2.5 touch 创建文件

2.6 rm 删除文件

2.6 rm -r/rf 删除文件夹

2.7 rz/sz 上传/下载文件

2.7.1 rz 上传文件

2.7.2 sz 下载文件

2.8 mv 移动文件

2.9 查看文件

2.9.1 cat

 2.9.2 more

2.9.3 less

2.9.4 head

2.9.5 tail

2.10 vim/vi 编辑文件

2.11 grep 查找文件内容

2.12 ps aux 查看运行进程

2.12.1 管道(|)

2.13 netstat -anp 查看网络状态

3. 搭建 Java 部署环境

3.1 apt

3.2 apt 常用命令

3.3 安装 OpenJDK

3.3.1 更新软件包

3.3.2 查找/安装 JDK 软件包

 3.4 安装 MySQL

4. Java 项目部署 Linux 云服务器

4.1 什么是部署

4.2 环境配置

4.2.1 方法一

4.2.2 方法二

4.3 项目打包

4.4 为 Linux 服务器创建数据库表

4.5 开放 8080 端口号

4.5 上传 jar 包到服务器

4.6 运行 jar 包

4.6.1 nohup 后台运行程序

4.6.2 跟踪日志

错误总结


1. 引言

本篇博客主要学习如何在 Linux 云服务器上部署 JavaWeb 项目, 以及一些基础 Linux 命令的使用.

2. Linux 基础指令

使用终端工具(这里使用的 XShell)连接 Linux 云服务器后, 就可以操作远程主机了.

为了完成了 JavaWeb 项目的部署, 我们需要学习简单的 Linux 指令.

2.1 ls 展示目录/文件

  • 语法: ls [选项] [目录或文件]
  • 功能: 列出当前目录下所有非隐藏文件和非隐藏目录 

常用的选项如下: 

  1. -a 列出目录下的所有文件, 包括以 . 开头的隐含文件。
  2. -d 将目录象文件一样显示,而不是显示其下的文件。如:ls-d指定目录
  3. -k 以k字节的形式表示文件的大小。ls-alk指定文件
  4. -l 列出文件的详细信息。
  5. -r 对目录反向排序。
  6. -t 以时间排序。
  7. -R 列出所有子目录下的文件(递归)

2.2 pwd 查看所在路径

使用 pwd 命令查看当前所在路径:

2.3 mkdir 创建文件夹

语法: mkdir 目录名

mkdir, 在当前目录下, 创建新目录.

注意, mkdir 命令只能创建单级目录, 无法创建多级目录:

 如果要创建多级目录, 需要使用 mkdir -p:

2.4 cd 切换路径

语法: cd 目录

功能: 切换当前所在目录(改变工作路径)

cd 后也可以跟多级路径:

使用 cd .. 可以回退到上一级路径:

也可以使用 cd  ~ 直接回退到根目录:

使用 cd - 返回最近访问的路径:

2.5 touch 创建文件

语法: touch 文件名

功能: 创建文件

2.6 rm 删除文件

语法: rm 文件

功能: 删除文件

2.6 rm -r/rf 删除文件夹

 rm 命令只能用来删除文件, 不能用来删除文件夹:

rm -r 命令可以对文件夹进行递归式的删除(如果遇到被保护的文件, 会进行提示):

注意: 删除文件夹, 会把该文件夹下的所有文件和目录都进行删除.

除了 rm -r 外, rm -rf 也可以对目录进行删除(强制删除, 不会提示):

rm -r 和 rm -rf 的区别如下:

命令描述交互性
rm -r递归删除目录及其内容,如果遇到只读文件或目录,或者没有删除权限的文件,会提示用户进行确认(y/n?)需要确认
rm -rf递归地强制删除目录及其内容,不会提示确认,即使遇到受保护的文件或目录也会强制删除。无需确认

 注意: "rm -rf / " 是一个非常危险的操作, 会将操作系统中的所有文件进行删除!!

当然, rm -r 或 rm -rf 也可以删除文件.

2.7 rz/sz 上传/下载文件

  1. rz: 将 Windows 上的文件上传到 Linux 服务器中.
  2. sz: 将 Linux 服务器上的文件下载到 Windows 中.

使用 rz/sz 之前, 需要先下载这两个命令, 否则无法执行:

下载 rz/sz 命令:

# 下载 rz/sz 命令
apt install lrzsz

2.7.1 rz 上传文件

下载完后, 上传文件有两种方式:

  1. 直接将文件拖到终端中:
  2. 使用 rz 命令手动选择文件:

注意: 文件上传后的位置是当前所在的目录下 .

2.7.2 sz 下载文件

sz, 即将 Linux 服务器中的文件下载到 Windows 中:

2.8 mv 移动文件

语法: mv 文件名 目标路径

功能: 将文件移动到目标路径

此外, mv 也可以改名. 

2.9 查看文件

查看文件有多种方式, 我们只需掌握常见的几种命令即可:

  1. cat
  2. more
  3. less
  4. head
  5. tail

2.9.1 cat

cat 命令, 会一次性将文件中的内容全部展示出来:

 2.9.2 more

more 命令, 使用 "懒加载" 的方式, 只展示当前屏幕大小的内容(可以说是一页一页的展示):

(展示的内容, 占文件全部内容的百分比)

如果想查看下面的内容, 回车即可. 如果想退出查看, ctr + c 即可.

此外, 如果想通过关键字查找内容, 输入 / + 关键字 即可(但无高亮提示)

2.9.3 less

less 命令查看文件内容, 也是懒加载来加载文件内容, 但是是以滑动滚轮的方式来加载新内容的.

退出 less 查看, 需要使用 :q 命令

常见的退出命令:

  1. ctr+c 
  2. :q 正常退出
  3. :q! 强制退出
  4. exit

2.9.4 head

语法: head -n 文件

功能: 展示文件的前 n 行内容, 默认为前 10 行.(是文件的前 n 行, 而不是终端窗口的 n 行)

# 展示文件前 10 行的内容
head -20 new.txt

2.9.5 tail

tail 和 head 的反过来的. 展示文件倒数前 n 行.

2.10 vim/vi 编辑文件

编辑文件的步骤如下:

  1. vim/vi 文件名 => 进入要编辑的文件
  2. i => 进入编辑模式
  3. 对文件进行编辑
  4. ESC 键 => 退出编辑模式
  5. 退出编辑页面, 回到终端窗口

其中, 退出编辑页面时, 有多种不同操作, 如下所示:

  1. :wq=>保存并退出(把修改/编辑的内容进行保存)
  2. :q!=>强制退出(不会保存修改的内容)
  3. :q=>退出(没有对文件进行任何修改,仅查看文件内容时的退出)
  4. :wq!=>强制退出并保存(他人也对该文件进行了修改并完成了保存, 该命令会强制覆盖他人修改的内容, 保存为你修改的内容)

详细流程如下: 

2.11 grep 查找文件内容

在 Windows 中, 我们可以通过 Ctrl + F 定位文本文件中的内容, 在 Linux 中也是可以的.

语法: grep [参数]... [文件]...

功能: 在文件中查找指定的字符串(有高亮提示)

选项:

  • -n <行数> 显示的行数
  • -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而而不仅仅是一个单词的一部分.
  • -r 递归查找. 可以搜索多级目录下的所有文件.
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件

 使用 -n 演示:

2.12 ps aux 查看运行进程

ps aux 查找当前系统中, 运行的所有进程:

2.12.1 管道(|)

管道(|), 可以将两个命令连接起来, 将一个命令的输出, 作为另一个命令的输入.

ps aux 查看的是所有进程的详细信息, 展示在窗口中的内容会非常的多, 我们可以使用 ps aux + 管道(|) + grep 命令来查找指定的进程信息:

2.13 netstat -anp 查看网络状态

 netstat -anp 也可以通过 管道 搭配 grep 使用, 查找指定 ip/端口号 网络状态:

netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端⼝号"

3. 搭建 Java 部署环境

3.1 apt

apt(Advanced Packaging Tool), 是 Linux 软件包管理工具, 可以在 Linux 发行版(如: Ubuntu、Debian....)上对软件包进行安装更新删除等操作, 可以理解为 "应用市场".

3.2 apt 常用命令

注意: 大多数 apt 命令, 需要管理员(sudo)的身份才能运行.

切换 root 用户:

sudo su 

查看所有软件包:

sudo apt remove 软件包名称
# 查看所有软件包
apt list
# 对结果进行过滤
apt list | grep "xxx"

更新软件包数据库

sudo apt-get update

安装软件包:

sudo apt install 软件包名称

卸载软件包:

sudo apt remove 软件包名称sudo apt purge 软件包名称

卸载软件包时, apt remove 命令可能会有卸载残余(一些配置文件), apt purge 会将所有的配置文件都卸载掉.

3.3 安装 OpenJDK

要想把 Java 项目部署到服务器上, 毫无疑问需要两个东西:

  1. JDK
  2. 数据库

3.3.1 更新软件包

sudo apt-get update

3.3.2 查找/安装 JDK 软件包

# 查找 JDK 软件包
apt list | grep "jdk"# 安装 JDK 软件包
sudo apt install openjdk-17-jdk
 # 验证是否安装成功(查看 JDK 版本)
java -version

如果想要卸载:

# 检查安装的是哪个 OpenJDK
dpkg --list | grep -i jdk# 移除 openjdk 包:
apt-get purge openjdk*# 卸载 OpenJDK 相关包:
apt-get purge icedtea-* openjdk-*# 检查所有 OpenJDK包是否都已卸载完毕:
dpkg --list | grep -i jdk

 3.4 安装 MySQL

查找 MySQL 软件包:

apt list | grep "mysql-server"

安装 MySQL 软件包:

#安装 mysql
sudo apt install mysql-server

检查 MySQL 是否安装成功(查看 MySQL 状态):

sudo systemctl status mysql

MySQL 默认的设置是不安全的, 我们需要将 MySQL 设置为强安全策略:

# MySQL 安全设置
sudo mysql_secure_installation安装过程中, 只有这个提示是输入 2, 表示选择强密码策略, 会强制用户设置符合特定复杂性要求的密码, 以提高数据库的安全性. 
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2(输入 2)其他提示, 一路输入 y 即可.
  • 云服务器是直接暴露在公网上的, 这意味着它们更容易受到来自世界各地的攻击者的攻击.

  • 与内网环境相比, 公网环境的风险更高, 因为任何人都可以尝试连接到你的数据库服务器.

因此, 我们需要为数据库设置安全策略.

设置成功后, 若我们没有修改 MySQL 的默认密码, 输入 mysql 连接 mysql 服务:

# 连接 MySQL 服务(修改密码前)
mysql

由于我们是在云服务器上启动 MySQL 服务的, 为避免他人攻击, 可以设置一个复杂的密码(并且由于我们在安全设置中, 选择了强密码策略, 因此 mysql 强制用户必须将密码设置为强类型的, 否则无法修改):

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY
'自定义强类型密码';

修改密码后, 后续再次连接 MySQL 服务时, 直接输入 mysql 就不能进入了, 需要以下命令, 并正确输入密码才可以进入:

# 连接 MySQL 服务(修改密码后)
mysql -uroot -p

输入 exit 可退出 mysql 服务:


4. Java 项目部署 Linux 云服务器

4.1 什么是部署

我们需要先了解工作中常提到的 "环境":

  1. 开发环境: 我们开发人员写代码时用的机器
  2. 测试环境: 测试人员测试时用的机器
  3. 生产环境(线上环境): 最终项目发布时所使用的机器, 对稳定性要求很高(因此通常部署到 Linux 环境中)

将项目安装到生产环境, 就称为 "部署", 也称为 "上线".

部署是软件开发生命周期的最后一步, 一旦程序被部署到生产环境中, 就意味着这个程序可以被成千上万个用户所访问, 因此部署这一过程至关重要.

在实际工作中, 防止部署出错, 一般都是通过自动化部署工具来自动部署. 学习阶段, 我们通过手动部署来部署 javaweb 项目.

4.2 环境配置

将 Java Web 项目部署到服务器上时, 为了确保应用程序在不同环境中都能正确运行, 我们需要为不同平台配置不同的配置文件, 主要是因为不同环境(开发、测试、生产)的配置参数通常不同.

以之前的博客系统为例, 配置数据库连接时, 如果是在开发环境下, 配置的数据库用户名和密码需要是开发机中的数据库; 而如果将项目部署到服务器中时, 配置的用户名和密码需要是 Linux 服务器中那个数据库的用户名和密码.

因此, 我们需要提供两个不同的配置文件, 分别应对开发环境和生成环境下, 项目和数据库之间的连接.

注意: 给服务器配置数据库连接时, 配置 ip 和端口号依然需要为 127.0.0.1:3306, 因为当项目打包到服务器上运行时, 项目依然是在 "服务器本机" 上运行的.

不同的环境的配置文件, 有着不同的命名规范:

  • dev: 开发环境
  • test: 测试环境
  • prod: 生产环境

配置文件只有 application.yml 生效, 其他配置文件是不生效的, 因此, 我们需要在 application.yml 中进行设置, 指定要执行的配置文件, 设置让 application-dev.yml 在开发环境中生效, 让 application-prod.yml 在生产环境中生效.

如何设置呢? 

4.2.1 方法一

方法一, 手动在 application.yml 中执行哪个配置文件生效:

(active 后指定后缀即可)

4.2.2 方法二

方法一需要修改代码来指定要生效的配置文件, 这样存在硬编码问题.

这里再介绍第二种 --- 通过 Maven 创建变量, 打包时, 动态指定哪个配置生效:

<!--    通过 Maven 中定义变量-->
<!--    变量1--><profiles><profile><id>dev</id><properties><profile.name>dev</profile.name></properties></profile>
<!--        变量2--><profile><id>prod</id><properties><profile.name>prod</profile.name></properties></profile></profiles>
spring:profiles:active: @profile.name@ #变量名

注意:

  • 修改完 pom 文件后, 一定要加载 Maven!!
  • 在 Maven 框中勾选完后, 也一定要加载Maven!!

如果还是不行, 添加以下配置再试试:

<build><resources><resource><directory>src/main/resources</directory><!--开启过滤,用指定的参数替换directory下的文件中的参数-->><filtering>true</filtering></resource></resources>
</build>

4.3 项目打包

 4.4 为 Linux 服务器创建数据库表

要想让 jar 包中的项目能够在服务器跑起来, 我们需要在服务器中创建对应的数据库表.

4.5 开放 8080 端口号

基于之前网络部分的学习, 我们了解到, 公网 IP 地址就像你的住址, 告诉别人你的房子在哪里; 端口号就像你房子的门牌号, 告诉别人你想访问哪个房间(具体的某个服务).

如今, 我们通过云服务器已经有了公网 IP, 而对于端口号, 出于安全考虑, 云服务器提供商(阿里云、腾讯云、....)通常会在云服务器前面设置安全组或防火墙, 这些安全组/防火墙默认情况下会阻止所有入站流量, 只允许客户端访问特定的端口号.

因此, 我们需要开发 tomcat 的 8080 端口, 以便用户能够访问我们的项目:

(演示图是阿里云开放端口的流程, 其他云服务器大同小异)

4.5 上传 jar 包到服务器

这就用到上文所讲的, 如何在 Linux 上传文件的知识.

我们可以直接打开 Windows 中 jar 包所在路径, 直接将 jar 文件拖入 Linux 服务器中即可.

4.6 运行 jar 包

然后通过 java -jar 命令运行 jar 包即可.

# 运行 jar 包
java -jar 文件名

 运行 jar 包后, 我们的 Web 项目就跑起来了, 用户就可以访问了:

当然, 日志信息也会打印在 Linux 服务器中:

4.6.1 nohup 后台运行程序

但是, 此时有一个问题, 虽然现在我们的服务器启动了项目, 但是我们不能进行其他的命令操作了, 如果想要输入其他命令, 就需要 ctr+c, 而 ctr+c 就会停掉项目:

因此, 正确运行项目的方式是使用 nohup 命令,  能够让项目在系统后台不挂断地持续运行, 即使退出终端/ctr+ c也不会终止.

使用 nohub 命令前, 需要先下载 lrzsz:

apt-get install lrzsz

nohub 命名运行 jar 包 :

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

4.6.2 跟踪日志

此时, 项目已经在后台跑起来了. 如果想要查看日志, 使用 tail 命令:

tail -f spring-blog.log 

 注意: tail 是跟踪日志, 只会展示命令输入后产生的日志, 不会展示之前的日志.

在工作中, 我们最常使用 tail + 管道 + grep 命令来跟踪 error 日志(这也是我们 java 程序员学习 Linux 的主要目的):

# 展示新产生的日志中的 ERROR 日志
tail -f spring-blog.log | grep "ERROR"

grep "ERROR" 后, 窗口只会显示包含 "ERROR" 关键词的日志, 不会展示其他日志, 若想查看其他日志, 需要重写输入 tail 命令.


错误总结

  1. 由于我给服务器中数据库配置的密码带了 '@', 虽然可以打 jar 包, 但是 jar 包无法在服务器运行, 后来将数据库密码使用引号包裹起来, 这个问题得以解决.
  2. 由于我没有在配置文件中没有给 MyBatis-plus 设置驼峰映射, 导致运行 jar 包时, 只展示 Spring banner, 到 MyBatis-plus 就报错. 后来添加驼峰映射, 这个问题得以解决.

END

相关文章:

驾驭 Linux 云: JavaWeb 项目安全部署

目录 1. 引言 2. Linux 基础指令 2.1 ls 展示目录/文件 2.2 pwd 查看所在路径 2.3 mkdir 创建文件夹 2.4 cd 切换路径 2.5 touch 创建文件 2.6 rm 删除文件 2.6 rm -r/rf 删除文件夹 2.7 rz/sz 上传/下载文件 2.7.1 rz 上传文件 2.7.2 sz 下载文件 2.8 mv 移动文件…...

【MySQL数据库】InnoDB存储引擎:逻辑存储结构、内存架构、磁盘架构

逻辑存储结构 一个数据库是由一张张表组成的&#xff0c;而表中是由一个个段构成的&#xff0c;一个段是由区构成的&#xff0c;区空间是由页构成的&#xff0c;页是行构成的。 ①表空间&#xff1a;.ibd文件&#xff0c;一个mysql实例可以对应多个表空间&#xff0c;用于存储…...

HJ16 购物单

https://www.nowcoder.com/exam/oj/ta?tpId37 HJ16 购物单 描述 王强决定把年终奖用于购物&#xff0c;他把想买的物品分为两类&#xff1a;主件与附件。 主件可以没有附件&#xff0c;至多有 2个附件。附件不再有从属于自己的附件。如果要买归类为附件的物品&#xff0c;必…...

SLAM文献之DM-VIO: Delayed Marginalization Visual-Inertial Odometry

1. 算法概述 DM-VIO (Delayed Marginalization Visual-Inertial Odometry) 是一种基于延迟边缘化的视觉-惯性里程计算法&#xff0c;它结合了视觉和惯性测量单元(IMU)的数据进行位姿估计。该算法是VINS-Mono的改进版本&#xff0c;主要创新点在于采用了一种延迟边缘化策略&…...

【信息安全】黑芝麻A1000芯片安全启动方案

基于黑芝麻A1000芯片的安全启动方案实现指南: 一、安全启动流程架构设计 // 启动阶段状态机定义(基于A1000芯片手册) typedef enum {ROM_BOOT = 0x01, // BootROM验证 SPL_VERIFY = 0x02, // 二级加载器验证 ATF_SIGN_CHECK = 0x03, // ARM Trusted Firmware验证 OS_LOADE…...

初识Redis · list和hash类型

目录 前言&#xff1a; 哈希类型 基本命令 编码方式 应用场景 列表 基本命令 编码方式 应用场景 前言&#xff1a; 前文我们已经介绍了string的基本使用&#xff0c;以及对应的基本命令&#xff0c;最后也是简单的理解了一下string的应用场景&#xff0c;比如计数统计…...

golang-非orm数据库的操作与对比 database/sql、sqlx 和 sqlc

简单介绍 database/sql database/sql 是一个标准库软件包&#xff0c;负责与数据库&#xff08;主要是 SQL 关系数据库&#xff09;的连接和交互。 它为类 SQL 交互提供泛型接口、类型和方法。database/sql 在创建时将简单易用纳入考量&#xff0c;配置为支持与类 SQL 数据库…...

‌DeepSeek模型在非图形智能体的应用中是否需要GPU

答&#xff1a;不一定 概念 1、是否需要GPU与应用是否图形处理应用无关 2、文本内容智能体大多也需要GPU来提供更好的性能 3、‌DeepSeek模型在非图形智能体的应用中是否需要GPU取决于具体的模型版本和部署环境 不需要GPU的模型版本 ‌DeepSeek-R1-1.5B‌&#xff1a; 这…...

RadioMaster POCKET遥控器进入ExpressLRS界面一直显示Loading的问题解决方法

RadioMaster POCKET遥控器进入ExpressLRS界面一直显示Loading的问题解决方法 问题描述解决方法 问题描述 有一天我发现我的 RadioMaster POCKET 遥控器进入 ExpressLRS 设置界面时&#xff0c;界面却一直停留在 “Loading” 状态&#xff0c;完全无法进入设置界面。 我并没有…...

idea的快捷键使用以及相关设置

文章目录 快捷键常用设置 快捷键 快捷键作用ctrlshift/注释选中内容Ctrl /注释一行/** Enter文档注释ALT SHIFT ↑, ALT SHIFT ↓上下移动当前代码Ctrl ALT L格式化代码Ctrl X删除所在行并复制该行Ctrl D复制当前行数据到下一行main/psvm快速生成入口程序soutSystem.o…...

【DDR 内存学习专栏 1.4 -- DDR 的 Bank Group】

文章目录 BankgroupBankgroup 与 Bank 的关系 DDR4 中的 BankgroupDDR4-3200 8Gb芯片为例组织结构访问场景 实际应用示例 Bankgroup Bankgroup是DDR4及后续标准(DDR5)中引入的一个更高层次的组织结构。它将多个Bank组合在一起形成一个Bankgroup&#xff0c;目的是为了进一步提…...

新晋前端框架技术:小程序容器与SuperApp构建

2025年&#xff0c;前端开发领域持续迭代&#xff0c;主流框架如Vue、React等纷纷推出新版本&#xff0c;在性能、开发效率及适用场景上实现突破&#xff0c;进一步巩固其技术地位。 1. Vue 3的全面普及与创新 Vue 3通过多项核心特性优化了开发体验&#xff1a; Teleport组件…...

强化学习:基于价值的方法做的是回归,基于策略的方法做的是分类,可以这么理解吗?

在强化学习领域,基于价值的方法(Value-based Methods)和基于策略的方法(Policy-based Methods)是两种核心范式。本文将从目标函数、优化机制以及与机器学习任务的类比角度,探讨这两种方法是否可以被分别理解为回归和分类任务,并深入分析其内在逻辑。 一、基于价值的方法…...

蓝耘元生代AIDC OS:一站式MaaS平台,助力AI应用快速落地

文章目录 引言1. 什么是MaaS平台&#xff1f;MaaS平台的典型特点 2. 蓝耘元生代AIDC OS 热门模型3. 快速入门&#xff1a;如何调用API&#xff1f;步骤1&#xff1a;注册并获取API Key步骤2&#xff1a;调用API&#xff08;Python示例&#xff09; 4. 与Chatbox搭配使用&#x…...

3.2.2.3 Spring Boot配置拦截器

在Spring Boot应用中配置拦截器&#xff08;Interceptor&#xff09;可以对请求进行预处理和后处理&#xff0c;实现如权限检查、日志记录等功能。通过实现HandlerInterceptor接口并注册到Spring容器&#xff0c;拦截器可以自动应用到匹配的请求路径。案例中&#xff0c;创建了…...

Python----机器学习(基于PyTorch的蘑菇逻辑回归)

Logistic Regression&#xff08;逻辑回归&#xff09;是一种用于处理二分类问题的统计学习方法。它基于线性回归 模型&#xff0c;通过Sigmoid函数将输出映射到[0, 1]范围内&#xff0c;表示概率。逻辑回归常被用于预测某个实 例属于正类别的概率。 一、数据集介绍 本例使用了…...

Python----机器学习(基于PyTorch的乳腺癌逻辑回归)

Logistic Regression&#xff08;逻辑回归&#xff09;是一种用于处理二分类问题的统计学习方法。它基于线性回归 模型&#xff0c;通过Sigmoid函数将输出映射到[0, 1]范围内&#xff0c;表示概率。逻辑回归常被用于预测某个实 例属于正类别的概率。 一、数据集介绍 在本例中&…...

如何配置AWS EKS自动扩展组:实现高效弹性伸缩

本文详细讲解如何在AWS EKS中配置节点组&#xff08;Node Group&#xff09;和Pod的自动扩展&#xff0c;优化资源利用率并保障应用高可用。 一、准备工作 工具安装 安装并配置AWS CLI 安装eksctl&#xff08;EKS管理工具&#xff09; 安装kubectl&#xff08;Kubernetes命令…...

【C++ Qt】认识Qt、Qt 项目搭建流程(图文并茂、通俗易懂)

每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; 本章将开启Qt的学习&#xff0c;Qt是一个较为古老但仍然在GUI图形化界面设计中有着举足轻重的地位&#xff0c;因为它适合嵌入式和多种平台而被广泛使用…...

用Python打造去中心化知识产权保护系统:科技驱动创作者权益新方案

用Python打造去中心化知识产权保护系统:科技驱动创作者权益新方案 近年来,区块链技术和去中心化系统的兴起为知识产权保护提供了新的可能性。在传统模式下,知识产权保护通常依赖于集中化管理机构,这种方式不仅成本高,还可能因不透明导致权益争议。于是,我们萌生了一个设…...

CVE重要漏洞复现-Fastjson1.2.24-RCE漏洞

本文仅供网络学习&#xff0c;不得用于非法目的&#xff0c;否则后果自负 1、漏洞简介 fastjson是阿里巴巴的开源JSON解析库&#xff0c;它可以解析JSON格式的字符串&#xff0c;也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字符…...

Windows 图形显示驱动开发-WDDM 1.2功能—显示设备硬件软件认证要求

一、容器技术id技术的硬件级实现要求 1.1 EDID规范深度适配 1.物理层要求&#xff1a; 必须使用EDID 2.0及以上版本数据结构 容器ID需写入VSDB区块的0x50-0x6F区域&#xff0c;采用Little-Endian格式存储 允许的最大传输延迟&#xff1a;I2C总线时钟频率≤100KHz时&#xf…...

Coze流搭建--写入飞书多维表格

目标 使用coze搭建一个业务流&#xff0c;将业务流生产出的数据写入飞书保存 测试业务流 使用图片生成插件&#xff0c;配置prompt生产图片&#xff0c;将生产的结果写入飞书文档 coze流 运行后最终效果 搭建流程 第一步&#xff1a;飞书创建多维表格 注册飞书创建多维表…...

4.14:计组第三章

一、数据的强制类型转换与存储 1、边界对齐与大端小端方式 2、真-强制类型转换 二、存储器的基本知识(不包含磁盘存储器) 1、主存储器 (1)...

Vue3+Vite前端项目部署后部分图片资源无法获取、动态路径图片资源报404错误的原因及解决方案

目录 Vue3vite前端项目部署后部分图片资源无法获取、动态路径图片资源报404错误的原因及解决方案 一、情景介绍 1、问题出现的场景 2、无法加载的图片写法 二、反向代理原理简介 三、造成该现象的原因 四、解决方案 1、放弃动态渲染 2、在页面挂载的时候引入图片资源 …...

Nacos操作指南

第一章&#xff1a;Nacos 概述 1.1 什么是 Nacos&#xff1f; 定义与定位 Nacos&#xff08;Naming and Configuration Service&#xff09;是阿里巴巴于2018年开源的动态服务发现、配置管理和服务管理平台&#xff0c;现已成为微服务生态中的重要基础设施。其核心价值在于帮…...

2025年常见渗透测试面试题-红队面试宝典下(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 一、Java反序列化过程及利用链示例 二、大型网络渗透经验 三、Cobalt Strike的两种Dump Hash区别 四…...

扩增子分析|基于R语言microeco包进行微生物群落网络分析(network网络、Zi-Pi关键物种和subnet子网络图)

一、引言 microeco包是福建农林大学姚敏杰教授团队开发的扩增子测序集成分析。该包综合了扩增子测序下游分析的多种功能包括群落组成、多样性、网络分析、零模型等等。通过简单的几行代码可实现复杂的分析。因此&#xff0c;microeco包发表以来被学界广泛关注&#xff0c;截止2…...

flutter-Text等组件出现双层黄色下划线的问题

文章目录 1. 现象2. 原因3. 解决方法 1. 现象 这天我正在写Flutter项目的页面功能&#xff0c;突然发现我的 Text 文字出现了奇怪的样式&#xff0c;具体如下&#xff1a; 文字下面出现了双层黄色下划线文字的空格变得很大&#xff0c;文字的间距也变得很大 我百思不得其解&a…...

优化运营、降低成本、提高服务质量的智慧物流开源了

智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本可通过边缘计算技术…...

leetcode第二题

功能函数 typedef struct ListNode {int val;struct ListNode *next; } ListNode;struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {ListNode *dummy (ListNode *)malloc(sizeof(ListNode));ListNode *cur dummy;int carry 0; //carry是进位值…...

QT实现带快捷键的自定义 QComboBox 控件

在现代GUI应用程序中&#xff0c;用户界面的设计不仅要美观&#xff0c;还要提供高效的交互方式。本文将介绍一个自定义的QCComboBox类&#xff0c;它是一个基于Qt的组合框&#xff08;QComboBox&#xff09;&#xff0c;支持为每个下拉项添加快捷键。通过这些快捷键&#xff0…...

聊聊类模板

我们来聊聊类模板&#xff0c;从基础到实际例子&#xff0c;让你更容易理解。 什么是类模板&#xff1f; 类模板是一种模板&#xff0c;允许我们定义一个可以处理任意数据类型的类。简单来说&#xff0c;就是我们可以编写一个类的“蓝图”&#xff0c;然后在需要的时候使用不…...

使用Python进行AI图像生成:从GAN到风格迁移的完整指南

AI图像生成是一个非常有趣且前沿的领域&#xff0c;结合了深度学习和计算机视觉技术。以下是一些使用Python和相关库进行AI图像生成的创意和实现思路&#xff1a; 1. 使用GAN&#xff08;生成对抗网络&#xff09; 基本概念&#xff1a;GAN由两个神经网络组成&#xff1a;生成…...

Java 设计模式:外观模式详解

Java 设计模式&#xff1a;外观模式详解 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它为复杂的子系统提供一个简化的统一接口&#xff0c;隐藏子系统的复杂性&#xff0c;使客户端更方便地使用系统。外观模式就像一个“门面”&#xff…...

微信小程序中实现某个样式值setData改变时从350rpx到200rpx的平滑过渡效果

方案一&#xff1a;使用 CSS Transition&#xff08;推荐简单场景&#xff09; WXSS /* 在对应组件的WXSS中添加 */ .transition-effect {transition: all 0.4s ease-in-out;will-change: bottom; /* 启用GPU加速 */ }WXML <!-- 修改后的WXML --> <view class"…...

LINUX基础 [四] - Linux工具

目录 软件包管理器yum Linux开发工具vim vim的基本概念 vim的三种常用模式 vim的简单配置 vim常用模式的基本操作 命令模式 底行模式 处理vim打开文件报错的问题 Linux编译器-gcc/g使用 为什么我们可以用C/C做开发呢&#xff1f; 预处理&#xff08;进行宏替换&#x…...

Spring Cloud之远程调用OpenFeign最佳实践

目录 OpenFeign最佳实践 问题引入 Feign 继承方式 创建Module 引入依赖 编写接口 打Jar包 服务提供方 服务消费方 启动服务并访问 Feign 抽取方式 创建Module 引入依赖 编写接口 打Jar包 服务消费方 启动服务并访问 服务部署 修改pom.xml文件 观察Nacos控制…...

【QT】 常用控件【输入类】

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 输入类控件 &#x1f98b; Line Edit -- 单行输入框&#x1f380; 录入个人信息&#x1f380; 正则表达式验证输入框数据&#x1f380; 验证两次输入密码一致…...

【Python】读取xyz坐标文件输出csv文件

Python读取xyz坐标文件输出csv文件 import sys import numpy as np import pandas as pd from tqdm import tqdm import cv2 import argparsedef read_xyz(file_path):with open(file_path, "r") as f: # 打开文件data f.readlines() # 读取文件datas []for …...

深度解析Redis过期字段清理机制:从源码到集群化实践 (一)

深度解析Redis过期字段清理机制&#xff1a;从源码到集群化实践 一、问题本质与架构设计 1.1 过期数据管理的核心挑战 Redis连接池时序图技术方案 ​​设计规范&#xff1a;​ #mermaid-svg-Yr9fBwszePgHNnEQ {font-family:"trebuchet ms",verdana,arial,sans-se…...

MapReduce实验:分析和编写WordCount程序(对文本进行查重)

实验环境&#xff1a;已经部署好的Hadoop环境 Hadoop安装、配置与管理_centos hadoop安装-CSDN博客 实验目的&#xff1a;对输入文件统计单词频率 实验过程&#xff1a; 1、准备文件 test.txt文件&#xff0c;它是你需要准备的原始数据文件&#xff0c;存放在你的 Linux 系…...

【中大厂面试题】腾讯云 java 后端 最新面试题

腾讯云&#xff08;一面&#xff09; 1. spring 和 springboot的区别是什么&#xff1f; 配置方式的区别&#xff1a;Spring 应用的配置较为繁琐&#xff0c;通常需要编写大量的 XML 配置文件或者使用 Java 注解进行配置。例如&#xff0c;配置数据源、事务管理器等都需要手动…...

Redis存储“大数据对象”的常用策略及StackOverflowError错误解决方案

Hi&#xff0c;大家好&#xff0c;我是灰小猿&#xff01; 在一些功能的开发中&#xff0c;我们一般会有一些场景需要将得到的数据先暂时的存储起来&#xff0c;以便后面的接口或业务使用&#xff0c;这种场景我们一般常用的场景就是将数据暂时存储在缓存中&#xff0c;之后再…...

【Vue】v-if和v-show的区别

个人博客&#xff1a;haichenyi.com。感谢关注 一. 目录 一–目录二–核心区别三–使用场景​四–性能对比五–总结​ 二. 核心区别 之前将css的显示隐藏的方式的时候&#xff0c;就已经提到过v-show和v-if了。忘记了的可以再回头去复习复习。 &#xff08;2.1&#xff09…...

南瓜颜色预测:逻辑回归在农业分类问题中的实战应用

南瓜颜色预测&#xff1a;逻辑回归在农业分类问题中的实战应用 摘要 本案例通过预测南瓜颜色的分类问题&#xff0c;全面展示了逻辑回归在农业领域的实战应用。从数据预处理到模型评估&#xff0c;详细介绍了Seaborn可视化、模型构建、性能优化和结果解释等关键环节。案例不仅…...

【物联网-RS-485】

物联网-RS-485 ■ RS-485 连接方式■ RS-485 半双工通讯■ RS-485 的特点■ ModBus■ ModBus-ASCII■ ModBus-RTU ■ RS-485 连接方式 ■ RS-485 半双工通讯 一线定义为A 一线定义为B RS-485传输方式&#xff1a;半双工通信、&#xff08;逻辑1&#xff1a;2V ~ 6V 逻辑0&…...

TDengine 语言连接器(Node.js)

简介 tdengine/websocket 是 TDengine 的官方 Node.js 语言连接器。Node.js 开发人员可以通过它开发存取 TDengine 数据库的应用软件。 Node.js 连接器源码托管在 GitHub。 Node.js 版本兼容性 支持 Node.js 14 及以上版本。 支持的平台 支持所有能运行 Node.js 的平台。 …...

Git分布式版本控制工具

一、工作流程 二、常用指令 1、配置git 配置环境变量 cmd打开命令行&#xff0c;输入git查看是否配置成功。 设置用户名和邮箱 git config --global user.name "用户名" git config --global user.email "邮箱" 查看用户名和邮箱 git config --glob…...

The first day of vue

关于小白直接接触vue3的第1天 首先我们需要一个脚手架node.js (这个可以从官网下载&#xff0c;免费的&#xff0c;安装也比较简单&#xff0c;后续我也会出一个相关的安装教程&#xff0c;方便大家和我一起讨论&#xff0c;互相学习&#xff09; &#xff08;不知道有没有人对…...