- 博客(24)
- 收藏
- 关注
原创 LevelDB 源码阅读:写入键值的工程实现和优化细节
本文深入剖析LevelDB的写入机制,详解从Put接口到WAL日志、MemTable落盘的全流程。通过源码解析揭示LevelDB实现40万次/秒高吞吐写入的奥秘:WriteBatch批量合并策略、双MemTable内存管理、WAL顺序写优化、Level0文件数动态限流等核心技术。探讨混合sync写入处理、小键值合并优化、异常场景数据一致性等工程细节,带你掌握LevelDB高性能写入的设计精髓与实现策略。
2025-01-31 19:44:35
976
原创 LevelDB 源码阅读:如何优雅地合并写入和删除操作
本文深入剖析了 LevelDB 中 WriteBatch 的设计与实现,详细介绍了其如何通过批量写入和删除操作提升性能。文章从 WriteBatch 的接口设计、序列号机制、操作记录存储格式等方面展开,结合源码分析了其核心功能,如序列号的全局递增、操作计数、数据格式验证等。此外,文章还通过测试用例展示了 WriteBatch 的实际使用场景,适合对 LevelDB 或存储系统设计感兴趣的开发者阅读。
2025-01-15 21:14:17
1082
原创 复杂 C++ 项目堆栈保留以及 eBPF 性能分析
在构建和维护复杂的 C++ 项目时,性能优化和内存管理是至关重要的。当我们面对性能瓶颈或内存泄露时,可以使用eBPF(Extended Berkeley Packet Filter)和 BCC(BPF Compiler Collection)工具来分析。如我们在文中看到的一样,我们用 BCC 的 profile 工具分析 Redis 的 CPU 占用,画了 CPU 火焰图,然后就能比较容易找到耗时占比大的函数以及其调用链。个人博客原文地址more。
2025-01-14 20:34:15
1078
原创 5 个导致 C++ 进程 Crash 的真实业务案例
本文深入分析了 C++ 开发中常见的 5 种导致进程 Crash 的典型案例:未捕获的异常处理、数组越界访问、迭代器失效、并发数据竞争以及栈溢出问题。通过真实的代码示例,详细讲解了每种问题的成因、排查方法和解决方案。文章还介绍了如何使用 GDB、Valgrind 等工具来分析 Coredump 问题,是一篇实用的 C++ 参考指南。
2025-01-11 13:13:10
955
原创 LevelDB 源码阅读:利用 Clang 的静态线程安全分析
本文介绍 LevelDB 中使用 Clang 的静态线程安全分析工具,通过在代码中添加宏注解,支持在编译期检测潜在的线程安全问题。
2025-01-02 20:09:38
975
原创 在线免费批量生成 Word 文档工具
为了方便的批量生成 Word 文档,写了个,可以。适用于需要批量生成格式统一但内容不同的文档场景。数据和 Word 模板的格式可以参考这里的两个文件示例:和。,甚至可以在页面加载之后离线使用,请放心使用。
2024-12-27 10:45:46
2725
1
原创 LevelDB 源码阅读:如何设计一个高性能哈希表
以 LevelDB 的哈希表实现为例,分析了如何设计一个高性能的哈希表。通过二级指针,实现了链表的插入、删除和查找操作,并且通过头插法优化了链表插入操作,并分析了链表扩容的实现。最后,通过一个例子详细介绍了 C++ 中的二级指针。
2024-12-26 15:13:09
865
原创 LevelDB 源码阅读:如何分析跳表的时间复杂度?
本文详细分析了跳表的时间复杂度。通过拆解查找问题,逆向整个查找过程,以及找到合适的 L 层,最后推导出跳表的时间复杂度。在知道时间复杂度的基础上,进而推导如何选择概率 p,以及 redis 和 LevelDB 中跳表的最大高度选择原因。最后通过简单的 benchmark 测试了跳表的性能,并与 unordered_map 进行了对比。
2024-12-22 19:04:47
994
原创 Dijkstra(迪杰斯特拉)最短路径算法可视化演示
Dijkstra(迪杰斯特拉)算法,是一种解决的经典算法。它由荷兰计算机科学家 Edsger Dijkstra 于1956年提出。在现实生活中,这个算法被广泛应用于导航系统、网络路由等场景。比如在地图导航中,城市可以看作图中的节点,道路可以看作边,路程或时间可以看作权重。Dijkstra 算法可以帮助我们。
2024-12-22 18:16:21
1155
原创 LevelDB 源码阅读:内存分配器、随机数生成、CRC32、整数编解码
本文探讨了 LevelDB 中的核心工具组件实现,包括Arena内存分配器、Random随机数生成器、CRC32循环冗余校验和整数编解码工具。分析了这些组件的设计考量、实现细节和优化策略,展示了它们如何高效地支持LevelDB的各种操作。
2024-12-20 10:09:05
624
原创 用 Claude3.5 从零写扫雷游戏-增加扫雷颜色主题
借助 Claude3.5 为扫雷游戏增加主题切换功能,包括主题配置文件的创建、渲染逻辑的修改以及 UI 组件的添加。分享在开发过程中遇到的问题和解决方案,比如暗黑模式下的边框颜色优化、主题切换不生效的调试过程等。同时展示了如何利用 Claude3.5 快速设计和实现多个美观的主题方案,突出了 AI 在提升开发效率方面的优势。
2024-12-20 10:06:40
2080
原创 LevelDB 源码阅读:如何正确测试跳表的并行读写?
深入剖析 LevelDB 跳表实现的测试方法,重点探讨并行读写场景下的正确性验证。详细介绍了测试用Key的巧妙设计、写线程和读线程的操作实现,以及单线程和多线程测试的具体方法。文章还讨论了并行测试的局限性,引入ThreadSanitizer工具进行更深入的数据竞争检测。
2024-12-19 10:13:26
894
原创 LevelDB 源码阅读:跳表的原理、实现以及可视化
跳表是一种概率性数据结构,可以用来替代平衡树,实现了快速的插入、删除和查找操作。LevelDB 中的跳表实现代码简洁,性能稳定,适合用来存储内存 MemTable 中的数据。本文从当前二叉搜索树和平衡树的一些缺点出发,引出了跳表这种数据结构。然后结合论文,讲了下跳表的实现原理,再详细分析了 LevelDB 的实现代码,包括迭代器实现,以及并发读的极致性能优化。最后还提供了一个可视化页面,可以直观看到跳表的构建过程。
2024-12-19 10:12:38
1245
原创 Claude3.5 的最佳使用场景,以优化推箱子关卡的缩略图为例
以推箱子游戏关卡缩略图优化为例,展示了 Claude3.5 在前端开发中的最佳应用场景。从最初使用 canvas 实现的模糊效果,到通过设备像素比优化,再到最终采用 svg 方案,展示了不同阶段 Claude3.5 的强带代码能力。
2024-12-18 19:28:08
885
原创 用 Claude3.5 从零写扫雷游戏-实现蜂窝地图
在完整方格扫雷的基础上,用 Claude3.5 和 Cursor 实现了一个蜂窝版本的扫雷。只要自己想清楚具体实现思路,然后把问题合理拆分,一步步提示,Claude3.5 生成的代码大部分时候还是符合预期的。遇到复杂问题,可以先让 Claude3.5 描述下大致的思路,不要急于写代码,不然容易被错误的代码带偏,浪费不少时间。
2024-12-17 13:02:30
812
原创 用 Claude3.5 从零写扫雷游戏-基本功能篇
用 Claude3.5 写一个经典的扫雷游戏,支持多种难度,多种主题,多种蜂窝状游戏棋盘。作为一个前端小白,虽然遇到不少问题,但借助 Claude3.5 和 Cursor 的强大功能,最终还是实现了。本文记录实现经典扫雷部分,希望对想借助 AI 写代码的朋友有所帮助。
2024-12-16 17:45:12
677
原创 Claude3.5 打造带道具的创意贪吃蛇
用 Claude3.5 实现一个好玩的贪吃蛇游戏,加入了道具系统,支持各种有意思的创意道具。本文会记录是用 Cursor 完成这个创意贪吃蛇的整个过程,一起来看我如何更好的利用 AI 解决复杂问题。
2024-12-10 08:28:42
903
原创 用 Claude3.5 实现了一个完整的单机五子棋~不是简单 demo
用 Claude3.5 实现一个完整的单机五子棋游戏,支持各种禁手规则。如何更好的利用 AI 解决复杂问题,并让 AI 写测试用例来保证逻辑的正确性,本文会给你一个答案。
2024-12-10 08:26:06
718
原创 Claude3.5 实现二叉搜索树的可视化
二叉搜索树是一种特殊的二叉树,每个节点的左子树的值都小于该节点的值,右子树的值都大于该节点的值。本文用 Claude3.5 实现一个二叉搜索树的可视化,支持插入,删除和查找操作。
2024-12-09 17:19:33
771
原创 如何让 Claude 理解并优化现有库,从制作在线迷宫游戏说起
用 Cursor 和 Claude3.5 基于已有的一个迷宫库,写了一个完整的迷宫游戏。支持各种迷宫在线生成,并支持用鼠标来在线玩迷宫游戏。
2024-12-09 17:18:11
870
原创 GPT4 解 Leetcode 题目:位操作
如何解决 LeetCode 上的一个问题——"Minimum Flips to Make a OR b Equal to c"。首先,AI 提供了一个基于位运算的解决方案,然后对其进行了优化以提高效率。在解答过程中,AI 详细解释了解决方案的思路和优化策略,同时强调了作为一个人工智能模型,它并没有直接处理过这个特定的题目,而是根据从训练数据中学到的一般知识和策略来解决问题的。对于人类的质疑,AI 在这里表现出了一定程度的同理心和耐心。
2023-06-08 10:59:13
294
1
原创 Mac Automator 图片自动压缩上传 COS
本篇文章详细讲解如何在 macOS 中通过 AppleScript 实现监控文件夹并自动进行图片压缩及文件重命名,最后上传到腾讯云 COS 的过程。涉及技术包括 AppleScript、pngquant 图片压缩工具以及腾讯云 COS 的命令行工具 coscmd。本教程适合对自动化文件处理感兴趣的 macOS 用户参考。
2023-06-07 08:05:36
2186
1
原创 GPT4 解 Leetcode 题目:判断是否一条直线
这篇博客详细讨论了如何利用 OpenAI 的 GPT-4 模型来学习和解决算法问题。我们以一个具体的例子——在二维平面上判断一组点是否在同一直线上的问题为例,展示了 GPT-4 如何提供解决方案,编写代码,以及进行代码测试。此外,我们还讨论了 GPT-4 如何帮助我们理解问题,找出解决问题的关键,以及编写和测试代码。这篇博客是对 GPT-4 在算法学习中应用的深入探讨,对于想要了解人工智能如何改变我们学习方式的读者来说,这是一篇必读的文章。
2023-06-07 07:44:38
200
1
原创 GPT4 帮忙写 sed, awk 数据处理命令
在这篇博客中,我们将探索如何利用 AWK 和 SED 进行复杂的文本处理,同时展示了如何使用 OpenAI 的 GPT-4 模型来帮助我们编写命令和解决问题。我们将深入解析各种实际示例,包括如何过滤和排序数据,如何进行文本替换,以及如何删除或修改特定行。这篇文章不仅为你提供了深入理解 AWK 和 SED 的机会,还展示了人工智能如何帮助我们更有效地进行编程和数据处理。
2023-06-07 07:43:54
127
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人