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

Podman 学习总结

Podman 概述

什么是 Podman?

Podman(Pod Manager)是一个开源的容器管理工具类似于 Docker,可以用于拉取、运行、管理容器镜像。Podman 采用 无守护进程****(Daemonless) 的架构,使其更加安全和轻量级,适用于多种容器化场景。

Podman 与 Docker 的区别

特性PodmanDocker
架构无守护进程(Daemonless)需要 Docker Daemon
权限支持 Rootless 模式(非 root 用户运行)需要 root 权限(默认)
Pod 支持原生支持 Pod(类似 Kubernetes)需要使用 docker-compose
实现多容器管理
兼容性兼容 Docker 命令,可替代 docker原生支持 Docker
安全性更安全(不依赖 root 权限)需要额外配置 rootless 运行
存储每个用户都有独立的存储空间共享 /var/lib/docker
存储
守护进程无需后台运行需要 dockerd
作为后台服务
Kubernetes 兼容性直接支持 K8s yaml 配置需要 docker-compose
K8s
适配
远程管理需要 podman system serviceDocker 原生支持 docker -H
远程管理

****Podman 的核心特点

  1. 无守护进程(Daemonless)
    • Docker 依赖 dockerd 运行容器,而 Podman 直接执行容器,避免了单点故障和权限管理问题。
  2. Rootless(非 root 权限运行)
    • 普通用户可以运行容器,避免 root 账户被攻击,提高安全性。
    • podman unshare 进入无特权的用户命名空间。
  3. Pod 支持
    • Podman 原生支持 Pod,类似 Kubernetes 里的 Pod,可以管理多个容器共享网络和存储。
  4. 与 Docker 兼容
    • 使用 podman alias docker 直接替代 Docker 命令,无需修改 Docker CLI 命令。
    • podman generate kube 直接生成 Kubernetes YAML 配置,方便迁移。
  5. 系统集成
    • podman generate systemd 生成 systemd 服务,实现自动化管理。
    • 支持 OCI 标准,可用于 OpenShift、Kubernetes 等平台。

Podman 适用的场景**

  • 安全性要求高的环境**
    • 由于 Podman 支持 Rootless 模式,可避免容器运行时以 root 权限执行,降低安全风险。
  • ****轻量级容器管理
    • Podman 无需守护进程,适合资源受限的服务器或本地开发环境。
  • Kubernetes 开发**
    • Podman 的 Pod 支持 让其更接近 Kubernetes 的运行模式,适合开发 K8s 应用。
  • 兼容 Docker,想要迁移**
    • 如果想摆脱 Docker Daemon,但仍然希望使用类似 Docker 的 CLI 命令,Podman 是一个很好的替代方案。
  • 系统服务(systemd)**
    • 通过 podman generate systemd 可创建 Linux 的 systemd 服务,适用于长期运行的应用程序。

总结

Podman 是一个更安全、灵活、轻量的容器管理工具,适用于开发、运维、K8s 生态。

Podman 安装指南

Podman 可以在 Linux、macOS 和 Windows(WSL & Native) 等环境下运行。下面介绍不同操作系统的安装方法,以及如何使用 国内镜像源 加速下载,并验证安装是否成功。


Linux 安装 Podman

直接通过包管理器安装。

Ubuntu / Debian

sudo apt update
sudo apt install -y podman

CentOS / RHEL

sudo yum install -y podman

CentOS 8+(使用 dnf)

sudo dnf install -y podman

macOS 安装 Podman

Podman 提供了 macOS 原生支持,可通过 brew 安装:

brew install podman

初始化 Podman 环境 由于 macOS 没有原生的 Linux 内核,Podman 需要运行在虚拟机(QEMU)上:

podman machine init
podman machine start

查看版本,验证是否安装成功:

podman version

配置国内镜像源(加速拉取镜像)

由于国内访问 Docker Hub 较慢,可以配置国内镜像加速:

sudo mkdir -p /etc/containers
sudo tee /etc/containers/registries.conf <<EOF
[registries.search]
registries = ["docker.io", "quay.io", "registry.fedoraproject.org", "registry.access.redhat.com"][registries.insecure]
registries = [][registries.mirrors]
"docker.io" = { "endpoint" = [ "https://mirror.baidubce.com", "https://registry.docker-cn.com" ] }
EOF

命令解析:

sudo mkdir -p /etc/containers
  • mkdir -p /etc/containers:创建 /etc/containers 目录(如果已存在,则不会报错)。
  • sudo:以 管理员权限 执行。
sudo tee /etc/containers/registries.conf <<EOF
...
EOF
  • tee 命令:将 EOF 之间的内容写入 /etc/containers/registries.conf 配置文件(如果文件已存在,则覆盖)。
  • <<EOF ... EOF:表示将多行文本输入到文件。
[registries.search]
registries = ["docker.io", "quay.io", "registry.fedoraproject.org", "registry.access.redhat.com"]
  • 定义默认的搜索镜像源,优先从 docker.io 拉取镜像。
  • quay.ioregistry.fedoraproject.orgregistry.access.redhat.com 也作为备选源。
[registries.insecure]
registries = []
  • 不信任的镜像仓库,这里为空,意味着不允许拉取来自不安全(HTTP 而非 HTTPS)的镜像源。
[registries.mirrors]
"docker.io" = { "endpoint" = [ "https://mirror.baidubce.com", "https://registry.docker-cn.com" ] }
  • 配置国内加速镜像源,以加快 docker.io 的镜像拉取速度:
    • https://mirror.baidubce.com(百度云加速)
    • https://registry.docker-cn.com(Docker 中国官方加速)

然后 重启 Podman

systemctl restart podman

验证 Podman 是否安装成功

安装完成后,可以运行以下命令检查 Podman 是否正常运行:

检查 Podman 版本

podman version

示例输出:

Version: 4.5.1

测试运行容器

podman run --rm hello-world

如果输出类似:

Hello from Podman!

说明 Podman 已成功运行。

查看 Podman 进程

podman ps -a

结论

  1. Linux 用户 直接使用 包管理器安装
  2. macOS 用户 需要 安装后初始化虚拟机 (podman machine init)。
  3. Windows 用户 可以使用 WSL 方式(推荐)Native 版本
  4. 国内加速 可以配置 registries.conf 使用国内镜像源。
  5. 运行 podman run hello-world 验证安装 是否成功。

Podman 基础命令

  • 镜像管理
podman pull <image>   # 拉取镜像
podman images         # 查看本地镜像
podman rmi <image>    # 删除镜像
  • 容器管理
podman run -it --rm alpine sh  # 运行容器并进入 Shell
podman ps                      # 查看运行中的容器
podman ps -a                    # 查看所有容器
podman stop <container>         # 停止容器
podman rm <container>           # 删除容器
  • 容器日志和状态管理
podman logs <container>     # 查看日志
podman inspect <container>  # 查看容器详细信息
podman stats                # 实时查看资源占用

Podman 高级功能

  • Pod 支持
podman pod create --name mypod
podman run -dt --pod mypod nginx
podman pod ps
podman pod rm mypod
  • Rootless 容器
    • 非 root 用户运行容器
    • podman unshare 进入无特权环境
  • 与 systemd 集成
podman generate systemd --name mycontainer
  • 端口映射与网络
podman network create mynet
podman run -dt --network mynet nginx
  • 存储管理
podman volume create myvol
podman volume ls
podman run -v myvol:/data -it ubuntu bash

Podman 与 Docker 兼容

Podman 与 Docker 兼容性

Podman 作为 Docker 的无守护进程(Daemonless)替代品,提供了一些兼容 Docker 的功能,确保开发者可以无缝切换。以下是具体的兼容方式:


alias docker=podman

alias docker=podman
  • 这条命令 创建一个 shell 别名,让 docker 命令自动映射为 podman,从而在终端运行 docker 命令时,实际上执行的是 podman
  • 这样,无需更改已有的 Docker 命令,就能使用 Podman。

永久生效

如果想让 alias docker=podman 长期生效,可以:

echo "alias docker=podman" >> ~/.bashrc  # Bash 用户
source ~/.bashrcecho "alias docker=podman" >> ~/.zshrc   # Zsh 用户
source ~/.zshrc

兼容 Docker CLI 和 Compose

Podman 提供 与 Docker CLI 兼容的接口,意味着大部分 Docker 命令可以直接用 Podman 运行:

podman run -d --name nginx -p 8080:80 nginx
podman ps -a
podman stop nginx
podman rm nginx
  • 支持 docker 命令格式,直接替换 dockerpodman 即可。
  • **支持 **podman-compose,可以管理 docker-compose.yml 文件:
sudo dnf install -y podman-compose  # Fedora/CentOS/RHEL
sudo apt install -y podman-compose  # Debian/Ubuntupodman-compose up -d
podman-compose down

podman generate kube 生成 K8s 资源

Podman 支持 Kubernetes (K8s) YAML 资源生成,可以将 Podman 容器转换成 K8s 配置:

podman run -d --name mynginx -p 8080:80 nginx
podman generate kube mynginx > mynginx.yaml
  • podman generate kube 命令会自动转换 Podman 容器到 Kubernetes YAML 资源
  • 示例 YAML
apiVersion: v1
kind: Pod
metadata:name: mynginx
spec:containers:- name: mynginximage: docker.io/library/nginxports:- containerPort: 80hostPort: 8080
  • 这样可以 快速迁移到 Kubernetes,无需手动编写 YAML!

迁移现有 Docker 镜像/容器到 Podman

(1)迁移 Docker 镜像

Podman 兼容 Docker 的 OCI 镜像格式,可以直接使用 docker save + podman load 迁移:

docker save myimage:latest -o myimage.tar
podman load -i myimage.tar
  • docker save:导出 Docker 镜像到 tar 文件。
  • podman load:导入 tar 文件到 Podman。
(2)迁移 Docker 容器

如果要迁移运行中的 Docker 容器

docker export mycontainer -o mycontainer.tar
podman import mycontainer.tar mynewimage
  • docker export:导出 Docker 容器文件系统。
  • podman import:导入文件系统作为新的 Podman 镜像。

总结

兼容方式说明
alias docker=podman让 Podman 兼容 Docker 命令,减少学习成本
兼容 Docker CLI & Composepodman 命令格式与 Docker 兼容,并支持 podman-compose
podman generate kube直接将 Podman 容器转换为 Kubernetes 资源
迁移 Docker 镜像/容器使用 docker save/loadexport/import 进行迁移

Podman 在生产环境中的应用

Podman 作为无守护进程(Daemonless)的容器管理工具****,适用于生产环境,因为它更安全、兼容 Docker、支持 Kubernetes


Podman 在 CI/CD(持续集成/部署)中的使用

(1)使用 Podman 构建容器镜像

在 CI/CD 过程中,Podman 可用于构建和推送容器镜像:

podman build -t myapp:latest .
podman tag myapp:latest myregistry.com/myapp:latest
podman push myregistry.com/myapp:latest
  • podman build:构建镜像,类似 docker build
  • podman push:推送镜像到私有仓库(如 Harbor, Nexus, 阿里云容器服务等)。
  • Podman 支持 Rootless,比 Docker 更安全,适合 CI/CD 环境。
(2)在 GitLab CI/CD 中使用 Podman

GitLab Runner 默认使用 Docker,但也支持 Podman,配置方式如下:

stages:- build- deploybuild:stage: buildimage: quay.io/podman/stablescript:- podman build -t myapp:latest .- podman tag myapp:latest registry.example.com/myapp:latest- podman push registry.example.com/myapp:latestdeploy:stage: deployimage: quay.io/podman/stablescript:- ssh user@server "podman pull registry.example.com/myapp:latest && podman run -d --name myapp -p 80:8080 myapp:latest"
  • 使用 Podman 代替 Docker 进行构建、推送、部署,避免 Docker Daemon 的权限问题。

****Podman 与 Kubernetes 的结合

(1)Podman 生成 Kubernetes 资源

Podman 可以直接将运行的容器转换为 Kubernetes Pod:

podman run -d --name myapp -p 8080:80 nginx
podman generate kube myapp > myapp.yaml

生成的 myapp.yaml Kubernetes 配置:

apiVersion: v1
kind: Pod
metadata:name: myapp
spec:containers:- name: myappimage: docker.io/library/nginxports:- containerPort: 80hostPort: 8080
  • 该 YAML 可直接应用到 Kubernetes 集群:
kubectl apply -f myapp.yaml
(2)使用 Podman 运行 Kubernetes Pod

Podman 提供 podman play kube 命令,可以直接运行 Kubernetes YAML

podman play kube myapp.yaml
  • 适用于本地调试 Kubernetes 资源,无需完整的 Kubernetes 集群。
(3)Podman 作为 Kubernetes 节点运行 CRI-O

Podman 使用 CRI-O 作为 Kubernetes 容器运行时:

sudo dnf install -y cri-o
sudo systemctl enable --now crio

然后在 Kubernetes 中使用 Podman 作为容器运行时:

kubeadm init --cri-socket=/var/run/crio/crio.sock
  • 替代 Docker 作为 Kubernetes 的容器运行时,减少资源占用,提高安全性。

****Podman 在服务器上的运维方案

(1)Podman Systemd 管理容器

Podman 可以使用 systemd 来管理容器,实现自动启动

podman generate systemd --name myapp -f > /etc/systemd/system/myapp.service
systemctl daemon-reload
systemctl enable --now myapp
  • 支持开机自启动
  • 兼容 systemd,适用于生产环境
(2)Podman 日志管理

Podman 默认使用 journald 管理日志,可以查看容器日志:

journalctl -u myapp --no-pager

或者直接用 Podman:

podman logs -f myapp
(3)Podman Checkpoint & Restore

Podman 支持容器快照与恢复,可用于服务器故障恢复

podman container checkpoint myapp
podman container restore myapp
  • 容器状态保存,支持断电、迁移后恢复。

总结

生产环境应用具体方案
CI/CDpodman build/push 构建、推送镜像,GitLab CI/CD 集成
Kubernetespodman generate kube 转换 Kubernetes 资源,使用 play kube 运行 Pod
服务器运维systemd 自动管理容器、日志监控、Checkpoint & Restore 容器恢复

重点归纳

  • 掌握 Podman 的基本和高级用法
  • 了解 Podman 在开发与生产环境中的应用
  • 替换或兼容 Docker,提升容器管理能力

相关文章:

Podman 学习总结

Podman 概述 什么是 Podman&#xff1f; Podman&#xff08;Pod Manager&#xff09;是一个开源的容器管理工具&#xff0c;类似于 Docker&#xff0c;可以用于拉取、运行、管理容器镜像。Podman 采用 无守护进程****&#xff08;Daemonless&#xff09; 的架构&#xff0c;使…...

作业14 (2023-05-22_const修饰指针)

第1题/共5题【单选题】 C程序常见的错误分类不包含:( ) A.编译错误 B.链接错误 C.栈溢出 D.运行时错误 回答正确 答案解析: 栈溢出是运行时错误的一种,因此C程序不会将栈溢出错误单独列出来,栈溢出包含在运行时错误中。 因此:选择C 第2题/共5题【单选题】 以下关于…...

Qt 线程和 QObjects

线程和 QObjects QThread 继承于 QObject。 它发出信号来指示线程开始或结束执行&#xff0c;并提供一些插槽。 更有趣的是&#xff0c;QObjects 可以在多个线程中使用&#xff0c;发出信号以调用其他线程中的插槽&#xff0c;并向 "生活 "在其他线程中的对象发布事件…...

cocos creator 笔记-路边花草

版本&#xff1a;3.8.5 实现目标&#xff1a;给3d道路生成路边景观花草 在场景下创建一个节点&#xff0c;我这里种植两种花草模型&#xff0c;兰花和菊花&#xff0c;所以分别在节点下另创建两个节点&#xff0c;为了静态合批。 1.将花草模型分别拖入场景中&#xff0c;制作…...

基于SpringBoot+Vue3实现的宠物领养管理平台功能十六

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会经济的发展和人们生活水平的提高&#xff0c;越来越多的人开始关注并参与到宠物领养中。宠物已经成为许多家庭的重要成员&#xff0c;人们对于宠物的关爱和照顾也日益增加。然而&#xff0c;传统的宠物领养流程存在诸多不便&a…...

MOSN(Modular Open Smart Network)-05-MOSN 平滑升级原理解析

前言 大家好&#xff0c;我是老马。 sofastack 其实出来很久了&#xff0c;第一次应该是在 2022 年左右开始关注&#xff0c;但是一直没有深入研究。 最近想学习一下 SOFA 对于生态的设计和思考。 sofaboot 系列 SOFAStack-00-sofa 技术栈概览 MOSN&#xff08;Modular O…...

数据仓库pinia中,getter和actions有什么区别

将计算逻辑放在 getters 还是 actions 里&#xff0c;取决于具体的使用场景和需求&#xff0c;下面详细分析放在 getters 中的优势以及和 actions 的区别&#xff0c;以说明是否有必要放在 getters 里&#xff1a; 1. getters 的优势 缓存特性 getters 具有类似 Vue 计算属性…...

RoMA: 基于Mamba的遥感基础模型, 已开源, 首次验证mamba的scaling能力

Time: 2025-03-27T15:27:00 github: 链接 HuggingFace: 链接 摘要 近年来&#xff0c;自监督学习在视觉 Transformer&#xff08;ViT&#xff09;方面的进展推动了遥感&#xff08;RS&#xff09;基础模型的突破。然而&#xff0c;自注意力机制的二次复杂度给可扩展性带来了…...

蓝桥杯(电子类)嵌入式第十一届设计与开发科目模拟试题

一、功能概览 二、分模块实现 1、按键 新建interrupt.h和interrupt.c写中断的代码&#xff08;写法学习来自定时器-按键单击_哔哩哔哩_bilibili&#xff09; #ifndef __INTERRUPT_H #define __INTERRUPT_H#include "main.h" #include "stdbool.h"struct…...

CMLINK APN 手动设置

以下是针对 CMLINK 的 APN设置 的详细指南&#xff0c;基于常见配置需求&#xff1a; CMLINK APN 手动设置参数 参数项值说明名称CMLINK (自定义)任意命名&#xff08;如 CMLINK、CM Internet 等&#xff09;&#xff0c;建议使用ASCII字符&#xff0c;无特殊符号。APNcm.com …...

排序--快排--非递归法

一&#xff0c;引言 快排不管是hoare法还是指针法以及挖坑法&#xff0c;最终都是利用函数递归进行实现的&#xff0c;但是只要是函数递归就会有栈溢出的风险&#xff0c;为此本篇文章讲解快排的非递归法。 二&#xff0c;代码逻辑 首先要了解为什么会使用递归进行调用&…...

02 相机标定相关坐标系

标定相关坐标系 一共四个坐标系 图像像素坐标系: u-v,图像左上角为原点图像物理坐标系: x-y,图像中心为原点...

数学建模:MATLAB卷积神经网络

一、简述 卷积神经网络是一种处理具有网格结构数据的深度学习模型&#xff0c;由输入层、卷积层、池化层、全连接层、输出层组成。 输出层&#xff1a;将图像转换为其对应的由像素值构成的二维矩阵&#xff0c;并存储二维矩阵 卷积层&#xff1a;提取图像的底层特征&#xf…...

Android读写权限分析

Android系统使用的是Linux内核&#xff0c;所以Android系统沿用了linux系统的那一套文件读写权限。 目录 1&#xff0c;权限解读1.1&#xff0c;权限分为三种类型&#xff1a;1.2&#xff0c;权限针对的三类对象&#xff1a;1.3&#xff0c;文件和目录的权限区别1.3.1&#xf…...

计算机网络基础:量子通信技术在网络中的应用前景

计算机网络基础:量子通信技术在网络中的应用前景 一、前言二、量子通信技术基础2.1 量子通信的基本概念2.2 量子通信的主要原理2.2.1 量子密钥分发(QKD)原理2.2.2 量子隐形传态原理三、量子通信技术的特点3.1 绝对安全性3.2 超高通信速率潜力3.3 抗干扰能力强四、量子通信技…...

【算法学习计划】贪心算法(上)

目录 前言&#xff08;什么是贪心&#xff09; leetcode 860.柠檬水找零 leetcode 2208.将数组和减半的最少操作次数 leetcode 179.最大数 leetcode 376.摆动序列 leetcode 300.最长递增子序列 leetcode 334.递增的三元子序列 leetcode 674.最长连续递增序列 leetcode …...

Linux 目录结构(文件系统结构)示例说明

在Linux操作系统中&#xff0c;文件系统的结构是理解系统性能及管理的重要基础。每个目录都有它的特定用途&#xff0c;这使得系统管理更加清晰和高效。本文将带您逐步了解每一个重要目录及其功能。 1. 根目录 / 根目录是Linux文件系统的起点&#xff0c;所有文件和目录均从此…...

Linux下的socket演示程序2

server.cpp #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "10.148.4.168" //服…...

TiDB与Doris实操对比:深度剖析数据库选型要点

TiDB与Doris实操对比&#xff1a;深度剖析数据库选型要点 宝子们&#xff0c;在大数据处理的广阔天地里&#xff0c;TiDB和Doris都是备受瞩目的数据库解决方案。它们各自有着独特的优势和适用场景&#xff0c;对于我们开发者来说&#xff0c;深入了解它们的实操特性&#xff0…...

How to install vmware workstation pro on Linux mint 22

概述 VMware 是一家专注于虚拟化技术和云计算解决方案的全球领先软件公司&#xff0c;成立于1998年&#xff0c;总部位于美国加州。它的核心技术是通过“虚拟化”将一台物理计算机的硬件资源&#xff08;如CPU、内存、存储等&#xff09;分割成多个独立的虚拟环境&#xff08;…...

redis常用部署架构之redis分片集群。

redis 3.x版本后开始支持 作用&#xff1a; 1.提升数据读写速度 2..提升可用性 分片集群就是将业务服务器产生的数据储存在不同的机器上。 redis分片集群的架构 如上图所示&#xff0c;会将数据分散存储到不同的服务器上&#xff0c;相比于之前来说&#xff0c;redis要处…...

vim的一般操作(分屏操作) 和 Makefile 和 gdb

目录 一. vim的基本概念 二. vim基础操作 2.1 插入模式 aio 2.2 [插入模式]切换至[正常模式] Esc 2.3[正常模式]切换至[末行模式] shift ; 2.4 替换模式 Shift R 2.5 视图&#xff08;可视&#xff09;模式 (可以快速 删除//注释 或者 增加//注释) ctrl v 三&…...

DeepSeek 为何能在短时间内超过 ChatGPT?—— 技术变革与成本重构的双重胜利

2025 年 1 月 27 日&#xff0c;全球科技圈见证了一个历史性时刻&#xff1a;中国 AI 公司深度求索&#xff08;DeepSeek&#xff09;开发的同名应用&#xff0c;首次登顶美国苹果 App Store 免费下载榜&#xff0c;超越了长期霸榜的 ChatGPT。这一突破不仅打破了美国科技公司在…...

Wireshark学习

Wireshark简介 抓包前 1.打开wireshark得到下面的界面 2.选择菜单栏上捕获-> 选项&#xff0c;勾选WLAN网卡&#xff08;这里需要根据各自电脑网卡使用情况选择&#xff0c;简单的办法可以看使用的IP对应的网卡&#xff09;。点击开始。启动抓包。 3.wireshark启动后&am…...

我的创作纪念日——三周年

大家好&#xff0c;心心念念的三年之气已到&#xff0c;但是我似乎对于博客专家的身份没有那么渴望了哈哈。虽然最近比较忙&#xff0c;但是看到三周年纪念日的通知&#xff0c;还是想写一点什么&#xff0c;并不是因为三周年有多么值得纪念&#xff0c;而是这段时间确实有一些…...

Softmax 回归 + 损失函数 + 图片分类数据集

Softmax 回归 softmax 回归是机器学习另外一个非常经典且重要的模型&#xff0c;是一个分类问题。 下面先解释一下分类和回归的区别&#xff1a; 简单来说&#xff0c;分类问题从回归的单输出变成了多输出&#xff0c;输出的个数等于类别的个数。 实际上&#xff0c;对于分…...

基于云服务器的数仓搭建-hive/spark安装

mysql本地安装 安装流程&#xff08;内存占用200M&#xff0c;升至2.1G&#xff09; # 将资料里mysql文件夹及里面所有内容上传到/opt/software/mysql目录下 mkdir /opt/software/mysql cd /opt/software/mysql/ # 待上传文件 install_mysql.sh mysql-community-client-8.0.3…...

YOLO历代发展 图像增强方式 架构

YOLO1 YOLOV5 数据增强 mosaic 仿射变换(Affine)、透视变换(Perspective) 网络搭建...

Spring AI Alibaba EmbeddingModel使用

一、嵌入模型 (Embedding Model)简介 1、核心概念 嵌入模型&#xff08;EmbeddingModel&#xff09;是嵌入过程中采用的模型。 当前 EmbeddingModel的接口主要用于将文本转换为数值向量&#xff0c;接口的设计主要围绕这两个目标展开&#xff1a; 可移植性&#xff1a; 该接口…...

C++入门五式——类和对象(下)

目录 再探构造函数——初始化列表 类型转换 static成员 友元函数 内部类 匿名对象 再探构造函数——初始化列表 之前我们实现构造函数时&#xff0c;初始化成员变量主要使用函数体内赋值&#xff0c;构造函数初始化还有一种方式&#xff0c;就是初始化列表。 //初始化列…...

Spring的SPEL(Spring Expression Language)的使用说明,包含语法、示例和常见场景

以下是Spring的SPEL&#xff08;Spring Expression Language&#xff09;的使用说明&#xff0c;包含语法、示例和常见场景&#xff1a; 1. 基本语法 变量引用 表达式&#xff1a;#{变量名}&#xff08;如#{systemProperties[os.name]}&#xff09;作用域&#xff1a;在Sprin…...

Linux应用:线程进阶

线程同步之信号量 信号量&#xff08;Semaphore&#xff09;是一个整型的计数器&#xff0c;用于控制对共享资源的访问。它通过 PV 操作来实现同步&#xff0c;P 操作将信号量的值减 1&#xff0c;如果值小于 0 则线程阻塞&#xff1b;V 操作将信号量的值加 1&#xff0c;如果…...

策略模式 (Strategy)

策略模式 (Strategy) 应用场景&#xff1a;用于处理不同的任务配置参数。在你的任务中&#xff0c;可能会有不同的任务类型&#xff0c;每个任务类型可能有不同的单位&#xff08;比如米、毫米&#xff09;或不同的处理方式。策略模式可以让你根据不同的任务类型选择不同的处理…...

【YOLOv8】YOLOv8改进系列(10)----替换主干网络之UniRepLKNet

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f341;YOLOv8入门改进专栏&#x1f341; &#x1f341;如果再也不能见到你&#xff0c;祝你早安&#xff0c;午安&#xff0c;晚安&#x1f341; 【YOLOv8改进系列】&#xff1a; YOLOv8改进系列&#xff0…...

mathtype一些用法总结

1.一个是公式旁边加入||&#xff0c;一般使用键盘直接打入的会比较小&#xff0c;mathtype中的会好看很多&#xff0c;打开这个栏目&#xff0c;会看到有很多。 2.另外是带^符号&#xff0c;在字符上面带没有办法直接带&#xff0c;所以可以在mathtype中先加帽子&#xff0c;然…...

1、SQL注入攻击的防范

原文地址: SQL注入攻击的防范 更多内容请关注&#xff1a;代码安全 PHP安全编码——书写安全的代码 1、SQL注入攻击的防范 提问 问题1&#xff1a;什么是SQL注入攻击&#xff1f; 问题2&#xff1a;有几种简单方法防范SQL注入攻击&#xff1f; 问题3&#xff1a;mys…...

核心知识——论文总结

引入 本文我们会针对论文中的核心内容进行总结&#xff0c;加深小伙伴对于Spark的理解。而通过Spark的论文&#xff0c;重点需要掌握理解如下内容&#xff1a; Spark 里核心的 RDD 是一个什么概念&#xff0c;它是通过什么方式来优化分布式数据处理的&#xff0c;它的设计思路…...

HTTP 核心知识点整理

1. HTTP 基础 ​定义&#xff1a;HTTP&#xff08;HyperText Transfer Protocol&#xff09;是应用层协议&#xff0c;基于 ​请求-响应模型&#xff0c;用于客户端&#xff08;浏览器&#xff09;与服务器之间的通信。​特点&#xff1a; ​无状态&#xff1a;每次请求独立&a…...

什么是矩阵账号

矩阵账号是指在同一平台或多个平台上&#xff0c;围绕同一品牌或个人&#xff0c;创建的多个相互关联、协同工作的账号组合。这些账号虽然独立&#xff0c;但在内容定位和运营策略上有所区分&#xff0c;同时又相互引流&#xff0c;共同形成一个网络结构&#xff0c;类似于矩阵…...

【6】VS Code 新建上位机项目---项目分层

【6】VS Code 新建上位机项目---项目分层 1 项目分层(layer)2 项目分层实现数据插入SQL3 项目分层实现 (实体类封装参数)4 项目分层的实现SQL查询数据1 项目分层(layer) 表示层(UI):与用户交互使用。比如按钮,输入信息等;业务层(BLL):传递数据,业务逻辑。根据用户需…...

EspressoSample深度解析:在CircleCI上高效运行Android UI测试

项目背景与简介 EspressoSample项目位于GitHub上的circleci/EspressoSample仓库&#xff0c;该项目旨在展示如何在CircleCI平台上配置和使用Espresso进行Android应用的UI测试。 项目结构与环境准备 项目结构 EspressoSample项目遵循典型的Android项目结构&#xff0c;包含a…...

【每日论文】MetaSpatial: Reinforcing 3D Spatial Reasoning in VLMs for the Metaverse

下载PDF或查看论文&#xff0c;请点击&#xff1a; LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory探索LlamaFactory&#xff0c;为你解读AI前沿技术文章&#xff0c;快速掌握最新技术动态https://www.llamafactory.cn/daily-paper/de…...

mac m4 Homebrew安装MySQL 8.0

1.使用Homebrew安装MySQL8 在终端中输入以下命令来安装MySQL8&#xff1a; brew install mysql8.0 安装完成后&#xff0c;您可以通过以下命令来验证MySQL是否已成功安装&#xff1a; 2.配置mysql环境变量 find / -name mysql 2>/dev/null #找到mysql的安装位置 cd /op…...

Java关于多态

多态 字面意思&#xff1a;对象的多种形态。 Student(子类)<-Person(父类)->Teacher(子类) Student snew Student(); 学生形态 对象 代表用new创建一个学生对象赋值给Student 类型&#xff0c;代表Student类型(学生对象)现在是学生形态。 有了多态之后&#xff…...

K8S学习之基础四十六:k8s中部署Kibana

部署kibana组件 上传kibina镜像到harbor 部署kibana组件&#xff0c;包括svc和deplomentvi kibana.yaml apiVersion: v1 kind: Service metadata:name: kibananamespace: kube-logginglabels:app: kibana spec:ports:- port: 5601selector:app: kibana --- apiVersion: apps/…...

如何快速对比两个不同的excel文件中的单元格的数据是否完全相同 并把不同的单元格的背景颜色更改为红色?

要快速对比两个不同的Excel文件中的单元格数据是否完全相同&#xff0c;并将不同的单元格背景颜色更改为红色&#xff0c;可以使用Excel的以下几种方法&#xff1a; 方法一&#xff1a;使用条件格式 打开两个Excel文件。将一个文件的内容复制到另一个文件的新工作表中&#x…...

基于Python+LanceDB实战向量搜索

本篇实战演示向量搜索的实现和示例。 预期效果 给出一个查询的字符串&#xff0c;通过向量搜索&#xff0c;在下面三个语句中搜索出关联性最大的那句。 "熊猫是中国的国宝&#xff0c;主要栖息在四川山区。","长城是古代中国建造的军事防御工事&#xff0c;全…...

多路转接epoll

目录 一、为什么epoll最高效&#xff1f; 二、epoll的三个系统调用 三、理解epoll模型 四、epoll的优点 五、epoll的使用示例 六、epoll的工作模式 ET模式和LT模式的对比 七、epoll的使用场景 总结 一、为什么epoll最高效&#xff1f; 按照 man 手册的…...

AI编程工具哪家强?对比Cusor、Copilot、Cline

前言 AI最先革谁的命&#xff1f;刚毕业参加工作的那个时候就在想是否可以开发一个程序让它自己写代码&#xff0c;在那个遥远的年代&#xff0c;这种想法仿佛就是天方夜谭。但是今天大模型的出现让理想成为了现实。回答前面的问题&#xff0c;AI最先革谁的命&#xff0c;最聪…...

[FPGA基础学习]实现流水灯与按键暂停

FPGA实现LED流水灯 1.vscode的安装和使用 vscode下载 Visual Studio Code - Code Editing. Redefined vscode插件&#xff08;Verilog-HDL/SystemVerilog&#xff09;下载 quartus绑定vscode 2.用6个LED完成周期为1秒的跑马灯效果 流水灯模块设计 时钟输入 DE2-115开发板…...