自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 Protobuf原理与序列化

探究Protobuf的编码原理,更好的理解Varint编码方式、TLV格式。

2025-02-27 22:01:09 9215 1

原创 【高并发架构设计】-1:高并发通用设计思想

【高并发架构设计】-1:高并发通用设计思想

2025-05-12 13:29:26 290

原创 【GoChat】密码处理与实现JWT+进行功能单测

【GoChat】密码处理与实现JWT+进行功能单测

2025-04-26 17:12:03 8548

原创 Docker底层原理浅析 | namespace+cgroups+文件系统

namespace机制提供一种资源隔离和虚拟化特性,基于这些特性,PID、IPC、Network等系统资源不再是全局性的,而是某个特定的namespace下面,每个namespace下面的资源对于其他的namespace是不可见的。4、container模式:指定新创建的容器和已经存在的一个容器共享一个network namespace,而不是和宿主机进行共享,新创建的容器不会创建自己的网卡,配置自己的ip,而是和指定的一个容器共享ip+端口范围等。这样,容器就可以通过宿主机的网络接口访问外部网络。

2025-04-22 12:41:59 8620

原创 Go-zero框架修改模版进行handler统一响应封装

Go-zero框架修改模版进行handler统一响应封装

2025-04-19 17:10:51 20729

原创 使用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实现简单分布式缓存】-7:增加etcd和gRPC功能

在GeeCache的基础上增加etcd和gRPC功能。

2025-03-12 21:33:00 4534

原创 【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】-4:为项目引入etcd

大概梳理下etcd和gRPC之间的关系,但是感觉还不是很懂,后边挑个空再好好搞清楚。

2025-03-07 22:44:31 10942

原创 【GoTeams】-3:构建api、重构错误码

把系统构建api层,前端发起请求将通过api层,api又内部调用gRPC服务,使系统安全性和可拓展性都增加了,然后还进行了重构错误码。

2025-03-07 15:41:24 1103

原创 【GoTeams】-2:项目基础搭建(下)

本篇文章学习到了很多,比如gRPC的服务器生成、服务生成、服务注册,以及如何用闭包进行优雅的关闭,第一次感受到以前学过的知识串起来的感觉!收获颇多的一次代码实战!

2025-03-06 21:43:48 9328

原创 【GoTeams】-1:项目基础搭建

GoTeams:项目协同管理实战1-基础搭建(上)

2025-03-06 15:47:17 9204

原创 【Linux内核】如何编译并运行一个Linux内核

编译并运行一个Linux内核。

2025-03-04 17:24:16 10124

原创 【鸿蒙操作系统】- 1:实习阶段的一些总结(OS方面)

对开源鸿蒙OpenHarmony内核相关知识与实习经历的一些个人理解总结。

2025-03-03 22:04:42 1899

原创 【基于Raft的KV共识算法】-序:Raft概述

Raft概述,介绍任期、领导选举、日志同步等基础概念。

2025-03-02 22:51:25 1104

原创 【造个轮子】使用Golang实现简易令牌桶算法

50行代码手撕简易令牌桶算法

2025-02-28 13:32:20 980 1

原创 【Go | 从0实现简单分布式缓存】-5:使用Protobuf通信

本文为极客兔兔动手写分布式缓存GeeCache学习笔记。

2025-02-26 13:21:31 7336

原创 【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社区项目梳理6:限流策略-漏桶与令牌桶

主要介绍如何在Gin框架中使用令牌桶算法进行实现限流策略。

2025-02-24 21:19:50 1134

原创 【Gin-Web】Bluebell社区项目梳理5:投票功能分析与实现

主要梳理投票功能流程与实现、Redis中ZSet有序集合的相关操作知识点。

2025-02-22 22:01:40 3705

原创 【Gin-Web】Bluebell社区项目梳理4:帖子相关接口开发及实现

梳理社区的中与帖子相关的接口基本功能与流程。

2025-02-22 17:08:16 1130

原创 【Gin-Web】Bluebell社区项目梳理3:社区相关接口开发

梳理项目的社区接口代码情况,以及Go语言中关于“值”类型和“引用”类型的相关知识。

2025-02-22 00:08:35 967

原创 【Gin-Web】Bluebell社区项目梳理2:JWT-Token认证

梳理项目中的JWT-Toekn认证相关代码和知识点。

2025-02-21 23:31:20 4533

原创 【Gin-Web】Bluebell社区项目梳理1:注册业务、登录业务流程及代码

分析和梳理了Gin的Web项目Bluebell的注册、登录两个业务的流程。

2025-02-21 21:46:51 1067

原创 【Gin】| 框架源码解析 :路由详解

解析了Radix Tree及一些Engine中有关路由的函数源码。

2025-02-20 11:35:00 7285

原创 【gRPC】:快速上手gRPC与protobuf

快速上手gRPC与protobuf简单demo实例

2025-02-18 19:31:50 5684 1

原创 【Gin】2:快速上手Gin框架(模版、cookie、session)

【Gin】2:快速上手Gin框架(模版、cookie、session)

2025-02-18 17:11:16 6992

原创 【Go | 从0实现简单分布式缓存】-2:HTTP服务端与一致性哈希

【Go | 从0实现简单分布式缓存】-2:HTTP服务端与一致性哈希

2025-02-18 13:38:56 7442

原创 【Go | 从0实现简单分布式缓存】-1:LRU缓存淘汰策略与单机并发缓存

商业世界里,现金为王;架构世界里,缓存为王。

2025-02-17 23:51:59 7475

原创 【Gin】Web框架开发快速入门

主要介绍go work工作区、Web路由、请求、响应等demo

2025-02-12 12:56:30 11472

原创 【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关注的人

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