- 博客(310)
- 收藏
- 关注
原创 Go 语言高级编程:面向并发的内存模型与常见的并发模式
基于《Go 语言高级编程》的第1.5节和第1.6节,对Golang当中面向并发的内存模型以及常见的并发模式进行学习。这篇文章仅做个人学习记录以及分享心得感悟体会之用。
2025-06-26 08:02:51
698
原创 吃透 Golang 基础:测试
基于「《Go 语言圣经》第十一章——测试」,对 Golang 测试相关的内容进行梳理。主要介绍了 Golang 内置的测试工具 go test 以及三种测试函数:Test/Bench/Example。在“剖析”这一节当中,我们还介绍了如何结合 go test 和 pprof 工具对 go 的 net/http 包的 CPU 使用情况进行基准测试分析。
2025-06-23 16:15:16
957
原创 吃透 Golang 基础:基于共享变量的并发
基于「《Go 语言圣经》第九章——基于共享变量的并发」,对 Golang 的 sync.Mutex 相关的知识及用法进行回顾。在这一节的最后,详细地探讨了 Goroutine 与操作系统线程之间的区别。
2025-06-21 02:12:08
716
原创 Gee: a Gin-style Web Framework
基于 Geektutu 的博客,学习 Geektutu 开源的 Gee Web 框架,整个框架模仿热门的 Golang Web 框架 Gin 来编写。
2025-06-20 04:24:10
575
原创 吃透 Golang 基础:Goroutine
基于《Go 语言圣经》对 Golang Goroutine 以及 Channel 的相关内容进行系统性的回顾。
2025-06-19 21:50:38
1091
原创 吃透 Golang 基础:接口
基于《Go 语言圣经》的第七章——接口,作为参考资料,系统性地复习 Golang 语法中接口(Interface)相关的知识。包括接口的定义、接口类型、如何实现一个接口(一个类型实现了接口所需的所有方法,那么它就实现了这个接口)、接口值(包括动态类型和动态值)、类型断言(包括接口的类型断言,需要注意的是如果 x.(T) 中的 x 和 T 都是接口类型,那么 T 断言的是 x 的动态类型,返回的是一个 T 的接口类型)以及类型断言的应用。
2025-06-16 16:11:51
1076
1
原创 Golang 解大整数乘法
记录使用 Golang 解决大整数乘法的思路,输入是两个字符串(字符串当中的字符均为数字),输出是一个汇总了两个字符串相乘结果的数字字符串。在解决该问题的过程中,还用到了大整数加法。
2025-06-15 12:57:49
370
原创 基于可靠消息确保分布式事务的最终一致性:以电商系统中订单服务的新建订单为例
以电商系统中订单服务的创建订单接口为例,设计了一套基于可靠消息的分布式事务最终一致性方案,所用到的技术栈包括gRPC、RocketMQ、Redis 分布式锁,开发语言为 Golang。具体的功能包括基于 RocketMQ 发送事务消息以确保在分布式事务当中执行订单创建与库存扣减,以及基于 RocketMQ 的延时消息实现订单超时未支付的库存归还。
2025-06-14 19:13:50
1212
原创 吃透 Golang 基础:方法
基于《Go 语言圣经》第六章:方法,对 Golang 语法当中的“方法”进行系统性地复习。包括如何声明一个类型的方法、方法的底层实现仍然是函数(因此方法本质上是 Golang 的语法糖)、方法的值接收器与指针接收器以及 Golang 编译器对二者调用时的隐式转换、通过类型嵌入使得某个类型拥有另一个内嵌类型的方法,以及 Golang 的封装(基于大写字母标识从而将函数/类型/结构/结构的成员导出到包外,包确定了 Golang 中类型与成员可见性的范围)。
2025-06-14 18:21:55
944
原创 吃透 Golang 基础:函数
参考《Go语言圣经》系统性地整理 Golang 函数相关的语法及注意事项,重点包括函数的定义与使用、函数的递归、Go 函数的多返回值、函数调用链当中的错误处理、函数闭包与函数值、可变参数函数、defer、panic 和 recover。
2025-06-13 15:25:27
1139
原创 Golang 处理字符串与整型数值相互转换的最佳实践
基于「LeetCode 165. 比较版本号」分析了在 Golang 当中处理字符串与整型数值想换转换的最佳实践。通过使用库函数 strings 的 Split 方法来将 string 类型根据提供的子串分割为 string slice,通过 strconv 的 Atoi 将 string 转为整型数值。
2025-06-13 12:09:04
208
原创 吃透 Golang 基础:使用 encoding/json 实现 Golang 数据结构与 JSON 对象的转换
根据《Go 语言圣经》复合数据类型当中 JSON 这一章的内容,整理 Golang 当中与 JSON 对象进行交互的简单方法,最后补充了一个在 Gin 框架当中使用 c.ShouldBindJSON 和 c.JSON 解码和编码 JSON 对象的例子。
2025-06-06 11:28:05
1025
原创 吃透 Golang 基础:数据结构之 Struct
根据《Go 语言圣经》整理 Golang 数据结构中 struct 的知识以及相关的注意事项。最后通过 LeetCode 146. LRU Cache 系统地运用 map 和 struct 的知识。
2025-06-04 05:54:39
687
原创 【入门|Docker】基础知识扫盲:什么是 Docker?
对 Docker 的基础概念进行扫盲,主要介绍了什么是 Docker;Docker 与 VM 的区别;Docker 的核心组件(Docker Image、Docker Container、Docker Hub、Dockerfile);Docker 在现代开发当中扮演的角色;Docker 的局限性。
2025-05-18 02:06:35
810
原创 对比 HTTP-REST 与 gRPC:各自的优缺点以及适用的场景
对 HTTP-REST 与 gRPC 进行对比,主要汇总了这两种数据传输模式的各自的优缺点以及适用场景。简单来说,HTTP-REST 使用 JSON/XML 对数据进行编码,gRPC 采用 Protobuf 对数据进行编码,从数据传输效率以及序列化/反序列化的效率上来说,gRPC 效率更高,但前者适合与前端或浏览器交互,后者需要 gRPC-web 进行代理或手动构造 JSON 才能过与前端或客户端交互。gRPC 更适用于微服务之间的通信以及流式通信,HTTP-REST 适合浏览器交互和简单 API。
2025-05-15 01:23:45
1125
原创 关于 Golang GC 机制的一些细节:什么是根对象?GC 机制的触发时机?
对 Golang GC 的三色标记法进行简单回顾,同时深挖了与 GC 相关的两个细节。第一个细节是 GC 初始化时的根对象指的是什么?主要包括 Goroutine 的局部变量和参数,以及全局变量。第二个细节是 GC 的触发时机?主要分为四个时刻,第一个时刻是当堆内存增长到一定比例时触发;第二个时刻是当调用 runtime.GC() 时触发;第三个时刻是当 goroutine 发现很长时间没有执行 GC 时触发;第四个时刻是当堆内存当中碎片化内存较多时触发。
2025-05-14 23:06:00
864
原创 HTTP 连接复用机制详解
对 HTTP 连接复用机制进行详解,主要包括 HTTP/1.1 引入连接复用机制以及 HTTP/2 引入多路复用机制。此外还分析了为什么 HTTP/1.1 会出现队头阻塞的问题,而 HTTP/2 通过多路复用可以解决这个问题。
2025-05-14 18:56:13
941
原创 应用层协议简介:以 HTTP 和 MQTT 为例
对计算机网络中的应用层协议进行了简介,并深入了解了 HTTP 协议和 MQTT 协议。同时,探讨了构建 web 应用的过程中,时兴的 RPC 与 HTTP 协议的区别和优缺点。
2025-05-14 17:51:42
2007
原创 LeetCode 215. 数组中的第 K 个最大元素
LeetCode 215. 数组中的第 K 个最大元素,基于快速选择 quickSort 和大根堆 maxHeapify 的两种解法,使用 C++ 实现,不借助 sort 或 priority_queue。
2025-05-10 10:39:36
354
原创 【每日八股】复习 MySQL Day7:应知应会的 42 条 MySQL 八股文
对 MySQL 的八股文进行全面的整理,包括 MySQL 事务、锁、索引、日志四个方面的内容,共收录了 42 条应知应会的 MySQL 八股。
2025-05-08 05:33:37
988
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人