自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 的包以及包管理的相关概念进行学习。

2025-06-21 12:12:04 758

原创 吃透 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

原创 LeetCode 662. 二叉树的最大宽度

整理「LeetCode 662. 二叉树的最大宽度」的解题思路。

2025-06-19 19:05:00 339

原创 吃透 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

原创 常用枚举技巧:基础(一)

根据灵茶山艾府“常用数据结构”的题单,整理常用枚举技巧的相关题目。

2025-06-06 13:40:07 967

原创 吃透 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

原创 【结构型模式】装饰器模式

参考《Easy 搞定 Golang 设计模式》,学习结构型模式当中的「装饰器模式」。

2025-06-03 16:55:01 607

原创 吃透 Golang 基础:数据结构之 Map

根据《Go 语言圣经》整理 Golang 当中的 Map 数据结构。

2025-06-03 15:56:55 1006

原创 【结构型模式】代理模式

参考《Easy 搞定 Golang 设计模式》,学习结构型模式当中的代理模式。

2025-06-03 02:21:17 447

原创 动态规划之网格图模型(二)

根据灵茶山艾府的题单,整理动态规划当中的网格图模型问题。

2025-06-03 01:09:27 1089

原创 动态规划之网格图模型(一)

根据灵神的题单总结动态规划当中的网格图模型。

2025-05-30 18:53:25 1032

原创 基于 Redis 实现分布式锁:原理及注意事项

总结基于 Redis 实现分布式锁的原理及注意事项。

2025-05-26 08:26:47 784

原创 【创造型模式】抽象工厂方法模式

根据《Easy 搞定 Golang 设计模式》对创造型模式当中的“抽象工厂方法模式”进行学习。

2025-05-24 07:39:15 847

原创 【创造型模式】单例模式

根据《Easy 搞定 Golang 设计模式》对创造型模式当中的单例模式进行学习。

2025-05-24 06:40:05 961

原创 动态规划之最大子数组和模型

根据灵茶山艾府的题单,整理动态规划当中的最大子数组和模型相关问题,总共收录了七道LeetCode上的相关问题。

2025-05-24 01:54:39 702

原创 吃透 Golang 基础:数据结构之切片

对 Golang 数据结构当中切片的知识进行学习与回顾。

2025-05-22 08:22:17 931

原创 动态规划之打家劫舍模型

根据灵茶山艾府的题单整理动态规划中的打家劫舍模型。

2025-05-22 03:14:52 938

原创 【创造型模式】工厂方法模式

根据《Easy 搞定 Golang 设计模式》学习创造型模式当中的工厂方法模式。

2025-05-21 04:38:37 517

原创 吃透 Golang 基础:数据结构之数组

对 Golang 基础进行复习与回顾,今天的主要内容是 Golang 数据结构之数组。

2025-05-20 20:22:48 828

原创 动态规划之爬楼梯模型

根据灵茶山艾府的题单,整理动态规划当中爬楼梯模型常见变体的解题思路。

2025-05-20 19:50:29 1224

原创 【每日八股】学习 RocketMQ Day3:进阶(二)

对 RocketMQ 的相关概念进行学习。

2025-05-19 02:49:57 910

原创 【入门|Docker】基础知识扫盲:什么是 Docker?

对 Docker 的基础概念进行扫盲,主要介绍了什么是 Docker;Docker 与 VM 的区别;Docker 的核心组件(Docker Image、Docker Container、Docker Hub、Dockerfile);Docker 在现代开发当中扮演的角色;Docker 的局限性。

2025-05-18 02:06:35 810

原创 【创造型模式】简单工厂模式

学习创造型模式之简单工厂模式。

2025-05-18 01:18:49 938

原创 对比 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 内存管理

浅析 Golang 的内存管理,并对 Golang 的内存逃逸和内存泄漏进行了解学习。

2025-05-15 00:16:08 1223 4

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

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