Podman(Pod Manager)简介
Podman 简介
Podman(Pod Manager)是一个开源的容器管理工具,由红帽(Red Hat)开发,用于替代 Docker,支持运行、管理 OCI(Open Container Initiative)容器和容器镜像。它设计简洁、轻量高效,并且无需守护进程(daemon)即可运行容器,安全性和灵活性更高,尤其适合 Linux 环境下的开发、测试和部署场景。
核心功能与特点
-
无守护进程架构
- 传统 Docker 需要启动
dockerd
守护进程,而 Podman 直接通过命令行与系统内核交互,减少资源占用和潜在安全风险。 - 支持以非 root 用户身份运行容器,提升安全性(需内核和系统配置支持)。
- 传统 Docker 需要启动
-
容器与镜像管理
- 运行容器:通过
podman run
命令启动容器,支持与 Docker 兼容的参数(如-p
端口映射、-v
卷挂载)。 - 镜像操作:拉取、构建、推送镜像(支持 Docker Hub、 quay.io 等仓库),命令与 Docker 类似(如
podman pull
、podman build
)。 - 镜像构建:基于 Dockerfile 构建镜像,支持多阶段构建和缓存优化。
- 运行容器:通过
-
Pod 管理
- 支持容器组(Pod)的概念,多个容器可共享网络、存储等资源(类似 Kubernetes 的 Pod),通过
podman pod create
等命令管理。
- 支持容器组(Pod)的概念,多个容器可共享网络、存储等资源(类似 Kubernetes 的 Pod),通过
-
资源隔离与安全
- 基于 Linux 命名空间(Namespaces)和控制组(cgroups)实现容器隔离,支持 SELinux/AppArmor 等安全策略。
- 支持用户命名空间(User Namespace),实现容器内 root 用户与宿主机普通用户的映射,避免权限提升风险。
-
与生态工具集成
- 兼容 Docker Compose(通过
podman-compose
插件),可直接运行 Docker Compose 文件。 - 无缝对接 Kubernetes、OpenShift 等编排系统,适合云原生场景。
- 兼容 Docker Compose(通过
常用命令示例
操作场景 | Podman 命令 | 说明 |
---|---|---|
拉取镜像 | podman pull ubuntu:latest | 从镜像仓库拉取镜像 |
运行容器 | podman run -it --rm ubuntu bash | 以交互式模式运行 Ubuntu 容器,退出后自动删除容器 |
查看运行中的容器 | podman ps | 等价于 Docker 的 docker ps |
停止容器 | podman stop <容器 ID/名称> | 停止指定容器 |
构建镜像 | podman build -t myapp:v1 . | 基于当前目录的 Dockerfile 构建镜像 |
管理 Pod | podman pod create --name mypod -p 8080:80 | 创建名为 mypod 的容器组,映射宿主机 8080 端口到容器 80 端口 |
查看镜像列表 | podman images | 列出本地所有镜像 |
删除镜像 | podman rmi <镜像 ID/标签> | 删除指定镜像 |
与 Docker 的对比
特性 | Podman | Docker |
---|---|---|
守护进程 | 无(直接调用系统 API) | 需要 dockerd 守护进程 |
非 root 权限运行 | 原生支持(需配置) | 需额外配置(如用户组或特权模式) |
安全性 | 内置 SELinux/AppArmor 支持,用户命名空间 | 需手动配置安全策略 |
容器持久化 | 默认退出后删除容器(可通过参数保留) | 默认保留容器状态 |
生态兼容性 | 兼容 Docker 命令和镜像,支持 Compose 插件 | 成熟生态,原生支持 Compose |
适用场景 | 开发、测试、Kubernetes 环境 | 全场景(开发、生产、云原生) |
安装与入门
Linux 安装(以 Ubuntu 为例)
- 添加软件源:
sudo apt update sudo apt install podman
- 验证安装:
podman version
快速入门指南
- 运行第一个容器:
podman run docker.io/library/hello-world
- 进入正在运行的容器:
podman exec -it <容器 ID> bash
- 构建自定义镜像(需准备 Dockerfile):
podman build -t my-nginx .
适用场景
- 开发与测试:轻量高效,适合本地快速构建和调试容器化应用。
- 云原生与编排:与 Kubernetes 集成良好,适合构建容器化微服务架构。
- 安全性优先场景:无守护进程、支持用户命名空间,适合对安全敏感的环境(如金融、政府系统)。
- 服务器less 与边缘计算:资源占用少,适合资源受限的边缘设备或小型集群。
Podman 的 Pod 管理功能详解
Podman 的 Pod 管理功能允许你创建和管理多个容器组成的逻辑组(Pod),这些容器共享网络、存储和命名空间,类似于 Kubernetes 中的 Pod 概念。这对于需要紧密协作的微服务应用尤为有用。
Pod 基本概念
- 共享资源:同一个 Pod 内的容器可以通过
localhost
直接通信,共享存储卷和 IP 地址空间。 - 生命周期管理:Pod 作为一个整体进行创建、启动、停止和删除。
- 网络模型:Pod 内的容器共享网络命名空间,简化了服务间通信。
Pod 常用操作
1. 创建 Pod
podman pod create --name myapp-pod -p 8080:80 -p 5432:5432
--name
:指定 Pod 名称。-p
:映射宿主机端口到 Pod 内部端口(供 Pod 内所有容器共享)。
2. 在 Pod 内运行容器
# 在 myapp-pod 中运行 Nginx 容器
podman run -d --pod myapp-pod --name web-server nginx:alpine# 在同一 Pod 中运行数据库容器
podman run -d --pod myapp-pod --name db-server -e POSTGRES_PASSWORD=secret postgres:14
--pod
:指定容器所属的 Pod。- 同一 Pod 内的容器可通过
localhost
互相访问(例如,Web 容器可直接连接localhost:5432
访问数据库)。
3. 查看 Pod 信息
# 列出所有 Pod
podman pod ps# 查看 Pod 详情(包括容器、端口映射)
podman pod inspect myapp-pod
4. 停止和删除 Pod
# 停止 Pod(自动停止内部所有容器)
podman pod stop myapp-pod# 删除 Pod(需先停止,删除后内部容器也会被删除)
podman pod rm myapp-pod
高级 Pod 管理
1. 创建带持久化存储的 Pod
# 创建 Pod
podman pod create --name storage-pod# 创建卷并挂载到 Pod 内的容器
podman run -d --pod storage-pod -v mydata:/data alpine sleep 3600
2. 使用 Pod 配置文件(JSON/YAML)
Podman 支持通过配置文件定义复杂的 Pod:
// pod-config.json
{"name": "myapp-pod","ports": [{"hostPort": 8080,"containerPort": 80,"protocol": "tcp"}],"containers": [{"name": "web-server","image": "nginx:alpine"},{"name": "app-server","image": "my-app:v1"}]
}
通过配置文件创建 Pod:
podman play kube pod-config.json
3. Pod 网络配置
- 静态 IP 分配(需安装
slirp4netns
):podman pod create --name static-ip-pod --network slirp4netns:ip=10.0.2.100
- 使用自定义网络:
podman network create my-net podman pod create --name custom-net-pod --network my-net
Podman 与 Kubernetes 的集成
由于 Podman 的 Pod 概念与 Kubernetes 兼容,可以直接将 Podman 创建的 Pod 导出为 Kubernetes 清单:
podman generate kube myapp-pod > myapp-pod.yaml
然后使用 kubectl
部署到 Kubernetes 集群:
kubectl apply -f myapp-pod.yaml
常见问题排查
-
容器无法访问同一 Pod 内的服务:
- 确认容器是否在同一 Pod 中(
podman ps --pod
)。 - 检查服务是否监听在
0.0.0.0
而非localhost
(Pod 内容器通过localhost
通信需服务暴露所有接口)。
- 确认容器是否在同一 Pod 中(
-
端口映射不生效:
- 使用
podman pod inspect
检查端口映射配置。 - 确保宿主机端口未被其他服务占用。
- 使用
最佳实践
- 按功能分组容器:将紧密协作的组件(如 Web 服务器和应用后端)放在同一 Pod 中。
- 避免过度耦合:仅将必须共享资源的容器放在同一 Pod,保持微服务的独立性。
- 使用标签管理 Pod:通过
--label
参数为 Pod 添加元数据,便于批量管理。 - 生产环境考虑:在大规模部署时,优先使用 Kubernetes 而非直接管理 Podman Pod,但开发和测试阶段 Podman 更轻量高效。
Podman 安全配置详解
Podman 设计上注重安全性,特别是通过无守护进程架构和用户命名空间(User Namespaces)减少潜在风险。以下是 Podman 安全配置的核心要点和最佳实践:
1. 用户命名空间(User Namespaces)
用户命名空间允许容器内的 root 用户映射到宿主机的普通用户,避免容器内的提权操作影响宿主机。
配置方法
-
检查系统支持:
# 确认内核支持 user namespace zgrep CONFIG_USER_NS /proc/config.gz # 应输出 CONFIG_USER_NS=y
-
配置用户 ID 映射:
编辑/etc/subuid
和/etc/subgid
,为当前用户分配可用的 UID/GID 范围:echo "your_username:100000:65536" | sudo tee -a /etc/subuid echo "your_username:100000:65536" | sudo tee -a /etc/subgid
-
验证配置:
podman info --format "{{.Host.IDMappings.User}}" # 应显示配置的 UID 范围
2. 安全运行时
Podman 默认使用 crun 或 runc 作为容器运行时,支持多种安全特性:
Seccomp 配置
Seccomp(Secure Computing Mode)限制容器内进程可调用的系统调用:
# 使用自定义 seccomp 配置文件
podman run --security-opt seccomp=/path/to/seccomp.json ...
AppArmor/SELinux 强制访问控制
- SELinux(默认启用):
# 使用 SELinux 标签 podman run -v /data:/data:z ... # :z 表示共享标签,:Z 表示私有标签
- AppArmor:
# 应用 AppArmor 配置文件 podman run --security-opt apparmor=my-profile ...
3. 镜像安全
签名与验证
Podman 支持 OpenPGP 签名和验证镜像:
# 导入公钥
podman trust import /path/to/public.key# 拉取并验证签名的镜像
podman pull --verify=signature example.com/myimage:v1
扫描镜像漏洞
集成 Trivy 或 Clair 等工具扫描镜像安全漏洞:
# 使用 Trivy 扫描
trivy image alpine:latest
4. 容器隔离与权限控制
最小化容器权限
# 以非 root 用户运行容器
podman run --user 1001 ...# 禁用特权模式
podman run --privileged=false ... # 默认为 false# 限制设备访问
podman run --device-read-only=/dev/sda ...
限制资源使用
# 限制 CPU 和内存
podman run --cpus=0.5 --memory=512m ...# 限制网络带宽
podman run --network-bandwidth=10mbps ...
5. 网络安全
默认网络隔离
Podman 默认使用 slirp4netns
或 rootlesskit
提供网络隔离,避免容器直接访问宿主机网络。
自定义网络策略
# 创建隔离网络
podman network create isolated-net# 将容器连接到特定网络
podman run --network isolated-net ...
限制端口暴露
# 仅映射必要的端口
podman run -p 8080:80 ... # 而非 -P 暴露所有端口
6. 存储安全
加密卷
# 创建加密卷
podman volume create --opt type=tmpfs --opt o=size=100m,uid=1000 secure-vol# 挂载加密卷
podman run -v secure-vol:/data ...
只读挂载
podman run -v /host/data:/container/data:ro ... # :ro 表示只读
7. 安全配置文件(containers.conf)
全局配置位于 /etc/containers/containers.conf
,用户配置位于 ~/.config/containers/containers.conf
。
关键配置示例:
[containers]
default_capabilities = ["CHOWN", "DAC_OVERRIDE"] # 最小化默认能力
seccomp_profile = "/usr/share/containers/seccomp.json"
userns_mode = "auto"
8. 安全审计与日志
审计容器活动
# 查看容器系统调用日志
podman logs --seccomp my-container# 使用 auditd 监控容器进程
ausearch -c 'podman' --raw | audit2allow -M my-podman
日志安全
# 使用安全的日志驱动
podman run --log-driver=journald ...
9. 无密码操作(Rootless 模式)
推荐使用 Rootless 模式运行 Podman,避免使用 root 权限:
# 普通用户直接运行 Podman 命令
podman run hello-world # 无需 sudo
10. 定期更新与漏洞修复
# 更新 Podman 和依赖组件
sudo apt update && sudo apt upgrade podman -y # Ubuntu
sudo dnf update podman -y # Fedora
相关文章:
Podman(Pod Manager)简介
Podman 简介 Podman(Pod Manager)是一个开源的容器管理工具,由红帽(Red Hat)开发,用于替代 Docker,支持运行、管理 OCI(Open Container Initiative)容器和容器镜像。它设…...
HarmonyOS NEXT端云一体化工程目录结构
视频课程学习报名入口:HarmonyOS NEXT端云一体化开发 端云一体化开发工程由端开发工程(Application)和云开发工程(CloudProgram)两大核心模块构成。 1)端开发工程目录结构 端开发工程主要用于开发应用端侧的业务代码,通用云开发模板的端开发工程目录结构如下图所示: …...
【C++ 真题】P1075 [NOIP 2012 普及组] 质因数分解
P1075 [NOIP 2012 普及组] 质因数分解 题目描述 已知正整数 n n n 是两个不同的质数的乘积,试求出两者中较大的那个质数。 输入格式 输入一个正整数 n n n。 输出格式 输出一个正整数 p p p,即较大的那个质数。 输入输出样例 #1 输入 #1 21输…...
力扣热题100,力扣148.排序链表力扣.26找出字符串中第一个匹配项的下标力扣146.LRU缓存序列管理器
目录 力扣148.排序链表 力扣.26找出字符串中第一个匹配项的下标 力扣146.LRU缓存 序列管理器 力扣148.排序链表 那个O1,暂时我没有考虑,但是这个nlogn,我就想什么时候会有log呢,应该是2的次幂方向思考,一说2,是否能想到2分呢&…...
防火墙高可靠性
防火墙高可靠性技术概述 防火墙高可靠性技术分为两类:设备高可靠性和链路高可靠性 防火墙双机热备 双机热备概述及相关协议 HRP协议:即Huawei Redundancy Protocol,主要用于实现防火墙双机之间关键配置命令和状态化信息的备份,…...
C++ stack对象创建、入栈、获取栈顶
stack对象创建直接调用C对应的<stack>,进行创建 #include<iostream> #include<stack>using namespace std;int main() {// 1 默认构造函数stack<int> stk1;// 2 拷贝构造函数stack<int> stk2;stk1 stk2;return 0;} 入栈操作有一条…...
x-cmd install | Pillager:Go 语言打造的敏感信息文件系统扫描利器
目录 Pillager 的独特优势安装Pillager 的应用场景Pillager 的核心功能 还在为文件系统中潜在的敏感信息泄露而担忧吗?Pillager 是一款由 Go 语言编写的强大工具,旨在帮助你轻松扫描文件系统,发现隐藏的密钥、密码、API 令牌等敏感信息。 Pil…...
第9.1讲、Tiny Encoder Transformer:极简文本分类与注意力可视化实战
项目简介 本项目实现了一个极简版的 Transformer Encoder 文本分类器,并通过 Streamlit 提供了交互式可视化界面。用户可以输入任意文本,实时查看模型的分类结果及注意力权重热力图,直观理解 Transformer 的内部机制。项目采用 HuggingFace …...
asp.net web form nlog的安装
一、安装NuGet包 核心包安装 NLog提供日志记录核心功能 NLog.Config自动生成默认配置文件模板 配置NLog文件 配置文件创建 项目根目录自动生成NLog.config文件(通过NuGet安装NLog.Config时创建) <?xml version"1.0" encoding&…...
定时器的两种实现方式
1、基于优先级队列/堆 队列是先进先出,优先级队列是优先级越高就存放在队列之前,我们可以将过期时间越早设置为优先级越高,那么临近过期时间的任务就会在队列前面,距离过期时间越晚的任务就在队列后面。 可以分配一个线程&#…...
2025.05.21华为暑期实习机考真题解析第一题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 智能云任务分发系统 问题描述 卢小姐负责一家云计算公司的任务分发系统开发。该系统需要根据任务优先级和到达顺序进行智能调度,支持以下两种操作: 添加任务 add task_id pri…...
计算机网络-MPLS VPN报文转发
上一章学习了MPSL VPN的路由交互过程,VPN间学习到路由之后可以进行报文的转发了。 一、MPLS VPN报文转发过程 以图中用户X的站点B访问站点A的192.168.1.0/24网段为例,报文转发过程如下: 1.CE3上存在到192.168.1.0/24网段路由,发…...
关于sql 查询性能优化的小经验
最近接到一些sql优化的任务。数据库类型:DB2 有一个长sql查询效率低,大概要几十秒,大概查询逻辑如下: select * from tableA a where exists (select 1 from tableB b where a.idb.id ) or exists (select 1 from tableC c whe…...
Pandas:数据分析步骤、分组函数groupby和基础画图
本文目录: 一、概念(一)数据分析的基本步骤(二)两个属性:loc[行标签,列标签 ] 和 iloc[行索引位置,列索引位置 ]1.基本规则2.两属性的相同和不同对比 二、加载数据(一)按列加载数据&…...
游戏引擎学习第302天:使用精灵边界进行排序
在 game_render_group.cpp 中:正确计算 GetBoundFor() 里的 SpriteBound 值 我们正在进行游戏的排序问题调试。虽然这是一个二维游戏,但包含一些三维元素,因此排序变得比较复杂和棘手。混合二维和三维元素时,需要依赖一些比较主观…...
【完整版】基于laravel开发的开源交易所源码|BTC交易所/ETH交易所/交易所/交易平台/撮合交易引擎
功能说明 源码简介与安装环境说明: 开源交易所,基于laravel开发的交易所 | BTC交易所 | ETH交易所 | 交易所 | 交易平台 | 撮合交易引擎。本项目有完整的撮合交易引擎源码、后台管理(后端前端)、前台(交易页面、活动页…...
DeepSeek赋能智能家居:构建高智能、低延迟的物联网生态
一、DeepSeek技术架构解析 DeepSeek采用分层架构设计,兼容边缘计算与云端协同,核心模块包括: 1. 设备接入层 多协议适配:支持MQTT、CoAP、Zigbee、WiFi等主流协议,内置设备描述语言(DDL)解析器,可自动发现并注册新设备。数据预处理:对传感器数据(如温度、光照、加速…...
鸿蒙开发:应用上架第二篇,申请发布证书
前言 本文基于Api13 通过第一篇文章,我们拿到了密钥库.p12文件和证书请求csr文件,这两个文件都是非常重要的,一定要保存好,我们也基本知道了应用的打包,签名信息文件是必须的,而对于签名信息,也…...
Android Framework开发环境搭建
本文分享下在Windows和ubuntu系统搭建framework 开发环境的过程。 Window系统版本win11 一.在windows搭建android framework开发环境。 到下面网站下载android studio 。 developer.android.google.cn/studio?hlzh-cn 在as 的sdk manager 中安装SDK Platform和SDK Tools。 2…...
关于收集 Android Telephony 网络信息的设计思考
需求 收集service state change、ims fail 等相关无线移动网络状态的信息,并保存,对外提供数据查询、删除、更新的功能。 架构设计与实现建议 1. 架构设计建议 针对在 Android Telephony 数据模块中实现网络状态信息收集并调用 Provider App 存储的需求,建议采用 分层的…...
弱网服务器群到底有什么用
在当今数字化的时代,大家都在追求高速、稳定的网络体验,但你是否想过,弱网服务器群其实也有着不可小觑的作用。让我们来聊聊什么是弱网服务器群。简单来说,它是一组在网络条件相对较差情况下运行的服务器集合。 弱网服务器群组是一…...
如何提高独立服务器的安全性?
独立服务器相对于其它服务器来说,整体的硬件设备都是独立的同时还有着强大的服务器性能,其中CPU设备能够决定着服务器的运算能力,所以独立服务器的安全性受到企业格外的重视,严重的话会给企业造成巨大的资金损失。 那么࿰…...
ubuntu 搭建FTP服务,接收部标机历史音视频上报服务器
1.安装vsftpd 1.1.安装命令 sudo apt update sudo apt install vsftpd 1.2.备份原始配置文件 sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak 1.3.配置 vsftpd 编辑配置文件 /etc/vsftpd.conf: sudo vim /etc/vsftpd.conf 将以下参数修改为对应值ÿ…...
在离线 OpenEuler-22.03 服务器上升级 OpenSSH 的完整指南
当然可以!以下是一篇结构清晰、语言通俗易懂的技术博客草稿,供你参考和使用: 在离线 OpenEuler-22.03 服务器上升级 OpenSSH 的完整指南 背景介绍 最近在对一台内网的 OpenEuler-22.03 服务器进行安全扫描时,发现其 SSH 版本存在…...
用java实现内网通讯,可多开客户端链接同一个服务器
创建一个客户端:package Socket;import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.nio.charset.StandardCharsets; import java.util.Scanner;/* 聊天案例客户端 */ public class Client {private Socket socket;/**…...
蓝耘服务器部署ppocr-gpu项目
一、存在的问题。 conda install 总是访问失败。 二、云服务器选择 三、安装Anaconda3 进入云服务器后删除minconda文件夹 官网: https://repo.anaconda.com/archive/ 在里面找到自己系统的安装包,然后右击复制链接安装。 一定要选择Anaconda,因为…...
离线服务器算法部署环境配置
本文将详细记录我如何为一台全新的离线服务器配置必要的运行环境,包括基础编译工具、NVIDIA显卡驱动以及NVIDIA-Docker,以便顺利部署深度学习算法。 前提条件: 目标离线服务器已安装操作系统(本文以Ubuntu 18.04为例)…...
现代人工智能系统的实用设计模式
关键要点 AI设计模式是为现代AI驱动的软件中常见问题提供的可复用解决方案,帮助团队避免重复造轮子。我们将其分为五类:提示与上下文(Prompting & Context)、负责任的AI(Responsible AI)、用户体验&…...
数据集下载并保存本地进行加载
一、huggingface 1、下载数据集 #数据集下载 from datasets import load_datasetds load_dataset("FreedomIntelligence/medical-o1-reasoning-SFT", "zh",cache_dir ./dir)输出测试 2、保存数据集 #数据保存 ds.save_to_disk("./local_datase…...
物流项目第六期(短信微服务——对接阿里云第三方短信服务JAVA代码实现、策略模式 + 工厂模式的应用)
前五期: 物流项目第一期(登录业务)-CSDN博客 物流项目第二期(用户端登录与双token三验证)-CSDN博客 物流项目第三期(统一网关、工厂模式运用)-CSDN博客 物流项目第四期(运费模板列…...
嵌入式学习的第二十五天-系统编程-文件相关函数-标准I0+文件IO
一、文件的读和写 1.fwrite(读) size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); 功能:从指定的stream流对象中获取nmemeb个大小为size字节的数据块到ptr所在的本地内存中。 参数:ptr 要存储数据的本地…...
MySQL 8.0 OCP 1Z0-908 171-180题
Q171.Examine this MySQL client command to connect to a remote database: mysql-h remote-example.org-u root–protocolTCP–ssl-mode Which two–ss1-mode values will ensure that an X.509-compliant certificate will be used to establish the SSL/TLS connection to …...
实现动态增QuartzJob,通过自定义注解调用相应方法
:::tip 动态增加Quartz定时任务,通过自定义注解来实现具体的定时任务方法调用。 ::: 相关依赖如下 <!-- 用来动态创建 Quartz 定时任务 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-start…...
Linux网络 网络基础一
1. 计算机网络背景 1.1 网络发展 独立模式:计算机之间相互独立。 网络互联:多台计算机连接在一起,完成数据共享。 局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起。 广域网WAN:将远隔千里的…...
auto关键字解析
前言 在11标准之前,auto在c中是声明存储器类型的关键字。而在11标准中它的功能变为了类型推导。 对此, 在这里引入Cprimer中的原句: 编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚的知道表达式的类型。然而…...
[实战]用户系统-1-基础功能完善
[实战]用户系统-1 目标响应格式化新建lib-interceptor增加res拦截器新建lib-filter完善异常处理日志处理新建lib-logger新增mongodb的model代码进度目标 我们的用户系统实战,将会实现以下功能,登录,注册,登出,修改用户信息,上传头像,响应的格式化,请求拦截,vip标识。…...
C#SQLServer数据库通用访问类
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace thinger.cn.ADO.NETTeach { /// /// 数据库的通用类 /// public class SQLHelperBase…...
Linux中进程控制(上)
目录 进程创建 写时拷贝 fork常用场景 fork调用失败的原因 进程终止 进程退出场景 退出码 _exit函数 exit函数 进程等待 进程等待必要性 进程等待方法 wait方法 编辑 waitpid方法 获取⼦进程status 阻塞和非阻塞等待 进程创建 在linux中fork函数是⾮常重要的…...
为什么服务器突然变慢?从硬件到软件的排查方法
服务器突然变慢是许多系统管理员和网站运维人员经常遇到的问题。这种情况可能会影响网站性能、用户体验以及整个业务流程。了解服务器变慢的原因并采取相应的排查措施是至关重要的。本文将介绍服务器突然变慢的可能原因,从硬件到软件方面逐一排查,并提供…...
碳交易系统九大构成
碳交易系统九大构成 碳排放权交易系统的核心要素包括覆盖范围、配额总量、配额分配、排放监测、报送与核查,履约考核、抵消机制、交易机制、市场监管及配套的法律法规体系。 图源《中国碳排放权交易市场:从原理到实践》 1、覆盖范围 碳排放权交易体系…...
第9.2讲、Tiny Decoder(带 Mask)详解与实战
自己搭建一个 Tiny Decoder(带 Mask),参考 Transformer Encoder 的结构,并添加 Masked Multi-Head Self-Attention,它是 Decoder 的核心特征之一。 1. 背景与动机 Transformer 架构已成为自然语言处理(NLP…...
Java接口P99含义解析
假设你开了一家奶茶店(接口就是你的奶茶制作流水线),每天要处理100杯订单: 🚀 P99是什么? 平均响应时间:就像说"平均每杯奶茶2分钟做好",但可能有10杯让客人等10分钟P99…...
【Oracle 专栏】清理用户及表空间
Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 今天需要清理一台服务器中之前的库,目前不再使用,以便释放空间。 如:清理 NH_MCRO_COLLECT 用户 2. 实验清理 2.1 查询:清…...
Qt功能区:Ribbon控件
控件 1. 按钮1.1 多选按钮1.2 2. 下拉列表框SARibbonComboBox2.1 简介2.2 代码实现 1. 按钮 1.1 多选按钮 软件功能:用于实现Category的名称居中。 SARibbonCheckBox继承于QCheckBox,使用方法完全相同。 SARibbonCheckBox* checkBox new SARibbonChe…...
eclipse 生成函数说明注释
在Eclipse中生成函数说明注释(JavaDoc风格)可以通过以下方法实现: 快捷键方式: 将光标放在函数上方输入/**后按回车键Eclipse会自动生成包含参数和返回值的注释模板 菜单方式: 选中函数点击菜单栏 Source > Gen…...
【Qt】QImage实战
QImage::Format_Mono, QImage::Format_RGB32, QImage::Format_ARGB32, QImage::Format_ARGB32_Premultiplied, 和 QImage::Format_RGB555 是 Qt 中不同的图像像素格式,它们在存储方式、颜色深度、是否支持透明通道以及适用场景上各有不同。下面是它们的详细对比&…...
tomcat知识点
1. JDK JDK是 Java 语言的软件开发工具包,JDK是整个java开发的核心,它包含JAVA工具还包括完整的 JRE(Java Runtime Environment)Java运行环境,包括了用于产品环境的各种库类,以及给开发人员使用的补充库。 JDK包含了一批用于Java开发的组件,其中包括: javac:编译器,将…...
Linux虚拟文件系统(2)
2.3 目录项-dentry 目录项,即 dentry,用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构。和上一章中超级块和索引节点不同,目录项并不是实际存在于磁盘上的,…...
遥感影像-语义分割数据集:光伏数据集详细介绍及训练样本处理流程
原始数据集详情 简介:数据集包括504张亚米级卫星图片的农业光伏数据集,该数据集用于亚米级影像中的农业光伏提取任务。 KeyValue卫星类型亚米级卫星覆盖区域未知场景未知分辨率0.5m数量504张单张尺寸1024*1024原始影像位深8位标签图片位深8位原始影像通…...
【Java高阶面经:微服务篇】4.大促生存法则:微服务降级实战与高可用架构设计
一、降级决策的核心逻辑:资源博弈下的生存选择 1.1 大促场景的资源极限挑战 在电商大促等极端流量场景下,系统面临的资源瓶颈呈现指数级增长: 流量特征: 峰值QPS可达日常的50倍以上(如某电商大促下单QPS从1万突增至50万)流量毛刺持续时间短(通常2-4小时),但对系统稳…...