Docker 与 Podman常用知识汇总
一、常用命令的对比汇总
1、基础说明
-
Docker:传统的容器引擎,使用
dockerd守护进程。 -
Podman:无守护进程、无root容器引擎,兼容 Docker CLI。
Podman 命令几乎完全兼容 Docker 命令,只需将
docker替换为podman。
2、命令对比总表
1. 镜像管理(Images)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 拉取镜像 | docker pull | podman pull | 从远程仓库拉取镜像 | docker pull nginx |
| 查看镜像 | docker images | podman images | 列出本地镜像 | podman images |
| 删除镜像 | docker rmi | podman rmi | 删除本地镜像 | docker rmi nginx |
| 构建镜像 | docker build | podman build | 根据 Dockerfile 构建镜像 | docker build -t myapp . |
2. 容器管理(Containers)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 运行容器 | docker run | podman run | 运行新容器 | docker run -d -p 80:80 nginx |
| 查看容器 | docker ps | podman ps | 查看运行中容器 | podman ps |
| 查看所有容器 | docker ps -a | podman ps -a | 包含已停止容器 | podman ps -a |
| 停止容器 | docker stop | podman stop | 停止容器运行 | docker stop mycontainer |
| 启动容器 | docker start | podman start | 启动已停止容器 | podman start mycontainer |
| 删除容器 | docker rm | podman rm | 删除容器 | docker rm mycontainer |
| 查看容器日志 | docker logs | podman logs | 查看容器输出 | docker logs mycontainer |
| 进入容器 | docker exec -it | podman exec -it | 在容器中执行命令 | docker exec -it mycontainer bash |
3. 镜像仓库与标签(Registry & Tags)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 给镜像打标签 | docker tag | podman tag | 添加镜像别名 | docker tag nginx myrepo/nginx:latest |
| 推送镜像 | docker push | podman push | 上传镜像到远程仓库 | docker push myrepo/nginx |
| 登录仓库 | docker login | podman login | 登录远程仓库 | podman login registry.example.com |
4. 容器网络(Networking)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 创建网络 | docker network create | podman network create | 创建自定义网络 | docker network create mynet |
| 查看网络 | docker network ls | podman network ls | 显示可用网络 | podman network ls |
| 删除网络 | docker network rm | podman network rm | 删除自定义网络 | docker network rm mynet |
5. 容器卷(Volumes)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 创建卷 | docker volume create | podman volume create | 创建数据卷 | docker volume create myvol |
| 查看卷 | docker volume ls | podman volume ls | 列出所有卷 | podman volume ls |
| 删除卷 | docker volume rm | podman volume rm | 删除数据卷 | podman volume rm myvol |
| 挂载卷运行容器 | docker run -v | podman run -v | 挂载卷到容器 | docker run -v myvol:/data nginx |
6. 容器导入导出(Import/Export)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 导出容器 | docker export | podman export | 导出容器文件系统为 tar 包 | docker export mycontainer > mycontainer.tar |
| 导入容器 | docker import | podman import | 从 tar 文件导入镜像 | docker import mycontainer.tar |
| 保存镜像 | docker save | podman save | 保存镜像为 tar 包 | docker save nginx > nginx.tar |
| 加载镜像 | docker load | podman load | 从 tar 包加载镜像 | docker load < nginx.tar |
7. 容器信息与检查(Inspect)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 检查镜像/容器详情 | docker inspect | podman inspect | 查看对象详细信息 | docker inspect mycontainer |
8. 系统资源(System)
| 功能 | Docker 命令 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|---|
| 清理无用资源 | docker system prune | podman system prune | 清理未使用镜像、容器等 | podman system prune -a |
| 查看磁盘使用 | docker system df | podman system df | 显示容器磁盘使用情况 | docker system df |
| 查看版本 | docker version | podman version | 查看当前版本 | podman version |
| 查看系统信息 | docker info | podman info | 显示系统整体信息 | podman info |
9. Podman 专属命令
| 功能 | Podman 命令 | 说明 | 示例 |
|---|---|---|---|
| 创建 pod | podman pod create | 创建一组共享网络和命名空间的容器组 | podman pod create --name mypod |
| 将容器加入 pod | podman run --pod | 运行容器加入已有 pod | podman run --pod=mypod nginx |
| 查看 pod | podman pod ps | 显示当前 pods | podman pod ps |
| 删除 pod | podman pod rm | 删除 pod | podman pod rm mypod |
3、总结
-
Docker 是工业标准,支持广泛,适合多数部署环境。
-
Podman 更安全、无 root、支持 systemd 集成,更适合企业和开发环境的细粒度管理。
二、 网络知识
1、基本网络原理
Docker 与 Podman 网络模型对比:
| 特性 | Docker 默认 | Podman 默认 |
|---|---|---|
| 网络驱动 | bridge、host、overlay、macvlan 等 | CNI(Container Network Interface) |
| 网络隔离机制 | 使用 docker0 网桥,iptables/NAT 规则管理 | 使用 CNI 插件(同 Kubernetes 网络方式) |
| 默认网段 | 172.17.0.0/16 | 通常为 10.88.0.0/16(由 CNI 配置) |
| 服务暴露方式 | -p 端口映射 或 host 网络 | 同样使用 -p 或 --network=host |
| 网络可管理性 | Docker 自带命令管理网络 | Podman 借助 CNI 插件配置,如 netavark |
2、Docker 网络原理
1. Docker 默认网络
运行 docker network ls 可看到:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
b6509f3a0fd6 bridge bridge local
65a3c49f9fd3 host host local
5d6785e4d07b none null local
-
bridge:默认,容器间可通信,外部需端口映射。 -
host:使用主机网络,容器与宿主机共享网络。 -
none:无网络连接,最安全但最孤立。
2. 容器连接到网络
docker run --name web --network bridge -p 8080:80 nginx
-
--network连接到指定网络 -
-p映射主机端口到容器端口
3. 创建自定义网络
docker network create mynet
docker run --rm -it --network=mynet busybox
-
容器可通过名称互相解析(DNS 支持)
3、Podman 网络原理
1. Podman 使用 CNI 插件
默认使用 /etc/cni/net.d/ 下的配置文件(如 87-podman-bridge.conflist)定义网络:
{"cniVersion": "0.4.0","name": "podman","plugins": [{"type": "bridge","bridge": "cni-podman0","ipam": {"type": "host-local","subnet": "10.88.0.0/16"}}]
}
2. 查看 Podman 网络
podman network ls
3. 启动容器并使用网络
podman run -d --name web --network podman -p 8080:80 nginx
Podman 会自动创建 cni-podman0 网桥并配置 NAT、防火墙规则。
4、进阶:自定义网络
Docker 自定义网络(桥接)
docker network create \--driver bridge \--subnet=192.168.100.0/24 \--gateway=192.168.100.1 \custom_net
Podman 自定义网络
podman network create \--subnet 192.168.200.0/24 \--gateway 192.168.200.1 \custom_net
然后运行容器:
podman run --rm -it --network custom_net alpine
5、常见场景与命令总结
| 场景 | Docker 命令 | Podman 命令 |
|---|---|---|
| 查看网络 | docker network ls | podman network ls |
| 创建网络 | docker network create | podman network create |
| 查看容器 IP | docker inspect | podman inspect |
| 使用 host 网络 | --network host | --network host |
| 显示网络配置 | /etc/docker/daemon.json | /etc/cni/net.d/ |
6、实用建议
-
开发环境:建议使用 bridge + 端口映射。
-
生产环境:
-
高性能需求:使用
--network=host -
多容器通信:创建自定义网络,容器间通过 DNS 名称通信
-
-
安全需求:使用
--network=none,禁用网络
7、常见容器网络架构
容器可以创建多种网络架构,这些架构决定了容器如何与其他容器以及外部网络进行通信。以下是一些常见的容器网络架构及其特点:
1. Bridge 网络(默认模式)
- 架构原理:
- 容器运行时(如 Docker)会在宿主机上创建一个虚拟的以太网桥(通常命名为
docker0)。 - 每个容器启动时,都会创建一对虚拟网络接口(
veth pair)。其中一个接口位于容器的网络命名空间中(例如eth0),另一个接口连接到宿主机上的桥接网络。 - 宿主机上的桥接网络负责在连接到它的所有网络接口(包括容器的虚拟接口和宿主机的物理网卡)之间转发数据包。
- 容器通过桥接网络的私有 IP 地址进行通信。
- 当容器需要访问外部网络时,通常会通过宿主机的网络地址转换(NAT)将容器的私有 IP 地址转换为宿主机的 IP 地址,然后通过宿主机的物理网卡进行通信。
- 容器运行时(如 Docker)会在宿主机上创建一个虚拟的以太网桥(通常命名为
- 特点:
- 隔离性好: 每个容器拥有独立的网络命名空间和私有 IP 地址,相互之间默认是隔离的。
- 易于管理: 这是最简单和最常用的网络模式,容器运行时会自动创建和管理桥接网络。
- 端口映射: 要使外部网络能够访问容器内的服务,需要进行端口映射(Port Mapping),将宿主机上的某个端口映射到容器内的端口。
- 容器间通信: 同一个桥接网络上的容器可以直接通过 IP 地址进行通信。
- 外部访问限制: 默认情况下,外部网络无法直接访问容器,需要通过端口映射才能实现。
2. Host 网络
- 架构原理:
- 容器直接共享宿主机的网络命名空间。
- 容器不会创建自己的虚拟网络接口,而是直接使用宿主机的网络接口和 IP 地址。
- 容器内的服务监听的端口直接暴露在宿主机上,无需进行端口映射。
- 特点:
- 性能高: 由于容器直接使用宿主机的网络栈,避免了额外的虚拟化开销,网络性能相对较高。
- 端口冲突风险: 同一台宿主机上的多个容器不能监听相同的端口,因为它们共享同一个网络命名空间。
- 隔离性差: 容器与宿主机共享网络环境,隔离性较差。
- 配置简单: 无需进行端口映射,配置相对简单。
- 适用场景:
- 对网络性能要求较高的场景。
- 只需要运行单个需要特定端口的服务,且不需要与其他容器隔离网络的情况。
3. Macvlan/IPVlan 网络
- 架构原理:
- 允许为容器分配宿主机物理网络接口上的 MAC 地址和 IP 地址。
- 每个容器在物理网络上看起来就像一个独立的物理设备。
- Macvlan: 基于单个物理接口创建多个虚拟接口,每个接口拥有独立的 MAC 地址。
- IPVlan: 允许多个虚拟接口共享同一个 MAC 地址,但拥有不同的 IP 地址。
- 特点:
- 直接接入物理网络: 容器可以直接与物理网络中的其他设备通信,无需 NAT 或端口映射。
- 更好的兼容性: 对于某些需要直接与物理网络交互的应用(例如某些网络设备或监控工具)非常有用。
- 需要网络支持: 可能需要在物理网络交换机上进行额外的配置(例如允许混杂模式)。
- 管理复杂性: 配置和管理相对复杂。
- 适用场景:
- 需要容器在物理网络中拥有独立身份的场景。
- 需要容器直接与物理网络中的设备进行通信的场景。
4. Overlay 网络
- 架构原理:
- 构建在现有网络之上的虚拟网络。
- 允许多个宿主机上的容器在逻辑上属于同一个网络,即使它们在不同的物理网络中。
- 通常使用隧道技术(例如 VXLAN)将不同宿主机上的容器网络连接起来。
- 特点:
- 跨主机通信: 使得部署在不同宿主机上的容器能够像在同一个局域网中一样进行通信。
- 灵活的网络拓扑: 可以创建复杂的网络拓扑结构。
- 适用于微服务架构: 非常适合跨多个主机部署的微服务应用。
- 管理复杂性: 配置和管理相对复杂,通常需要专门的网络编排工具(例如 Docker Swarm 或 Kubernetes)。
- 适用场景:
- 需要跨多个宿主机部署容器化应用的场景。
- 需要构建复杂的、可扩展的容器网络拓扑的场景。
5. Custom 网络
- 架构原理:
- 用户可以根据自己的需求创建自定义的网络。
- 可以是自定义的桥接网络,也可以是使用第三方网络插件创建的网络(例如 Calico、Flannel、Weave Net 等)。
- 特点:
- 高度灵活性: 可以根据具体需求定制网络配置,例如指定 IP 地址范围、子网、网关等。
- 可扩展性: 可以通过第三方网络插件扩展容器网络的功能,例如网络策略、安全控制等。
- 管理复杂性: 配置和管理取决于自定义网络的类型和所使用的工具。
- 适用场景:
- 需要特定的网络配置或功能的场景。
- 需要集成第三方网络解决方案的场景。
选择哪种网络架构取决于你的具体需求,包括:
- 容器之间的隔离要求
- 容器是否需要直接暴露给外部网络
- 是否需要跨多个宿主机进行容器通信
- 对网络性能的要求
- 管理的复杂性
三、在 PVE 虚拟网络下配置 Docker(或Podman) 网络桥
1、场景目标
-
Docker 容器运行在 PVE 中的 VM;
-
每个容器拥有独立内网 IP,可被其他主机访问;
-
网络桥使用 Proxmox 提供的桥(如
vmbr0); -
可选:静态 IP、DHCP、容器间通信。
2、PVE 虚拟机网络准备
假设:
-
宿主机 PVE 的桥接网卡为
vmbr0; -
它连接到内网的物理交换机;
-
容器网络希望使用该网桥,以获得和宿主一样的内网地址(如
192.168.1.x)。
在 PVE 中创建网桥:
在 /etc/network/interfaces 中应有类似配置:
auto vmbr0
iface vmbr0 inet staticaddress 192.168.1.10netmask 255.255.255.0gateway 192.168.1.1bridge_ports enp3s0bridge_stp offbridge_fd 0
3、Docker 使用 macvlan 桥接到 vmbr0
1. 创建 macvlan 网络(桥接到宿主网卡)
在宿主机(VM 内部)执行:
docker network create -d macvlan \--subnet=192.168.1.0/24 \--gateway=192.168.1.1 \-o parent=eth0 \docker_macvlan
-
parent=eth0为 VM 的网卡设备,需根据实际替换; -
此网卡需支持混杂模式(Proxmox 网桥需设置
bridge_ports启用混杂模式); -
子网和网关请根据你的内网实际情况配置。
📌 重要提醒:macvlan 网络的容器无法直接访问宿主机(除非用额外配置)。
2. 使用该网络启动容器
docker run --rm -d \--name nginx_mac \--network docker_macvlan \--ip 192.168.1.88 \nginx
-
容器将直接获得
192.168.1.88,和内网其他设备互通。
4、Podman 使用 macvlan 桥接(类似)
podman network create \--driver macvlan \--subnet 192.168.1.0/24 \--gateway 192.168.1.1 \--macvlan eth0 \podman_macvlan
然后运行:
podman run --rm -d \--network podman_macvlan \--ip 192.168.1.89 \nginx
5、让容器访问宿主机(可选)
由于 macvlan 本质上“隔离”了宿主机,可添加一个额外的 veth 接口桥接:
步骤如下(高级):
-
创建一个额外接口桥接到宿主;
-
配置 NAT 或 static route;
-
或者在 PVE 中启用
macvtap并使用虚拟交换机。

6、总结:PVE + Docker 网络桥配置方案
| 项目 | 方法 | 是否推荐 |
|---|---|---|
| Bridge 桥接到 vmbr0 | 使用 macvlan | ✅ 推荐 |
| 宿主可访问容器 | 使用 veth + bridge | ⚠️ 需额外配置 |
| 容器独立 IP | 是(可访问内网) | ✅ |
| 支持 DHCP 分配 | 否(需静态 IP) | ⚠️ 限制 |
| 容器间通信 | 支持(同一 macvlan 网络) | ✅ |
相关文章:
Docker 与 Podman常用知识汇总
一、常用命令的对比汇总 1、基础说明 Docker:传统的容器引擎,使用 dockerd 守护进程。 Podman:无守护进程、无root容器引擎,兼容 Docker CLI。 Podman 命令几乎完全兼容 Docker 命令,只需将 docker 替换为 podman。…...
如何通过自动化解决方案提升企业运营效率?
引言 在现代企业中,运营效率直接影响着企业的成本、速度与竞争力。尤其是随着科技的不断发展,传统手工操作和低效的流程逐渐无法满足企业的需求。自动化解决方案正成为企业提升运营效率、降低成本和提高生产力的关键。无论是大型跨国公司,还…...
unity100天学习计划
以下是一个为期100天的Unity学习大纲,涵盖从零基础到独立开发完整游戏的全流程,结合理论、实践和项目实战,每天学习2-3小时: 第一阶段:基础奠基(Day 1-20) 目标:掌握Unity引擎基础与C#编程 Day 1-5:引擎入门 安装Unity Hub和Unity Editor(LTS版本)熟悉Unity界面:S…...
多坐标系变换全解析:从相机到WGS-84的空间坐标系详解
多坐标系变换全解析:从相机到WGS-84的空间坐标系详解 一、常见坐标系简介二、各坐标系的功能和使用场景1. WGS-84 大地坐标系(经纬高)2. 地心直角坐标系(ECEF)3. 本地 ENU / NED 坐标系4. 平台坐标系(Body)5. 相机坐标系三、坐标变换流程图四、如何选用合适的坐标系?五…...
SpringCloud Alibaba 之分布式全局事务 Seata 原理分析
1. 什么是 Seata?为什么需要它? 想象一下,你去银行转账: 操作1:从你的账户扣款 1000 元操作2:向对方账户增加 1000 元 如果 操作1 成功,但 操作2 失败了,你的钱就凭空消失了&…...
作业帮前端面试题及参考答案 (100道面试题-上)
HTML5 的优势是什么? HTML5 作为 HTML 语言的新一代标准,具有众多显著优势,为现代网页开发带来了诸多便利与革新。 在语义化方面,HTML5 引入了大量具有明确语义的标签,如<header>、<nav>、<article>、<section>、<aside>、<footer>等…...
Large Language Model(LLM)的训练和微调
之前一个偏工程向的论文中了,但是当时对工程理论其实不算很了解,就来了解一下 工程流程 横轴叫智能追寻 竖轴上下文优化 Prompt不行的情况下加shot(提示),如果每次都要加提示,就可以试试知识库增强检索来给提示。 如果希望增强…...
统计销量前十的订单
传入参数: 传入begin和end两个时间 返回参数 返回nameList和numberList两个String类型的列表 controller层 GetMapping("/top10")public Result<SalesTop10ReportVO> top10(DateTimeFormat(pattern "yyyy-MM-dd") LocalDate begin,Dat…...
AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理
AI大模型原理可视化工具:深入浅出理解大语言模型的工作原理 在人工智能快速发展的今天,大语言模型(如GPT、BERT等)已经成为改变世界的重要技术。但对于很多人来说,理解这些模型的工作原理仍然是一个挑战。为了帮助更多…...
MCP 认证考试常见技术难题实战分析与解决方案
MCP(Microsoft Certified Professional)认证考试在全球范围内被广泛认可,是衡量个人在微软技术领域专业能力的重要标准。然而,在备考和参加 MCP 认证考试过程中,考生常常会遇到各种技术难题。以下将对一些常见技术难题进行实战分析,并提供相应的解决方案。 一、网络配…...
qt designer 创建窗体选择哪种屏幕大小
1. 新建窗体时选择QVGA还是VGA 下面这个图展示了区别 这里我还是选择默认,因为没有特殊需求,只是在PC端使用...
Spark-SQL核心编程(一)
一、Spark-SQL 基础概念 1.定义与起源:Spark SQL 是 Spark 用于结构化数据处理的模块,前身是 Shark。Shark 基于 Hive 开发,提升了 SQL-on-Hadoop 的性能,但因对 Hive 依赖过多限制了 Spark 发展,后被 SparkSQL 取代&…...
Android WiFi获取动态IP地址
Android开发中获取WiFi动态IP地址可通过以下方法实现,需结合网络状态管理和API调用: 一、权限配置 在AndroidManifest.xml中添加必要权限: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <…...
正则表达式使用知识(日常翻阅)
正则表达式使用 一、字符匹配 1. 普通字符 描述:直接匹配字符本身。示例: abc 匹配字符串中的 “abc”。Hello 匹配字符串中的 “Hello”。 2. 特殊字符 .(点号): 描述:匹配任意单个字符(…...
AI与无人驾驶汽车:如何通过机器学习提升自动驾驶系统的安全性?
引言 想象一下,在高速公路上,一辆无人驾驶汽车正平稳行驶。突然,前方的车辆紧急刹车,而旁边车道有一辆摩托车正快速接近。在这千钧一发的瞬间,自动驾驶系统迅速分析路况,判断最安全的避险方案,精…...
第5篇:Linux程序访问控制FPGA端LEDR<三>
Q:如何具体设计.c程序代码访问控制FPGA端外设? A:以控制DE1-SoC开发板的LEDR为例的Linux .C程序代码。头文件fcntl.h和sys/mman.h用于使用/dev/mem文件,以及mmap和munmap内核函数;address_map_arm.h指定了DE1-SoC_Com…...
城市应急安防系统EasyCVR视频融合平台:如何实现多源视频资源高效汇聚与应急指挥协同
一、方案背景 1)项目背景 在当今数字化时代,随着信息技术的飞速发展,视频监控和应急指挥系统在公共安全、城市应急等领域的重要性日益凸显。尤其是在关键场所,高效的视频资源整合与传输能力对于应对突发公共事件、实现快速精准的…...
主流程序员接单平台的分类整理与分析
一、主流推荐平台 1.程序员客栈 特点:国内知名度高,需求池模式自动匹配项目,项目经理介入协调争议,流程规范。 优势:适合新手到资深开发者,资金托管安全性高,交易纠纷处理专业。 不足&…...
【笔记ing】AI大模型-03深度学习基础理论
神经网络:A neural network is a network or circuit of neurons,or in a modern sense,an artificial neural network,composed of artificial neurons or nodes.神经网络是神经元的网络或回路,或者在现在意义上来说,是一个由人工神经元或节…...
Hutool工具包中`copyProperties`和`toBean`的区别
前言 在Java开发中,对象转换是一项常见且重要的操作。Hutool作为一个功能强大的Java工具包,提供了copyProperties和toBean这两个实用的方法来帮助我们进行对象转换。然而,很多开发者对这两个方法的区别和使用场景并不十分清楚。 一、Hutool…...
高德地图 JS-SDK 实现教程
高德地图 JS-SDK 实现教程:定位、地图选点、地址解析等 适用地点选择、地址显示、表单填写等场景,全面支持移动端、手机浏览器和 PC端环境 一、创建应用&Key 前端(JS-SDK、地图组件) 登陆 高德开放平台创建应用,…...
07软件测试需求分析案例-修改用户信息
修改用户信息是后台管理菜单的一个功能模块,只有admin才有修改权限。包括查询用户名进行显示用户相关信息,并且修改用户相关信息的功能。 1.1 通读文档 通读需求规格说明书是提取信息,提出问题,输出具有逻辑、规则、流程的业务…...
分层对象模型:PO、DTO、VO、BO定义区别与使用场景
目录 前言 PO(持久化对象) DTO(数据传输对象) VO(视图对象) BO(业务对象) 关键区别总结 典型应用场景 为什么要分层设计 工具支持 前言 在开发中,我们经常遇到…...
设计模式 --- 状态模式
状态模式是一种行为型设计模式,允许对象在内部状态改变时动态改变其行为,使对象的行为看起来像是改变了。该模式通过将状态逻辑拆分为独立类,消除复杂的条件分支语句,提升代码的可维护性和扩展性。 状态模式的…...
Java多态课堂练习题
Java多态课堂练习题 题目:动物乐园的多态展示 背景设定: 设计一个动物乐园程序,展示不同类型动物的行为特点,要求使用多态特性实现。 1. 基础类设计(已给出部分代码) // 基类:动物 abstract…...
SAP系统中的借货
问题:什么是借贷? 解答:记账符号反映的是各种经济业务数量的增加和减少。 二:怎么区分借贷增减? 解答:“借”和“贷”何时为增加、何时为减少,必须结合账户的具体性质才能准确说明…...
深入剖析Go Channel:从底层原理到高阶避坑指南|Go语言进阶(5)
文章目录 引言channel的底层数据结构channel操作原理发送操作(ch <- data)接收操作(<-ch) 常见陷阱及避坑指南1. 死锁问题2. 关闭channel的错误方式3. 内存泄漏4. nil channel特性5. 性能考量 最佳实践总结 引言 Channel是Go语言实现CSP并发模型的核心机制,提…...
OpenCV 图形API(31)图像滤波-----3x3 腐蚀操作函数erode3x3()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用3x3矩形结构元素腐蚀图像。 该函数通过使用中心作为锚点的3x3矩形结构元素来腐蚀源图像。腐蚀操作可以应用多次(迭代࿰…...
5.5 GitHub数据秒级分析核心揭秘:三层提示工程架构设计解析
GitHub Sentinel Agent 分析报告功能设计与实现 关键词:GitHub 数据分析, 提示工程设计, Pull Request 分析, Issues 跟踪, 竞品对比 项目进展报告生成功能设计 报告生成模块是 GitHub Sentinel 的核心功能,通过三层嵌套式提示工程架构实现深度分析: #mermaid-svg-vdHRUan…...
【Java学习笔记】Java初级阶段代码规范
Java 初级阶段代码规范 1. 类、方法的注释,要以 javadoc 的方式来写。 2. 非 Java Doc 的注释,往往是给代码的维护者看的,着重告读者为什么这样写,如何修改,注重什么问题等 3. 使用 tab 操作,实现缩进&am…...
