自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

@

学习分享和记录

  • 博客(201)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 spice-gtk视频流解码延迟一帧问题

spice-gtk使用GStreamer解码H.264/H.265视频流时,h264parse因缺少流格式信息需要缓存一帧数据来探测格式,导致固定一帧延迟。通过在appsrc caps中显式声明,消除了这一不必要的缓冲。

2026-02-28 10:17:59 1095

原创 kubectl 常用命令

场景命令查看集群信息查看所有节点查看所有 Pod查看 Pod 日志查看资源详情进入容器端口转发更新镜像回滚扩缩容查看事件查看资源使用生成 YAML 模板对比差异权限检查等待就绪强制删除重启 Pod。

2026-02-26 11:48:32 482

原创 StatefulSet 详解:有状态应用的编排与管理

稳定网络标识:固定 Pod 名与 DNS有序部署扩缩:按序创建与逆序删除持久化存储:每 Pod 独立 PVC需要配合 Headless Service 使用。典型场景:数据库(MySQL、PostgreSQL)、缓存集群(Redis)、消息队列(Kafka、RabbitMQ)、分布式协调(ZooKeeper、etcd)等。特性说明网络标识Headless Service + 固定 Pod 名有序性OrderedReady(默认)或 Parallel更新。

2026-02-26 11:27:53 649

原创 生产环境最佳实践:资源管理、高可用与安全加固

VPA 根据 Pod 实际使用情况自动调整 requests/limits,适用于难以预估资源的工作负载。VPA 模式Off(仅建议、不自动应用)、Initial(仅创建时应用)、Recreate(运行时也可调整,需重建 Pod)。与 HPA 混用:两者同时基于 CPU/内存时可能冲突。建议 HPA 负责横向扩缩容,VPA 使用仅提供建议,人工评审后调整。部署 VPA。

2026-02-20 11:00:00 771

原创 实战:在 Kubernetes 上部署微服务应用

部署顺序:Namespace + ConfigMap + Secret → 数据库 → 业务服务 → 前端 + Ingress + HPA。生产检查清单:设置 requests/limits、配置 liveness/readiness、使用 Pod 反亲和性、HPA 自动扩缩容、敏感信息用 Secret、数据用 PVC 持久化。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;

2026-02-20 09:30:00 1565

原创 Kubernetes 可观测性:Prometheus 监控、日志采集与告警

支柱核心问题典型工具数据形态Metrics发生了什么?当前状态如何?时序数值(CPU、QPS、延迟)Logging为什么发生?具体事件是什么?EFK、Loki离散事件、文本流Tracing在哪个环节发生?调用链如何?分布式 Trace、SpanMetrics用于趋势分析、容量规划与告警阈值判断;Logging用于故障排查、审计与根因分析;Tracing用于跨服务性能瓶颈定位与延迟分解。三者互补,缺一不可。在微服务架构中,单次请求会经过多个服务。链路追踪通过Trace ID串联各服务的Span。

2026-02-19 14:45:00 557

原创 Helm 详解:Kubernetes 应用包管理与部署

概念说明Chart应用打包格式,含模板与默认配置ReleaseChart 的安装实例Values配置参数,支持多环境覆盖Hooks生命周期钩子fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;Helm 核心能力一键部署多环境配置版本管理与回滚依赖管理社区 Chart 生态。

2026-02-19 10:15:00 1534

原创 RBAC 详解:基于角色的访问控制与集群安全

对象作用定义权限(谁、对什么资源、做什么操作)将权限授予主体Pod 访问 API 的身份Pod/容器安全配置fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;RBAC 四大对象定义权限授权最小权限原则。

2026-02-18 09:45:00 982

原创 Kubernetes 网络模型:Pod 通信、Service 网络与 CNI

组件职责CNIPod 网络分配与管理,跨节点通信kube-proxyService ClusterIP 转发,iptables/IPVS 规则CoreDNS集群内 DNS 解析,服务发现网络访问控制,依赖 CNI 实现fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;CNI 插件Pod 网络kube-proxyService 网络。

2026-02-18 09:15:00 1718

原创 Ingress 详解:HTTP 路由与外部流量管理

Gateway API 是 Kubernetes 社区推荐的下一代 Ingress 规范,提供更丰富的路由与角色分离能力。对比项Ingress角色分离无支持集群管理员 / 应用开发者分离高级路由依赖 Annotations标准化 Header 匹配、流量分割协议支持主要为 HTTP/HTTPSfill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;

2026-02-17 14:45:00 870

原创 SPICE全链路分析(五):剪贴板共享与文件传输——VDAgent双向通信

剪贴板客户端→Guest:owner-change → GRAB → 服务端过滤并中转 → Guest收到GRAB;用户粘贴 → Guest发REQUEST → 客户端request → CLIPBOARD(data) → 服务端中转 → Guest粘贴剪贴板Guest→客户端:流程对称,GRAB/REQUEST/CLIPBOARD方向相反:按copy_paste_enabled、file_xfer_enabled过滤,满足安全策略文件传输。

2026-02-17 10:00:00 1595

原创 SPICE全链路分析(四):输入事件的旅程——从键盘按下到Guest响应

键盘:GTK key_event → keyval_to_scancode → spice_inputs_channel_key_press → SPICE_MSGC_INPUTS_KEY_DOWN/UP → InputsChannelClient::handle_message → kbd_push_scan → SpiceKbdInterface::push_scan_freg → 虚拟键盘 → Guest鼠标SERVER模式。

2026-02-17 09:15:00 1037

原创 SPICE全链路分析(三):视频流——从屏幕变化检测到GStreamer播放

检测:通过连续帧数、渐变特性、区域大小判断视频区域,避免误检编码:多编码器支持(GStreamer H.264/VP8、MJPEG),per-client独立码率传输:Stream CREATE/DATA/CLIP/DESTROY 消息序列解码:客户端对称的解码管线反馈:Stream Report 驱动自适应码率,形成质量闭环整个设计兼顾了带宽效率、多客户端、自适应和实现可扩展性,是SPICE协议中较为复杂的子系统之一。

2026-02-16 11:30:00 1318

原创 DaemonSet、Job 与 CronJob:节点级与批处理工作负载

DaemonSet 确保集群中每个节点(或满足条件的节点)上恰好运行一个 Pod 副本。新增节点时自动部署,节点移除时自动清理对应 Pod。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;K8s 集群Node 3fluentdApp PodNode 2fluentdApp PodNode 1fluentdApp Pod。

2026-02-16 11:15:00 970

原创 SPICE全链路分析(二):图形渲染管线——从QXL命令到屏幕像素

一次的完整生命周期,从 Guest 驱动写入命令环开始,经 RedWorker 解析、DisplayChannel 处理、图像压缩、消息序列化、网络传输,到客户端 DisplayChannel 接收、Canvas 解码绘制、SpiceDisplay 渲染到屏幕,涉及十余个模块的协同。理解这一全链路,对调试渲染问题、优化延迟和带宽至关重要。环节服务端关键函数/组件客户端关键函数/组件命令获取命令解析图像压缩序列化发送网络RedStreamRedStream接收解码Canvas 绘制屏幕渲染。

2026-02-16 10:00:00 1984

原创 SPICE全链路分析(一):连接建立——从TCP握手到通道就绪

TCP连接:服务端监听+accept,客户端通过SpiceSession/SpiceChannel建立连接。TLS(可选):服务端在TLS端口accept后启用SSL;客户端按需进行SSL握手和证书验证。Link握手:客户端发送SpiceLinkMess;服务端异步读取链处理,并回复SpiceLinkReply。认证:根据能力选择Ticket或SASL,完成身份验证。Main Channel初始化:服务端分配connection_id,发送SPICE_MSG_MAIN_INIT;

2026-02-16 09:00:00 991

原创 Volume 与持久化存储:PV、PVC 与 StorageClass

CSI(Container Storage Interface)是容器存储标准化接口,K8s 通过 CSI 与各类存储系统对接。驱动用途AWS EBSceph-csiNFS 动态供给longhornLonghorn 分布式存储类型用途emptyDirPod 级临时存储hostPath节点绑定,谨慎使用配置与元数据注入PV / PVC持久化存储标准方式动态供给,自动化CSI标准化存储接口核心理念:存储与计算分离;

2026-02-15 11:00:00 731

原创 spice-gtk源码分析(十):协程、网络IO与文件传输

协程系统:提供轻量级的协作式多任务,支持多种后端实现GIO集成:将协程与GLib的IO系统无缝集成,支持socket和条件等待BIO桥接:将GIOStream包装为OpenSSL BIO,实现TLS支持WebDAV通道:通过多路复用协议实现文件传输功能Port通道:提供通用的数据传输能力,支持各种协议QMP端口:基于Port通道实现QEMU监控协议这种设计使得spice-gtk能够高效处理网络IO,同时保持代码的清晰和可维护性。

2026-02-15 09:45:00 861

原创 spice-gtk源码分析(九):USB设备重定向

设备管理:通过SpiceUsbDeviceManager统一管理USB设备列表和连接状态过滤机制:支持灵活的过滤规则控制自动连接行为异步操作:所有设备连接操作都是异步的,避免阻塞UI权限处理:通过polkit和ACL助手处理Linux权限问题数据压缩:支持LZ4压缩减少网络传输量CD共享:支持将ISO镜像作为USB设备共享错误处理:完善的错误处理和恢复机制这种设计使得spice-gtk能够提供可靠的USB重定向功能,同时保持良好的用户体验。

2026-02-15 09:15:00 906

原创 kube-scheduler 详解:调度策略、亲和性与污点容忍

当 Pod 的nodeName为空时,kube-scheduler 为其选择节点。流程分为:入队、过滤(Filtering)、打分(Scoring)、绑定(Binding)。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;新 Pod 创建调度队列过滤阶段打分阶段绑定阶段通知 kubelet说明:调度队列按优先级排序;

2026-02-14 10:55:02 530

原创 spice-gtk源码分析(八):音频播放与录制

抽象设计:通过SpiceAudio基类提供可扩展的架构GStreamer集成:使用GStreamer处理所有音频I/O和格式转换编解码支持:支持RAW和OPUS格式,自动选择最佳编码延迟管理:通过mm_time同步机制管理播放延迟音量控制:支持从服务器同步音量,并应用到系统音频设备异步处理:使用协程和GStreamer的异步API实现非阻塞操作这种设计使得spice-gtk能够提供高质量的音频体验,同时保持代码的清晰和可维护性。

2026-02-14 10:15:00 1646

原创 spice-gtk源码分析(七):输入通道与光标处理

负责将本地输入事件转发到服务器,支持键盘、鼠标相对/绝对坐标模式,以及键盘锁定键同步负责接收并显示远程光标,支持多种光标格式和缓存机制两个通道通过GObject信号和属性通知机制与应用程序交互使用协程上下文处理消息,确保非阻塞的异步操作这种设计使得spice-gtk能够提供流畅的远程桌面输入体验,同时保持代码的清晰和可维护性。

2026-02-14 09:15:00 1481

原创 spice-gtk源码分析(五):DisplayChannel与图像解码

Surface管理:支持主Surface和离屏Surface的创建、销毁和重用图像解码:支持GLZ、JPEG、ZLIB等多种压缩格式缓存机制:图像和调色板缓存提高解码效率视频流:支持GStreamer和MJPEG两种解码后端GL Scanout:支持DMA-BUF零拷贝显示多显示器:支持多显示器配置管理DisplayChannel的设计充分利用了现代图形技术,通过硬件加速、零拷贝、智能缓存等机制实现了高效的图形显示。

2026-02-14 09:00:00 708

原创 ConfigMap 与 Secret:配置与敏感数据管理

metadata:data:---metadata:Secret 字段说明字段类型说明typestringOpaque、kubernetes.io/dockerconfigjson、kubernetes.io/tls 等datamap键值对,值为 Base64 编码stringDatamap键值对,值为明文,K8s 自动 Base64 编码后写入 dataimmutablebool设为 true 后不可修改(Kubernetes 1.21+)

2026-02-14 09:00:00 1373

原创 namespace:资源隔离与多租户管理

Namespace 是 Kubernetes 提供的逻辑分区机制,将集群内的资源按不同环境、团队或项目进行组织。不同 Namespace 中的资源名可以相同,互不冲突;每个 Namespace 可以有独立的 ResourceQuota 和 LimitRange;配合 RBAC 可实现对不同团队的访问控制。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;

2026-02-14 08:30:00 680

原创 Service 详解:服务发现与负载均衡机制

要点说明核心作用解决 Pod IP 不稳定、多副本负载均衡和服务发现问题类型选择ClusterIP(集群内)、NodePort(简单外部访问)、LoadBalancer(生产云环境)、ExternalName(访问集群外服务)转发机制DNSCoreDNS 提供解析特殊类型Headless Service(直接解析 Pod IP)、ExternalName(CNAME 到外部)

2026-02-13 18:48:27 987

原创 Deployment 与 ReplicaSet:副本管理与滚动更新

核心概念说明层级关系Deployment → ReplicaSet → Pod,三级控制器链,通过 ownerReferences 关联滚动更新逐步替换旧 Pod 为新 Pod,通过 maxSurge / maxUnavailable 控制更新节奏版本回滚历史 ReplicaSet 副本缩为 0 保留,回滚时重新扩容目标版本弹性伸缩手动或 HPA 根据 CPU/内存等指标自动调整副本数自愈能力Pod 终止后 ReplicaSet 控制器自动创建新副本,维持期望状态状态监控。

2026-02-13 10:48:19 589

原创 Pod 详解:Kubernetes 最小调度单元 Pod

Pod 是 Kubernetes 最小调度单元,一组容器共享网络和存储。一般一个 Pod 运行一个主容器,多容器场景使用 Sidecar、Ambassador、Adapter 等模式。生产环境应通过 Deployment 等控制器管理 Pod,避免直接创建裸 Pod。Pod 是临时资源,可能因节点故障、驱逐、更新等原因被重建。

2026-02-13 10:22:56 768

原创 工作节点组件详解:kubelet、kube-proxy 与容器运行时

组件职责kubelet节点代理,管理 Pod 生命周期、汇报状态、执行健康检查kube-proxy维护网络规则,实现 Service 负载均衡与流量转发通过 CRI 拉取镜像、创建和运行容器所有组件仅与 API Server 通信,不直接访问 etcd。CRI 使 Kubernetes 不依赖特定容器运行时。

2026-02-13 10:11:53 947

原创 spice-gtk源码分析(六):SpiceDisplay GTK渲染控件

渲染后端:支持Cairo软件渲染和EGL硬件加速两种后端输入处理:将GTK输入事件转换为SPICE协议消息键盘映射:支持多平台的键码到扫描码转换抓取机制:实现键盘和鼠标抓取,确保输入发送到Guest缩放变换:支持多种缩放模式和变换多显示器:支持多显示器配置和区域选择桌面集成:剪贴板同步、文件拖放、USB自动重定向Wayland支持:使用Wayland扩展协议实现更好的集成SpiceDisplay的设计充分考虑了不同平台和场景的需求,通过灵活的配置选项和多种渲染后端,实现了高效的远程桌面显示。

2026-02-13 10:00:00 1679

原创 spice-gtk源码分析(四):MainChannel与Agent通信

Agent通信管理:通过消息队列和流控机制实现可靠的Agent通信剪贴板共享:支持多选择剪贴板,使用序列号防止竞态条件文件传输:异步任务模式,支持多文件批量传输和进度回调鼠标模式:灵活切换客户端/服务器模式以适应不同场景显示器配置:管理多显示器配置,支持稀疏模式和延迟更新迁移协调:处理虚拟机迁移过程中的状态同步MainChannel的设计体现了SPICE协议在功能丰富性和可靠性之间的平衡,通过能力检测、流控、序列号等机制确保了各种操作的可靠性。

2026-02-13 09:30:00 645

原创 spice-gtk源码分析(三):SpiceChannel基类与通道框架

连接管理:TCP连接、TLS握手、SPICE协议握手协程异步IO:使用协程实现异步IO,代码清晰易读消息收发:完整的消息序列化和反序列化机制能力协商:与服务器协商支持的功能状态机:管理通道的连接状态流量控制:ACK机制和背压控制消息处理框架:可扩展的消息处理注册机制理解的实现对于理解整个spice-gtk客户端的工作机制至关重要,也为实现新的通道类型提供了基础框架。

2026-02-13 09:00:00 1394

原创 控制平面组件详解:API Server、etcd、Scheduler 与 Controller Manager

etcd 是一个分布式键值存储数据库,存储着集群的所有状态数据。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;存储内容示例etcd分布式键值存储Raft 一致性算法gRPC 接口etcd 使用 Raft 协议保证一致性,通过 gRPC 提供服务。

2026-02-12 18:50:43 902

原创 Kubernetes 集群架构概述

核心概念说明控制平面由 API Server、etcd、Scheduler、Controller Manager 组成,负责全局决策和状态管理数据平面由 Worker 节点组成,每个节点运行 kubelet、kube-proxy 和 Container Runtime通信模型所有组件仅通过 API Server 通信,API Server 是唯一的 etcd 访问入口事件驱动组件通过 Watch 机制实时监听资源变化并响应,而非轮询高可用。

2026-02-12 18:07:40 813

原创 容器技术演进与 Kubernetes 的诞生

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;虚拟化技术容器技术规模化管理需求物理机部署资源利用率低虚拟机部署隔离好但开销大容器部署轻量高效容器编排Kubernetes上图概括了部署方式的技术演进路径,每一阶段的演进都由前一阶段的技术局限性驱动。要点说明技术演进物理机 → 虚拟机 → 容器 → 容器编排K8s 定位。

2026-02-12 17:39:19 951

原创 spice-gtk源码分析(二):SpiceSession与连接管理

连接管理:TCP连接、SSL/TLS握手、SASL认证通道生命周期:创建、管理和销毁所有通道配置管理:通过GObject属性系统管理连接参数迁移支持:处理虚拟机热迁移资源管理:管理图像缓存、GLZ解码窗口等共享资源理解的实现对于理解整个spice-gtk客户端的工作机制至关重要。

2026-02-12 10:30:00 1191

原创 spice-gtk源码分析(一):整体架构与核心组件

连接管理:管理到SPICE服务器的连接,包括TCP连接、SSL/TLS握手、SASL认证通道生命周期:创建、管理和销毁所有通道配置管理:存储连接参数(host、port、password等)迁移支持:处理虚拟机热迁移资源管理:管理图像缓存、GLZ解码窗口等共享资源char *host;// 服务器地址char *port;// 普通端口// TLS端口// 密码// CA证书文件// SSL验证标志// 只读模式// Main Channel(弱引用)// 所有通道列表。

2026-02-12 09:45:00 917

原创 SPICE源码分析(十四):设备重定向(USB与智能卡)

通道类型用途协议SMARTCARD智能卡重定向VSCUSBREDIRUSB重定向usbredirWEBDAV文件共享WebDAVPORT通用端口自定义设计特点:统一框架:RedCharDevice提供通用字符设备抽象压缩优化:LZ4压缩减少网络开销背压控制:防止数据堆积和DoS迁移支持:设备状态随VM迁移安全传输:依赖TLS加密。

2026-02-11 10:00:00 525

原创 SPICE源码分析(十三):QXL设备与命令解析

/ QXL设备实例,每个虚拟显卡对应一个// 基础实例(包含接口指针)int id;// 设备ID(多显卡时区分)// SPICE内部状态组件职责QEMU实现的设备接口QXLStateSPICE内部状态命令环Guest-Host共享队列内存槽安全的内存访问命令解析QXL格式到SPICE格式设计特点:零拷贝:直接访问Guest内存异步通知:减少CPU轮询安全访问:内存槽验证防越界资源管理:RAII自动释放兼容性:支持旧版本命令格式。

2026-02-11 09:00:00 803 1

原创 SPICE源码分析(十二):网络传输与安全机制

机制功能配置SSL/TLS传输加密证书、私钥、CASASL身份认证机制列表、SSFWebSocket浏览器支持自动检测安全建议:始终启用TLS:使用TLS 1.2或更高版本配置强密码套件:禁用弱密码客户端证书:高安全环境使用双向认证定期更新:保持OpenSSL库更新。

2026-02-10 10:45:00 728

【Python自动化标注】基于LabelStudio的图像标注集成:实现高效图像数据处理与标注任务自动化

本文将按照以下结构进行组织: 1. 引言:介绍图像标注的背景和意义,阐述Python自动化标注与LabelStudio集成的重要性,明确文章的目标和受众,并对 文章的整体结构进行概述。 2. Python自动化标注概述:对Python自动化标注的基本概念、原理和优势进行详细介绍,让读者对Python在自动化标注领 域的应用有一个全面的了解。 3. LabelStudio简介:介绍LabelStudio的功能特点、界面布局和使用方法,包括如何创建项目、定义标注任务、配置标注界 面等,为后续的集成工作打下基础。 4. 环境搭建:详细介绍在本地环境中安装和配置Python和LabelStudio的步骤,包括所需的依赖库和工具的安装,确保读者 能够顺利搭建起开发环境。 5. LabelStudio与Python的集成:讲解如何使用Python脚本与LabelStudio的API进行交互,实现数据的上传、标注任务的 创建和分配、标注结果的下载等功能,完成Python与LabelStudio的集成。 6. 图像标注任务的自动化实现:通过具体的示例代码,详细介绍如何使用Python脚本实现图像标注任务的自动化,包括图像 的预处理、标注规则的定义、标注任务的批量创建等,让读者掌握自动化标注的核心技术。 7. 高级功能拓展:介绍LabelStudio的一些高级功能,如自定义标注界面、使用机器学习模型辅助标注等,并讲解如何通过 Python脚本实现这些高级功能的拓展,提升标注的效率和质量。 8. 错误处理与优化策略:分析在集成过程中可能遇到的问题和错误,并提供相应的解决方案和优化策略,帮助读者解决实际 开发中遇到的困难。 9. 案例分析:通过实际的案例,展示Python自动化标注与LabelStudio集成在不同领域的应用场景和效果,让读者更加直观 地了解该技术的实际应用价值。

2025-06-23

C++ STL源码

C++ STL标准库源码、包含STL的所有容器、迭代器、内存池的实现

2019-07-16

蓝牙控制小车(QT on Android)源码

用QT编写的蓝牙控制小车的移动源码,包含蓝牙的搜索、连接、发送数据

2018-05-23

中国象棋Chess.rar

基于QT实现的中国象棋游戏,有联网对战、人机对战、同机对战三种模式

2019-07-15

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除