Centos9安装docker
1. 卸载docker
- 查看是否安装了docker
yum list | grep docker
- 卸载老版本docker,拷贝自官网
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
- 卸载新版本
yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. 安装
- 阿里的源好像不能用,这是清华的源
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+http://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动docker
sudo systemctl start docker
- 停止docker
sudo systemctl stop docker
- 设置docker为自启动
sudo systemctl enable --now docker
3. 配置仓库
- 如果没有daemon.json 文件,创建文件
vim /etc/docker/daemon.json
- 配置
# 写入配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.1ms.run"]
}
EOF
- 重启docker
# 重启docker服务
systemctl daemon-reload && sudo systemctl restart docker
5. 镜像与容器的常用命令
操作类型 | 命令 | 说明 |
---|---|---|
镜像操作 | docker pull [镜像名称]:[标签] | 拉取指定镜像,若不指定标签,默认拉取latest 标签镜像 |
docker images | 列出本地已有的镜像 | |
docker rmi [镜像ID或镜像名称:标签] | 删除指定的镜像,支持镜像ID或镜像名称+标签 | |
容器操作 | docker run [选项] [镜像名称] [命令] | 创建并运行容器,-itd 表示交互、终端、后台运行;--name 可指定容器名称 |
docker ps | 列出当前正在运行的容器 | |
docker ps -a | 列出所有容器,包括已停止的容器 | |
docker inspect [容器ID或容器名称] | 查看容器详情 | |
docker exec -it [容器ID或容器名称] /bin/bash | 进入正在运行的容器并执行指定命令,常搭配/bin/bash 进入容器终端 | |
docker stop [容器ID或容器名称] | 停止指定的容器 | |
docker start [容器ID或容器名称] | 启动已停止的容器 | |
docker rm [容器ID或容器名称] | 删除指定容器,若容器在运行需先停止;docker rm -f [容器ID或容器名称] 可强制删除 | |
docker rm $(docker ps -aq) | 删除所有未运行的容器 |
- 创建并运行容器
-d:后台运行
–name:起别名,如果不指定,会随机生成别名
-p 81:80:端口映射
tomcat后面没有跟标签,默认启动latest
docker run -d --name=mytomcat2 -p 6001:8080 tomcat
docker run -d --name=mynginx1 -p 81:80 nginx
- 从容器构建镜像并提交到仓库
- 和ghost系统差不多
# 1. 查看正在运行的容器列表,获取目标容器的CONTAINER IDdocker ps# 2. 提交容器为镜像(格式:docker commit [容器ID] [镜像名称:标签]),这里的容器是自己修改过后的docker commit your-container-id your-image-name:latest# 3. 为镜像添加仓库标签(格式:docker tag [本地镜像] [仓库地址/镜像名称:标签])docker tag your-image-name:latest your-username/your-repo:v1.0# 4. 登录Docker仓库(首次推送需要登录)docker login# 5. 推送镜像到仓库(格式:docker push [仓库地址/镜像名称:标签])docker push your-username/your-repo:v1.0
6. 数据卷
- 宿主机目录不存在,容器内目录存在 :启动容器进行挂载时,Docker 会在宿主机上创建对应的目录,并将容器内该目录下的所有文件和子目录复制到宿主机新建的目录中。
- 宿主机目录存在,容器内目录存在 :挂载时,容器内目录会被宿主机目录的内容覆盖。
- 我理解就是给容器内的文件或目录做一个硬连接,连接到宿主机的某个目录或文件,以达到数据持久化的目的
1. 在启动容器时绑定挂载
特点: 允许将宿主机任意目录或文件挂载到容器中,灵活性高。
- 这里省略了run命令的很多其他参数,例如:-p、-d
docker run -v [宿主机路径]:[容器内路径]:[权限] 镜像名 [命令]
示例:
- 挂载目录
docker run -v /home/user/data:/app/data -it ubuntu bash
- 挂载文件
docker run -v /home/user/config.txt:/app/config.txt -it ubuntu bash
2. 命名数据卷
特点: 创建容器时显式指定名称的数据卷。方便管理和识别,即使容器删除,也可通过名称访问、管理数据卷。
命令 | 说明 |
---|---|
docker volume create [数据卷名称] | 创建一个新的数据卷 |
docker volume ls | 列出所有已创建的数据卷 |
docker volume rm [数据卷名称] | 删除指定的数据卷 |
- 创建数据卷
默认会在:/var/lib/docker/volumes/ 下创建my_volume目录
docker volume create my_volume
- 将其挂载到容器内的 /app/data 目录
docker run -v my_volume:/app/data -it ubuntu bash
7. 常用软件
- mysql
- 绑定挂载
docker run -itd \-p 33061:3306 \-v /root/mysql/conf:/etc/mysql/conf.d \-v /root/mysql/data:/var/lib/mysql \--name='mysql' \-e MYSQL_ROOT_PASSWORD=123456 \-e TZ=Asia/Shanghai \mysql:8.4 \--lower_case_table_names=1
解释
docker run
:用于运行容器的命令。-itd
:-i
表示交互式操作,-t
为容器分配伪终端,-d
使容器在后台运行。-p 33061:3306
:将宿主机 33061 端口映射到容器内 3306 端口,方便从外部访问容器内 MySQL 服务。-v /root/mysql/conf:/etc/mysql/conf.d
:把宿主机/root/mysql/conf
目录挂载到容器内/etc/mysql/conf.d
目录,用于存放 MySQL 配置文件。-v /root/mysql/data:/var/lib/mysql
:将宿主机/root/mysql/data
目录挂载到容器内/var/lib/mysql
目录,保存数据库数据。--name='mysql'
:为容器命名为mysql
,方便后续管理和识别。-e MYSQL_ROOT_PASSWORD=123456
:设置容器内 MySQL 的 root 用户密码为123456
,创建mysql容器必须的。-e TZ=Asia/Shanghai \
:设置时区mysql:8.4
:指定使用的 MySQL 镜像及版本为 8.4 。--lower_case_table_names=1
:传递给 MySQL 服务的启动参数,设置表名不区分大小写,linux中严格区分大小写,所以设置不区分。
- 命名挂载
- 创建命名数据卷
docker volume create mysql_conf_volume
docker volume create mysql_data_volume
- 启动MySQL容器并挂载命名数据卷
docker run -itd \-p 33062:3306 \-v mysql_conf_volume:/etc/mysql/conf.d \-v mysql_data_volume:/var/lib/mysql \--name='mysql1' \-e MYSQL_ROOT_PASSWORD=123456 \mysql:8.4 \--lower_case_table_names=1
- tomcat
docker run -itd \--name=tomcat_8001 \-v /root/tomcat/8001:/usr/local/tomcat/webapps \-p 8001:8080 \tomcat:10.0-jdk17
- nginx
先随便创建一个nginx的容器,并拷贝3个文件夹,拷贝后就删除这个容器
# 配置文件
docker cp nginx:/etc/nginx /root/nginx/conf
# 日志
docker cp nginx:/var/log/nginx /root/nginx/log
# 项目目录
docker cp nginx:/usr/share/nginx/html /root/nginx/html
docker run -itd \-p 81:80 \-v /root/nginx/conf/nginx:/etc/nginx \-v /root/nginx/log:/var/log/nginx \-v /root/nginx/html:/usr/share/nginx/html \--name=nginx_81 \nginx
-v /root/nginx/conf/nginx:/etc/nginx \
:第一步拷贝出来的是一个名为nginx的目录,里面是配置文件,可以到/root/nginx/conf/nginx中查看一下
8. Dockerfile
命令 | 说明 |
---|---|
docker build -t [镜像名称]:[标签] . | 在包含Dockerfile 的目录下,根据Dockerfile 构建镜像,. 表示当前目录 |
通过Dockerfile构建自己的镜像,文件内容像是将手动构建的过程转成代码
- 构建tomcat
# 基于centos镜像构建一个新的镜像
FROM centos:7
# 标记作者
LABEL author="zhaoyun"
# 把当前目录下的文件复制到容器的/user/local目录下
# ADD和COPY都可以复制文件,ADD兼有解压tar包的功能
ADD jdk-17.0.15_linux-aarch64_bin.tar.gz /usr/local
ADD apache-tomcat-10.1.40.tar.gz /usr/local
# 修改解压后目录的名字
RUN mv /usr/local/jdk-17.0.15 /usr/local/jdk
RUN mv /usr/local/apache-tomcat-10.1.40 /usr/local/tomcat
# 声明变量
ENV JAVA_HOME=/usr/local/jdk
ENV CATALINA_HOME=/usr/local/tomcat
# 声明环境变量
ENV CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH=$JAVA_HOME:$CATALINA_HOME/bin:$CATALINA_HOME/lib:$PATH
# 指定工作目录(docker exec -it 进入容器后的目录)
WORKDIR /usr/local/tomcat
# 暴露端口
EXPOSE 8080
# 启动tomcat
CMD ["catalina.sh","run"]
执行构建指令
docker build -t mytomcat:10.1 .
运行镜像,在浏览器的8010端口就可以使用了
docker run -itd --name=tomcat10.1 -p 8010:8080 mytomcat:10.1
-
docker build -t mytomcat:10.1 .
:注意最后的.
,意思就是Dockerfile在当前目录下;构建的镜像名:mytomcat,标签:10.1 -
注意这两句代码
ADD jdk-17.0.15_linux-aarch64_bin.tar.gz /usr/local
、RUN mv /usr/local/jdk-17.0.15 /usr/local/jdk
,ADD是将tar包解压到local目录中,RUN中运行的是更改目录名字的命令,jdk的tar包解压后的名字不是:jdk-17.0.15_linux-aarch64_bin
。tar包解压后的名字是什么需要自己解压看一下,RUN中的命令执行不了改名会报错 -
目录结构:
两个目录不是必须得,这里是解压了两个tao包看解压后名字的。
- 在idea中构建镜像
编辑Dockerfile文件
# OpenJDK 17 镜像作为基础镜像
FROM openjdk:17
# 创建工作目录
RUN mkdir -p /root/app
# 设置工作目录,后续操作都在该目录下进行
WORKDIR /root/app# 将当前目录下的 target 目录中的 jar 包复制到容器内的 /app 目录下
# 请将 your_application.jar 替换为实际的 JAR 包名称
COPY ./jar/hello.jar /root/app/app.jar# 暴露容器运行时的端口,根据实际 JAR 应用监听的端口修改
EXPOSE 8080# 定义容器启动时执行的命令,用于运行 JAR 包并指定配置文件位置
CMD ["java", "-jar", "/root/app/app.jar"]
- 这里的配置比上一个tomcat的配置简单好多,因为tomcat是以centos为基础镜像,需要配置Path等环境变量,这里是以jdk为基础镜像,在基础镜像中已经配置好了环境变量,在本镜像中直接使用就可以了
9. 网络
命令 | 说明 |
---|---|
docker network create [网络名称] | 创建一个新的Docker网络 |
docker network ls | 列出所有已创建的Docker网络 |
docker network connect [网络名称] [容器ID或容器名称] | 将指定容器连接到指定网络 |
dock的网络模式共有4种,这里介绍两种常用的模式
- 默认情况
- 桥接网络(bridge)
- 原理:这是 Docker 默认的网络驱动。当你创建一个新容器时,若不指定网络模式,它会自动连接到桥接网络。Docker 会创建一个名为 docker0 的虚拟网桥,容器通过虚拟网卡连接到该网桥,实现容器之间以及容器与宿主机的通信。
- 特点:容器有独立的 IP 地址,可通过 IP 相互访问。不过,桥接网络是隔离的,不同的桥接网络之间默认无法直接通信。
通俗理解,Docker在启动时会创建一个类似路由器的东西,名为docker0,地址:172.17.0.1,每开一个容器,Docker会给容器分配一个ip地址,例如:172.17.0.2、172.17.0.3,可以通过docker inspect [容器名或ID]
查看,容器直接可以通过此网络互相访问
- 将多个容器划分成一组,类似给网络划分vlan
- 容器之间可以通过自定义的名字互相访问
- 创建自定义桥接网络
docker network create my_custom_network
此命令会创建一个名为 my_custom_network
的自定义桥接网络。
-
将容器连接到自定义网络
创建容器时,通过--network
参数指定要连接的网络。 -
示例:启动多个容器并连接到自定义网络
# 启动一个 MySQL 容器并连接到自定义网络
docker run -d --name mysql_container --network my_custom_network -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0# 启动一个应用容器并连接到自定义网络
docker run -d --name app_container --network my_custom_network my_app_image
在上述示例中,mysql_container
是 MySQL 数据库容器,app_container
是应用程序容器,它们都连接到了 my_custom_network
网络。
容器间的访问方式
- 通过容器名称访问
在自定义网络中,容器能够使用其他容器的名称作为主机名来进行访问。这是因为 Docker 会自动为每个容器创建 DNS 记录,使得容器间可以通过名称解析 IP 地址。
示例:应用容器访问 MySQL 容器
假设 app_container
是一个需要连接 MySQL 数据库的应用程序,它可以使用 mysql_container
作为主机名来连接数据库。以下是在 app_container
内使用命令行工具连接 MySQL 的示例:
docker exec -it app_container mysql -h mysql_container -u root -p123456
在应用程序代码里,配置数据库连接时也可以使用容器名称:
import mysql.connectormydb = mysql.connector.connect(host="mysql_container",user="root",password="123456",database="your_database"
)# 执行数据库操作
- 通过 IP 地址访问
你也可以通过查看容器的 IP 地址,然后使用 IP 地址进行访问。
查看容器 IP 地址
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql_container
上述命令会输出 mysql_container
的 IP 地址。
使用 IP 地址访问
docker exec -it app_container mysql -h <mysql_container_ip> -u root -p123456
将 <mysql_container_ip>
替换为实际的 IP 地址。
相关文章:
Centos9安装docker
1. 卸载docker 查看是否安装了docker yum list | grep docker卸载老版本docker,拷贝自官网 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine卸载新版本…...
MySQL表的操作
MySQL表的操作 1. 创建表 在创建表前,需要先进入到某个数据库: use db_name创建表时,最好提前设计好表应该有的所有内容,否则后续添加或删除表的列可能会引发一连串的问题。 create table tb_name (field1 data_type [comment…...
Jmeter中同步定时器使用注意点
1.设置数量不可大于总线程数量,不然会一直等待 2.设置数量必须与总线程数量成整数倍数,不然还是要一直等。 3.当配置的数量小于线程数时,最好把循环打开,避免最后一次未准备好的线程数量达不到并发数。...
从零开始搭建Django博客③--前端界面实现
本文主要在Ubuntu环境上搭建,为便于研究理解,采用SSH连接在虚拟机里的ubuntu-24.04.2-desktop系统搭建,当涉及一些文件操作部分便于通过桌面化进行理解,通过Nginx代理绑定域名,对外发布。 此为从零开始搭建Django博客…...
使用Handsontable实现动态表格和下载表格
1.效果 2.实现代码 首先要加载Handsontable,在示例中我是cdn的方式引入的,vue的话需要下载插件 let hot null;var exportPlugin null;function showHandsontable(param) {const container document.getElementById("hot-container");// 如果…...
结合地理数据处理
CSV 文件不仅可以存储表格数据,还可以与地理空间数据结合,实现更强大的地理处理功能。例如,你可以将 CSV 文件中的坐标数据转换为点要素类,然后进行空间分析。 示例:将 CSV 文件中的坐标数据转换为点要素类 假设我们有…...
使用Geotools实现将Shp矢量文件加载SLD并合并图例生成-以湖南省周边城市为例
目录 前言 一、技术实现简介 1、生成成果说明 2、生成流程图说明 二、具体生成实践 1、渲染地图 2、生成图例 3、合并图像及输出 三、总结 前言 在当今数字化时代,地理信息系统(GIS)技术已成为城市管理、资源规划、环境监测等众多领域…...
openGauss数据库:起源、特性与对比分析
openGauss数据库:起源、特性与对比分析 一、起源与发展历程 1. 技术背景与开源历程 openGauss是由华为公司主导开发的开源关系型数据库管理系统,其技术根源可追溯至PostgreSQL。2019年,华为在内部整合了多个数据库产品线(如GMDB…...
相机中各个坐标系的转换关系如像素坐标系到世界坐标系以及相机标定的目的
一、背景 无论是机器人领域、SLAM还是自动驾驶领域,都会涉及相机标定,但是看了很多博客,都是各种坐标系的变换,没有从上层说明进行坐标变换的目的是什么,以及相机标定完成后,是已知像素坐标求世界坐标&…...
ubuntu24设置拼音输入法,解决chrome不能输入中文
## 推荐方案:使用 Fcitx5 Fcitx5 是当前在 Wayland 环境下兼容性最好的输入法框架。 ### 1. 安装 Fcitx5 bash sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5 fcitx5-module-c…...
linux内核进程管理(1)——创建,退出
linux源码阅读——进程管理(1) 1. 进程的基本介绍1.1 linux中进程和线程的区别1.2 task_struct中的基本内容1.3 命名空间ns(namespace)命名空间结构图Linux 中的命名空间类型 1.4 进程标识符 2. 创建一个进程的流程2.1 CLONE宏2.2 创建进程系统调用1. do…...
容器修仙传 我的灵根是Pod 第8章 护山大阵(DaemonSet)
第三卷:上古遗迹元婴篇 第8章 护山大阵(DaemonSet) 九霄之上,雷云如怒海翻腾。 天调度宗的护山大阵「九霄雷光阵」正发出悲鸣,七十二根镇山雷柱已有半数熄灭。每根雷柱底部,本该守护节点的「雷符傀儡」&a…...
使用Python将YOLO的XML标注文件转换为TXT文件格式
使用Python将YOLO的XML标注文件转换为TXT文件格式,并划分数据集 import xml.etree.ElementTree as ET import os from os import listdir, getcwd from os.path import join import random from shutil import copyfile from PIL import Image# 只要改下面的CLASSE…...
在面试中被问到spring是什么?
Spring框架的核心回答 1. 定义与定位 Spring是一个轻量级、开源的企业级应用开发框架,旨在简化Java应用的开发,提供全面的编程和配置模型。它的核心目标是解决企业应用开发的复杂性,通过模块化设计和松耦合架构,帮助开发者更高效…...
MongoDB Ubuntu 安装
MongoDB 安装 https://www.mongodb.com/zh-cn/docs/manual/installation/ https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-ubuntu/ https://www.mongodb.com/zh-cn/docs/manual/reference/ulimit/ https://www.mongodbmanager.com/download ubun…...
ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装
文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置问题:为什么说堆内存…...
初始SpringBoot
此文介绍一些有关我对SpringBoot的学习理解, 声明:此处我的IDEA是企业版的,可能和社区版会有一些差异 1. 第⼀个SpringBoot程序 1. SpringBoot介绍 我们看下Spring官方的介绍 可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速…...
【算法笔记】动态规划基础(一):dp思想、基础线性dp
目录 前言动态规划的精髓什么叫“状态”动态规划的概念动态规划的三要素动态规划的框架无后效性dfs -> 记忆化搜索 -> dp暴力写法记忆化搜索写法记忆化搜索优化了什么?怎么转化成dp?dp写法 dp其实也是图论首先先说结论:状态DAG是怎样的…...
C++入门基础(2)
Hello~,欢迎大家来到我的博客进行学习! 目录 1.缺省参数2.函数重载3.引用3.1 引用的概念和定义3.2 引用的特性3.3引用的使用3.4 const引用3.5 指针和引用的关系扩展 4. nullptr 1.缺省参数 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时&…...
OpenCV-Python (官方)中文教程(部分一)_Day15
18.图像梯度 梯度简单来说就是求导。 OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel, Scharr和Laplacian。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对 Sobel(使用小的卷积核求解求解梯度角度时)的优化。Laplacian 是…...
大厂面试:MySQL篇
前言 本章内容来自B站黑马程序员java大厂面试题和小林coding 博主学习笔记,如果有不对的地方,海涵。 如果这篇文章对你有帮助,可以点点关注,点点赞,谢谢你! 1.MySQL优化 1.1 定位慢查询 定位 一个SQL…...
软件工程的13条“定律”:从Hyrum定律到康威定律,再到Zawinski定律
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Linux删除大文件df空间avail空间不增加
背景 根磁盘被同事写满,使用> 删除一些安装包后,df中的avail空间还是0 排除有进程正在占用文件,已使用lsof命令检测过我所删的文件是没有进程在使用 原因 是文件系统预留空间在作祟 解决 # 文件系统预留块 tune2fs -l /dev/vda2 | gr…...
【C语言-选择排序算法】实现对十个数进行排序
目录 前言 一、选择排序算法原理 二、选择排序算法实现对十个数进行排序 三、代码运行示例 四、选择排序算法的时间复杂度和空间复杂度分析 五、选择排序算法的优缺点 六、总结 前言 在计算机科学领域,排序算法是基石般的存在,它们就像是整理杂乱…...
驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)
日期:2025年04月23日 回顾:2025年04月22日(Day 17:Linux 中的子系统概念与注册机制) 本日主题:字符设备驱动 子系统协作机制剖析 学习目标:理解字符设备的注册原理,掌握其与子系统间…...
SQL Server 2022 常见问题解答:从安装到优化的全场景指南
SQL Server 2022 作为微软最新的数据库管理系统,在性能、安全性和云集成方面带来了多项革新。然而,用户在实际使用中仍可能遇到各类问题。本文将围绕安装配置、性能优化、备份恢复、安全设置、高可用性方案、兼容性问题及错误代码解析等核心场景…...
软件开发版本库命名规范说明
背景:近期一直再更新自己所开发的一个前端大文件上传npm库(enlarge-file-upload),为了让库的发版更加规范,于是参考了各种文档写下了这篇关于软件开发库的版本命名规范,且不仅局限于前端的版本命名规范,适用于整个软件…...
Kafka 详解
1.基本概念:Kafka 是分布式发布 - 订阅消息系统,具有高吞吐量、可扩展性等优势,支持点对点和发布订阅两种消息模式,涉及 Broker、Topic、Partition 等多种角色。 2.安装步骤:需先安装 JDK 和 Zookeeper,下…...
【Qwen2.5-VL 踩坑记录】本地 + 海外账号和国内账号的 API 调用区别(阿里云百炼平台)
API 调用 阿里云百炼平台的海内外 API 的区别: 海外版:需要进行 API 基础 URL 设置国内版:无需设置。 本人的服务器在香港,采用海外版的 API 时,需要进行如下API端点配置 / API基础URL设置 / API客户端配置…...
硬核解析:整车行驶阻力系数插值计算与滑行阻力分解方法论
引言:阻力优化的核心价值 在汽车工程领域,行驶阻力是影响动力性、经济性及排放的核心因素。根据统计,车辆行驶中约60%的燃油消耗用于克服阻力(风阻、滚阻、传动内阻等)。尤其在电动化趋势下,阻力降低1%可提…...
【网络原理】TCP提升效率机制(一):滑动窗口
目录 一. 前言 二. 滑动窗口 三. 丢包现象 1)ACK报文丢失 2)数据丢失 四. 总结 一. 前言 TCP最核心的机制就是可靠传输 ,确认应答,超时重传,连接管理这些都保证了可靠传输,得到了可靠传输,…...
移动端使用keep-alive将页面缓存和滚动缓存具体实现方法 - 详解
1. 配置组件名称 确保列表页组件设置了name选项,(组合式API额外配置): <!-- vue2写法 --> export default {name: UserList // 必须与 <keep-alive> 的 include 匹配 }<!-- vue3写法 --> defineOptions({na…...
工作记录9
1.点击按钮发送AJAX请求 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title&…...
Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案
在 Java 网络通信中,SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 协议版本不兼容异常。本文结合 Java 官方规范、TLS 协议标准及实战经验,提供体系化解决方案,帮助开发者快速定位并解决协议版本冲突问题。 一、异常本质&…...
连锁美业管理系统「数据分析」的重要左右分析︳博弈美业系统疗愈系统分享
美业管理系统中的数据分析功能在提升运营效率、优化客户体验、增强决策科学性等方面具有重要作用。 数据分析功能将美业从“经验驱动”升级为“数据驱动”,帮助商家在客户管理、成本控制、服务创新等环节实现精细化运营,最终提升盈利能力与品牌竞争力…...
Openharmony 和 HarmonyOS 区别?
文章目录 OpenHarmony 与 HarmonyOS 的区别:开源生态与商业发行版的定位差异一、定义与定位二、技术架构对比1. OpenHarmony2. HarmonyOS 三、应用场景差异四、开发主体与生态支持五、关键区别总结六、如何选择?未来展望 OpenHarmony 与 HarmonyOS 的区别…...
26.OpenCV形态学操作
OpenCV形态学操作 形态学操作(Morphological Operations)源自二值图像处理,主要用于分析和处理图像中的结构元素,对图像进行去噪、提取边缘、分割等预处理步骤。OpenCV库中提供了丰富的形态学函数,常见的包括…...
uniapp小程序使用echarts
1、引入插件 在Dcloud插件市场下载echarts插件:插件地址 2、页面使用简单示例: <template><view class"pie-view flex-center"><view style"width: 100%; height: 600rpx"><l-echart ref"chartRef&quo…...
Vue 中 使用 Mixins 解决 多页面共用相同组件的相关问题
1. 需要解决的问题 最近在vue项目中,有多个页面需要用到同一个组件,至于是什么组件,这里不重要,重要的这个组件需要被多个文件引用,而且有组件有一些控制逻辑。 1.1代码展示 <template><div class"ap…...
Rust 学习笔记:Rust 简介
Rust 学习笔记:Rust 简介 Rust 学习笔记:Rust 简介历史与发展历程核心特性优点缺点应用领域 Rust 学习笔记:Rust 简介 Rust 是一种系统级编程语言,由 Mozilla 研究院的 Graydon Hoare 于 2006 年设计,旨在提供内存安全…...
第六节:进阶特性高频题-自定义指令实现场景
示例:v-lazy(图片懒加载)、v-permission(权限控制) 钩子函数:mounted、updated、unmounted等 一、自定义指令核心机制 指令生命周期钩子 const myDirective {// 元素插入父节点时调用(初始化…...
未曾设想的道路1
写在前面: 与其转去读博,倾向自学就业。 中国科学技术大学数学科学学院拥有一支优秀的师资团队,以下是部分教授的简介: 陈发来教授: 荣誉:2024年6月13日,在德国莱布尼茨信息科学中心召开的国际…...
Axure按钮设计分享:打造高效交互体验的六大按钮类型
在产品设计过程中,按钮作为用户与界面交互的核心元素,其设计质量直接影响用户体验与操作效率。Axure作为一款强大的原型设计工具,为设计师提供了丰富的按钮设计选项。本文将围绕基础按钮、禁用按钮、圆角按钮、动态按钮、渐变按钮和图标按钮六…...
MySQL 8.4企业版 安装和配置审计插件
在最新的MySQL 8.4.4企业版上启用审计日志功能 操作系统:Ubuntu 24.04 数据库:8.4.4-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial) 1.查看安装脚本 下面2个脚本位于mysql安装目录 share 下,一个是window一个是linux可以用…...
AI大模型学习十一:尝鲜ubuntu 25.04 桌面版私有化sealos cloud + devbox+minio,实战运行成功
一、说明 用了ubuntu 25.04,内核为GNU/Linux 6.14.0-15-generic x86_64,升级了部分image,过程曲折啊 sealos 能干啥 对集群生命周期进行管理,一键安装高可用 Kubernetes 集群,增删节点清理集群自恢复等 通过 sealos…...
idea无法下载源代码
通过idea找到用户设置文件路径 查看 setting.xml 文件,找到了以下相关的配置,注释掉这个maven-default-http-blocker的镜像,这个东西阻碍了去阿里的镜像库查找依赖,注释掉。 然后重启idea就能下载了...
【敏矽微ME32G030系列】介绍、环境搭建、工程测试
【敏矽微ME32G030系列】介绍、环境搭建、工程测试 本文介绍了敏矽微ME32G030系列单片机及开发板、包括参数特点、原理图、应用场景,以及开发环境搭建、工程测试等流程。 简介 本节介绍了开发板主控、特点、开发板原理图、板载资源等信息。 主控 开发板采用 ME3…...
Hooks的使用限制及原因
Hooks的使用限制及原因 Hooks的核心限制 只能在函数组件顶层调用 ⭐不能在条件语句、循环、嵌套函数中调用 ⭐只能在React函数组件或自定义Hooks中调用 ⭐ 为什么有这些限制? 根本原因:React依赖Hooks的调用顺序 React内部使用数组来存储每个组件的…...
【JavaScript】二十六、正则表达式
文章目录 1、正则表达式1.1 定义1.2 校验 2、元字符2.1 边界符2.2 量词2.3 字符类2.3.1 方括号[ ]2.3.2 小点.2.3.3 预定义 2.4 案例:用户名验证 3、修饰符3.1 语法3.2 案例:过滤敏感词 1、正则表达式 Regular Expression,正则表达式&#x…...
Geek强大的电脑卸载软件工具,免费下载
一款强大的卸载电脑软件工具,无需安装 免费下载...