MoreRSS

site iconcyhone | 沉思录修改

记录自己思考和总结的一些东西,包括不限于源码分析、读书总结以及技术方案等方面。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

cyhone | 沉思录的 RSS 预览

博客升级了~

2026-05-09 21:30:19

基于Astro,从零重新实现

C++如何计算普通类型的 Hash 值:基于 gcc/clang 源码分析

2025-09-07 05:08:06

当 int/long/float/指针/std::string 作为 `std::unordered_map` 的 key 时,C++底层是如何计算 hash 值的? gcc/clang 作为使用最多的两种编译器和标准库,它们在这个问题的实现上略有差异。本文将基于二者的源码进行对比分析。 ## std::string 在深入讨论其他类型的 hash 实现之前,我们首先分

std::any 的性能开销:基于 libstd++ 源码分析

2025-03-04 17:41:54

C++17 中引入了 `std::any`,可以非常方便地将任意类型的变量放到其中,做到安全的类型擦除。然而万物皆有代价,这种灵活性背后必然伴随着性能取舍。 std::any 的实现本身也并不复杂,本文将基于 [libstd++ 标准库源码](https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/an

从源码角度解读 enable_shared_from_this

2025-01-04 06:41:54

我们在使用 C++ 的时候,有时会需要在类的内部获取自身的 shared_ptr,这就会用到 `std::enable_shared_from_this`。在实际使用过程中,`std::enable_shared_from_this` 有三个陷阱需要注意: 1. 不能在构造函数中使用 shared_from_this(), 否则会抛出 std::bad_weak_ptr 异

Context的错误使用引发Panic的问题复盘

2024-05-07 01:25:54

我们有这么一段业务代码,在 Gin 的 API Handler 中,开了一个子 goroutine 写 DB,代码大概是这样: ```go package main import ( "github.com/gin-gonic/gin" "gorm.io/gorm" ) var db *gorm.DB func ServerHandler(c *gi

Go 1.22 可能将改变 for 循环变量的语义

2023-11-29 21:05:01

几乎世界上每个 Golang 程序员都踩过一遍 for 循环变量的坑,而这个坑的解决方案已经作为实验特性加入到了 Go 1.21 中,并且有望在 Go 1.22 中完全开放。 举个例子,有这么段代码: ```go var ids []*int for i := 0; i