自己做行程的网站/地域名网址查询
docker服务部署
docker是一个容器管理工具,其内部容器才是具体服务,所以我们在安装docker时不需要有太多定制内容,只需要通过yum安装即可
1. 更新系统包
#更新现有依赖包,防止现有依赖包版本过低影响docker安装
yum update
2. 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加Docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#如果上面的官方docker源速度过慢,可以下载下面的阿里云docker源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 安装Docker
yum install docker-ce docker-ce-cli containerd.io
5. 配置docker镜像源
vim /etc/docker/daemon.json
#修改为如下内容
{"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
}
如果上面的镜像源不可用,可以进入如下文章查看最新的更新
docker镜像源来源
yum配置的镜像源是让yum具有下载docker的能力,不会影响docker拉取镜像的速度,加速docker下载镜像的过程需要配置docker镜像源。
6. 启动Docker并设置开机启动
systemctl enable docker
7. 验证Docker是否安装成功
docker --version
容器化介绍
容器化通过将被部署的应用程序,放入包含其依赖的所有环境的容器中。通过操作系统提供的某些能力,让容器环境同外部实现环境隔离,可以在一台主机中,独立于其他服务,部署在一个独立的虚拟环境中。
什么是容器?
我们可以把容器想象成一个虚拟机,其外在表现和虚拟机极其相似,比如说,容器通常由其自己的文件系统,有其自己的虚拟网卡,虚拟网卡和真实网卡之间通过网桥连接(类似于虚拟机NAT模式)。其部署环境也独立于真实环境之外。
容器和虚拟机的区别
虽然在外在表现和虚拟机类似,不过其底层实现和虚拟机却是天差地别。
虚拟机通过分配真实的硬件资源,包括CPU,内存,磁盘等,打造一个真实的硬件环境。这样虽然能够实现环境隔离,不过对于资源分配不好把控,是对资源的浪费。
比如说,如果我想部署一个Kafka和一个redis在两个主机中,如果通过虚拟机来进行环境隔离,Kafka内存波动较大,我就需要给Kafka极大的内存资源,不过当Kafka内存占用较小时,由于分配的是固定的内存资源。剩余的资源也无法给redis使用。
并且虚拟机是模仿真实的主机环境,真实主机具有的环境虚拟机一应俱全,这就导致会引入大量的当前服务无需的依赖,这也是对资源的浪费。
虚拟机镜像虽然也可以在不同平台之间保持一致运行环境,但在虚拟机镜像的迁移和管理方面会较为复杂。
那么容器化如何解决了这些问题呢?
首先,容器的隔离实现是通过直接调用linux内核中的核心方法,不使用linux各种发行版的方法(如CentOS,Ubuntu等等)。所以只要是基于Linux的操作系统,容器都可以提供相同的环境,并且迁移方便。
并且容器不分配实际硬件资源,其运行环境和普通的程序运行时一样,都是在真实主机环境中运行。不同的的是其会调用linux操作系统的功能来实现容器之间的隔离。
容器的隔离实现
一个容器的实现主要通过LInux操作系统,提供的命名空间和控制组来实现和外界环境的隔离,生成一个独立的虚拟环境。
命名空间(NameSpace)
命名空间是 Linux 提供的一种机制,它将系统的全局资源划分为独立的组,使每个进程只能看到和访问它自己的资源。Docker 使用命名空间来实现容器之间的隔离,使得每个容器都认为自己是独立运行的。常用的命名空间类型包括:
- PID 命名空间(PID Namespace):隔离进程 ID,允许进程在容器中拥有自己的进程树和 PID 1。
- 网络命名空间(Network Namespace):隔离网络设备、IP 地址、路由表等,使容器有自己的网络栈。
- 挂载命名空间(Mount Namespace):隔离文件系统挂载点,使进程有自己独立的文件系统视图。
- UTS 命名空间(UTS Namespace):隔离主机名和域名,使容器有自己的主机名。
- IPC 命名空间(IPC Namespace):隔离信号量、消息队列等进程间通信机制。
- 用户命名空间(User Namespace):允许进程有自己的用户 ID 和组 ID 映射,提供更细粒度的权限隔离。
- 时间命名空间(Time Namespace):隔离系统时钟,允许不同命名空间内的进程看到不同的时间。
说了这么多,命名空间到底是什么啊?
实际上命名空间就是linux操作系统内核中的一个结构体,我们上面提到的每个命名空间都有一个自己的结构体,其中保存了命名空间的信息。而我们将一个主机内容添加进命名空间,本质上就是将记录主机内容信息的一个结构体的一个属性,保存对应命名空间结构体的地址。我们以最常见的进程举例:
在操作系统中,保存进程信息的结构叫PCB(进程控制块),当我们在PID命名空间中创建进程时,操作系统会创建两个PID,分别是真实PID和容器PID,保存进程信息的PCB也会将一个属性保存当前命名空间结构体的地址,这证明当前进程数据当前结构体,当多个进程都保存相同的命名空间结构体时,他们就是一个命名空间的进程,可以互相访问。
PCB中还保存了另外一个结构体,用于保存当前进程的所有容器层级和容器PID以及其他信息等等。在命名空间中还可以创建另一个命名空间,一个进程可以保存在多个互相嵌套的命名空间中。所以进程会保存多个容器PID以及层级信息。
通过这两个结构体,进程可以完成通过命名空间实现环境隔离,以及真实PID和容器PID的映射。
再比如网络命名空间本质上也是一个结构体,并且真实网卡和容器内虚拟网卡由虚拟交换机和veth pair来实现真实网课和虚拟网卡的连接。其他的不一一细讲了,大概理解命名空间本质概念就好。
控制组(cgroups)
我们仍然使用Kafka和redis的部署案例。通过容器化部署,可以防止在Kafka低内存消耗时,分配给其的内存资源被浪费。不过在Kafka接收消息量较大时又会出现另一个问题,如果放任其无限制扩展内容,势必会导致redis没有生存空间,所以我们在让其可以弹性利用内存的同时,我们也要对其最大值进程限制。
控制组(cgroups) 是 Linux 内核的一种功能,允许系统管理员或用户对一组进程的资源使用情况进行限制、隔离和监控。它在容器技术、虚拟化、云计算以及多用户系统中非常有用,提供了对 CPU、内存、磁盘 I/O、网络带宽等系统资源的精细控制。
cgroups 的主要功能和用途:
1. 资源限制(Resource Limiting)
cgroups 允许你对进程组的资源使用进行限制,以防止某些进程消耗过多的系统资源,影响其他进程或系统的性能。例如:
- CPU 限制:可以为一组进程分配 CPU 资源的最大使用比例,从而避免某个进程独占 CPU。
- 内存限制:可以限制一组进程能够使用的内存量,防止某些进程消耗过多的内存导致系统崩溃。
- I/O 限制:可以限制进程访问磁盘或其他存储设备的速率,确保 I/O 操作的公平性,防止某些进程造成 I/O 瓶颈。
2. 资源隔离(Resource Isolation)
通过 cgroups,可以对不同的进程组进行资源隔离,确保一个进程组的资源使用不会影响到其他进程组。这对容器化环境特别有用:
- 每个容器可以被分配固定数量的资源,如 CPU 核心、内存、I/O 速率等,保证不同容器之间的资源隔离和公平使用。
- 资源隔离还可以用于虚拟机或多用户系统,确保不同的用户或服务不会相互干扰。
3. 资源计费与统计(Resource Accounting)
cgroups 可以实时跟踪和统计某个进程组使用的资源量,包括 CPU 时间、内存使用、网络带宽消耗、I/O 操作等。这对系统监控、调优以及计费系统非常有用。例如:
- 可以统计某个容器或进程组使用了多少 CPU 时间和内存。
- 在云服务中,可以用 cgroups 的资源统计功能来进行按量计费,记录每个虚拟机或容器的资源消耗。
4. 优先级控制(Priority Control)
cgroups 可以为不同的进程组设置资源使用的优先级,确保高优先级的任务能够优先获得资源。例如:
- 在 CPU 竞争时,可以优先让某些关键任务使用更多的 CPU 时间,确保关键任务的响应时间。
- 对于内存和 I/O 资源,也可以设置不同的权重,以保证系统中的重要进程获得优先资源。
优先级控制通过控制进程权重比例,CPU会根据权重比例分配时间片。不过我认为这个功能实际上是多余的,高并发应用会通过创建线程来抢占CPU资源,在我看来无需CPU通过分配时间片来进行控制,这样控制反而会造成不好的结果,比如说某些进程偶尔需要进行高并发,创建多个线程以提高性能,但由于控制组对其权重进行了限制,导致其虽然占用了更多的内存,但性能却没有明显提升。(个人思考,有别的想法也可以说出来一起讨论)
5. 进程管理和分组(Process Grouping and Management)
cgroups 提供了将多个进程分组管理的机制。每个进程组可以有不同的资源限制和策略,可以随时动态调整:
- 在容器化环境中,cgroups 管理着每个容器中的进程,确保容器内部的所有进程都受到相同的资源限制。
- cgroups 还允许系统管理员动态向某个进程组添加或移除进程,便于灵活管理系统资源。
docker容器相关命令
- 启动容器:
docker run -d -p <主机端口>:<容器端口> --name <容器名> <镜像>
#-d为后台启动,对于一些有自己的启动命令的服务。如nginx,我们可以直接-d,而对于一些没有启动命令的服务,我们还要给他一个持续运行的命令防止其在后台关闭进程
#-p为端口映射,如果外部需要访问服务,那么我们则需要将容器内端口映射到真实环境的端口
#--name 给运行的容器起名字 最后的镜像是运行容器的镜像
#我们也可以直接 docker run <服务名:版本> 这样会自动去远程仓库拉取镜像
- 停止容器:
docker stop <容器名/容器ID>
- 启动已停止的容器:
docker start <容器名/容器ID>
- 查看运行中的容器:
docker ps
- 查看所有容器(包括停止的):
docker ps -a
- 删除容器:
docker rm <容器名/容器ID>
- 进入正在运行的容器:
docker exec -it <容器名/容器ID> /bin/bash
- 查看容器日志:
docker logs <容器名/容器ID>
- 重启容器:
docker restart <容器名/容器ID>
联合文件系统
多个容器内部的服务所依赖的环境中,必定有重合的部分,不如java开发的服务,底层一定是要依赖于jdk,对于js开发的后端服务,必须依赖node环境,部分服务依赖于数据库如mysql来存储服务数据,docker容器环境直接调用操作系统底层系统调用,对于部分依赖于某个操作系统发行版的服务,其还需要centos,等等等等。
大量服务之间依赖相同环境,如果我们对其进行完全隔离,势必要在一个主机上安装多个相同依赖环境的服务,这是对于主机内存的极大浪费。然而如果我们想要对其进行复用时,多个服务对于同一个依赖的差异性又是一个问题,比如说我可能依赖mysql,但是我的mysql的配置可能和你不同。那么对于这种需求,操作系统采用了联合文件系统的方式对多个相同依赖环境进行复用,并完善差异化。
联合文件系统,将多个文件抽象成层的概念,其中我们所依赖的服务被一层一层的罗列起来,而容器内的服务则是要一层一层的访问这些服务,这些层全部都是只读层,无法进行更改。对于这些只读层的变更内容,则是放在第一层作为可写层,其中可写层的内容会对这些只读层的内容进行覆盖,最终的结构如下图:
这是对联合文件系统的抽象理解,其实本质上来说,就是多个容器对同一个环境进行使用,然后自己对差异的那日容进行维护,并对原环境覆盖,其中复用环境是相对简单的事情,最具意义的就是可写层的实现,可以对环境内容进行修改并覆盖,这是实现联合文件系统的关键。
镜像(image)
想要了解容器化,那就一定少不了镜像的概念。在了解完联合文件系统后,镜像的概念也变得非常简单了。对于容器内部所依赖的环境信息,以及对于环境信息修改的内容,以及容器内服务本身等关于服务容器化运行相关的信息记录,就是镜像,我们可以把镜像理解为容器的模板,对于一个服务的容器化运行,由docker按照镜像的模板来进行部署。
镜像相关命令
- 列出本地镜像:
docker images
- 拉取镜像:
docker pull <镜像名>:<标签>
- 构建镜像:
docker build -t <镜像名>:<标签> .
- 删除镜像:
docker rmi <镜像ID/镜像名>
- 查看镜像的历史记录:
docker history <镜像ID/镜像名>
数据卷挂载
对于容器内产生的需要持久化存储的数据,一旦删除容器后,数据也将不复存在,虽然容器并没有显示的将磁盘内数据进行删除,不过这片磁盘数据只被容器内部的文件系统所引用,一旦这个容器消失,文件系统也将不再,那么这个数据即使存储在磁盘中,相较于操作系统而言,也是没有这个数据,无法访问。
为了能够持久化存储数据,docker采用了一种数据卷的方式来实现。数据卷将容器需要持久化存储的数据不再保存在其内部文件中,而是保存在外部的主机文件中,而原容器内的文件则是保存了外部主机文件的一个引用,实现数据卷挂载,这样不仅实现了数据的持久化存储,对于一些配置的修改也可以直接修改主机文件,而不是进入容器内部,更加方便。
数据卷相关命令
- 列出所有数据卷
docker volume ls
- 创建数据卷
docker volume create <卷名>
- 查看数据卷的详细信息
docker volume inspect <卷名>
- 挂载数据卷到容器
docker run -d -v <卷名>:<容器内路径> <镜像>
- 删除数据卷
docker volume rm <卷名>
删除指定的数据卷。需要确保数据卷没有被任何正在运行的容器使用。
- 清理未使用的数据卷
docker volume prune
注意:这个操作是不可逆的,请谨慎使用。
- 挂载本地目录(绑定挂载)
docker run -d -v /宿主机路径:/容器内路径 <镜像>
- 列出特定数据卷
docker volume ls -f name=<关键词>
端口映射
同虚拟机一样,虚拟机在桥接模式下,其端口只能被当前主机访问。之前我们说过,docker和虚拟机这种桥接模式比较类似,所以在默认情况下,只能被当前主机访问。
不过既然是部署服务,自然不能局限于当前主机,所以我们可以通过一些命令,来讲端口映射到主机端口中,实现外部客户端访问此服务的目的。
端口映射相关命令
- 基本端口映射
docker run -d -p <宿主机端口>:<容器端口> <镜像>
-d
:后台运行容器(可选)。-p <宿主机端口>:<容器端口>
:将宿主机端口映射到容器的端口。
例子:
docker run -d -p 8080:80 nginx
这条命令会将宿主机的 8080
端口映射到容器中的 80
端口(Nginx 的默认端口),这样你可以通过 http://localhost:8080
访问容器中的 Nginx 服务。
- 映射多个端口
docker run -d -p <宿主机端口1>:<容器端口1> -p <宿主机端口2>:<容器端口2> <镜像>
可以使用 -p
多次来映射多个端口。
例子:
docker run -d -p 8080:80 -p 8443:443 nginx
这会将宿主机的 8080
端口映射到容器的 80
端口,将宿主机的 8443
端口映射到容器的 443
端口(Nginx 的 HTTPS 端口)。
- 随机映射宿主机端口
docker run -d -P <镜像>
使用大写的 -P
(或 --publish-all
),Docker 会将容器内暴露的所有端口随机映射到宿主机的端口上。
例子:
docker run -d -P nginx
这会随机将容器中暴露的 80
和 443
端口映射到宿主机的可用端口。
你可以使用 docker ps
来查看映射后的宿主机端口:
docker ps
- 指定绑定的宿主机 IP 地址
docker run -d -p <宿主机IP>:<宿主机端口>:<容器端口> <镜像>
默认情况下,Docker 将绑定到宿主机上的所有 IP 地址(0.0.0.0
),你也可以指定要绑定的 IP 地址。
例子:
docker run -d -p 127.0.0.1:8080:80 nginx
这会将宿主机的 127.0.0.1
(即 localhost
)的 8080
端口映射到容器的 80
端口。只有宿主机本地才能访问这个端口,而外部无法访问。
- 查看端口映射
docker port <容器ID/容器名>
显示容器内端口与宿主机端口的映射关系。
例子:
docker port my_nginx
这会列出名为 my_nginx
容器的所有端口映射信息。
- 修改正在运行的容器的端口映射
Docker 不支持在容器运行时直接修改端口映射。如果需要更改端口映射,需要停止容器并重新运行:
bashCopy codedocker stop <容器ID/容器名>
docker rm <容器ID/容器名>
docker run -d -p <新端口映射> <镜像>
其他命令
- 查看 Docker 信息:
docker info
- 查看 Docker 版本:
docker version
- 查看系统中的事件日志:
docker events
- 导出容器为镜像:
docker commit <容器ID> <镜像名>:<标签>
- 清理未使用的镜像、卷、网络和容器:
docker system prune
。
- 修改正在运行的容器的端口映射
Docker 不支持在容器运行时直接修改端口映射。如果需要更改端口映射,需要停止容器并重新运行:
bashCopy codedocker stop <容器ID/容器名>
docker rm <容器ID/容器名>
docker run -d -p <新端口映射> <镜像>
其他命令
- 查看 Docker 信息:
docker info
- 查看 Docker 版本:
docker version
- 查看系统中的事件日志:
docker events
- 导出容器为镜像:
docker commit <容器ID> <镜像名>:<标签>
- 清理未使用的镜像、卷、网络和容器:
docker system prune
相关文章:

Docker精讲:基本安装,简单命令及核心概念
docker服务部署 docker是一个容器管理工具,其内部容器才是具体服务,所以我们在安装docker时不需要有太多定制内容,只需要通过yum安装即可 1. 更新系统包 #更新现有依赖包,防止现有依赖包版本过低影响docker安装 yum update2. 安…...

利用git将项目上传到github
采用git而不是在pycharm中共享的原因:可能会出现上图报错 目录 1、创建github仓库2、在 git bash 中初始化Git仓库,添加文件,上传代码 1、创建github仓库 2、在 git bash 中初始化Git仓库,添加文件,上传代码...

828华为云征文 | 华为云X实例CPU性能测试详解与优化策略
目录 引言 1. 测试环境搭建 1.1 测试实例的选择 1.2 CPU性能测试工具介绍 1.3 安装和配置Sysbench 2. CPU性能测试方法 2.1 测试场景设定 2.2 Sysbench单线程CPU性能测试 2.3 Sysbench多线程CPU性能测试(4线程) 2.4 高强度多线程CPU性能测试&a…...

ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?视频加字幕超简单!
ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?在视频制作和观看过程中,添加字幕是一项常见的需求,特别是对于外语视频或需要辅助阅读的场景。ASS(Advanced SubStation Alpha)字幕文件是一种常用的字幕格式&…...

camunda + oracle 启动报错 解决方法
启动报错如下: java.sql.SQLException: sql injection violation, comment not allow : select * from ( select a.*, ROWNUM rnum from (select RES.ID_,RES.REV_,RES.DUEDATE_,RES.PROCESS_INSTANCE_ID_,RES.EXCLUSIVE_from ACT_RU_JOB RESwhere (RES.RETRIES_ &g…...

变幅液压系统比例阀放大器
变幅液压系统是用于控制起重机或类似设备臂架角度变化的关键系统,它通过调节液压缸的伸缩来实现臂架的升降和变幅。以下是一些关于变幅液压系统的基本原理、组成和应用领域的信息: 基本原理:变幅液压系统通常由液压泵、液压缸、液压马达、控制…...

在 Ubuntu 安装 Python3.7(没有弯路)
注:当前Ubuntu版本为18.04 下载Python源码包 wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz安装前准备 安装依赖组件 apt-get updateapt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libs…...

Linux 简易shell编写
shell shell是壳,外壳的意思,一般我们使用linux系统有用图形化界面的也有使用命令行界面的,这两个都是一种shell,以命令行为例: 如图这个就是我这里的命令行格式,在$符后面写的就是执行的指令,…...

POLYGON Nature - Low Poly 3D Art by Synty 树木植物
一个低多边形资源包,包含可以添加到现有多边形风格游戏中的树木、植物、地形、岩石、道具和特效 FX 资源。 为 POLYGON 系列提供混合样式树这一新增功能。弥合 POLYGON 与更传统的层级资源之间的差距。还提供了一组经典的 POLYGON 风格的树木和植被以满足你的需求。 该包还附带…...

了解什么是瞪羚企业
瞪羚企业”是指以科技创新或商业模式创新为支撑,进入高成长期的中小企业。识别范围主要是符合国家和省战略性新兴产业发展方向的产业领域,涵盖新兴产业、新一代信息技术(包括大数据、物联网和云计算、高端软件、互联网)、生物健康…...

寻找两个正序数的中位数(C)
最近面试,发现要手撕算法加上机试,被完败,索性给自己立一个目标,一周训练2次。 第一题。 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 …...

YOLOv10涨点改进:IoU优化 | Unified-loU,用于高品质目标检测的统一loU ,2024年8月最新IoU
💡💡💡现有IoU问题点:IoU (Intersection over Union)作为模型训练的关键,极大地显示了当前预测框与Ground Truth框之间的差异。后续研究者不断在IoU中加入更多的考虑因素,如中心距离、纵横比等。然而,仅仅提炼几何差异是有上限的;而且新的对价指数与借据本身存在潜在…...

Spring Boot 实现动态配置导出,同时支持公式和动态下拉框渲染和性能优化案例示范
在业务系统中,数据导出是一个非常常见且重要的功能,本文将详细介绍如何在 Spring Boot 中实现这一功能,并结合 MySQL 数据库、MyBatis 作为数据访问层,EasyExcel 作为导出工具,展示如何在电商交易系统中搭建灵活、可扩…...

一网打尽 运维必封的50个高危端口清单,零基础入门到精通,收藏这一篇就够了
文件传输相关端口: • TCP 20、21:FTP 服务(文件传输协议)端口,FTP 传输数据时未加密,容易受到攻击,如匿名上传下载、爆破、嗅探、远程执行等攻击,可能导致敏感文件泄露。 • TCP …...

方法 WebDriverWait
定义: WebDriverWait是Selenium WebDriver提供的一个工具类,它允许你设置等待条件,直到这个条件成立,才继续执行代码。这对于处理网页上的异步加载元素特别有用,比如等待某个元素变得可见、可点击等。 from se…...

LOESS(Locally Estimated Scatterplot Smoothing)
文章目录 LOESS 原理详解:LOESS 的优点:LOESS 的缺点:Python 实现代码:代码说明: LOESS(Locally Estimated Scatterplot Smoothing),即局部加权回归,是一种非参数回归方法…...

每天学习一个技术栈 ——【Django Channels】篇(1)
在当今快速发展的技术领域,掌握多种技术栈已经成为开发者提升竞争力的关键。随着实时应用需求的不断增加,如何高效地处理并发请求和实时通信变得尤为重要。在众多解决方案中,Django Channels作为Django框架的强大扩展,能够轻松实现…...

js设计模式-工厂模式 单例模式 观察者模式 发布订阅模式 原型模式 代理模式 迭代器模式
1 工厂模式 // 工厂模式: 调用函数返回对象function factory(name, age){return {name: name,age: age} }const person1 factory(Tom, 18); // 类似的库使用工厂函数的有: jQuery, React.createElement,axios.create,vue.createApp等 2 单例模式 // 单例模式:单…...

关于Java中的List<User>如何进行深拷贝
联调中发现了一个很初级,但有容易被忽略的拷贝问题: 错误方式:List<User> us new ArrayList<>(); // name "张三"List<User> us1 new ArrayList<>(us);for (User u : us) {...u.setName("douzi&q…...

2025 年 IT 前景:机遇与挑战并存,人工智能和云计算成重点
云计算de小白 投资人工智能:平衡潜力与实用性 到 2025 年,人工智能将成为 IT 支出的重要驱动力,尤其是在生成式人工智能领域。人工智能的前景在于它有可能彻底改变业务流程、增强决策能力并开辟新的收入来源。然而,现实情况更加微…...

Cortex-A7和Cortex-M7架构处理器取中断向量全流程分析
0 参考资料 Cortex M3权威指南(中文).pdf ARM Cortex-A(armV7)编程手册V4.0.pdf1 Cortex-A7和Cortex-M7处理器架构取中断向量全流程分析 1.1 什么是中断向量? 中断向量就是中断服务函数入口地址,例如我们发生了EXTI0中断,就需要执行EXT0中…...

MODELS 2024震撼续章:科技与可持续性的未来交响曲
MODELS 2024国际会议正如火如荼地进行着,每一天都充满了新的发现与启迪,每一场分享都是对技术前沿的一次深刻探索,更是对现实世界可持续性挑战的一次积极回应。现在让我们继续这场科技盛宴,看看小编为您精选几场的学术分享吧~ 会议…...

CICD 持续集成与持续交付
一 、CICD是什么 CI/CD 是指持续集成(Continuous Integration)和持续部署(Continuous Deployment)或持续交付(Continuous Delivery) 1.1 持续集成(Continuous Integration) 持续集…...

“数据面”(Data Plane)是指负责实际数据处理和转发的部分
在计算机网络和服务架构中,“数据面”(Data Plane)是指负责实际数据处理和转发的部分。数据面负责执行具体的网络通信任务,如接收、处理和转发数据包。与数据面对应的是“控制面”(Control Plane)ÿ…...

面试题:MySQL你用过WITH吗?领免费激活码
感谢Java面试教程的Java多线程文章,点击查看>原文 Java面试教程,发mmm116可获取IDEA-jihuoma 在MySQL中,WITH子句用于定义临时表或视图,也称为公共表表达式(CTE)。它允许你在一个查询中定义一个临时结果…...

consul 介绍与使用,以及spring boot 项目的集成
目录 前言一、Consul 介绍二、Consul 的使用三、Spring Boot 项目集成 Consul总结前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是…...

Linux常用命令shell常用知识 。。。。面试被虐之后,吐血整理。。。。
Linux三剑客&常用命令&shell常识 Linux三剑客grep - print lines matching a patternsed - stream editor for filtering and transforming textawkman awk Linux常用命令dd命令ssh命令tar命令curl命令top命令tr命令xargs命令sort命令du/df/free命令 shell 知识functio…...

压力测试指南-压力测试基础入门
压力测试基础入门 在当今快速迭代的软件开发环境中,确保应用程序在高负载情况下仍能稳定运行变得至关重要。这正是压力测试大显身手的时刻。本文将带领您深入了解压力测试的基础知识,介绍实用工具,并指导您设计、执行压力测试,最…...

Linux:LCD驱动开发
目录 1.不同接口的LCD硬件操作原理 应用工程师眼中看到的LCD 1.1像素的颜色怎么表示 编辑 1.2怎么把颜色发给LCD 驱动工程师眼中看到的LCD 统一的LCD硬件模型 8080接口 TFTRGB接口 什么是MIPI Framebuffer驱动程序框架 怎么编写Framebuffer驱动框架 硬件LCD时序分析…...

QT:常用类与组件
1.设计QQ的界面 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QLabel>//自定义类Widget,采用public方式继承QWidget,该类封装了图形化界面的相关操作ÿ…...