docker-学习-2
docker学习第二天
- docker学习第二天
- 1.docker和虚拟机的区别
- 2.docker的底层隔离机制
- 2.1 Namespaces(命名空间)
- 2.1.1 什么是命名空间
- 2.2 Cgroups
- 2.3 Union file systems
- 2.4 Container format
- 2.5 docker在底层如何做隔离的,如何进行资源限制的?
- 3. docker命令
- 3.1 启动MySQL 容量限制cpu使用率为50% 内存为2G,如何看是否启用了限制?
- 3.2 docker top
- 3.3 思考:如何限制容器使用网络带宽资源?
- 3.4 细讲一下docker run
- 3.5 docker rm
- 3.6 docker rmi
- 3.7 docker rm和rmi的区别
- 4. 一些小知识点
- 4.1 kernel的作用
- 4.2 假如我们不使用容器进程,我们想限制一个Linux操作系统里的进程使用多少cpu和多少内存?
- 4.3 docker容器的三种状态
- 4.4 小结一下
docker学习第二天
1.docker和虚拟机的区别

2.docker的底层隔离机制
2.1 Namespaces(命名空间)
2.1.1 什么是命名空间
简单来讲:命名空间就是在内存中存放数据的空间(存放变量,函数,库等)
就相当于一块地盘,梁山!梁山上的一草一木都是你命名的,这块地盘归你管理!
Namespaces是Linux内核的一个特性,它可以为进程提供一个隔离的环境,使得进程和其他进程运行在不同的“空间”中。Docker使用了以下几种namespaces来隔离容器的运行环境:
- **PID Namespace:**隔离进程ID,每个容器都有自己的进程ID空间。
- **NET Namespace:**隔离网络接口,每个容器都有自己的网络空间。
- **IPC Namespace:**隔离System V IPC和POSIX message queues,每个容器都有自己的IPC空间。
- **MNT Namespace:**隔离文件系统挂载点,每个容器都有自己的文件系统。
- **UTS Namespace:**隔离hostname和domainname,每个容器都有自己的hostname。
- **user Namespace: ** 用户命名空间。
我们每起一个容器就是在内存中开辟一块空间
同样的每一个容器也代表着一个进程
2.2 Cgroups
Cgroups(control groups)是Linux内核的一个特性,它可以限制、记录和隔离进程组所使用的物理资源,包括CPU、内存、磁盘I/O等。Docker使用cgroups来限制和控制容器对物理资源的使用。
2.3 Union file systems
Union file systems,或者叫unionfs,是一种文件系统服务,它可以将多个不同位置的目录合并到一个虚拟的文件系统中。Docker使用unionfs来支持镜像的层次结构,每一层都可以添加、修改或删除文件,而不影响其他层。
2.4 Container format
Docker使用自己的容器格式来打包和运行容器。这个格式定义了容器的内容和运行时的参数,包括容器使用的镜像、网络配置、环境变量等。
2.5 docker在底层如何做隔离的,如何进行资源限制的?
Namespaces和Cgroups联系起来进行隔离和资源限制
隔离 - Namespaces
Namespaces是Linux内核的一个特性,它可以为进程提供一个隔离的环境,使得进程和其他进程运行在不同的“空间”中。Docker使用了以下几种namespaces来隔离容器的运行环境:
- PID Namespace:隔离进程ID,每个容器都有自己的进程ID空间。–>进程命名空间
- NET Namespace:隔离网络接口,每个容器都有自己的网络空间。–>网络命名空间
- IPC Namespace:隔离System V IPC和POSIX message queues,每个容器都有自己的IPC空间。类似于管道的作用。
- MNT Namespace:隔离文件系统挂载点,每个容器都有自己的文件系统。
- UTS Namespace:隔离hostname和domainname,每个容器都有自己的hostname。和时间相关。
- user Namespace: 用户命名空间。
资源限制 - Cgroups
Cgroups(control groups)是Linux内核的一个特性,它可以限制、记录和隔离进程组所使用的物理资源,包括CPU、内存、磁盘I/O等。Docker使用cgroups来限制和控制容器对物理资源的使用。
例如,你可以设置一个容器只能使用1GB的内存和50%的CPU。当容器试图使用更多的资源时,cgroups会阻止它并可能杀死一些进程来保持资源使用在限制之内。
举个例子

悟空,八戒,嫦娥是不同的容器
👆图说明:不同的容器之间可以使用相同的命名空间

3. docker命令
3.1 启动MySQL 容量限制cpu使用率为50% 内存为2G,如何看是否启用了限制?
docker run -d --name sc-mysql-2 -p 3307:3306\--cpus=".5" \--memory="2g" \-e MYSQL_ROOT_PASSWORD='sc123456' \mysql:5.7.43
[root@docker-1 ~] docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
168628a39c9b sc-mysql-2 0.35% 205.2MiB / 2GiB 10.02% 656B / 0B 1.81MB / 583MB 27
该命令在Docker中启动了一个名为
sc-mysql-2的MySQL容器实例,并设置了相关参数来控制资源和配置,具体的参数解释如下:
docker run: Docker的命令,用于创建并启动一个新的容器。
-d: 表示容器将在后台运行(detached mode),即容器启动后不会占用当前的命令行界面。
--name sc-mysql-2: 设置容器的名称为sc-mysql-2,方便后续的管理操作,如停止和删除容器。
-p 3307:3306: 端口映射参数。将容器内部的3306端口(MySQL默认端口)映射到宿主机的3307端口。这样,宿主机上的应用程序可以通过访问localhost:3307来与容器内的MySQL服务器通信。
--cpus=".5": 限制容器的CPU使用率。在这里,设置为0.5意味着容器最多可以使用50%的CPU资源。如果是多核CPU,这表示容器可以使用半核的CPU时间。
--memory="2g": 限制容器可以使用的最大内存量为2GB。如果容器试图使用超过这个限制的内存,可能会触发OOM(Out of Memory)管理机制,导致容器内的进程被终止。
-e MYSQL_ROOT_PASSWORD='sc123456': 通过环境变量设置MySQL的root用户密码。MYSQL_ROOT_PASSWORD是MySQL容器初次启动时必须设置的环境变量,用于定义root用户的密码。在这个例子中,密码被设置为sc123456。
mysql:5.7.43: 指定使用的Docker镜像,这里使用的是MySQL的官方Docker镜像,版本是5.7.43。综上所述,这个命令将会在Docker中创建一个新的MySQL容器,该容器在后台运行,拥有2GB的内存限制和50%的CPU使用限制,其root用户的密码设置为
sc123456。外部可以通过宿主机的3307端口与容器内的MySQL服务进行通信。
另一种方式
[root@docker-1 ~] docker run -d --name sc-mysql-3 -p 3308:3306 --cpu-shares 500 --cpus 2 --cpuset-cpus 0,1 -m 2000000000 --device-write-bps /dev/sda:20MB -e MYSQL_ROOT_PASSWORD='sc123456' mysql:5.7.43
938d53c057a172472fdde927f25d89c709e467d19eceebe2923d31f2e2907627
这条命令在Docker中启动了一个名为
sc-mysql-3的MySQL容器实例,并配置了多个资源限制参数和环境变量。以下是该命令各个参数的详细解释:
docker run: Docker的命令,用于创建并启动一个新的容器实例。
-d: 表示容器将在后台运行(detached mode),即容器启动后不会占用当前的命令行界面。
--name sc-mysql-3: 指定了新容器的名称为sc-mysql-3。
-p 3308:3306: 将容器内部的3306端口(MySQL默认端口)映射到宿主机的3308端口。这样,宿主机上的应用程序可以通过访问localhost:3308来与容器内的MySQL服务器通信。
--cpu-shares 500: 设置容器的CPU共享权重为500。在同一宿主机上,CPU资源将按照容器的权重被分配,权重越高的容器在CPU资源紧张时获得的份额越多。
--cpus 2: 限制容器可以使用的CPU核心数为2。这意味着容器可以使用两个CPU核心的全部性能。
--cpuset-cpus 0,1: 绑定容器到特定的CPU核心,只允许容器在CPU 0和CPU 1上运行。
-m 2000000000: 限制容器可以使用的内存为2GB。这里使用字节作为单位,2000000000字节等于大约2GB。
--device-write-bps /dev/sda:20MB: 限制容器对/dev/sda设备(通常是宿主机的硬盘)的写速度为每秒20MB。这可以防止容器占用过多的磁盘I/O资源。
-e MYSQL_ROOT_PASSWORD='sc123456': 通过环境变量设置MySQL的root用户密码。MYSQL_ROOT_PASSWORD是MySQL容器初次启动时必须设置的环境变量,用于定义root用户的密码。在这个例子中,密码被设置为sc123456。
mysql:5.7.43: 指定使用的Docker镜像,这里使用的是MySQL的官方Docker镜像,版本是5.7.43。综上所述,这个命令将会在Docker中创建一个新的MySQL容器,该容器在后台运行,配置了CPU和内存的资源限制,并将容器的MySQL服务端口映射到宿主机的3308端口上。同时,还限制了容器对宿主机硬盘的写速度。
[root@docker-1 ~] docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
938d53c057a1 sc-mysql-3 0.03% 205.2MiB / 1.863GiB 10.76% 656B / 0B 2.88MB / 583MB 27
3.2 docker top
查看容器内部的进程
[root@docker-1 ~] docker top sc-mysql-3
UID PID PPID C STIME TTY TIME CMD
polkitd 5529 5509 0 18:10 ? 00:00:00 mysqld
[root@docker-1 ~]#
一般容器里边只跑一个进程
3.3 思考:如何限制容器使用网络带宽资源?
Docker本身并没有直接提供限制容器网络带宽的选项,但是可以通过一些间接的方式来实现。其中一种常见的方法是使用tc(Traffic Control)工具,它是Linux内核的一部分,可以用来控制网络带宽。
然而,tc命令需要在容器启动后执行,而不能直接在docker run命令中设置。因此,你可能需要创建一个脚本来启动容器并设置网络带宽限制。
以下是一个简单的示例,首先启动容器,然后使用tc命令限制容器的出口带宽为1mbit/s:
# 启动容器
docker run -d --name sc-mysql-3 -p 3308:3306 --cpu-shares 500 --cpus 2 --cpuset-cpus 0,1 -m 2000000000 --device-write-bps /dev/sda:20MB -e MYSQL_ROOT_PASSWORD='sc123456' mysql:5.7.43# 获取容器的网络设备名
CONTAINER_PID=$(docker inspect -f '{{.State.Pid}}' sc-mysql-3)
NETWORK_INTERFACE=$(nsenter -t $CONTAINER_PID -n ip link | grep eth0 | awk '{print $2}' | tr -d ":")# 限制容器的出口带宽为1mbit/s
tc qdisc add dev $NETWORK_INTERFACE root tbf rate 1mbit burst 32kbit latency 400ms
这个脚本首先启动了一个名为sc-mysql-3的MySQL容器,然后获取了容器的网络设备名,最后使用tc命令限制了容器的出口带宽为1mbit/s。
需要注意的是,这只是一个基本的示例,实际使用时可能需要根据你的具体需求进行调整。另外,tc命令的使用可能需要一定的网络知识,如果你不熟悉这个工具,可能需要花一些时间来学习。
3.4 细讲一下docker run
docker run的流程 👇
-
检查启动容器使用的镜像是否存在,如果不存在就先去pull镜像到本机,如果存在就创建容器
docker pull 去拉mysql:5.7.43 -
docker create ------>创建容器
-
docker start ------>启动容器
# 删除镜像
[root@localhost ~] docker rmi busybox
Untagged: busybox:latest
Untagged: busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Deleted: sha256:beae173ccac6ad749f76713cf4440fe3d21d1043fe616dfbe30775815d1d0f6a
Deleted: sha256:01fd6df81c8ec7dd24bbbd72342671f41813f992999a3471b9d9cbc44ad88374
↑ 如果正在使用,就先停止那个容器,然后rm删除容器,再rmi删除镜像
所以说,不需要 pull 创建之类的
↓
直接 用run
3.5 docker rm
rm 是删容器的
3.6 docker rmi
rmi是删除镜像
一般是停止运行之后,先通过rm删除容器,然后通过rmi删除镜像
3.7 docker rm和rmi的区别
docker rm 和 docker rmi 是Docker命令行工具中的两个不同命令,分别用于删除容器和镜像。
docker rm
docker rm 命令用于删除一个或多个容器。当一个容器不再需要时,你可以使用此命令来清除它。需要注意的是,只有停止状态的容器才可以被删除。如果要删除正在运行的容器,需要先停止容器(使用docker stop命令),或者在使用docker rm命令时加上-f(–force)参数来强制删除。
基本使用格式如下:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
例如,删除名为my_container的容器:
docker rm my_container
如果想要强制删除一个正在运行的容器,可以使用:
docker rm -f my_container
docker rmi
docker rmi 命令用于删除一个或多个Docker镜像。当你不再需要某个镜像,或者需要清理磁盘空间时,你可以使用这个命令。在删除镜像之前,需要确保没有任何容器(无论是运行中的还是已停止的)正在使用这个镜像。
基本使用格式如下:
docker rmi [OPTIONS] IMAGE [IMAGE...]
例如,删除名为mysql的镜像:
docker rmi mysql
如果一个镜像有多个标签,你可能需要删除所有相关的标签才能完全删除该镜像。
需要注意的是,如果其它镜像依赖于要删除的镜像的层,那么这些层不会被删除。只有当没有任何镜像使用这些层时,这些层才会从Docker主机上删除。
无论是使用docker rm还是docker rmi,都应谨慎操作,确保不会误删正在使用或需要保留的容器或镜像。
4. 一些小知识点
4.1 kernel的作用
Linux内核的作用是提供系统的核心功能,包括:
- **进程管理:**调度进程、管理进程生命周期和状态。
- **内存管理:**分配和回收内存、虚拟内存和交换空间的管理。
- **文件系统:**管理数据存储、文件的创建、删除、读取和写入。
- **设备驱动:**提供与硬件设备通信的接口和控制。
- **网络功能:**实现网络协议栈,处理网络通信。
- **安全:**提供用户权限控制、访问权限和安全机制。
- **系统调用和接口:**提供用户空间程序与内核交互的接口。
4.2 假如我们不使用容器进程,我们想限制一个Linux操作系统里的进程使用多少cpu和多少内存?
使用cgroups技术去控制
https://pythonjishu.com/emkqvgkuoaalfkc/
操作系统内核里有个软件: LXC linux container技术
docker只是调用了LXC的库,实现了容器的应用
4.3 docker容器的三种状态
Docker容器的状态通常是通过docker ps或docker inspect命令查看的,并且确实有几种主要状态,包括"Up"、“Exited"和"Created”。下面是对这三种状态的详细解释:
-
Up(运行中):当容器正在运行时,使用
docker ps命令查看容器列表,会显示容器的状态为"Up"。这表示容器内的应用程序正在活动运行。"Up"状态后通常会跟随容器已运行的时间,例如"Up 2 hours"表示容器已经运行了两小时。 -
Exited(已停止):当容器内的主进程已经终止时,容器的状态就变为"Exited"。这意味着容器已经停止运行,不再执行任何操作。"Exited"状态后通常会跟随一个退出代码,表示容器终止时的状态,例如"Exited (0) 5 minutes ago"表示容器在5分钟前正常退出,退出代码为0。
-
Created(已创建):当使用
docker create命令创建一个容器但尚未启动它时,容器的状态是"Created"。这意味着容器的配置已经完成,包括文件系统的初始化,但是容器内的应用程序还没有开始运行。"Created"状态的容器需要通过docker start命令来启动。
这些状态帮助用户了解容器的生命周期和当前运行情况。使用docker ps -a命令会列出所有容器,包括未运行的容器,而使用docker ps命令默认只列出处于"Up"状态的运行中容器。
4.4 小结一下
docker run = docker pull+ docker create + docker start
docker rmi
docker top 查看容器里运行的进程,单进程思想,一个容器只跑一个进程
docker stats 查看运行的状态
docker network 查看容器里的网络
相关文章:
docker-学习-2
docker学习第二天 docker学习第二天1.docker和虚拟机的区别2.docker的底层隔离机制2.1 Namespaces(命名空间)2.1.1 什么是命名空间 2.2 Cgroups2.3 Union file systems2.4 Container format2.5 docker在底层如何做隔离的,如何进行资源限制的? 3. docker命…...
树--二叉树(C语言纯手凹)
目录 目录 1.什么是树?(不深入,仅做了解) 2.树的表示方式 2.1孩子兄弟表示法(左孩子右兄弟) 2.2孩子表示法 2.3双亲表示法 3.什么是二叉树 4.二叉树分类 4.1满二叉树 4.2完全二叉树 4.3二叉搜索树…...
TypeScript(七) 函数
1. TypeScript 函数 1.1. 函数的定义 函数就是包裹在花括号中的代码块,前面使用关键字function。 语法: // An highlighted block function function_name() {// 执行代码 }实例: function test() { // 函数定义console.log("我就是…...
学fpga和还是嵌入式?
具体要选哪个,更多还是看个人喜好还有基础知识结构。 我们先来明白下两者区别在哪? 1、嵌入式:分两部分,第一是嵌入式软件开发,主要与嵌入式操作系统、应用软件等有关。第二是嵌入式硬件开发,需要掌握硬件…...
Day01-变量和数据类型课后练习-参考答案
文章目录 1、输出你最想说的一句话!2、定义所有基本数据类型的变量和字符串变量3、用合适类型的变量存储个人信息并输出4、定义圆周率PI5、简答题 1、输出你最想说的一句话! 编写步骤: 定义类 Homework1,例如:Homewo…...
Docker 数据管理、容器互联、网络与资源控制
一、docker数据管理 管理 Docker 容器中数据主要有两种方式:数据卷(Data volumes)和数据卷容器(Datavolumes containers)。 1、数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立…...
密码加密——MD5与BCryptPasswordEncoder
目录 一、问题 二、密码加密 1、MD5密码加密 2、BCryptPasswordEncoder加密(推荐) 2.1 特点 2.2 使用步骤 一、问题 在数据库表中的密码都是明文存储的,安全性太低 需求: 将密码加密后存储,提高安全性 二、密码加密…...
利用外卖系统源码构建高效的在线订餐平台
在当今数字化时代,外卖服务已成为人们日常生活中不可或缺的一部分。为了满足用户需求,许多创业者和企业都希望搭建自己的在线订餐平台。利用现有的外卖系统源码,可以快速构建一个高效、安全的在线订餐平台。本文将介绍如何利用外卖系统源码来…...
数据分析数据 -(用数据讲故事)
书中有一句话我很喜欢- 献给大家 一个完美的设计,不是因为它没有多余的东西可以添加,而是它没有多余的部分可以删减 首先看几个对比的图形分析 处理工单和新增工单的随月份的变化趋势 这个图形的缺点就是 1: 月份对齐的情况 2:使用条形图需…...
如何运用5W2H分析法分析自己适合哪种办公室
随着时代的发展,办公室已经不再是传统的四壁之内,而是多种多样的形态,涵盖了开放式办公区、远程办公、共享办公空间等多种选择。对于刚刚创业的企业来说,选择一个适合自己发展的办公室至关重要。在这个过程中,运用5W2H…...
为什么考虑电子采购而非传统采购?
采购是重要的业务职能之一,为实现无缝运营而大规模采购商品或服务的行为。考虑到数字化转型带来的影响,决策者对于应维持传统采购还是转向电子采购或多或少会有困惑。 通过本文,你将更了解电子采购和传统采购,从而为业务连续性采…...
【git】git update-index --assume-unchanged(不改动.gitignore实现忽略文件)
文章目录 原因分析:添加忽略文件(取消跟踪)的命令:取消忽略文件(恢复跟踪)的命令:查看已经添加了忽略文件(取消跟踪)的命令: 原因分析: 已经维护的项目,文件已经被追踪,gitignore文件不方便修…...
科普类——无压缩图像传输带宽的计算(七)
无压缩图像传输带宽的计算 问题计算 问题 要计算1080p(1920x1080)分辨率的彩色图像在30帧每秒(fps)下的带宽需求,我们需要考虑图像的颜色深度(位深)和压缩情况。假设我们使用的是无压缩的RGB图…...
云原生周刊:K8s 1.26 到 1.29 版本的更新 | 2024.1.29
开源项目推荐 Skaffold Skaffold 是一个命令行工具,有助于 Kubernetes 应用程序的持续开发。您可以在本地迭代应用程序源代码,然后部署到本地或远程 Kubernetes 集群。Skaffold 处理构建、推送和部署应用程序的工作流程。它还提供构建块并描述 CI/CD 流…...
手机壳也能散热了?
作为一个玩了6年的王者荣耀玩家,手机发热真的很影响游戏体验!!游戏掉帧,性能下降很恼人,试过好几个散热工具,实际效果都不太好~ 自从入了Mate 60之后,看着这款微泵液冷壳毫无犹豫第…...
《微信小程序开发从入门到实战》学习九十七
7.3 表单组件 7.3.1 picke-view与picker-view-column组件 一个picker-view-column代表 一个滚动选择器子项,一个picker-view组件可以包含多个picker-view-column组件,这样可以一次性选择多项内容如年、月、日等。 picker-view-column组件中需包含多个…...
二极管漏电流对单片机ad采样偏差的影响
1,下图是常规的单片机采集电压电路,被测量电压经过电阻分压,给到mcu采集,反向二极管起到钳位作用,避免高压打坏mcu。 2,该电路存在的问题 二极管存在漏电流,会在100k电阻上产生叠加电压&#x…...
三、防御保护---防火墙安全策略篇
三、防御保护---防火墙安全策略篇 一、什么是安全策略二、安全策略的组成1.匹配条件2.动作3.策略标识 三、防火墙的状态检测和会话表1.会话表2.状态检测技术 四、ASPF--隐形通道五、用户认证1.用户认证的分类2.认证方式3.认证策略4.认证域 一、什么是安全策略 传统的包过滤防火…...
【学网攻】 第(15)节 -- 标准ACL访问控制列表
系列文章目录 目录 系列文章目录 文章目录 前言 一、ACL(访问控制列表)是什么? 二、实验 1.引入 实验拓扑图 实验配置 测试PC2能否Ping通PC3 配置ACL访问控制 实验验证 PC1 Ping PC3 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认…...
【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解
【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解 提示:最近开始在【医学图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解前言UNet模型运行环境搭…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
