关于 Just For Fun

专业后端开发,喜欢读各种书,尤其是科幻,历史类书籍。

RSS 地址: https://selfboot.cn/atom.xml

请复制 RSS 到你的阅读器,或快速订阅到 :

Just For Fun RSS 预览

LevelDB 源码阅读:如何正确测试跳表的并行读写?

1970-01-01 08:00:00

深入剖析 LevelDB 跳表实现的测试方法,重点探讨并行读写场景下的正确性验证。详细介绍了测试用Key的巧妙设计、写线程和读线程的操作实现,以及单线程和多线程测试的具体方法。文章还讨论了并行测试的局限性,引入ThreadSanitizer工具进行更深入的数据竞争检测。

实际例子上手体验 OpenAI o1-preview,比预期差一点?

1970-01-01 08:00:00

OpenAI 发布了新的模型 o1-preview,号称更强的代码生成和理解能力,各种评测效果也都很好。第一时间体验了新模型,包括使用比较火的提示词汉语新解来生成 svg,以及解释 LevelDB 的代码。整体感觉下来,新的 o1-preview 模型效果有提升,但是并没有拉开代差。

LevelDB 源码阅读:跳表的原理、实现以及可视化

1970-01-01 08:00:00

跳表是一种概率性数据结构,可以用来替代平衡树,实现了快速的插入、删除和查找操作。LevelDB 中的跳表实现代码简洁,性能稳定,适合用来存储内存 MemTable 中的数据。本文从当前二叉搜索树和平衡树的一些缺点出发,引出了跳表这种数据结构。然后结合论文,讲了下跳表的实现原理,再详细分析了 LevelDB 的实现代码,包括迭代器实现,以及并发读的极致性能优化。最后还提供了一个可视化页面,可以直观看到跳表的构建过程。

Claude3.5 系统提示词解密:不道歉、脸盲、幻觉...

1970-01-01 08:00:00

Anthropic 公布了 Claude3.5 模型的系统提示词,里面有大量对 AI 行为的指导。比如 Claude 能力范围,用思维链一步步处理复杂逻辑问题,在某些场景主动提醒用户回复有幻觉,以及不道歉,主动追问问题,假装脸盲拒绝识别图片中人脸等。提示词和使用体验还是挺吻合的,值得借鉴。

LevelDB 源码阅读:内存分配器、随机数生成、CRC32、整数编解码

1970-01-01 08:00:00

本文探讨了 LevelDB 中的核心工具组件实现,包括Arena内存分配器、Random随机数生成器、CRC32循环冗余校验和整数编解码工具。分析了这些组件的设计考量、实现细节和优化策略,展示了它们如何高效地支持LevelDB的各种操作。

LevelDB 源码阅读:读写 WAL 日志保证持久性

1970-01-01 08:00:00

探讨 LevelDB 的WAL(Write-Ahead Logging)日志读写接口。详细分析 WAL日志的写入过程,包括数据切分、记录格式和存储方式,同时阐述了日志读取的复杂逻辑,如何处理跨块记录和异常情况。还展示了相关的测试用例,验证WAL日志在各种场景下的正确性。

LevelDB 源码阅读:理解其中的 C++ 高级技巧

1970-01-01 08:00:00

深入解析了 LevelDB 中使用的 C++ 高级技巧,包括柔性数组、链接符号导出和 Pimpl 类设计等。文章通过具体代码示例详细说明了如何通过柔性数组实现可变长数据结构,优化内存使用和减少内存碎片。同时,介绍了符号导出的不同方法及其对跨平台编译的重要性,以及 Pimpl 设计模式在封装和二进制兼容性方面的应用。

LevelDB 源码阅读:布隆过滤器原理、实现、测试与可视化

1970-01-01 08:00:00

文章详细介绍了布隆过滤器的基本概念、数学原理和参数选择,并分析了LevelDB源码中的具体实现,包括哈希函数选择、过滤器创建和查询过程。同时展示了LevelDB的布隆过滤器测试用例,验证其正确性和性能。文章还提供了布隆过滤器的可视化演示,帮助读者直观理解其工作原理。

LevelDB 源码阅读:准备开发环境

1970-01-01 08:00:00

介绍如何为 LevelDB 准备开发环境,包括源码拉取、编译和 VSCode 配置。通过简单的读写示例,读者可以对 LevelDB 有一个初步的认识。文章还介绍了如何使用 gtest 框架运行和修改测试用例,以便更好地理解代码逻辑。

LevelDB 源码阅读:Posix 文件操作接口实现细节

1970-01-01 08:00:00

文章详细介绍了 LevelDB 抽象的文件操作,包括顺序读写、随机读取文件在 Posix 下的实现,以及如何通过抽象接口适配不同操作系统。还介绍了缓冲区优化、资源限制管理、灵活读取策略等关键设计,来提升系统的性能和可用性。此外还有工厂方法模式的应用、错误处理机制和跨平台兼容性考虑等实现细节。