自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 彻底搞懂 ArgoCD Application 的 path 与自动同步间隔

摘要:本文通过排查ArgoCD报错"app path does not exist",深入分析了两个关键问题:1)spec.source.path实质是Git仓库中的子目录路径,必须严格对应仓库结构;2)自动同步间隔timeout.reconciliation需通过修改argocd-cmConfigMap并重启控制器才能生效。文章详细阐述了ArgoCD的工作流程:从Git拉取代码→进入指定path→生成Manifest→同步到集群,并强调path错误会导致Manifest生成失败。最后提

2025-11-21 23:22:18 830

原创 Kubernetes 架构

摘要:Kubernetes架构分为控制平面、节点层和用户访问层。控制平面负责集群管理,包括APIServer、etcd、Scheduler和ControllerManager。节点层运行kubelet、kube-proxy和Pod。用户通过kubectl或WebUI提交请求,APIServer接收后写入etcd,ControllerManager监控状态,Scheduler调度Pod到节点,kubelet创建容器,kube-proxy处理网络。系统持续监控并维持期望状态。核心流程是用户请求→APIServe

2025-11-07 21:54:55 942

原创 使用 Go SDK 玩转 Docker:从容器到多架构构建

本文介绍了使用Go SDK操作Docker的方法,包括容器创建运行、日志捕获、镜像构建推送以及多架构构建。通过github.com/docker/docker/client包,演示了从基础操作到多平台构建的完整流程,适用于CI/CD系统、自动化平台等场景。文章提供了详细的代码示例,涵盖单架构构建、镜像推送以及通过循环构建实现多平台支持的方法,最后指出了该技术在边缘计算等领域的应用价值。

2025-09-27 10:53:40 436

原创 RabbitMQ 在实际开发中的应用场景与实现方案

RabbitMQ作为高效消息中间件,广泛应用于分布式系统开发。本文结合Go示例,介绍了其核心应用场景:系统解耦(Direct Exchange)、异步处理(Work Queue)、流量削峰(队列缓冲)、消息广播(Fanout Exchange)、延时任务(TTL+死信队列)、负载均衡(Fair Dispatch)、日志监控(Topic Exchange)、分布式事务补偿(可靠消息)和批量处理。关键实践包括消息持久化、手动ACK、幂等消费和监控告警,确保系统可靠性与高性能。RabbitMQ通过灵活的消息模型,

2025-09-13 12:03:31 763

原创 RabbitMQ 入门与 Go 语言实践

RabbitMQ是一款基于AMQP协议的开源消息队列中间件,核心价值在于解耦、异步处理和流量削峰。其架构采用生产者-交换机-队列-消费者模式,通过交换机类型(Direct/Fanout/Topic/Headers)实现灵活路由。Go语言可通过amqp091-go库操作RabbitMQ,支持连接复用、通道管理和消息发布/消费。死信队列(DLX)机制可收集处理失败的消息,通过配置死信交换机和绑定规则实现异常消息的兜底处理,确保消息可靠性。典型应用场景包括异步任务处理、系统解耦和流量控制等。

2025-09-06 11:30:30 1119 4

原创 WSL使用指南

摘要:本文介绍如何在 Windows 上使用 GoLand 结合 WSL(Windows Subsystem for Linux)高效开发 Go 项目。主要内容包括:1)安装配置 WSL 2 和 Ubuntu 发行版;2)在 GoLand 中集成 WSL 终端和 Go SDK;3)在 WSL 环境中创建和管理 Go 项目;4)结合 Docker 进行开发调试;5)性能优化与常见问题解决方案。通过 GoLand + WSL 方案,开发者可在 Windows 上享受 Linux 环境的开发优势,同时避免跨平台兼

2025-08-30 11:29:43 941

原创 MCP(模型上下文协议)

MCP(模型上下文协议)是一种让大语言模型实时调用外部能力的标准化协议,解决模型知识静态化问题。它通过MCP Server提供可调用工具(Tool)、MCP Client作为中间桥梁,实现LLM与外部应用的安全高效交互。工作流程包括:LLM决策调用、MCP执行任务并返回结果、LLM生成最终响应。MCP支持HTTP和WebSocket通信,具有标准化、实时性、可扩展性和安全性优势,适用于天气查询、企业系统调用等场景,使大模型成为能"动手"的智能助手。

2025-08-09 14:24:53 1421

原创 深入理解 Go 语言垃圾回收机制:三色标记与混合屏障

本文深入解析了Go语言的垃圾回收机制,重点介绍了三色标记算法和混合屏障技术。Go使用并发垃圾回收器,通过将对象分为白色、灰色和黑色三类进行标记清除。写屏障和读屏障的引入解决了并发修改导致的标记问题,混合屏障则结合两者的优势,确保回收准确性。文章还通过实例说明了错误回收的场景,并总结Go的GC具有并发、增量、安全的特点,在减少STW时间的同时保证内存管理正确性。理解这些机制有助于编写更高效的Go程序。

2025-08-02 14:35:14 1099

原创 数据库索引详解:原理、设计原则与应用场景

摘要:数据库索引是提高查询效率的数据结构,其设计需遵循特定原则。适合建立索引的字段包括高频查询字段、外键关联字段、排序分组字段和高区分度字段;而不适合的字段则有频繁变更字段、低区分度字段、长文本字段等。索引设计应权衡查询性能与维护成本,优先考虑联合索引,控制索引数量。合理使用索引可避免全表扫描,但过度索引会影响写入性能。核心原则是根据实际业务需求选择恰当的索引策略。(147字)

2025-07-26 15:23:57 453

原创 Docker容器原理和启动策略

Docker容器是一种轻量级虚拟化技术,基于Linux内核特性实现进程隔离和资源管理。核心原理包括:Namespaces(提供进程、网络等隔离)、Cgroups(限制CPU/内存等资源)和UnionFS(构建分层镜像)。容器启动时由Docker CLI→Daemon→containerd/runC调用内核功能创建隔离进程。Docker支持多种自动重启策略(no/always/on-failure/unless-stopped),通过--restart参数控制宿主机重启后容器的行为。相比虚拟机,容器启动更快(

2025-07-19 17:09:32 853

原创 Go语言中的Options模式

摘要 Go语言的Options模式通过函数式配置方式优化多参数传递,提升代码灵活性与可读性。其核心是使用结构体存储配置,并通过选项函数(如WithHost、WithPort)动态修改字段,避免冗长参数列表。该模式支持默认值、可选参数和易扩展性,适用于HTTP客户端、数据库连接等场景。优势包括解耦业务逻辑、增强维护性及清晰表达可选配置。示例展示如何用Options模式初始化数据库连接,体现其简洁性和实用性。

2025-07-12 21:59:58 484

原创 .golangci.yml文件配置

这是一份Go语言代码检查工具的配置文件摘要。文件定义了多维度代码质量检查规则,包括:1) 基础运行配置(5分钟超时,10并发);2) 启用revive和cyclop等主流linter;3) 详细设置静态检查参数,包含87项SA/S/ST类检查项和11项QF快速修复规则;4) 自定义revive规则,如强制120字符行宽、变量命名规范等;5) 格式化工具启用gofmt/goimports/golines;6) 测试文件(_test.go)自动排除。配置突出对代码规范、潜在错误和性能问题的严格检测。

2025-07-06 21:09:54 767

原创 goroot和gopath是干嘛的?

作用:它用于指定 Go 的安装目录,Go 工具链(如编译器、go run、go build 等)会通过 GOROOT 环境变量找到 Go 语言的标准库和工具链。默认路径:在安装 Go 语言时,GOROOT 会自动设置为 Go 的安装目录。例如,如果你是通过官方安装包安装 Go,GOROOT 默认路径通常是:注意:你通常不需要手动设置 GOROOT,除非你有特殊的自定义安装。Go 会自动根据安装路径设置 GOROOT。

2025-06-29 20:06:41 832

原创 Go堆内存管理

Go堆内存管理。

2025-06-22 16:47:30 813

原创 操作系统多级存储模型

本文概述了操作系统的多级存储模型及其动态切换机制。存储系统通过分级设计平衡速度和成本,关键策略包括:1)硬件控制的CPU缓存机制(Cache命中/不命中及替换算法);2)操作系统管理的虚拟内存(页表映射、缺页中断处理和页面置换算法);3)文件系统缓存(Page Cache加速文件访问);4)应用层缓存(如Redis)。这些机制协同工作,实现大容量存储与高效访问的平衡。

2025-06-14 19:25:34 476

原创 Go语言堆内存管理

摘要: Go语言的堆内存管理借鉴了TCMalloc的设计理念,采用分层模型管理内存。其核心概念包括:8KB大小的Page作为基本单位;mspan作为多个Page的集合,包含对象分配信息;以及Size Class对对象大小的精细分类。mspan结构体通过allocBits和allocCache实现高效对象分配,采用位图标记空闲对象,并通过缓存优化分配速度。系统将内存划分为不同大小的Object,由mspan管理多个相同大小的Object,实现高效的内存分配与回收机制。这种设计兼顾了内存分配性能和空间利用率。

2025-06-07 18:27:18 598

原创 go语言的GMP(基础)

摘要 Go语言的并发模型基于GMP调度机制,其中G(Goroutine)是轻量级线程,可实现高效并发;P(Processor)是调度器,负责管理G的执行;M(Machine)代表操作系统线程。GMP的核心特点包括: 动态绑定:M需绑定P才能调度G,P的数量决定最大并行G数量(GOMAXPROCS)。 多级队列:G存储于P本地队列(优先无锁调度)、全局队列及阻塞队列(如I/O等待),优化锁竞争。 负载均衡:通过work-stealing机制,空闲P从其他P偷取G,避免资源不均。 该模型结合用户态调度的轻量性和

2025-06-01 12:54:51 930

原创 Go语言Map的底层原理

本文摘要: Go语言中的map是一种基于哈希表的键值对存储结构,具有O(1)时间复杂度的读写操作。其核心特性包括:键必须可比较,并发读写不安全会引发fatal error。实现原理采用哈希桶数组+溢出桶的混合方案,每个桶最多存储8个键值对,使用tophash数组加速查找。当负载因子>6.5时触发双倍扩容,采用渐进式迁移策略分散性能开销。map通过结构化拉链法(桶内开放寻址+溢出桶链表)解决哈希冲突,并支持等量扩容优化热点key场景。扩容时利用哈希值位运算实现高效数据迁移。

2025-05-25 13:22:20 847 1

原创 Kafka Go客户端--Sarama

在Go语言中,有多个Kafka客户端可供选择,其中Sarama、segmentio/kafka-go和confluent-kafka-go是较为知名的三个。Sarama是目前用户数量最多的客户端,最初由Shopify开发,现由IBM维护。segmentio/kafka-go虽然没有显著缺点,但功能相对基础。confluent-kafka-go则需要启用cgo,跨平台支持较差,且不支持交叉编译。 Sarama提供了命令行工具,可以用于简单的消费者和生产者操作。安装Sarama工具时,可以通过设置Go代理来加速

2025-05-13 22:26:01 2325

原创 Kafka的基本概念和Dokcer中部署Kafka

Kafka是消息队列的一种实现,类似的还有RocketMQ 和 RabbitMQ这种形态下,生产者和消费者就解耦了。

2025-05-11 14:08:57 790

原创 go语言实现用户管理系统

go语言实现用户管理系统

2025-05-04 13:03:18 1298

原创 Go context 包的底层实现原理

Go语言 context包的底层实现原理。

2025-04-26 13:22:16 812

原创 二进制枚举算法

二进制枚举算法

2025-04-20 11:29:48 291

原创 Gin框架中Engine的作用

对象是框架的核心,承担着路由管理、中间件集成、请求处理链协调等核心职责。存储所有 HTTP 方法(GET/POST 等)对应的路由树,每个节点包含路径片段和处理链(错误恢复),中间件按注册顺序形成处理链,每个请求依次执行中间件逻辑。的数据结构中,实现高效路径匹配(时间复杂度 O(k))。会将路径和处理链挂载到对应 HTTP 方法的路由树中。对象,减少频繁创建销毁的性能损耗,提升高并发处理能力。管理所有路由规则,支持动态路由(如参数化路径。,封装请求和响应数据,提供参数解析(如。管理路由分组逻辑,通过。

2025-04-13 12:26:42 547

原创 Supervisor的安装和使用

在 CentOS 8 虚拟机环境中使用 Supervisor,不仅可以通过 pip 轻松安装和配置,还能借助 systemd 将其管理为系统服务,实现自动启动和故障恢复。通过合理的配置和日志管理,Supervisor 能够帮助你稳定、高效地运行和监控各类应用程序。

2025-04-05 16:19:23 1340

原创 浏览器指纹,字体指纹,Canvas指纹

浏览器指纹,字体指纹,Canvas指纹

2025-03-30 14:01:40 481

原创 go语言中的strings库

go语言中的strings库

2025-03-22 12:20:51 1140

原创 cookie和session

cookie和session的工作流程,cookie和session的区别

2025-03-16 12:10:03 1013

原创 TCP和UDP

TCP和UDP,以及TCP的三次握手和四次挥手

2025-03-09 12:30:48 787

原创 基于go语言实现的聊天室

使用go-redis实现聊天室

2025-03-09 12:18:01 331

原创 Redis基础

redis

2025-03-02 12:12:03 580 1

原创 Mysql进阶篇

mysql,存储引擎,索引,sql优化,视图,存储过程,触发器,锁,事务

2025-02-23 12:49:26 927

原创 MySQL基础篇

mysql基础

2025-02-15 19:23:43 910

原创 linux进程查看和管理

linux进程查看和管理

2025-02-09 15:05:15 2307

原创 Go语言中的Select

go select

2025-01-25 19:42:13 790

原创 go面向对象

面向对象

2025-01-19 20:42:14 491

原创 RandomAccessFile详解

是 Java 中一个功能强大的文件访问类,它既可以读取文件,也可以写入文件,而且可以在文件的任意位置进行读写操作。它的名字 “Random Access” 表明了其最重要的特点:它允许用户在文件中随机访问任意位置的数据,既支持顺序操作,也支持非顺序(随机)操作。在一些应用场景下,例如日志文件、数据库文件、或者需要频繁读取和写入的文件时,的灵活性和随机访问能力使得它成为处理大文件、部分读取文件以及需要频繁定位和修改文件内容的理想工具。:可以分别读取 4 字节的整数、8 字节的长整数、8 字节的浮点数。

2024-09-26 11:33:47 1861

原创 静态代理和动态代理

静态代理适用于简单的场景,但在面对复杂需求时,动态代理更为合适。动态代理通过在运行时生成代理类,提供了极大的灵活性和扩展性,使得代码更具模块化和可维护性。它广泛应用于框架开发、AOP编程、RPC调用等领域,是Java编程中非常重要的技术手段。

2024-09-03 20:43:46 915

原创 Spring中事务失效的几种情况

在Spring中,事务管理是一个非常重要的功能,用于确保数据库操作的一致性和完整性。然而,有时候事务管理会失效,导致操作不能按照预期回滚或提交。

2024-08-04 21:23:49 1314 2

原创 @RequestParam,@PathVariable,@RequestBody三者分别适合在Get,Put,Post,Delete那种请求上使用,前端传数据的类型分别是json,x-www-form

这三个注解分别适合处理不同类型的请求和前端传递的数据格式。根据这些指导原则,可以根据请求的性质和数据传输的方式选择合适的注解来处理参数和数据。在Spring框架中,

2024-07-09 21:53:42 472

空空如也

空空如也

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

TA关注的人

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