自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入理解Golang中的锁机制

Go 语言(Golang)提供了丰富的同步原语来管理并发,其中包括互斥锁(Mutex)、读写锁(RWMutex)和条件变量(Cond)等。本文将深入探讨它们的底层实现、适用场景,并通过示例代码分析如何高效使用 Go 的锁机制。1. 为什么需要锁?在多线程(Goroutine)并发环境中,竞态条件(Race Condition)可能会导致数据不一致、内存访问冲突等问题。Go 的锁机制提供了一种方式,确保在某一时刻只有一个 Goroutine 能够访问共享资源。典型竞态条件示例counter++

2025-12-19 15:53:48 1087

原创 深入理解Go语言errors.As方法:灵活的错误类型识别

errors.As是Go错误处理工具箱中一个强大的函数,它为我们提供了一种类型安全的方式来检查和提取错误链中的特定错误。与类型断言相比,它能更优雅地处理被包裹的错误,是Go 1.13+错误处理范式的核心组件之一。正确理解和使用errors.As可以帮助我们写出更健壮、更易于维护的错误处理代码,特别是在处理来自多个层次的复杂错误时。在编写库代码或在大型应用中处理错误时,考虑实现自定义As方法可以提供更大的灵活性。通过本文的示例和场景分析,希望读者能够掌握errors.As。

2025-12-17 20:24:21 738

原创 《MCP助手实战:构建远程文件下载工具》

通过 Tool 功能实现对目标链接文件保存到本地任意位置通过 Prompt 提供交互模板通过 Resource 展示本地资源。

2025-12-08 02:39:33 762

原创 Golang--NetPoll机制

它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。可以看到,一个连接的数据读写,如果条件不满足,goroutine都会挂起并挂载到pollDesc的rg、wg中,但此时用户程序主线程不会阻塞,而是等待底层数据到达后,再进行处理。poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的.

2025-12-01 15:38:32 1008

原创 Golang BufIo

让我用一个更直观的方式来解释这个关键问题。想象你在网购书籍的场景,就能完全理解两者的性能差异了。

2025-11-28 00:42:38 238

原创 Http2.0与Websocket

HTTP/2.0 和 WebSocket 是两种完全不同的网络协议,设计目标和应用场景有本质区别。

2025-11-27 18:13:58 584

原创 Mysql中的内存碎片

通过系统化的碎片管理,可以降低内存不科学的OOM的发生概率,可以用配合mysqldump进行预防性维护。

2025-11-27 17:47:32 815

原创 Golang map深度解析

Go 语言中只要是可比较的类型都可以作为 key。除开 slice,map,functions 这几种类型,其他类型都是 OK 的。具体包括:布尔值、数字、字符串、指针、通道、接口类型、结构体、只包含上述类型的数组。这些类型的共同特征是支持 == 和!= 操作符,k1 == k2 时,可认为 k1 和 k2 是同一个 key(除了NaN)。

2025-11-26 21:48:03 854

原创 一文带你了解 ModelContextProtocol

概念介绍的差不多了,作为 AI 模型的能力拓展,近几个月来,MCP概念爆火,网上的MCP平台展览了许多实用的MCP。做 AI 应用开发,掌握这个能力势在必得,希望这篇文章能帮助到大家。

2025-11-25 02:41:51 937

原创 Kafka和RocketMQ 你怎么选?

RocketMQ 是业务场景驱动的妥协艺术,Kafka选择"通用管道"路线,保证极致性能的同时更通用,更好的支持大数据应用场景,RocketMQ则定位"企业级中枢",专门处理企业的复杂业务场景保证业务的高可用和强事务。

2025-11-19 01:29:10 528

原创 Redis缓存策略

1、追求强一致性的情况下,采用写穿透与读穿透策略2、在更新不频繁的情况下,采用旁路缓存是一个好的选择3、在更新频繁且保持最终一致性的情况下,异步缓存写入是一个不错的选择请求方式QPS平均延迟99分位延迟纯数据库查询1,20083ms210ms仅二级缓存25,0003.8ms12ms二级+一级缓存180,0000.6ms2ms。

2025-11-18 03:03:38 628

原创 一文带你了解Golang GMP

Go语言的GMP调度模型是其高效并发机制的核心,它是一种协作式调度与抢占式调度相结合的混合调度模型。下面我将详细介绍GMP的三个核心组件及其协作原理。

2025-11-11 02:54:36 862

原创 Golang的闭包

闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。闭包是函数式语言中的概念,Go语言是支持闭包的,这里只是简单地讲一下在Go语言中闭包是如何实现的。函数f返回了一个函数,返回的这个函数,返回的这个函数就是一个闭包。这个函数中本身是没有定义变量i的,而是引用了它所在的环境(函数f)中的变量i。c1跟c2引用的是不同的环境,在调用i++时修改的不是同一个i,因此两次的输出都是1。函数f每进入一次,就形成了一个新的环境,对应的闭包中,函数都是同一个函数,环境却是引用不同的环境。变量i是函

2025-11-09 16:21:44 355

原创 TCP的握手与挥手

全连接队列初始化当TCP三次握手完成后,内核会将这个连接放入全连接队列,等待服务器端的应用程序accept这个连接。客户端SYN → 服务端SYN-ACK → 客户端ACK → 连接进入全连接队列 → 应用accept()客户端链接&三次握手过程第一次握手对于AF_INET4 TCP的Socket来说,Connect 调用的是tcp_v4_connect, 设置当前Socket状态为TCP_SYN_SENT 并发送SYN报文完成tcp_v4_connect 后,Socket状态从SS_UNCON

2025-11-09 15:53:44 499

原创 Redis 内存淘汰策略和过期策略详解

当 Redis 内存使用达到配置的最大阈值时,会触发内存淘汰机制。如果数据可重建,建议使用allkeys-lru或allkeys-lfu如需持久化部分重要数据,可使用volatile-lru, 保证热点数据存在若数据量较少,完全由ttl来控制过期的key也是个办法。

2025-11-06 01:23:24 767

原创 Mysql中的MVCC

MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读在学习MVCC多版本并发控制之前,我们必须先了解一下,什么是MySQL InnoDB下的当前读和快照读?

2025-11-06 01:08:54 546

原创 TCP包在机器间的转发过程详解

抓取网络接口上的原始数据包。:显示数据包经过的每一跳。:图形化网络协议分析工具。

2025-11-05 02:34:30 760

原创 Golang中的程序执行

A3:Go 的运行时(如 Goroutine 调度器、GC)依赖多线程协作,可能复制锁状态或未刷新的缓冲区,导致死锁或数据不一致。Go 的并发模型基于 Goroutine,不推荐直接使用。是 Linux 特有的系统调用,可以控制子进程与父进程。在操作系统(尤其是 Unix/Linux 系统)中,这是 Unix/Linux 中启动新程序的。实现的,共享内存、文件描述符等资源。A2:Linux 的线程(如。是三个关键的系统调用,用于。的旧版优化,子进程与父进程。(如内存、文件描述符等)。

2025-11-05 00:17:31 771

原创 DeepSeek的发展史

DeepSeek 凭借独特的架构设计,以远低于行业水平的训练成本,在性能上超越了OpenAI等公司耗费巨资打造的AI模型。全球科技企业正掀起一场“模型替换潮”——纷纷将大语言模型服务的后端迁移至更经济的DeepSeek。这匹黑马凭何颠覆行业?它的诞生又将引发怎样的技术革命?

2025-11-03 23:04:15 565

空空如也

空空如也

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

TA关注的人

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