Featured work
正在构建的项目
什么是NoSQL:
2026-09-03
NoSQL 数据库(意即“不仅仅是 SQL”)(Not Only SQL)存储数据的方式与关系表不同。NoSQL 数据库的类型因数据模型而异。主要类型包括文档、键值、宽列和图形。它们提供了灵活的模式,可以随大量数据和高用户负载而轻松扩展。
1902 字
|
10 分钟
es
2026-09-03
你是一位读书达人,这天旅游来到了恶州,发现了两座大图书馆,兴趣来潮想要去借本书读一读😍,于是你先进入了M馆,向前台小姐姐询问《鲁氏限流:从入门到入土》这本书的位置,小姐姐给了你一串神秘数字,并告诉你这是书的编号,从眼前开始数,数到这个编号就找到了。偶买噶,听到这个消息你直接惊掉了下巴😨,无奈你离开了它不回头看一眼,转身就进入了E馆,E馆的图书管理员就很高效了,直接告诉了你关于限流的书在第几层哪个书架,不多时你就找到了,并给了一个大大的好评❤️。
2737 字
|
14 分钟
go:linkname的使用与原理
2025-08-26
最近在搞ospp时遇到了个难题,为分析runtime栈并与spanid和traceid通过label结合,我们需要用到pprof包的cpu_profiile,但是目前的对于全局cpuprofile增加label的唯一方法是通过ctx去传递,由于我们的agent需要混合编译到用户代码,这也就导致如果我们在agent设置全局ctx去传递label的话,用户就可能会对链路造成破坏(用户要增添自己的label也要去创建ctx,而这会覆盖😭)。目前有两种思路,第一种比较容易实现,我可以在toolkit去暴露一个函数让用户能够获取到当前的profile ctx,这样用户就可以在这个ctx的基础上去增添label,不会造成label丢失或混乱,但这样会对用户造成代码的侵入,且会增加用户的学习成本,并不是最优选择,所以就需要走第二条路,重写(或新增)pprof的部分方法,来实现不需要借助ctx传递就能设置label的方法。正当我借助ai分析源码时,一个不好的消息传来,最为关键的设置label的一个方法是为导出的😅。
844 字
|
4 分钟