SpringBoot项目部署到云服务器全流程
文章目录
- 一、前期准备
- (一)云服务器选择
- (二)本地环境准备
- (三)数据库准备(若项目需要)
- 二、服务器配置
- (一)获取服务器信息
- (二)重置实例密码与重启
- (三)安全组配置
- 三、远程连接服务器
- (一)SSH客户端选择
- (二)建立连接
- 四、服务器环境搭建
- (一)安装宝塔面板(可选但推荐)
- (二)安装JDK和数据库(通过宝塔面板或命令行)
- (三)项目打包与上传
- 五、项目部署与启动
- (一)项目配置文件修改
- (二)项目启动
- (三)端口问题排查
一、前期准备
(一)云服务器选择
在将SpringBoot项目部署到云服务器之前,我们需要先准备一台云服务器。这里以阿里云为例,阿里云提供了多种配置的云服务器可供选择,我们可以根据项目的实际需求进行挑选。在选择时,需要考虑以下因素:
- 实例规格:如基础配置(2vCPU 2GiB)、标准配置(2vCPU 4GiB)、专业配置(2vCPU 8GiB)、增强配置(4vCPU 8GiB)等。对于一般的小型项目,基础配置可能就足够起步,但如果项目预计会有较高的并发量或较大的资源消耗,就需要选择更高配置的实例。
- 存储:云服务器通常包含系统盘和数据盘。系统盘用于安装操作系统,数据盘则用于存储项目文件、数据库数据等。要确保数据盘的容量能够满足项目的运行需求,特别是如果项目涉及大量数据存储或文件上传下载功能。
- 网络带宽:预估项目的网络流量,选择合适的带宽。如果项目需要快速传输大量数据,如视频流服务或频繁的数据同步,那么较高的带宽将是必要的。
在阿里云的产品页面中,我们可以找到云服务器ECS等相关产品,并根据上述因素进行配置选择。例如,选择一个合适的套餐,如99元套餐(包含2核2G、3M固定带宽、40G ESSD Entry盘),该套餐性价比高,适合初学者或小型项目进行试用和部署。同时,选择合适的操作系统镜像,如CentOS 7.9 64位(安全加固)等。
(二)本地环境准备
确保本地的Java开发环境已经安装并配置好,包括JDK(Java Development Kit)和Maven(项目构建工具)。JDK是运行Java程序的基础,而Maven则用于管理项目的依赖关系和构建过程。可以通过在命令行中输入java -version
和mvn -v
来检查它们是否正确安装并配置。
(三)数据库准备(若项目需要)
如果项目依赖数据库,如MySQL、PostgreSQL等,需要在云服务器上安装相应的数据库服务。以MySQL为例,在云服务器上执行安装命令,安装过程中设置好数据库的用户名、密码和字符集等参数。同时,在本地开发环境中,确保项目的数据库连接配置与云服务器上的数据库设置相匹配,包括数据库地址(通常为云服务器的公网IP地址)、端口号、用户名、密码以及数据库名称等。
二、服务器配置
(一)获取服务器信息
完成云服务器购买后,我们需要记录下服务器的公网IP地址、用户名和密码。这些信息将用于后续的远程连接和操作。公网IP地址是服务器在互联网上的唯一标识,通过它我们才能从外部访问服务器;用户名和密码则用于登录服务器进行管理操作。
(二)重置实例密码与重启
为了确保服务器的安全性,我们需要先重置实例密码。在阿里云控制台中找到云服务器ECS的实例管理页面,找到对应的实例,点击“重置实例密码”按钮进行密码重置操作。重置完成后,重启服务器使密码生效。不同版本的阿里云控制台界面可能略有不同,但大致位置和操作流程相似,如果在操作过程中遇到困难,可以参考阿里云的帮助文档或在线客服寻求支持。
(三)安全组配置
安全组用于管理服务器的端口访问权限,合理配置安全组规则可以有效保护服务器安全。在阿里云控制台中进入安全组配置页面,我们可以看到默认的安全组规则,也可以创建自定义的安全组。对于我们的SpringBoot项目部署,建议开放以下端口:
- 8888端口:用于宝塔面板(如果安装),宝塔面板是一款方便的服务器运维管理工具,通过它可以更便捷地管理服务器上的各种服务和应用。
- 22端口:用于SSH远程服务,这是我们远程连接服务器进行操作的主要端口,如通过SSH客户端(如Xshell)登录服务器进行命令行操作。
- 3306端口:如果项目使用MySQL数据库,需要开放该端口以允许外部应用连接数据库。
- 8080端口:SpringBoot项目启动默认端口,用于访问项目的服务接口。当然,如果项目中配置了其他端口,也需要相应地开放。
在配置安全组规则时,指定允许访问的IP地址范围。对于学习和测试环境,我们可以暂时将源IP设置为“0.0.0.0/0”,表示允许所有IP地址访问这些端口。但在生产环境中,为了更高的安全性,应该只允许特定的可信IP地址或IP地址段访问相关端口。例如,若要限制只有本地IP地址(如192.168.1.0/24网段)可以访问数据库端口3306,就在安全组规则中设置源IP为“192.168.1.0/24”。
三、远程连接服务器
(一)SSH客户端选择
推荐使用Xshell作为SSH客户端工具来连接远程服务器,当然,也可以选择其他类似的工具,如Putty等。Xshell提供了友好的用户界面和丰富的功能,方便我们进行远程操作。
(二)建立连接
打开Xshell,点击“新建”按钮创建一个新的连接会话。在会话属性中,设置以下参数:
- 协议:选择“SSH”,这是用于安全远程登录的协议。
- 主机:输入云服务器的公网IP地址,这是我们之前记录下来的服务器在互联网上的标识。
- 端口号:默认的SSH端口号为22,如果在安全组中修改了SSH端口号,需要在这里填写修改后的端口号。
- 用户名:填写服务器的用户名,通常为root或其他具有管理员权限的用户名。
- 密码:输入之前重置后的服务器密码。
设置完成后,点击“确定”按钮保存会话设置。然后在Xshell的会话管理器中,选中新建的会话并点击“连接”按钮,即可尝试连接到远程服务器。如果连接成功,将进入服务器的命令行界面,此时就可以在本地通过命令行操作服务器了。
四、服务器环境搭建
(一)安装宝塔面板(可选但推荐)
宝塔面板是一款功能强大的Linux服务器运维管理工具,它提供了可视化的界面,使我们能够更方便地管理服务器上的各种软件和服务。虽然不是必需的,但对于不熟悉命令行操作的用户来说,宝塔面板可以大大简化服务器环境的搭建和管理过程。
- 访问宝塔官网(bt.cn),根据服务器的操作系统版本选择相应的安装脚本。例如,对于CentOS系统,在SSH连接到服务器后,执行以下命令(注意将命令中的网址复制自宝塔官网最新的安装脚本地址):
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
- 安装过程大约需要2分钟左右,安装完成后,会在命令行中显示宝塔面板的登录网址、用户名和密码。注意,这里的用户名和密码是用于登录宝塔面板的,与服务器的用户名和密码不同。
- 复制登录网址到浏览器中,输入显示的用户名和密码,即可登录到宝塔面板的管理界面。在第一次登录时,可能会要求注册宝塔官网账号,注册后使用该账号登录宝塔面板。
(二)安装JDK和数据库(通过宝塔面板或命令行)
- 通过宝塔面板安装(以MySQL为例)
- 登录宝塔面板后,在软件商店中搜索“MySQL”,找到官方的MySQL版本并点击“安装”按钮。在安装过程中,可以选择合适的版本(如MySQL 8.0.24),并根据项目需求进行一些基本配置,如设置数据库的root用户密码等。
- 安装完成后,在宝塔面板的数据库管理界面中,可以看到已安装的MySQL数据库信息。点击“添加数据库”按钮,创建项目所需的数据库,设置数据库名、用户名和密码等信息。同时,务必在“权限”设置中将访问权限修改为“所有人”,这样才能方便地通过外部工具(如Navicat)连接和管理数据库。否则,可能会遇到连接数据库时权限不足的问题。
- 通过命令行安装(以JDK为例)
- 如果选择通过命令行安装JDK,首先需要从JDK官方网站下载适合服务器操作系统的JDK版本。例如,对于CentOS系统,可以下载JDK的rpm包。
- 使用SSH连接到服务器,进入下载目录(假设下载到了
/home
目录),执行以下命令安装JDK(以JDK 8为例,实际版本号根据下载的文件而定):rpm -ivh jdk-8uXXX-linux-x64.rpm
- 安装完成后,通过
java -version
命令检查JDK是否安装成功。如果显示JDK的版本信息,则表示安装成功。
(三)项目打包与上传
- 在本地项目根目录下,使用Maven命令对SpringBoot项目进行打包。打开命令行工具,进入项目根目录,执行以下命令:
这将对项目进行清理,并生成一个可执行的JAR文件,通常位于项目的mvn clean package
target
目录下。例如,生成的JAR文件可能名为your-project-name.jar
。
- 将打包好的JAR文件上传到云服务器。可以使用FTP工具(如FileZilla)或通过SSH的文件传输功能(如在Xshell中使用SFTP)进行上传。以使用Xshell的SFTP为例,在Xshell的会话中,点击“新建文件传输”按钮,进入SFTP界面。将本地的JAR文件拖放到服务器上指定的目录中,例如
/www/wwwroot/
目录(可以根据实际情况选择合适的目录)。
五、项目部署与启动
(一)项目配置文件修改
在服务器上找到上传的项目JAR文件所在目录,打开项目的配置文件(通常为application.properties
或application.yml
),修改数据库连接等相关配置。例如,如果项目使用MySQL数据库,需要将数据库连接的URL、用户名和密码修改为服务器上MySQL数据库的实际配置:
druid:url: jdbc:mysql://your-server-ip:3306/your-database-name?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername: your-database-usernamepassword: your-database-password
其中,your-server-ip
是云服务器的公网IP地址,your-database-name
是在服务器上创建的数据库名称,your-database-username
和your-database-password
是数据库的用户名和密码。
(二)项目启动
- 在服务器上进入项目JAR文件所在目录,使用以下命令启动SpringBoot项目:
这将启动项目,并在控制台输出项目的启动日志。如果项目启动成功,将可以通过云服务器的公网IP地址和项目配置的端口号访问项目。例如,如果项目配置的端口号是8080,则可以在浏览器中输入java -jar your-project-name.jar
http://your-server-ip:8080
访问项目。 - 如果希望项目在后台运行,即关闭SSH连接后项目仍能继续运行,可以使用
nohup
命令:
这样,项目将在后台持续运行,并且将输出日志写入到noohup java -jar your-project-name.jar &
nohup.out
文件中。可以使用ps -ef | grep your-project-name.jar
命令查看项目的运行进程。
(三)端口问题排查
在项目部署过程中,经常会遇到端口相关的问题。如果无法通过公网IP地址和端口号访问项目,首先检查云服务器的安全组规则是否正确配置了相应端口的访问权限,确保端口已开放。其次,检查项目配置文件中的端口号是否与启动命令中使用的端口号一致,以及是否与服务器上其他应用程序的端口号冲突。另外,有些服务器可能还需要在防火墙中开放相应端口,如在CentOS系统中,可以使用firewall-cmd
命令来管理防火墙规则。例如,要开放8080端口,可以执行以下命令:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
通过以上步骤,我们就可以将SpringBoot项目成功部署到云服务器上,并通过公网访问项目服务。在部署过程中,可能会遇到各种问题,但只要按照上述流程逐步排查和解决,就能够顺利完成项目的部署上线。希望这篇博客能够帮助到大家,祝大家部署顺利!
相关文章:
SpringBoot项目部署到云服务器全流程
文章目录 一、前期准备(一)云服务器选择(二)本地环境准备(三)数据库准备(若项目需要) 二、服务器配置(一)获取服务器信息(二)重置实例…...
对传统加密算法降维打击?!——量子计算
量子计算 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无…...
什么是Lodash,有什么特点
什么是 Lodash? Lodash 是一个 JavaScript 工具库,提供了一系列实用的函数来处理常见的编程任务,如数组操作、对象操作、字符串处理等。Lodash 由 John-David Dalton 创建,旨在提供一个更全面、更高效的替代方案,以弥…...
Simulink中Model模块的模型保护功能
在开发工作过程中,用户为想要知道供应商的开发能力,想要供应商的模型进行测试。面对如此要求,为了能够尽快拿到定点项目,供应商会选择一小块算法或是模型以黑盒的形式供客户测试。Simulink的Model模块除了具有模块引用的功能之外&…...
【电子通识】LED的一些基础知识
什么是LED LED是被称为"发光二极管"的半导体,名称取至 "Light Emitting Diode" 的首字母。 从爱迪生1879年发明白炽灯后,白炽灯统治了照明一百多年,为世界带来光明。而在21世纪,白炽灯却早已被取代࿰…...
React Native 基础
React 的核心概念 定义函数式组件 import组件 要定义一个Cat组件,第一步要使用 import 语句来引入React以及React Native的 Text 组件: import React from react; import { Text } from react-native; 定义函数作为组件 const CatApp = () => {}; 渲染Text组件...
C语言 蓝桥杯某例题解决方案(查找完数)
蓝桥杯原题: 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6 1 2 3.编程找出1000以内的所有完数。 这个题没有很大的难点,与我们上一个解决的问题“质因数分解”不同,它不需要判断因数是否是质数,因此…...
【shodan】(三)vnc漏洞利用
shodan基础(三) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 count count命令起到一个统计计数的作用。 用上节的漏洞指纹来试…...
蚁群算法(Ant Colony Optimization, ACO)
简介 蚁群算法(Ant Colony Optimization, ACO)是一种基于自然启发的优化算法,由意大利学者马可多里戈(Marco Dorigo)在1992年首次提出。它受自然界中蚂蚁觅食行为的启发,用于解决离散优化问题。 在自然界…...
python可视化将多张图整合到一起(画布)
这周有点事忙着,没时间重温刚结束的Mathurcup数学建模,这两天也是再看了下,论文还是赶紧挺烂的,但比国赛又有进步(说起国赛又不得不抱怨了,基本其余省份都发了,但江西......哎)。哎&…...
计算机网络socket编程(5)_TCP网络编程实现echo_server
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交…...
w055基于web的服装生产管理的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
hadoop集群搭建
一、环境准备⼯作: 确保已经按照以下文档安装完毕:虚拟机和远程工具的安装(hadoop集群安装01)-CSDN博客 Linux设置以及软件的安装(hadoop集群安装02)-CSDN博客 虚拟机的克隆和免密(hadoop集群03)-CSDN博…...
JVM中TLAB(线程本地分配缓存区)是什么
JVM中TLAB(线程本地分配缓存区)是什么 简单来说 TLAB,线程本地分配缓存区,是在 Java 堆内存中的一块线程专属的内存区域,每个线程在创建对象时,首先会尝试在自己的 TLAB 区域内分配内存,这样多…...
如何使用 MMPreTrain 框架
如何使用 MMPreTrain 框架进行预训练模型的微调和推理 MMPreTrain 是一个基于 PyTorch 的开源框架,专注于图像分类和其他视觉任务的预训练模型。它提供了丰富的预训练模型和便捷的接口,使得研究人员和开发者可以轻松地进行模型微调和推理。本文将详细介…...
Python的tkinter如何把日志弄进文本框(Text)
当我们用python的Tkinter包给程序设计界面时,在有些时候,我们是希望程序的日志显示在界面上的,因为用户也需要知道程序目前运行到哪一步了,以及程序当前的运行状态是否良好。python的通过print函数打印出来的日志通常显示在后台&a…...
bash笔记
0 $0 是脚本的名称,$# 是传入的参数数量,$1 是第一个参数,$BOOK_ID 是变量BOOK_ID的内容 1 -echo用于在命令窗口输出信息 -$():是命令替换的语法。$(...) 会执行括号内的命令,并将其输出捕获为一个字符串ÿ…...
嵌入式工程师面试题 - 2024/11/19
欢迎找我进行职业规划,超值的自我投资 -> 嵌入式软件工程师一对一指导 转载请注明来源 1.以下叙述中正确的是() A 程序必须包含所有三种基本结构才能成为一种算法 B 我们所写的每条C语句,经过编译最终都将转换成二进制的机器…...
springboot配置https,并使用wss
学习链接 springboot如何将http转https SpringBoot配置HTTPS及开发调试 可借鉴的参考: springboot如何配置ssl支持httpsSpringBoot配置HTTPS及开发调试的操作方法springboot实现的https单向认证和双向认证(java生成证书)SpringBoot配置Https访问的详细步骤Sprin…...
【C语言】连接陷阱探秘(3):形参、实参与返回值
目录 一、形参的 “迷障” 1.1. 定义与功能 1.2. 类型不匹配 1.3. 数量不一致 1.4. 顺序不一致 1.5. 数组形参退化 二、实参的 “暗礁” 2.1. 定义与功能 2.2. 求值顺序 “谜题” 2.3. 悬空指针 “深渊” 三、返回值的 “陷阱” 3.1. 定义与功能 3.2. 陷阱与缺陷 …...
学习笔记030——若依框架中定时任务的使用
定时任务是软件开发中经常使用一个功能。 Java定时任务广泛应用于各种需要定时执行或周期性执行任务的场景,如: 数据备份:定期备份数据库中的数据,确保数据的安全性和可靠性。数据同步:如果有多个数据源需要同步数据…...
基于SpringBoot的数据结构系统设计与实现(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器
在自动化测试和网页抓取的过程中,Selenium 是最常用的工具之一。其强大的功能可以与浏览器无缝集成,实现复杂的操作。然而,为了提高效率和扩展性,尤其在处理大量任务时,我们可以通过定制化的方法启动 Chrome 浏览器并与…...
外卖系统开发实战:从架构设计到代码实现
开发一套外卖系统,需要在架构设计、技术选型以及核心功能开发等方面下功夫。这篇文章将通过代码实例,展示如何构建一个基础的外卖系统,从需求梳理到核心模块的实现,帮助你快速掌握开发要点。 一、系统架构设计 一个完整的外卖系…...
类和对象(上)--类、类的实例化(对象)、this指针
1.类 1.1定位: 和namespace一样,类也有类域。同样起到既保护又限制的功能。别人不能随意访问类里的东西,得通过特定的方式来访问(访问方法和命名空间域一样,三种方法)。 1.2作用 在C语言中,…...
使用ENSP实现浮动静态路由
一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为2.…...
JavaEE 【知识改变命运】02 多线程(1)
文章目录 线程是什么?1.1概念1.1.1 线程是什么?1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 思考:执行一个任务,是不是创建的线程或者越多是不是越好?(比如吃包子比赛)1.1.5 ) Java 的线程…...
pytorch官方FasterRCNN代码详解
本博文转自捋一捋pytorch官方FasterRCNN代码 - 知乎 (zhihu.com),增加了其中代码的更详细的解读,以帮助自己理解该代码。 代码理解的参考Faster-RCNN全面解读(手把手带你分析代码实现)---前向传播部分_手把手faster rcnn-CSDN博客 1. 代码结构 作为 to…...
【线程】Java多线程编程
【线程】Java多线程编程 一、前言一个最简单的多线程编程示例可以使用的工具 二、创建线程的方式三、Thread类中重要的属性和方法3.1 构造方法3.2 常见属性 一、前言 当有多个线程的时候,这些线程的执行顺序是不确定的。这一点,是我们之前提到的操作系统…...
4.2 MySQL存储过程
存储过程是MySQL中用于封装一组 SQL 语句的数据库对象,便于简化重复任务、增强性能和逻辑复用。本文将从多个角度详细解析存储过程的功能、语法和应用场景。 1. 存储过程概述 1.1 什么是存储过程 存储过程(Stored Procedure)是一段在数据库…...
archlinux安装waydroid
目录 参考资料 注意 第一步切换wayland 第二步安装binder核心模组 注意 开始安装 AUR安裝Waydroid 启动waydroid 设置网络(正常的可以不看) 注册谷歌设备 安装Arm转译器 重启即可 其他 参考资料 https://ivonblog.com/posts/archlinux-way…...
C语言数学函数库<math.h>的常用函数讲解
math函数 一. 基础数学函数1. fabs(double x) — 绝对值2. fmod(double x, double y) — 余数3. pow(double x, double y) — 幂运算4. sqrt(double x) — 平方根5. cbrt(double x) — 立方根6. hypot(double x, double y) — 计算斜边 二. 对数和指数函数1. exp(double x) — …...
Swift 实现判断链表是否存在环:快慢指针法
文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结关于我们 前言 本题由于没有合适答案为以往遗留问题,最近有时间将以往遗留问题一一完善。 LeetCode - #141 环形链表 不积跬步,无以至千里;不积小流…...
借助算力云跑模型
算力平台:FunHPC | 算力简单易用 AI乐趣丛生 该文章只讲述了最基本的使用步骤(因为我也不熟练)。 【注】:进入平台,注册登录账号后,才能租用。学生认证+实名认证会有免费的算力资源࿰…...
Python 版本的 2024详细代码
2048游戏的Python实现 概述: 2048是一款流行的单人益智游戏,玩家通过滑动数字瓷砖来合并相同的数字,目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能,包括游戏逻辑、界面绘制和用户交互。 主…...
Homebrew切换成国内源
将 Homebrew 切换成国内的源可以显著提高软件包的下载速度。以下是详细步骤,帮助你将 Homebrew 的主仓库和核心仓库切换到国内镜像源。这里以中国科学技术大学(USTC)的镜像源为例,其他镜像源的切换方法类似。 切换 Homebrew 主仓…...
《Shader 入门精要》学习笔记 茵蒂克丝
渲染流水线 《UnityShader入门精要》学习1_cpu设置渲染状态是什么-CSDN博客 UnityShader 基础 《UnityShader入门精要》学习2_unityshader入门精要2-CSDN博客 学习Shader需要的数学基础 《UnityShader入门精要》学习3_透视投影到-1到1空间-CSDN博客 实现一个简单的顶点/…...
小苯吃糖果
一、题目 二、代码——解析 1、3种情况,第一种:他们都相等;第二种:前大后;第三种:后大前 2、转换成列表,使用列表方法进行升序 x,y,z map(int,input().split()) a [x,y,z] a.sort() if a[0…...
Docker+Nginx | Docker(Nginx) + Docker(fastapi)反向代理
在DockerHub搜 nginx,第一个就是官方镜像库,这里使用1.27.2版本演示 1.下载镜像 docker pull nginx:1.27.2 2.测试运行 docker run --name nginx -p 9090:80 -d nginx:1.27.2 这里绑定了宿主机的9090端口,只要访问宿主机的9090端口&#…...
开发工具 - VSCode 快捷键
以下是一些常用的 VS Code 快捷键(Windows、macOS 和 Linux 均适用,略有不同): 常用快捷键 功能Windows/LinuxmacOS打开命令面板Ctrl Shift P 或 F1Cmd Shift P打开文件Ctrl OCmd O保存文件Ctrl SCmd S全部保存Ctrl K,…...
session理解
一、术语session session:中文经常翻译为 ‘会话’,其本来的含义是指有始有终的一系列动作/消息,比如:打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个session。在阅读技术书籍时我们可能会看到这样的话“在…...
linux服务器中tomcat应用使用root用户启动之后再使用普通用户启动后无法启动问题解决
参考一 参考二 修改用户名用户组为普通用户 在Linux中,您可以使用chown命令修改文件夹的所有者(用户名),使用chgrp命令修改文件夹的所属组(用户组)。还可以使用chown命令同时修改所有者和所属组。 例如&…...
非线性控制器设计原理
非线性控制器设计原理 非线性控制器设计旨在解决非线性系统的控制问题,克服传统线性控制器在处理非线性现象(如饱和、死区、耦合、时变性等)时的不足。其核心在于利用非线性数学工具和设计方法,使控制系统在非线性条件下具备良好…...
【CSS3】Flex弹性布局
文章目录 前言一、基本概念1.容器和项目:2.主轴和交叉轴: 二、容器属性1.flex-direction:决定主轴的方向,即x轴还是y轴2.flex-wrap:定义项目的换行方式3.flex-flow:flex-direction属性和flex-wrap属性的简写…...
Ubuntu24.04LTS设置root用户可远程登录
Ubuntu24.04LTS设置root用户可远程登录 文章目录 Ubuntu24.04LTS设置root用户可远程登录1. 设置root密码2. 设置root用户可远程登录1. 查看ssh服务是否安装2. 安装ssh服务3. 再次查看ssh服务是否安装4. 配置ssh文件5. 重启ssh服务6. root远程登录 1. 设置root密码 Ubuntu安装后…...
【计算机网络】数据链路层
跨网络传输的本质:由许多局域网(子网)转发的结果 要彻底理解跨网络转发,首先要理解 -> 局域网中报文的转发原理! 一、以太网帧格式 1.报头的含义 源地址/目的地址:源MAC地址和目的MAC地址 帧协议类型&…...
SciPy库spatial.transform模块Rotation类的from_rotvec 函数介绍
SciPy 库的 spatial.transform 模块 Rotation 类 是一个工具类,用于在多种旋转表示形式(例如旋转矩阵、四元数、旋转向量、欧拉角等)之间进行转换,以及执行旋转操作。 示例代码 1. 构造旋转对象 from scipy.spatial.transform …...
递归-迭代
24. 两两交换链表中的节点 Leetcode 24 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 递归解法 // 注意:cpp …...
Arcpy 多线程批量重采样脚本
Arcpy 多线程批量重采样脚本 import arcpy import os import multiprocessingdef resample_tifs(input_folder, output_folder, cell_size0.05, resampling_type"BILINEAR"):"""将指定文件夹下的所有 TIFF 文件重采样到指定分辨率,并输出…...
使用bcc/memleak定位C/C++应用的内存泄露问题
C/C应用的内存泄露 在笔者之前的一篇文章中,提到了通过每隔一段时间抓取应用的/proc/XXX/maps文件对比得到进程的内存增长区域,然后调用gdb调试工具的dump binary memory命令将增长的内存(即对应着泄露的内存数据)导出到文件&…...