- 博客(73)
- 收藏
- 关注

原创 【Go万字洗髓经】Golang中sync.Mutex的单机锁:实现原理与底层源码
详细分析了sync.Mutex的核心原理,重点探讨了锁从自旋到阻塞的升级过程,以及自旋+CAS机制和饥饿模式的设计与实现。深入剖析了sync.Mutex的底层源码,包括Mutex结构的定义、全局常量的作用,以及Lock和Unlock方法的具体实现逻辑。文章还探讨了第一次CAS加锁成功的前提条件、竞态检测的实现,以及lockSlow和unlockSlow方法中的关键逻辑,如局部变量的作用、新旧状态值的替换、阻塞挂起机制以及饥饿模式下的特殊处理。
2025-03-26 22:17:33
43104
2

原创 【Go万字洗髓经】Golang内存模型与内存分配管理
对Golang的内存模型和内存分配与管理进行了全面梳理,探究了一些核心组件,如mcache、mheap、mcentral,并且从GMP视角出发,研究了内存模型,借助对象分配流程,来梳理巩固内存模型的理解和概念。
2025-03-10 16:17:57
55627
4
原创 Docker底层原理浅析 | namespace+cgroups+文件系统
namespace机制提供一种资源隔离和虚拟化特性,基于这些特性,PID、IPC、Network等系统资源不再是全局性的,而是某个特定的namespace下面,每个namespace下面的资源对于其他的namespace是不可见的。4、container模式:指定新创建的容器和已经存在的一个容器共享一个network namespace,而不是和宿主机进行共享,新创建的容器不会创建自己的网卡,配置自己的ip,而是和指定的一个容器共享ip+端口范围等。这样,容器就可以通过宿主机的网络接口访问外部网络。
2025-04-22 12:41:59
8620
原创 使用Ollama+Langchaingo+Gin通过定义prompt模版实现翻译功能
使用Ollama+Langchaingo+Gin通过定义prompt模版实现翻译功能
2025-03-30 18:38:49
39171
原创 Ollama+Langchaingo+Gin开发本地LLM简单应用
我的第一篇与llm有关的博客,使用ollama+langchaingo+gin快速构建简单应用。
2025-03-30 17:45:17
5997
原创 【Go | 从0实现简单分布式缓存】-6:GeeCache总结
总结之前 GoCache 的实现过程,这是一个从零开始用 Go 语言实现的分布式缓存系统。详细介绍了缓存淘汰策略LRU、并发控制、一致性哈希算法、分布式节点通信、缓存击穿的解决方案以及优化方向。
2025-03-11 22:53:42
36060
原创 【Go沉思录】朝花夕拾:探究 Go 接口型函数
接口型函数是Go语言中一种优雅的设计模式,它允许将普通函数转换为接口类型,从而实现接口。其核心是定义一个与接口方法签名相同的函数类型,并为该函数类型实现接口方法。这种模式使代码更加简洁灵活,既可以用函数直接实现接口(通过类型转换),也可以用结构体实现接口,适用于接口只有单一方法的场景。在标准库中,如net/http包的Handler和HandlerFunc就是典型应用,它使API设计更加灵活,提高了代码的可读性和可维护性。
2025-03-11 17:05:15
43257
原创 【GoTeams】-5:引入Docker
一直对docker的实战有点少,并且随着hub被封之后,也有点惧怕用docker这些,比如写docker-compose进行容器编排,写dockerfile文件编译镜像,编译go程序为可执行文件等,通过本次实战,熟悉了不少,也对整个部署运营有了了解,实战大于学习,之前看过再多的知识,不如自己实战效果更好一些,学习和收获会更大。勇于挑战才能进步。
2025-03-08 14:45:19
11074
原创 【GoTeams】-3:构建api、重构错误码
把系统构建api层,前端发起请求将通过api层,api又内部调用gRPC服务,使系统安全性和可拓展性都增加了,然后还进行了重构错误码。
2025-03-07 15:41:24
1103
原创 【GoTeams】-2:项目基础搭建(下)
本篇文章学习到了很多,比如gRPC的服务器生成、服务生成、服务注册,以及如何用闭包进行优雅的关闭,第一次感受到以前学过的知识串起来的感觉!收获颇多的一次代码实战!
2025-03-06 21:43:48
9328
原创 【Go | 从0实现简单分布式缓存】-4:使用singleflight防止缓存击穿
主要介绍如何使用singlefligth防止缓存击穿,途中涉及到了一些经典的函数,比如协程的wg.WaitGroup()函数应该在协程之间不需要消息传递的时候非常适用,还有对应的匿名函数的作用原理。
2025-02-26 11:24:21
1112
原创 【Go | 从0实现简单分布式缓存】-3:分布式节点通信
本节内容主要是完成了分布式节点通信,但是会随之而来对应的问题“缓存击穿”,所以我们需要进一步完善项目。
2025-02-25 20:36:23
950
原创 【Gin-Web】Bluebell社区项目梳理5:投票功能分析与实现
主要梳理投票功能流程与实现、Redis中ZSet有序集合的相关操作知识点。
2025-02-22 22:01:40
3705
原创 【Gin-Web】Bluebell社区项目梳理3:社区相关接口开发
梳理项目的社区接口代码情况,以及Go语言中关于“值”类型和“引用”类型的相关知识。
2025-02-22 00:08:35
967
原创 【Gin-Web】Bluebell社区项目梳理1:注册业务、登录业务流程及代码
分析和梳理了Gin的Web项目Bluebell的注册、登录两个业务的流程。
2025-02-21 21:46:51
1067
原创 【C++高并发服务器WebServer】-18:事件处理模式与线程池
对Reactor、Proactor、同步IO模拟Proactor模式进行了概述介绍。
2025-02-10 13:11:06
4311
原创 【C++高并发服务器WebServer】-17:阻塞/非阻塞和同步/异步、五种IO模型、Web服务器
陈硕大神说过一句话:处理IO的时候,阻塞和非阻塞都是同步IO(都需要我们用户自己去操作数据),只有使用了特殊的API才是异步IO
2025-02-09 22:48:11
11745
1
原创 【C++高并发服务器WebServer】-16:UDP简单实现
指向sockaddr结构的指针,该结构包含了目的地址信息。:指向变量的指针,该变量在调用前应初始化为 src_addr 结构的长度。调用成功后,该变量将被更新为实际接收到的地址的长度。:指向 sockaddr 结构的指针,该结构用于存储发送方的地址信息。也可以设置特定的标志来改变发送的行为,如MSG_DONTROUTE(绕过路由器)。也可以设置特定的标志来改变接收的行为,如 MSG_DONTWAIT(非阻塞接收)。这个长度应该与dest_addr指向的结构的大小相匹配。:要发送的数据的长度(字节数)。
2025-02-09 21:19:20
6845
原创 【C++高并发服务器WebServer】-15:poll、epoll详解及实现
本文主要介绍了poll和epoll的实现,其中重点分析了epoll的函数、工作模式等。
2025-02-09 20:58:30
5187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人