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

Ubuntu 22.04安装Docker

陈拓 2024/10/19-2024/12/26

0. 概述

docker是容器(Container),有点像一个轻量级的虚拟机。

容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行。Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。容器具备一定的生命周期。另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。

Docker的使用步骤:

  • 首先安装Docker管理系统

安装Docker通常包括添加Docker的官方软件包源(GPG密钥),安装Docker引擎,以及启动Docker服务。这些步骤确保了你的系统可以安装和运行Docker容器。

  • 获取或构建应用程序的Docker镜像

你可以从Docker Hub或其他容器镜像仓库获取现成的镜像,或者根据自己的需求构建自定义的Docker镜像。

  • 通过docker run命令运行镜像,启动容器
  • 容器之间相互隔离

Docker通过Linux内核的命名空间(namespaces)和控制组(cgroups)技术实现隔离和资源限制。

每个容器都有自己的文件系统、网络接口和资源限制,因此它们之间是相互隔离的。这种隔离确保了应用程序的安全性和稳定性。

1. 官方网址

https://www.docker.com/

2. 我的系统信息

lsb_release -a

需要升级系统可以参考《ssh远程升级Ubuntu20.04到Ubuntu 22.04》

https://blog.csdn.net/chentuo2000/article/details/144306625?spm=1001.2014.3001.5502

3. 安装步骤

3.1 更新软件包索引

sudo apt update

3.2 安装必要的软件包,以允许apt通过HTTPS使用仓库

sudo apt install ca-certificates curl gnupg lsb-release

然后安装apt-transport-httpsca-certificates软件包,这些是用于添加Docker的官方GPG密钥和软件源的:

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

3.3 添加Docker的官方GPG密钥

安装Docker时添加官方GPG密钥的主要目的是为了确保安装的软件源是正确的,以及验证软件包的完整性和真实性。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

3.4 添加Docker软件源

Docker作为一个独立的项目,并不包含在Ubuntu或其他Linux发行版的官方APT源中。

因此,为了安装最新或者特定版本的Docker,你需要添加Docker的官方软件源到你的系统中。这样做可以确保你能够访问到Docker的最新版本和更新,同时也能够确保你安装的Docker版本是经过官方签名和验证的,从而保证了软件的安全性和可靠性。通过添加Docker的官方GPG密钥,你还可以确保软件包在下载和安装过程中没有被篡改。

添加Docker的官方软件源到你的系统:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3.5 更新软件包索引

sudo apt-get update

3.6 安装Docker CE/EE

安装Docker CE(社区版)或Docker EE(企业版),下面安装CE版:

sudo apt-get install docker-ce docker-ce-cli containerd.io

查看版本:

docker -v

  • 查看Docker服务的状态

Docker服务在每次系统重启后会自动启动。可以用下面的命令查看Docker服务的状态:

sudo systemctl status docker

q退出。

3.7 运行测试

3.7.1 配置Docker使用国内镜像源
  • 编辑/etc/docker/daemon.json文件(如果该文件不存在,可以创建它)

sudo nano /etc/docker/daemon.json

在文件中添加以下内容,以配置使用国内的Docker镜像源,例如阿里云的镜像源:

{

  "registry-mirrors": ["https://docker-proxy.741001.xyz","https://registry.docker-cn.com"]

}

镜像源提供:

[https://blog.csdn.net/weixin_46028606/article/details/142663559]

  • 重启Docker服务

修改配置文件后,需要重启Docker服务以使更改生效:

sudo systemctl restart docker

sudo systemctl daemon-reload

  • 查看Docker服务的状态

sudo systemctl status docker

  • 验证配置

重启Docker服务后,你可以运行以下命令来验证是否已经注册了新的镜像源:

docker info

3.7.2 从Docker仓库拉取hello-world镜像

sudo docker pull hello-world

  • 运行hello-world镜像

sudo docker run hello-world

Hello from Docker!

  • 查看本地已有的镜像列表

docker images

3.7.3 删除本地的Docker镜像

docker rmi <镜像 ID>

或者

docker rmi <镜像名称>:<标签>

强制删除镜像:

如果某个镜像正在被使用或者有其他依赖关系,可能无法直接删除。这时可以使用 -f(或 --force)参数强制删除:

docker rmi -f <镜像 ID> 或 docker rmi -f <镜像名称>:<标签>

注意事项:

在删除镜像之前,确保该镜像没有被正在运行的容器所使用,否则可能会导致容器无法正常运行。

谨慎删除镜像,尤其是重要的生产环境镜像,以免造成数据丢失或应用程序无法正常运行。

3.8 让非root用户也能运行Docker命令

如果你想让非root用户也能运行Docker命令,你可以将该用户添加到docker组,下面将当前用户添加到docker组:

sudo usermod -aG docker $USER

重新登录以使更改生效,或者在当前终端中运行以下命令使更改立即生效:

newgrp docker

这样我们就可以不用sudo直接运行docker了:

docker container run hello-world

3.9 查看Docker中已经在运行的容器

docker ps -a

注意:Docker安装完成时是没有容器的,而当前却有两个容器存在,是因为我们在前面成功运行了两次hello-world容器,所以现在有两个容器,可以看到两个容器都是依赖的同一个hello-world镜像。

3.10 删除容器

  • 停止正在运行的容器

使用docker stop命令来停止容器。可以使用容器 ID 或者容器名称作为参数。例如使用容器 ID:

docker stop 5bc70f020c0a

docker stop命令会向容器的主进程发送一个SIGTERM信号,给容器内的进程一定时间(默认是 10 秒)来优雅地关闭。如果进程没有在规定时间内关闭,docker会发送一个SIGKILL信号来强制关闭容器。

  1. 删除已停止的容器

docker container rm 容器名或容器id,例如:

docker container rm 5bc70f020c0a

此时再使用以下命令查看已有容器时,就只有一个容器了,结果如下图所示。

docker ps -a

注意事项:

如果容器正在运行,直接使用docker rm命令删除容器会报错。所以一定要先停止容器再删除。不过,也可以使用docker rm -f命令来强制删除正在运行的容器,但这种方式比较粗暴,可能会导致容器内的数据丢失或者未保存的工作丢失等问题。

4. 容器启动策略

Docker容器在系统重启后是否需要手动启动取决于容器的启动策略。默认情况下,Docker容器在系统重启后是不会自动启动的。这是因为Docker遵循一种“非侵入式”的设计理念,它不会对宿主机的启动流程进行过多的干预。

4.1 重启选项

Docker提供了一些启动策略选项来改变这种情况。例如,可以使用--restart选项来配置容器的重启策略。这个选项有不同的值可以设置,如no(默认值)、always、on - failure和unless - stopped。

  • always

如果将容器的启动策略设置为always,那么无论容器是因为什么原因退出的,在系统重启后它都会自动启动。这对于一些需要持续运行的服务容器非常有用,比如一个Web服务器容器或者数据库容器。例如,如果你有一个运行着Nginx的容器,并且希望它在系统重启后能马上恢复服务,就可以将其启动策略设置为always。

  • on – failure

当设置为on - failure时,容器只有在因为非零退出码(表示容器运行出错)而退出的情况下,才会在系统重启后自动启动。这个策略比较适合那些可能会因为某些错误而偶尔退出的容器,这样可以让容器有机会在系统重启后重新尝试运行,修复之前的错误。

  • unless – stopped

这种策略下,容器在系统重启后会自动启动,除非它在系统重启之前是处于停止状态的。也就是说,如果容器在系统重启前是运行中的,那么它会自动重启;如果是已经停止的,就不会自动启动。

4.2 配置方法示例

  • 新创建的容器

当你使用docker run命令创建一个新容器时,可以通过添加--restart选项来设置启动策略。例如:

docker run -d --restart=always my - image:latest

上面的命令会创建一个后台运行(-d)的容器,并且这个容器的启动策略是always,使用的镜像是my - image:latest。

  • 已经创建好的容器

如果是已经创建好的容器,你可以使用docker update命令来修改容器的启动策略,例如:

docker update --restart=on - failure:3 container - name

这条命令会将名为container - name的容器的启动策略修改为on - failure,并且在容器因为非零退出码退出时,最多尝试重启3次。

要进入正在运行的Docker容器,可以使用docker exec命令。这里有几种常用的方法:

使用bash shell(假设容器内部有bash):

docker exec -it <container_id_or_name> /bin/bash

docker exec -it c43d69f6884d /bin/bash

其中:

-it是两个参数的组合

-i 选项表示在容器中打开一个交互式会话。

-t 选项表示为会话分配一个伪tty。

--rm参数是用来在容器退出之后自动删除容器的。这个参数可以在docker run命令中使

参考文档

  1. Ubuntu22.04安装Docker并搭建ros2环境
    https://blog.csdn.net/Songqiang777/article/details/132686455

相关文章:

Ubuntu 22.04安装Docker

陈拓 2024/10/19-2024/12/26 0. 概述 docker是容器&#xff08;Container&#xff09;&#xff0c;有点像一个轻量级的虚拟机。 容器是一种轻量级、可移植、并将应用程序进行的打包的技术&#xff0c;使应用程序可以在几乎任何地方以相同的方式运行。Docker将镜像文件运行起…...

穿山甲等广告联盟依据哪些维度给APP、小程序结算广告变现收益

媒体在开展广告变现商业化时&#xff0c;最关心的是变现收益问题&#xff0c;所运营的不同体量的APP、小程序能产生多少广告变现收益。#广告联盟# 广告变现的价格、收益不是一成不变的&#xff0c;广告转化是影响广告收益的重要因素之一。广告平台针对整个变现链路上的各环节&…...

【ES6复习笔记】迭代器(10)

什么是迭代器&#xff1f; 迭代器&#xff08;Iterator&#xff09;是一种对象&#xff0c;它能够遍历并访问一个集合中的元素。在 JavaScript 中&#xff0c;迭代器提供了一种统一的方式来处理各种集合&#xff0c;如数组、字符串、Map、Set 等。通过迭代器&#xff0c;我们可…...

ROS1入门教程6:复杂行为处理

一、新建项目 # 创建工作空间 mkdir -p demo6/src && cd demo6# 创建功能包 catkin_create_pkg demo roscpp rosmsg actionlib_msgs message_generation tf二、创建行为 # 创建行为文件夹 mkdir action && cd action# 创建行为文件 vim Move.action# 定义行为…...

【 Copilot】云开发 Copilot 实战教程:从入门到精通,掌握云开发核心技能

我的个人主页 我的领域&#xff1a;人工智能篇&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;&#x1f44d;点赞 收藏❤ 引言 云开发 Copilot 作为一款革新性的开发辅助工具&#xff0c;利用先进的人工智能技术&#xff0c;为开发者在云开发的征程中点亮…...

DataCap MongoDB Driver: 全面解析MongoDB在DataCap中的使用指南

在大数据时代&#xff0c;MongoDB作为一款广受欢迎的NoSQL数据库&#xff0c;其灵活的文档存储模型和强大的查询能力使其成为许多现代应用的首选数据存储方案。今天&#xff0c;我们将深入探讨DataCap MongoDB Driver&#xff0c;这是一个强大的工具&#xff0c;它让在DataCap环…...

[x86 ubuntu22.04]双触摸屏的触摸事件都响应在同一个触摸屏上

1 问题描述 CPU&#xff1a;G6900E OS&#xff1a;ubuntu22.04 Kernel&#xff1a;6.8.0-49-generic 系统下有两个一样的 edp 触摸屏&#xff0c;两个触摸屏的触摸事件都响应在同一个 edp 屏幕上。 2 解决过程 使用“xinput”命令查看输入设备&#xff0c;可以看到只有一个 to…...

Linux:SystemV通信

目录 一、System V通信 二、共享内存 代码板块 总结 一、System V通信 System V IPC&#xff08;inter-process communication&#xff09;&#xff0c;是一种进程间通信方式。其实现的方法有共享内存、消息队列、信号量这三种机制。 本文着重介绍共享内存这种方式。 二、共…...

全面Kafka监控方案:从配置到指标

文章目录 1.1.监控配置1.2.监控工具1.3.性能指标系统相关指标GC相关指标JVM相关指标Topic相关指标Broker相关指标 1.4.性能指标说明1.5.重要指标说明 1.1.监控配置 开启JMX服务端口&#xff1a;kafka基本分为broker、producer、consumer三个子项&#xff0c;每一项的启动都需要…...

Springboot项目Druid运行时动态连接多数据源的功能

项目支持多数据库连接是个很常见的需求&#xff0c;这不仅是要在编译前连已经知道的多个数据库&#xff0c;有时还要在程序运行时连后期增加的多个数据源来获得数据。 一、编译前注册数据库连接 1.引入依赖包 <!-- springboot 3.x --><dependency><groupId&g…...

【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…...

中间件xxl-job安装

拉取镜像 docker pull xuxueli/xxl-job-admin:2.4.2 创建xxl-job-admin容器 docker create --name xxl-job-admin -p 9099:8080 -e PARAMS"--spring.datasource.urljdbc:mysql://192.168.96.57:3306/xxl_job2Unicodetrue&characterEncodingUTF-8 --spring.dataso…...

Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器&#xff1a; Pytorch | 从零构建AlexNet对CI…...

论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 作者简介 王志豪&#xff0c;厦门大学博士生 刘诗雨&#xff0c;厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型&#xff08;LLMs&#xff…...

破解海外业务困局:新加坡服务器托管与跨境组网策略

在当今全球化商业蓬勃发展的浪潮之下&#xff0c;众多企业将目光投向海外市场&#xff0c;力求拓展业务版图、抢占发展先机。而新加坡&#xff0c;凭借其卓越的地理位置、强劲的经济发展态势以及高度国际化的营商环境&#xff0c;已然成为企业海外布局的热门之选。此时&#xf…...

win系统B站播放8k视频启用HEVC编码

下载HEVC插件 点击 HEVC Video Extension 2.2.20.0 latest downloads&#xff0c;根据教程下载安装 安装 Random User-Agent 点击 Random User-Agent 安装 配置 Random User-Agent ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dda0ea75096c42c0a79ef6f6f5521…...

Pion WebRTC 项目教程

Pion WebRTC 项目教程 webrtc Pure Go implementation of the WebRTC API [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/webrtc 1. 项目目录结构及介绍 Pion WebRTC 项目的目录结构如下&#xff1a; pion/webrtc ├── api ├── examples ├── inter…...

Opencv之对图片的处理和运算

Opencv实现对图片的处理和修改 目录 Opencv实现对图片的处理和修改灰度图读取灰度图转换灰度图 RBG图单通道图方法一方法二 单通道图显色合并单通道图 图片截取图片打码图片组合缩放格式1格式2 图像运算图像ma[m:n,x:y]b[m1:n1,x1:y1] add加权运算 灰度图 读取灰度图 imread(‘…...

基于cobra开发的k8s命令行管理工具k8s-manager

基于cobra开发的k8s命令行管理工具k8s-manager 如果觉得好用&#xff0c;麻烦给个Star!通用配置1 node 分析所有node的资源情况2 analysis 分析Node节点上的资源使用构成3 image 获取指定namespace的所有镜像地址4 resource 获取指定namespace的所有limit 与 Requests大小5 top…...

基于NodeMCU的物联网空调控制系统设计

最终效果 基于NodeMCU的物联网空调控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;仿智能家居&#xff09;”项目中的“家电控制设计”中的“空调控制”子项目&#xff0c;最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…...

springboot/ssm图书大厦图书管理系统Java代码编写web图书借阅项目

springboot/ssm图书大厦图书管理系统Java代码编写web图书借阅项目 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff…...

【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存

问题描述 从DBeaver中导出了部分业务数据的 insert sql&#xff0c;明明在开发、测试环境都可以一把执行通过&#xff0c;却在预发环境执行前的语法检查失败了&#xff0c;提示有SQL语法错误。 这条SQL长这样&#xff0c;default_sql是要在odps上执行的sql语句&#xff0c;提…...

利用 Python 编写一个 VIP 音乐下载脚本

在这篇博客中,我们将介绍如何使用 Python 编写一个简单的 VIP 音乐下载脚本,利用网页爬虫技术从一个音乐网站下载歌曲。通过解析网页,获取歌曲的真实下载链接,并将音乐文件保存到本地。我们将使用 requests 和 BeautifulSoup 库来实现这个过程。 目标 本脚本的主要功能是…...

Sashulin升级啦,开箱即用!

经过多年的不断投入&#xff0c;升级为了Sashulin基础软件系列&#xff0c;本系列包含&#xff1a; 1、Sashulin IDE 2025全域通用开发工具 通用型Java开发工具&#xff0c;并可以进行业务流可视化开发。 2、发布Sashulin Webserver 2025 将Html等网页文件发布成网站&#xf…...

Java圣诞树

目录 写在前面 技术需求 程序设计 代码分析 一、代码结构与主要功能概述 二、代码功能分解与分析 1. 类与常量定义 2. 绘制树的主逻辑 3. 彩色球的绘制 4. 动态效果的实现 5. 窗口初始化 三、关键特性与优点 四、总结 写在后面 写在前面 Java语言绘制精美圣诞树…...

在Python如何用Type创建类

文章目录 一&#xff0c;如何创建类1&#xff1a;创建一个简单类2&#xff1a;添加属性和方法3&#xff1a;动态继承父类4&#xff1a;结合元类的使用总结 二.在什么情境下适合使用Type创建类1. **运行时动态生成类**2. **避免重复代码**3. **依赖元类或高级元编程**4. **动态扩…...

04软件测试需求分析案例-用户登录

通读文档&#xff0c;提取信息&#xff0c;提出问题&#xff0c;整理为需求。 从需求规格说明、设计说明、配置说明等文档获取原始需求&#xff0c;通读原始需求&#xff0c;分析有哪些功能&#xff0c;每种功能要完成什么业务&#xff0c;业务该如何实现&#xff0c;业务逻辑…...

替代传统FTP传输,镭速大数据传输系统实现安全高效数据流转!

信息技术的快速进步让大数据成为了企业决策的关键支撑&#xff0c;但同时也带来了巨大的挑战。企业在运营过程中产生的数据量急剧增加&#xff0c;这对数据传输的速度、安全性和效率提出了更高的要求。然而&#xff0c;传统的FTP传输方式在处理大规模数据时显得力不从心&#x…...

SpringMVC学习(一)——请求与响应处理

目录 一、SpringMVC简介 二、RequestMapping&#xff1a;请求路径映射 三、RestController 四、请求限定 五、请求处理 1.使用普通变量&#xff0c;收集请求参数 2.使用RequestParam明确指定获取参数 3.目标方法参数是一个pojo 4.RequestHeader&#xff1a;获取请求…...

大语言模型学习工具及资源总结和落地应用

当前&#xff0c;随着人工智能技术的迅猛发展&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;在各个领域的应用日益广泛。以下是国内外常见的大语言模型工具、已经落地部署的应用以及学习相关的网站和资源的详细介绍。 一、国内外常见的大语言模型…...

深度学习使用Anaconda打开Jupyter Notebook编码

新手入门深度学习使用Anaconda打开Jupyter Notebook编码 1. 安装Anaconda 第一种是Anaconda官网下载安装包&#xff0c;但是很慢&#xff0c;不太建议 第二种使用国内清华大学镜像源下载 选择适合自己电脑的版本&#xff0c;支持windows&#xff0c;linux系统 下载完之后自行…...

【视觉惯性SLAM:四、相机成像模型】

相机成像模型介绍 相机成像模型是计算机视觉和图像处理中的核心内容&#xff0c;它描述了真实三维世界如何通过相机映射到二维图像平面。相机成像模型通常包括针孔相机的基本成像原理、数学模型&#xff0c;以及在实际应用中如何处理相机的各种畸变现象。 一、针孔相机成像原…...

Firewalld 防火墙详解:深入理解与实践指南

在现代网络环境中&#xff0c;防火墙是保护系统和网络不受未授权访问的关键工具。firewalld是Linux系统中广泛使用的动态防火墙管理工具&#xff0c;它提供了强大的功能和灵活的配置选项。本文将深入探讨firewalld防火墙的工作原理、配置和管理&#xff0c;以及如何在实际环境中…...

在linux系统中使用jdbc访问sqlite数据库时报错“java.lang.UnsatisfiedLinkError”

1. 异常描述 在linux系统中使用jdbc访问sqlite数据库时出现如下错误提示&#xff1a; 2. 异常分析 可能是当前使用版本的sqlite-jdbc-xxx.jar版本有bug。 3. 异常解决 我是从3.8.9.1版本换到了3.16.1版本就好了。...

华为管理变革之道:管理制度创新

目录 华为崛起两大因素&#xff1a;管理制度创新和组织文化。 管理是科学&#xff0c;150年来管理史上最伟大的创新是流程 为什么要变革&#xff1f; 向世界标杆学习&#xff0c;是变革第一方法论 体系之一&#xff1a;华为的DSTE战略管理体系&#xff08;解决&#xff1a…...

MySQL 临时表:使用技巧与最佳实践

MySQL 临时表&#xff1a;使用技巧与最佳实践 引言 在数据库管理系统中&#xff0c;临时表是一种常见的数据结构&#xff0c;它允许用户存储临时数据&#xff0c;这些数据只在当前会话或事务中有效。MySQL 作为一种广泛使用的数据库管理系统&#xff0c;也提供了对临时表的支…...

华为云语音交互SIS的使用案例(文字转语音-详细教程)

文章目录 题记一 、语音交互服务&#xff08;Speech Interaction Service&#xff0c;简称SIS&#xff09;二、功能介绍1、实时语音识别2、一句话识别3、录音文件识别4、语音合成 三、约束与限制四、使用1、API2、SDK 五、项目集成1、引入pom依赖2、初始化 Client1&#xff09;…...

【Rust自学】6.3. 控制流运算符-match

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 6.3.1. 什么是match match允许一个值与一系列模式进行匹配&#xff0c;并执行匹配的模式对应的代码。模式可以是字面值、变量名、通配符等…...

AIA - IMSIC之二(附IMSIC处理流程图)

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 ​​​​​​​通过IMSIC接收外部中断的CSR 软件通过《AIA - 新增的CSR》描述的CSR来访问IMSIC。 machine level 的 CSR 与 IMSIC 的 machine level interrupt file 可相互互动;而 supervisor level 的 CSR…...

Excel中一次查询返回多列

使用Excel或wps的时候&#xff0c;有时候需要一次查询返回多列内容&#xff0c;这种情况可以选择多次vlookup或者多次xlookup&#xff0c;但是这种做法费时费力不说&#xff0c;效率还有些低下&#xff0c;特别是要查询的列数过多时。我放了3种查询方法&#xff0c;效果图&…...

SQLAlchemy示例(连接数据库插入表数据)

背景需求 连接数据库&#xff0c;插入表中一些数据。 其用户是新建用户&#xff0c;所以只能插入&#xff0c;不能更新。 再次输入数据则使用更新数据语法&#xff0c;这个没调试。 #! /usr/bin/env python # -*- coding: utf-8 -*-from sqlalchemy import create_engine, …...

AG32 MCU 的电机控制方案

原创 AG32 AG32MCU cpld 2024年12月24日 17:23 浙江 AG32 MCU 的电机控制方案 在工业自动化、智能家居、新能源设备等众多领域&#xff0c;电机控制的精准性、稳定性和高效性至关重要。 AG32 MCU 凭借其高性能处理器、丰富的外设资源以及独特的 2K CPLD 资源&#xff0c;在电机…...

Linux:进程概念

1.冯诺依曼体系结构 结论&#xff1a; --- CPU不和外设直接打交道&#xff0c;和内存直接打交道。 --- 所有的外设&#xff0c;有数据需要收入&#xff0c;只能载入到内存中&#xff1b;内存写出&#xff0c;也一定是写道外设中。 --- 为什么程序要运行必须加载到内存&#xf…...

使用 Webpack 优雅的构建微前端应用❕

Module Federation 通常译作“模块联邦”&#xff0c;是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式&#xff0c;理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…...

【Leetcode 热题 100】208. 实现 Trie (前缀树)

问题背景 T r i e Trie Trie 或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补全和拼写检查。 请你实现 Trie 类&#xff1a; Trie() 初始化前缀树对象。void insert(String word…...

从0开始在linux服务器上部署SpringBoot和Vue

目录 一、申请服务器的IP &#xff08;1&#xff09;阿里云申请IP &#xff08;2&#xff09;设置服务器的密码 &#xff08;3&#xff09;远程终端——MobaXterm 二、Docker &#xff08;1&#xff09;安装Docker &#xff08;2&#xff09;镜像加速 &#xff08;3&…...

41 stack类与queue类

目录 一、简介 &#xff08;一&#xff09;stack类 &#xff08;二&#xff09;queue类 二、使用与模拟实现 &#xff08;一&#xff09;stack类 1、使用 2、OJ题 &#xff08;1&#xff09;最小栈 &#xff08;2&#xff09;栈的弹出压入序列 &#xff08;3&#xf…...

代码随想录-笔记-其八

让我们开始&#xff1a;动态规划&#xff01; 70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; class Solution { public:int climbStairs(i…...

信号仿真高级工程师面试题

信号仿真高级工程师面试题可能涵盖多个方面,旨在全面评估应聘者的专业知识、技能水平、实践经验和问题解决能力。以下是一些可能的面试题及其简要解析: 一、专业知识与技能 描述你对信号仿真的理解 考察点:对信号仿真基本概念、原理及应用的掌握程度。参考答案:信号仿真是…...

FLTK - build fltk-1.1.10 on vs2019

文章目录 FLTK - build fltk-1.1.10 on vs2019概述笔记buildtest测试程序运行 END FLTK - build fltk-1.1.10 on vs2019 概述 看书上用到了fltk-1.1.10, 用vs2019试试能否正常编译使用? 笔记 build 从官网下载fltk-1.1.10-source.tar.bz2 用7zip解开 fltk-1.1.10-source.…...