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

云原生--核心组件-容器篇-3-Docker三大核心之--镜像

1、定义与作用

  • 定义:
    Docker镜像是一个只读的模板,包含运行应用程序所需的所有内容,包括代码、依赖库、环境变量、配置文件等。简单来说,Docker镜像是一个轻量级、独立、可执行的软件包,它包含了运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件等。可以看作是应用程序或服务的“快照”。

  • 核心目标:
    确保应用在不同环境中(开发、测试、生产)的行为一致,实现“一次构建,随处运行”。

  • 作用:

    • 环境一致性:避免因环境差异导致的“在我的机器上能运行”问题。
    • 快速部署:通过镜像快速创建容器,缩短应用部署时间。
    • 版本管理:通过标签(Tag)管理不同版本(如 nginx:latest, python:3.9-slim)。

2、核心特性

(1)、分层存储(Union File System)

镜像由多个只读层(Layer)叠加而成,每一层都是基于前一层进行修改的结果。每一层都对应为Dockerfile中的一条指令(如RUN, COPY)。

  • 优势:
    • 高效存储:多个镜像可共享相同的基础层(如多个镜像共享FROM ubuntu层)。
    • 快速构建:仅需更新修改的层,而非整个镜像。

dockerfile示例:

FROM ubuntu:20.04        # 基础层
RUN apt-get update     # 第二层
COPY . /app            # 第三层

(2)、只读性(不可变)

  • 镜像本身不可修改
    若需更新,需通过Dockerfile重新构建新镜像。
  • 容器可写层
    容器启动时,在镜像顶层添加一个可写层(Writable Layer),所有修改(如文件写入)仅在此层生效,原始镜像不变。

(3)、版本管理

  • 标签(Tag)
    通过标签区分不同版本,如nginx:latest(最新版)、nginx:1.21(特定版本)。
  • 多标签支持
    一个镜像可同时拥有多个标签(如my-app:1.0和my-app:stable)。

(4)、轻量高效

  • 资源占用低
    镜像仅包含应用运行所需的最小文件系统,远小于传统虚拟机镜像。
  • 快速拉取
    由于分层存储和缓存机制,镜像下载仅需获取未缓存的层。

(5)、可移植性

镜像是自包含应用运行必须的所有产物,因此可以在任何支持Docker的环境中运行,无论是在开发者的笔记本电脑上还是在生产服务器上。

3、镜像的生命周期

(1)、构建镜像

  • 方法1:Dockerfile构建
    • 步骤:
      1. 编写Dockerfile(定义镜像构建步骤)。
      2. 运行docker build 命令构建镜像。

Dockerfile示例:

# 使用官方的Python基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 将当前目录下的所有文件复制到工作目录
COPY . /app
# 安装应用所需的依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露应用运行的端口
EXPOSE 8000
# 定义容器启动时执行的命令
CMD ["python", "app.py"]说明:
Dockerfile是一个文本文件,包含了一系列的指令,用于描述如何构建镜像。

bash示例:

docker build -t my-python-app:1.0 .
  • 方法2:基于容器提交(docker commit)
    可以将一个运行中的容器的状态保存为一个新的镜像。
    • 步骤:
      1. 运行容器并修改其内容。
      2. 使用docker commit将容器提交为新镜像。

bash示例:

# 启动一个容器
docker run -it ubuntu bash
# 在容器中进行一些操作,如安装软件等
apt-get update
apt-get install -y vim
# 退出容器
exit
# 将容器保存为镜像
docker commit <容器ID> my-ubuntu-with-vim 

(2)、存储与管理

  • 本地存储:
    镜像存储在Docker守护进程的镜像仓库中,可通过docker images查看。
  • 远程仓库:
    • Docker Hub:公共仓库,存储官方和社区镜像。
    • 私有仓库:如企业内部的Harbor、AWS ECR,用于存储敏感或私有镜像。

(3)、分发与共享

  • 推送镜像:

bash示例:

docker tag my-python-app:1.0 registry.example.com/my-python-app:1.0
docker push registry.example.com/my-python-app:1.0
  • 拉取镜像:

bash示例:

docker pull nginx:latest

4、常用Docker镜像命令

在这里插入图片描述

5、Docker镜像的应用场景

(1)、开发环境一致性

  • 问题:不同开发者环境配置差异导致的Bug。
  • 解决方案:通过镜像统一开发环境,例如:
    bash示例:
docker run -it -v $(pwd):/app my-python-dev-env

(2)、CI/CD流水线

  • 流程:
    1. 构建镜像并推送至仓库。
    2. 在CI/CD工具(如Jenkins、GitLab CI)中自动部署镜像。
      yaml示例:(GitLab CI 配置片段)
build:script:- docker build -t my-app:$CI_COMMIT_SHA .- docker push registry.example.com/my-app:$CI_COMMIT_SHA

(3)、微服务部署

  • 场景:每个微服务独立打包为镜像,通过Kubernetes管理。
    yaml示例:(Kubernetes Deployment配置)
apiVersion: apps/v1
kind: Deployment
spec:template:spec:containers:- name: frontendimage: registry.example.com/frontend:1.0- name: backendimage: registry.example.com/backend:2.0

6、进阶特性与最佳实践

(1)、多阶段构建(Multi-stage Build)

  • 目的:减少镜像体积,提升安全性。
    dockerfile示例:
# 第一阶段:编译代码
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp# 第二阶段:运行时镜像
FROM alpine:3.16
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]

(2)、内核无关性

  • 说明:镜像不包含内核,仅包含用户空间文件系统(如/bin, /etc)。
  • 优势:容器直接使用宿主机内核,实现轻量级虚拟化。

(3)、安全扫描

  • 工具:Trivy、Clair等。
    bash示例
trivy image my-app:latest  # 检查镜像漏洞

7、其他问题

(1)、查看镜像的详细信息

bash示例:

docker inspect my-image:tag   # 查看元数据和配置
docker history my-image:tag   # 查看层历史

(2)、删除未使用的镜像

bash示例:

docker image prune -a   # 删除所有未被容器使用的镜像

(3)、镜像与容器的关系

  • 类比:
    • 镜像:类似“类(Class)”,定义容器的模板。
    • 容器:类似“对象(Object)”,是镜像的运行实例。

8、总结

  • Docker镜像是容器化的核心,通过分层存储和版本管理技术,实现了高效、一致的应用部署。
  • 关键价值:
    • 环境一致性:避免依赖冲突。
    • 快速迭代:通过CI/CD自动化构建和推送。
    • 轻量高效:仅打包必要文件,资源占用低。

逆风前行,Dare To Be!!!

相关文章:

云原生--核心组件-容器篇-3-Docker三大核心之--镜像

1、定义与作用 定义&#xff1a; Docker镜像是一个只读的模板&#xff0c;包含运行应用程序所需的所有内容&#xff0c;包括代码、依赖库、环境变量、配置文件等。简单来说&#xff0c;Docker镜像是一个轻量级、独立、可执行的软件包&#xff0c;它包含了运行某个软件所需的所有…...

在QML中获取当前时间、IP和位置(基于网络请求)

目录 引言相关阅读最终效果代码详解1. 基础框架与窗口设置2. IP定位功能实现3. IP获取功能4. 时间更新与应用初始化5. 用户界面布局 总结工程下载 引言 在本文中&#xff0c;我们将探讨如何使用Qt Quick构建一个简单的系统信息显示应用。该应用能够获取当前系统时间、IP地址以…...

Nuxt3中使用UnoCSS指南

Nuxt3中使用UnoCSS指南 UnoCSS是一个高度可定制的、原子化CSS引擎&#xff0c;可以轻松集成到Nuxt3项目中。下面介绍如何在Nuxt3中安装和配置UnoCSS。 安装步骤 安装UnoCSS的Nuxt模块&#xff1a; # 使用pnpm pnpm add -D unocss unocss/nuxt# 使用yarn yarn add -D unocss…...

【计算机网络】TCP的四种拥塞控制算法

TCP&#xff08;传输控制协议&#xff09;是互联网协议套件中用于在网络中两个主机之间提供可靠、有序和错误检测数据传输的协议。TCP使用拥塞控制机制来避免网络拥塞&#xff0c;确保网络资源的有效利用。以下是TCP中常见的四种拥塞控制算法&#xff1a; 慢启动&#xff08;S…...

WebAssembly全栈革命:在Rust与JavaScript之间构建高性能桥梁

一、WASM的全栈渗透图谱 1. 性能临界点的突破 // Rust实现的斐波那契计算 #[wasm_bindgen] pub fn wasm_fib(n: i32) -> i32 {match n {0 > 0,1 > 1,_ > wasm_fib(n-1) wasm_fib(n-2)} }// JavaScript等效实现对比 console.time(js); jsFib(40); // 1024ms cons…...

深度理解linux系统—— 了解操作系统

一、冯诺依曼体系结构 现在我们常见的计算机&#xff08;笔记本电脑等&#xff09;和不常见的计算机&#xff08;服务器&#xff09;它们都满足冯诺依曼体系。 我们可以把计算机理解成一个个硬件组成的 输入设备&#xff1a;键盘、鼠标、摄像头、网卡、磁盘等输出设备&#xf…...

【fork初体验】

文章目录 Linux 实验&#xff1a;深入理解 fork 系统调用一、实验目的二、实验环境三、实验内容与步骤&#xff08;一&#xff09;打印进程的进程 ID 和父进程 ID1. 编写程序2. 编译与运行3. 运行结果 &#xff08;二&#xff09;使用 fork 系统调用创建进程并加入循环语句1. 编…...

区块链VS传统数据库:金融数据存储的“信任”与“效率”博弈

在金融行业数字化转型的浪潮中&#xff0c;数据存储技术选型已成为核心议题。区块链技术凭借其去中心化、不可篡改等特性强势崛起&#xff0c;而传统数据库&#xff08;如关系型数据库MySQL、分布式数据库&#xff09;凭借成熟生态和高效性能仍占据主导地位。如何在两者之间做出…...

Linux渗透测试

Linux渗透测试 比赛题库-Linux渗透测试 文章目录 Linux渗透测试比赛题库-Linux渗透测试 前言一、解题过程1.通过本地PC中渗透测试平台Kali对靶机场景进行系统服务及版本扫描渗透测试&#xff0c;并将该操作显示结果中Apache服务对应的版本信息字符串作为Flag值提交&#xff1b…...

ORA-02069错误排查实录:从 Database Link 到 Global Names 的陷阱

文章目录 错误重现根因解决方案1.设置GLOBAL_NAMEStrue2.全部业务逻辑放在在远端执行 在日常的 Oracle 数据同步任务中&#xff0c;我们经常透过 Database Link&#xff08;DBLink&#xff09; 进行跨数据库查询与写入。某日&#xff0c;我们在执行一段 INSERT INTO … SELECT …...

【CF闯关练习】—— 1200分

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;cf闯关练习 &#x1f48c;其他专栏&#xff1a; &#x1f534;每日一题 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓…...

正则表达式三剑客之——grep和sed

目录 一.grep 1.1定义 1.2核心功能 1.3基本语法 1.4常用选项 二.sed 2.1 定义 2.2 工作原理 2.3 基本语法 2.3.1常用选项 2.3.2sed自身脚本语法 1. 基本组成 2. 地址 3. 命令 2.3.3 sed替换查找 1 基本语法 2.sed替换查找的实例 3.分组后向引用 4 变量调…...

i18n-ai-translate开源程序,可以使用DeepSeek等模型将您的 i18nJSON翻译成任何语言

一、软件介绍 文末提供程序和源码下载 i18n-ai-translate开源程序使用 DeepSeek等模型可以将您的 i18n JSON 翻译成任何语言。 无缝翻译本地化文件。支持嵌套翻译文件的目录。需要i18next样式的JSON 文件&#xff08;文末一并提供下载&#xff09;。 二、模式 CSV 模式 三个…...

关于Android Studio的Gradle各项配置

Gradle 构建概览 Android 应用通常使用 Gradle 构建系统构建。在深入了解如何配置 build 之前&#xff0c;我们先来探索 build 背后的概念&#xff0c;以便您全面了解系统。 什么是 build&#xff1f; 构建系统会将源代码转换为可执行应用。构建通常涉及多个工具&#xff0c;用…...

数据安全和合规性市场分析

一、什么是数据安全和合规性 在数据安全和合规性方面&#xff0c;存在着一系列重要的法律、法规和行业标准&#xff0c;这些规定了组织如何收集、存储、处理和保护个人数据及其他敏感信息。企业之所以要遵守这些规定&#xff0c;是出于多方面的考量&#xff0c;既有法律责任&a…...

venv环境基础指令以及常见问题汇总(持续更新)

常见指令 在 Python 原生虚拟环境&#xff08;venv&#xff09; 中&#xff0c;没有直接列出所有虚拟环境的命令&#xff08;因为 venv 不像 Conda 那样有集中管理机制&#xff09;&#xff0c;但可以通过 文件操作 或 脚本 实现类似功能。以下是常用命令和技巧&#xff1a; &…...

思科路由器重分发(RIP动态路由+静态路由)

路由器重分发&#xff08;RIP动态路由静态路由&#xff09; 静态路由不能作翻译官 RIP需要宣告自己的ip&#xff1b;还需要帮静态路由也宣告一下开启端口并配置IP地址 RIP路由 Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shutdown Router(c…...

产销协同的作用是什么?又如何对各部门发挥作用?

目录 一、产销协同的对象有哪些&#xff1f; 1. 客户需求 2. 市场趋势 3. 供应链伙伴 4. 企业战略目标 二、产销协同的作用是什么&#xff1f; 1. 提高客户满意度 2. 降低企业成本 3. 增强市场竞争力 4. 优化资源配置 三、产销协同对各部门怎么发挥作用&#xff1f;…...

19.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--当前项目拆分规划

随着业务规模的不断扩大和系统复杂度的提升&#xff0c;孢子记账系统需要进行微服务架构的转型。本文将详细规划从单体应用向微服务架构迁移的具体方案&#xff0c;包括功能模块分析、服务拆分、技术选型以及实施步骤等内容。通过合理的服务拆分和架构设计&#xff0c;未来我们…...

JFLAP SOFTWARE 编译原理用(自动机绘图)

csdn全是蛆虫&#xff0c;2mb的软件&#xff0c;都在那里搞收费&#xff0c;我就看不惯&#xff0c;我就放出来&#xff0c;那咋了&#xff01;&#xff01;&#xff01; https://pan.baidu.com/s/1IuEfHScynjCCUF5ScF26KA 通过网盘分享的文件&#xff1a;JFLAP7.1.jar 链接: h…...

从 Vue 到 React:React 合成事件

目录 一、什么是 React 合成事件&#xff1f;二、处理流程React 事件系统的大致流程和 Vue 3 的区别 三、用法示例四、SyntheticEvent 的特点五、为什么 React 要统一事件到根节点&#xff1f;1.减少事件监听器数量2. 简化事件解绑逻辑3. 保证一致的行为 六、React 18 后事件系…...

react的fiber 用法

在 React 里&#xff0c;Fiber 是 React 16.x 及后续版本采用的协调算法&#xff0c;它把渲染工作分割成多个小任务&#xff0c;让 React 可以在渲染过程中暂停、恢复和复用任务&#xff0c;以此提升渲染性能与响应能力。在实际开发中&#xff0c;你无需直接操作 Fiber 节点&am…...

深度学习-学习笔记

文章目录 1、概述2、学习笔记2.1、pytorch 的环境配置 1、概述 本篇博客用来记录我学习深度学习的学习笔记 参考视频&#xff1a;PyTorch深度学习快速入门教程 PyTorch 是一个开源的机器学习框架&#xff0c;主要用于构建和训练深度学习模型。 2、学习笔记 2.1、pytorch 的环…...

[创业之路-390]:人力资源 - 社会性生命系统的解构与重构:人的角色嬗变与组织进化论

前言&#xff1a; 人、财、物、信息、机制、流程、制度、方法共同组合了一个持续的消耗资源、持续的价值创造、持续面临生存与发展、遗传与变异的社会性生命系统。 "人"是所有社会性生命系统最最基础性的要素&#xff0c;它弥漫在系统中多维立体空间的不同节点上&am…...

Redis常见面试题——List对象

当然可以&#xff01;这里我帮你整理了一份【Redis中 List 结构】相关的高频面试题&#xff0c;并附上简明回答&#xff1a; &#x1f4da; Redis List 结构面试题&#xff08;高频总结版&#xff09; 1. Redis 中的 List 是什么&#xff1f;底层是什么实现的&#xff1f; 答&…...

案例速成GO操作redis,个人笔记

更多个人笔记&#xff1a;&#xff08;仅供参考&#xff0c;非盈利&#xff09; gitee&#xff1a; https://gitee.com/harryhack/it_note github&#xff1a; https://github.com/ZHLOVEYY/IT_note 安装redis客户端&#xff1a;go get github.com/redis/go-redis/v9 注意go …...

什么是WebSocket?NGINX如何支持WebSocket协议?

大家好&#xff0c;我是锋哥。今天分享关于【什么是WebSocket&#xff1f;NGINX如何支持WebSocket协议&#xff1f;】面试题。希望对大家有帮助&#xff1b; 什么是WebSocket&#xff1f;NGINX如何支持WebSocket协议&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java…...

ssm驾校预约管理系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 伴随着我国社会的发展&#xff0c;人民生活质量日益提高。在人们出行方式上的体现就是&#xff0c;价格较为昂贵的代步工具——汽车&#xff0c;它的拥有率在我国越来越高了。而汽车的行驶速度很快&#xff0c;并且随着汽车拥有率的增加&#xff0c;城市中行驶和停靠的车…...

babel核心知识点

Babel 是一个 JavaScript 编译器&#xff0c;主要用于将 ECMAScript 2015 版本的代码转换为向后兼容的 JavaScript 代码&#xff0c;以便在旧版本的浏览器或环境中运行。以下是 Babel 的核心知识点&#xff1a; 1. 基本概念 编译器&#xff1a;Babel 本质上是一个编译器&…...

学习笔记(算法学习+Maven)

单调队列优化多重背包 #include <bits/stdc.h> using namespace std; const int M 2010; const int N 20010; int q[N]; int hh 0, tt -1; int f[N]; int g[N]; int v[M], w[M], s[M]; int n, m; int main() { cin >> n >> m; for (int i 1; …...

买币永续合约成全球交易热点,XBIT去中心化交易所平台显著提升市场流动性

在全球加密货币市场日益扩大的背景下&#xff0c;买币永续合约正展现出惊人的增长势头。虽然比特币自2021年黄金时期以来整体兴趣有所减弱&#xff0c;但永续合约市场表现亮眼&#xff0c;专业和机构交易者正从传统日历期货转向这一领域&#xff0c;使得永续合约占据了约66%的未…...

详解 `from datasets import load_dataset`:数据格式、公开数据集与自定义数据集实战指南

在自然语言处理(NLP)和机器学习领域,Hugging Face 的 datasets 库凭借其高效的数据加载和预处理能力成为开发者必备工具。本文通过代码示例详解 load_dataset 的核心用法,涵盖数据格式解析、公开数据集调用和自定义数据集构建。 一、数据格式解析与加载示例 datasets 库支…...

Eclipse 插件开发 1

Eclipse 插件开发 1 1 创建 Eclipse 插件2 特点对比表3 总结对比表 Eclipse 是一个功能强大的集成开发环境(IDE)&#xff0c;最初为 Java 开发设计&#xff0c;但现在已经支持多种语言和平台。它的核心优势在于高度可扩展的插件架构&#xff0c;使开发者能够定制开发环境以满足…...

单链表专题(1)

1.什么是链表&#xff1f; 链表是结构体变量与结构体变量连接在一起 2.动态创建一个链表 动态内存申请模块化设计 1.创建链表&#xff08;创建一个表头表示整个链表&#xff09; 2.创建结点 3.插入结点 4.删除结点 5.打印遍历链表&#xff08;测试&#xff09; 3.创建链…...

[贪心_8] 跳跃游戏 | 单调递增的数字 | 坏了的计算器

目录 1.跳跃游戏 题解 2.单调递增的数字 证明 3.坏了的计算器 题解 解法一&#xff1a;正向推导 解法二&#xff1a;正难则反 1.跳跃游戏 链接&#xff1a; 55. 跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你…...

Python基于Django的全国二手房可视化分析系统【附源码】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

Spring Boot 升级指南(2.x → 3.x)

&#x1f680; Spring Boot 升级指南&#xff08;2.x → 3.x&#xff09; &#x1f522; 1️⃣ 必读文档 &#x1f4d8; 当您需要从 Spring Boot 2.x 升级时&#xff1a; • 官方迁移指南 → https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-…...

基于亚马逊云科技构建音频转文本无服务器应用程序

Amazon Transcribe是一项基于机器学习模型自动将语音转换为文本的服务。它提供了多种可以提高文本转录准确性的功能&#xff0c;例如语言自定义、内容过滤、多通道音频分析和说话人语音分割。Amazon Transcribe 可用作独立的转录服务&#xff0c;也可以集成到应用程序中提供语音…...

io_uring概述:现代 Linux 异步 IO 的新范式

一、引言 在 Linux 系统中&#xff0c;I/O 性能一直是高性能服务器、数据库、存储系统的关键瓶颈。传统的 I/O 接口&#xff08;如 read、write、poll、epoll&#xff09;已经难以满足现代高吞吐低延迟场景的需求。io_uring 的诞生&#xff0c;正是为了解决这些传统 I/O 模型中…...

定制一款国密浏览器(12):分析SM2签名算法的实现

SM2 是一种非对称加密算法,除了用来进行加密解密外,主要作用还用作数字签名。数字签名是私钥签名,公钥用来验签。由于私钥是不公开的,所以私钥签名还可以防抵赖。 一般的签名流程如下: 发送者对消息计算摘要值。发送者用私钥对摘要值进行签名得到签名值。发送者将原始消息…...

SSE协议

目录 SSE协议协议实现传输格式data 字段id 字段event 字段retry 字段 前后端实现使用案例FastAPI SSE-STARLETTE 模拟大模型推理流&#x1f5a5; 代码&#xff1a;FastAPI SSE-STARLETTE 模拟大模型推理流 SSE协议 SSE&#xff0c;全称是 Server-Sent Events&#xff0c;是一…...

精益数据分析(25/126):关键指标驱动业务发展

精益数据分析&#xff08;25/126&#xff09;&#xff1a;关键指标驱动业务发展 在创业和数据分析的道路上&#xff0c;我们都在不断探索如何利用数据实现业务的增长与优化。今天&#xff0c;让我们一起深入学习《精益数据分析》中的关键知识点&#xff0c;通过实际案例来理解…...

基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API

前言 Spring AI Alibaba 开源项目基于 Spring AI 构建&#xff0c;是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践&#xff0c;提供高层次的 AI API 抽象与云原生基础设施集成方案&#xff0c;帮助开发者快速构建 AI 应用。 项目地址 gitcode平台&#xff1a;ht…...

git 工具

Git教程 Git Bash详细教程 Git教程 Git Bash详细教程-CSDN博客 Download – TortoiseGit – Windows Shell Interface to Git...

利用【指针引用】对【非空单循环链表】进行删除操作

【非空单循环链表】是链式存储结构的其中一种&#xff0c;下面是各个词汇的意思&#xff1a; 先说【单】的意思&#xff1a; 这里指的是【单循环】的&#xff0c;另外在别的地方你会碰到一些不一样的循环链表&#xff0c;比如说是【多重链】的。 单循环 【单循环链表】常在表的…...

2025.4.26_STM32_SPI

1.SPI简介 2.硬件电路 所有SPI设备的SCK(时钟)、MOSI(主机输出从机输入)、MISO(主机输入从机输出)分别连在一起。SCK线只能被主机控制&#xff0c;和I2C相同。 主机另外引出多条SS控制线&#xff0c;分别接到各从机的SS引脚 (SS不用的时候为高电平&#xff0c;当主机需要选中某…...

基于OpenMV+STM32+OLED与YOLOv11+PaddleOCR的嵌入式车牌识别系统开发笔记

基于OpenMV、STM32与OLED的嵌入式车牌识别系统开发笔记 基于OpenMV、STM32与OLED的嵌入式车牌识别系统开发笔记系统架构全景 一、实物演示二、OpenMV端设计要点1. 硬件配置优化2. 智能帧率控制算法3. 数据传输协议设计 三、PyTorch后端核心实现&#xff1a;YOLOv11与PaddleOCR的…...

当JIT遇见K8s

目录 一、技术融合背景&#xff1a;从静态架构到动态生态的范式重构 1.1 动态编译技术的三次进化浪潮 1.2 容器编排系统的动态特性解剖 弹性伸缩的数学建模 服务质量&#xff08;QoS&#xff09;的编译场景适配 硬件拓扑感知的编译优化 二、关键技术挑战与突破性解决方案…...

单片机-89C51部分:4、固件烧录

飞书文档https://x509p6c8to.feishu.cn/wiki/M00gwFX3WilLe0kiAmBcPBUsnLc 接线 通过USB线把开发板和电脑连接起来&#xff0c;如果电脑没有安装过USB转串口驱动&#xff0c;在设备管理器中就找不到COM口&#xff0c;而且会有驱动提示叹号&#xff0c;我们可以下载下方驱动安…...

7.13 GitHub Sentinel全链路测试实战:自动化框架+零误差传输,QPS提升6倍!

GitHub Sentinel全链路测试实战:自动化框架+零误差传输,QPS提升6倍 GitHub Sentinel Agent 用户界面设计与实现 关键词:前后端联调测试、数据传输验证、接口稳定性测试、命令行工具测试、自动化测试框架 测试前后端功能与数据传输稳定性 1. 全链路测试策略设计 采用分层…...