自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Francis的博客

Keep Looking,Don't Settle! 分享传递,传递互动,IT繁昌!

  • 博客(776)
  • 问答 (2)
  • 收藏
  • 关注

原创 现代C++之万能引用、完美转发、引用折叠(万字长文)

现代C++之万能引用、完美转发、引用折叠0.导语1.问题引入2.引入万能引用3.万能引用出现场合4.理解左值与右值4.1 精简版4.2 完整版4.3 生命周期延长4.4 生命周期延长应用...

2019-12-16 08:00:00 11678 12

原创 记录我的开源之C++那些事

大家好,我是光城,在一个月左右的时间里面完成了侯捷老师相关的资料学习以及其他学习等等,将之前的C++那些事等汇总起来,记录自己的学习历程,关于C++从入门、基础、进阶、源...

2019-11-05 17:47:46 498

原创 机器学习之初学者学习Sklearn

更高级的scikit-learn介绍翻译自:https://github.com/glemaitre/pyparis-2018-sklearn有关翻译项目,欢迎star与加入翻译组:https://github.com/Light-City/Translating_documents在本节教程中将会绘制几个图形,于是我们激活matplotlib,使得在notebook中显示内联图。# 启用...

2019-01-06 14:24:49 1360

原创 特征工程之特征关联

特征工程之特征关联0.说在前面昨天学习了seaborn绘制图形,以及单变量与多变量之间的绘图,那么今天从统计学角度实战分析在处理特征工程过程中所涉及的三个相关系数(具体的三个系数数学推导,在后续更新)。为了更好的便于大家的交流,先建立一个微信总群,二维码在文章最后放出!【关键字】相关系数微信总群1.皮尔逊皮尔逊相关系数:Pearson correlation coeffici...

2018-10-14 13:51:32 4191

原创 实时车票查询及登陆CTC

实时车票查询及登陆CTC0.说在前面本文实现下面两个功能【第一】 如何登陆12306【第二】 如何做到实时车票查询当你们在排队等候服务器响应的时候,我已经买下票了;当你们在抢购最后一张车票的时候,已经没了;当你们在等待放票的时候,我已经调整好买票方案了。哈哈,有点难拉仇恨。。那么没事,学好接下来的操作,会有助于你解决车票麻烦。车票查到了,离心中的远方还远?Close To C...

2018-10-14 13:38:03 929

原创 人人都应该拥有一个爱马仕

TUI 是加分项,不是第一印象。我自己的划分很简单:OpenClaw 把力气花在「门」上,消息先进网关,再谈模型和技能,换模型尽量不动上面那层;Hermes 把力气花在「脑子怎么转」上,对话循环、工具、记忆、技能文件都在 Python 这条主链上,飞书 Telegram 只是不同入口。OpenClaw 的画风不一样:最前面是一个长期跑着的网关(Node 那边),消息先进它,再分到模型和技能。安装流程按照管网的脚本一键往下执行就行,机器人选 Feishu/Lark,手机扫一下码,凭证会落进环境配置。

2026-04-18 18:52:57 358

原创 Claude Code: 我让 2 个手下吵了一架,bug 自己修好了

Claude Code 前段时间推出的 Agent Teams,并不是对子代理(subagent)的简单升级,而是一次执行模型的重构。它引入了一种全新的方式:让多个独立的 Claude Code 实例,在同一个项目中协作、通信、共享状态,并围绕任务系统进行协调。Agent Teams 的实现依赖一组新的内部工具,它们共同构成了这个协作系统。如果你只把它当成“更强的子代理”,那基本会错过它真正的价值。多个 Agent 不再是“工具调用”,而是“协作成员”它不只是“触发执行”,而是“任务系统的持久化表示”。

2026-04-01 23:46:50 559

原创 干货收藏!一张图教你玩转 OpenClaw 日常命令 [特殊字符]

这是 OpenClaw CLI 的启动向导命令,用于一步步引导完成环境配置与连接设置,是第一次使用必不可少的命令。该命令启动 OpenClaw 的可视化控制台界面(通常在浏览器打开),这是另一种交互方式,让你不必总在 CLI 里操作就能监控、测试与执行任务。它是排查问题的第一步,可以了解系统整体是否正常运行。通过这些命令,你可以动态维护你的 agent 集合,比如新增任务 agent、清理无用 agent 等。这是对单个智能体发起交互消息的命令,适合测试 agent 的行为或执行单次任务。

2026-03-13 22:09:32 368

原创 从Bug到合并主干,OpenClaw全自动修复C++那些事项目[特殊字符]

背景:我的C++那些事开源项目堆积了许多issue与pr,我想让AI帮我自动解决issue、回复、关闭、提交代码合并到主干,全程我不需要干任何事!配合OpenClaw,CLI只是辅助,AI可以智能判断bug类型并生成修复补丁。:OpenClaw 会读取你的配置,并自动调用相关GitHub接口。如果这些问题不解决,团队会越来越忙,而项目进度越来越慢。修复完成后,OpenClaw自动关闭相关Issue。,OpenClaw全自动修复C++那些事项目🦞。,OpenClaw全自动修复C++那些事项目🦞。

2026-03-12 23:57:12 352

原创 OpenClaw巨费 Token 的原因终于找到了!导出完整 System Prompt 才发现真相[特殊字符]

OpenClaw巨费 Token 的原因终于找到了!OpenClaw巨费 Token 的原因终于找到了!在研究 AI Agent 的实现时,一个非常重要但经常被忽视的部分就是。一、OpenClaw 的 System Prompt 在哪里。自己抓下来系统提示词之后发现有1w+字,太费token了!1️⃣ OpenClaw 系统 Prompt 在哪里。最终喂给大模型的 System Prompt。二、如何导出 OpenClaw 的系统提示词。System Prompt(系统提示词)

2026-03-12 00:28:55 405

原创 龙虾进化论:不搞懂 OpenClaw 这套“手脚”逻辑,你的 AI Agent 永远长不大[特殊字符]!

最近OpenClaw特别火,之前自己也写过一点ts代码,于是扒了一下OpenClaw代码研究一下,本篇文章将会从0到1讲解一下爆火的OpenClaw手脚是如何长出来的?它是模型与外部系统交互的通用机制——模型在生成输出时,会提出一个“函数调用请求”(结构化 JSON),由程序执行后再返回结果给模型。OpenClaw 会从三个位置加载技能(优先级为 workspace > 本地 > 内置),然后把这些技能信息注入到生成给模型的 prompt 里,让模型“知道有这些能力”。就是 Agent 的实际执行能力。

2026-03-11 00:53:00 311

原创 RocksDB敏感数据过滤器项目实战之自定义压缩过滤器

整个设计层面有一个factory来构建各种filter,比如:我们在写入数据的时候会写很多empty value,那么compaction的时候可以进行remove,你可以自己实现自己的过滤factory来实现自己的filter。Filter可以理解为你的过滤条件,FilterV2是普通类型实现,FilterV3是宽列的实现,当然v3也是支持普通类型传递调用v2。在该项目中我们将会使用正则做一些匹配工作,同时支持普通类型与宽列实体来完整的演示compaction filter功能。

2025-08-17 13:54:33 508

原创 RocksDB用户画像项目实战之宽列

最近在使用rocksdb,与此同时有个小伙伴分享说能不能讲一下宽列以及使用场景,这里就写了一个比较简单的小项目,完整代码也放到星球里面了。传统的存储方式kv字符串单值存储时:一个用户的数据是k=user_id,v=结构化的用户数据对应的字符串。,一个WideColumn表示一个列+一个值,即:[<列1, 值1>, <列2,值2>,等等]对于本次用户画像项目实战中可以使用宽列直接存储用户的整个数据。使用宽列表示变为:用户数据k = user_id,v =1.3 零拷贝内存管理。1.3 零拷贝内存管理。

2025-08-16 22:09:11 359

原创 高性能向量优化:RocksDB autovector 设计解析与实践

在 RocksDB 的实际应用中,autovector 将关键路径上的容器操作性能提升了 3-8 倍,证明了这种定制化容器在现代系统开发中的巨大价值。最近在看rocksdb代码,发现里面有一个autovector实现,比较有意思,于是写了一个benchmark做了性能测评,本文将讲解其背后实现以及在rocksdb中它的使用场景。当你的容器 80% 情况下元素少于 N 且 N < 64 时,autovector 是比 std::vector 更优的选择。autovector 的诞生:混合存储策略。

2025-07-27 17:46:03 755

原创 后端技能必备之限流必知必会

比如:1分钟的窗口,每个窗口限制100个请求,第59s来了100个请求,第61s也来了100个请求,在这种场景下无法正常处理限流。固定窗口限流将时间划分为固定大小的窗口(如 1 秒),每个窗口内允许固定数量的请求。:将时间窗口划分为多个小切片,维护每个切片的计数器。在短时间内有大量请求到来时,可能会导致令牌桶中的令牌被快速消耗完,从而限流。请求像水一样流入桶中(桶有容量上限),桶底以恒定速率漏水(处理请求),当桶满时拒绝新请求。:面对突发流量的时候,漏桶算法还是循规蹈矩地处理请求,无法处理突发流量。

2025-07-02 12:38:04 454

原创 leveldb高性能读写接口

如果并发写入直接使用同步的方式,对性能影响比较大,在leveldb中采用了一种合并队列方式,即同一时刻存在多个writer,但只有一个writer在执行写(这个写的数据是所有writer往队列中放的batch,会被合并到一块)。SnapshotImpl更像是一个双向链表节点,包含了节点信息,那么维护快照的结构就叫做SnapshotList,实现了链表的维护,比较典型的接口为New、Delete。在leveledb中,同时只有一个write线程在写数据,其他线程只会将自己的write放入。

2025-06-07 12:23:42 847

原创 彻底理解leveldb日志结构

前面一个block只剩余3字节,进行0 padding,新起一个block,写第三条记录,由于字节是65515,需要跨block,拆分为两个block,分别是:fe 89 19 f0 f9 7f 02、d2 bf 90 ae f2 7f 04,即kFirstType + kLastType组成一条记录。7字节0d 63 4a 30 e8 03 01是header,剩下的是内容,其中01是kFullType,e8、03是1000的十六进制,表示第一条记录是1000字节的完整记录。

2025-05-25 10:00:22 785

原创 加速leveldb查询性能之布隆过滤器

这里其实是比较符合预期的,因为start block的时候是4096,按照每2kb写一个filter data,这里就是写2个,但是key在第一次的时候就已经全部放入一个filter data了,所以第二次的时候仅写offset即可,这里就跟前面的9一样了,所以出现了2次。可以看到每次得到当前filter data之前写入的是前面构建好的filter data的offset,而不是当前的,那么当前构建好的filter data的offset(最后数据的offset,图中绿色部分)在哪里写入呢?

2025-05-24 13:39:45 1112

原创 <span class=“js_title_inner“>加速leveldb查询性能之布隆过滤器</span>

这里其实是比较符合预期的,因为start block的时候是4096,按照每2kb写一个filter data,这里就是写2个,但是key在第一次的时候就已经全部放入一个filter data了,所以第二次的时候仅写offset即可,这里就跟前面的9一样了,所以出现了2次。可以看到每次得到当前filter data之前写入的是前面构建好的filter data的offset,而不是当前的,那么当前构建好的filter data的offset(最后数据的offset,图中绿色部分)在哪里写入呢?

2025-05-24 13:39:45 325

原创 加速leveldb查询性能之Cache技术

table cache默认的文件数是990(可以理解为990个sstable文件或索引(data block index)),还保留十个左右的文件用于其他用途,并将其余990个文件交给 TableCache。k = 压缩的file_name不存在,打开sstable文件,并缓存下来,此时会在table cache的lru中写入<k = 压缩的 filename, v = TableAndFile>block cache是在读取真正的data block的时候使用,函数是BlockReader。

2025-05-20 23:13:44 789

原创 多图文讲解leveldb之SST/LDB文件格式

LevelDB 的持久化存储依赖于 SSTable(Sorted String Table)文件,其设计兼顾高效读写与压缩。本文深入剖析 LevelDB 中 SSTable(.ldb/.sst)的物理格式与核心源码实现。在leveldb中有两种文件后缀,一个是.sst,另一个是.ldb,两者区别在于一个是老版本,一个新版本,目前新版本都采用了.ldb文件后缀。:记录 Filter Block 的位置等元信息。:索引各 Data Block 的末尾键及位置。:文件元信息的入口点,固定大小。

2025-05-18 23:01:40 503

原创 C++20图片下载器工具项目实战

Awaitable 本身并不是一个具体的类或接口,而是通过特定的协议(protocol)与协程框架交互。换句话说,Awaitable 是提供 Awaiter 的类型,而 Awaiter 是包含。是用户面对的接口,通常是一个更高层次的类型,封装了异步操作的逻辑。如果 Awaitable 不是 Awaiter,编译器调用。3. Awaitable 和 Awaiter 的关系。3. Awaitable 和 Awaiter 的关系。是 Awaitable 的具体实现,或者说是。以下是对这两者的详细解析,并通过。

2025-05-10 15:34:31 837

原创 LevelDB全面解析Compaction

将VersionEdit的内容与Base Version内容进行合并,保存到新版本中,即:base中有一份added_files,edit或者说levels中有一份added_files,将这两个合并起来作为新版本的added_files。文件合并可以在读/写的过程中发生文件合并,比如读操作时,会去依次查找sst文件,每次发生文件seek,如果文件被多次 seek,超过了seek最大值,但是没有查找到数据,那么就应该被 compact 了。最后,将剩余base中的文件都加入到新版本中即可。

2025-04-26 18:41:54 906

原创 io_uring从原理到实践

SQ与CQ可以理解为环形队列,有head、tail,用户态将SQE放入SQ ring的tail,内核态从SQ ring的head进行收割,将处理好的结果放入CQ ring的tail,用户态从CQ ring的head提取出CQE。要实现用户态与内核的零拷贝,最佳方式就是实现一块内存映射区域,两者共享一段内存,核外往这段内存写数据,然后通知内核使用这段内存数据,在io_uring中用户态可以与内核态共享sq、cq、sqe。:队列深度(SQ/CQ 的容量),需为 2 的幂次(如 1024)。

2025-04-20 18:45:24 1328

原创 实战篇之让编译器成为你的多线程保镖

在官方的示例中提供了有个mutex.h,这里为了简单我去掉了,直接使用std::mutex,当然这里还有一些知识点,比如:自定义mutex让clang注解更好识别。更糟糕的是,这些问题往往在代码审查或运行时测试中难以被发现。可以看到一些不安全的地方都被检查出来了,可以提前发现你的代码问题!好了,留个作业,对于上面问题,你知道怎么修复?在拥有多CPU核心的现代服务器上,多线程程序中的。2.Clang线程安全注解:让编译器成为代码卫士。注:懒人版,本节实战代码已更新至星球。:指定函数调用前必须持有的锁(

2025-04-09 22:36:43 364

转载 著名开源项目leveldb主干编译不过

最近想再回顾一下leveldb,拉了一下leveldb代码,然后编译一把,没想到踩坑了,本文分享如何解决以及解决思路。最后,去github issue找了一下,发现有人也反馈这个问题了,感兴趣的可以去关注一下这个话题!第二个办法留给大家当课后作业,你知道怎么做吗,欢迎留言区讨论。第二:不改任何代码,直接添加编译参数。gRPC 实战篇:从零打造库存管理系统。第一:直接修改cmake,11变17。即:默认是11编译,所以就失败了。热度更新,手把手实现工业级线程池。学习更多干货,欢迎关注转发!

2025-04-08 22:09:04 287

原创 gRPC 实战篇:从零打造库存管理系统

说一个好消息,C++那些事开源项目4w star了!开源项目地址:https://github.com/Light-City/CPlusPlusThings网站:可以点击阅读原文或者:https://light-city.github.io/stories_things/gRPC 实战篇:从零打造库存管理系统目录一、项目背景二、如何设计 Protobuf核心代码 (inventory.proto)...

2025-03-09 14:35:48 1144

原创 太炸裂了!无需编写一行代码实现海螺语音生成!

大家好,我是光城,最近玩了一下大模型mcp server,写了一个本地mcp server,功能是让大模型读取本地文件,朗诵诗句。需求很简单,怎么实现呢?这里借助几个工具:1.cline+vscode2.deepseek3.minimax海螺ai这里是效果大家可以听一下,具体实现可以看视频,里面分享了如何从0到1搭建出来。懒人版:完整代码也分享到我的星球了,欢迎感兴趣加入下载,后面分享更多有趣的内...

2025-03-01 15:53:12 448

原创 深入浅出 C 语言中的 do{..}while(0):宏定义的秘密武器

深入浅出 C 语言中的 do{..}while(0):宏定义的秘密武器在 C 语言编程中,我们常常会遇到while、for、if-else这些熟悉的循环和条件语句,它们逻辑清晰,用法直观。然而,有一种构造却总是让人摸不着头脑——do{..}while(0)。乍一看,它似乎只是while循环的变种,功能完全可以被替代,那为什么 C 语言之父 Dennis Ritchie 要设计它?它究竟有什...

2025-02-24 22:59:08 766

原创 2025 年,C++ 还能“硬核”多久?

2025 年,C++ 还能“硬核”多久?编程语言江湖:谁主沉浮?JavaScript 稳坐王座,Python 无处不在TypeScript 和 Rust:新星闪耀C++:低调的“硬核大哥”现代 C++:从“老古董”到“新宠儿”C++ vs 新兴语言:谁更胜一筹?2025 年就业风向:C++ 的“硬核”舞台AI 浪潮下的 C++:硬核助力还是边缘化?2025 年,C++ 还值得学吗?如何“硬核”地学...

2025-02-22 17:55:29 1850

原创 C++ 项目:Unsplash 爬虫与瀑布流实战

C++ 项目:Unsplash 爬虫与瀑布流实战你是否曾羡慕那些能轻松从网络抓取数据并优雅展示的神奇工具?你是否想用 C++ 写出既有技术含量又实用性爆棚的项目?今天,我将带你走进一个基于 C++ 的 Unsplash 图片爬虫与瀑布流展示项目。通常大家都在使用Python写一些爬虫项目,那么C++能不能做?那答案是肯定可以的,本篇文章将会从C++17+一些爬虫知识+重磅的第三方库写一篇完...

2025-02-20 23:33:19 783

原创 现代C++并发编程:从零到一实现下载任务调度器

现代C++并发编程:从零到一实现下载任务调度器目录一、现代C++的可调用对象体系1.1 可调用对象的演进1.2 std::function:万能的函数包装器1.3 std::bind:绑定参数1.4 Lambda表达式:现代C++的匿名函数二、主菜:手把手实现一个下载任务调度器2.1 下载任务调度器设计三、总结在学习我提供的线程池项目时,有些小伙伴提出了一些困惑。在C++的现代并发编程中,我们经常...

2025-02-17 21:54:02 878

原创 C++学习路径终极指南

最近有不少朋友问我cpp学习路径及规划,本篇系统讲解学习路径!如果你是初学者请看方案1,如果你是进阶者请看方案2。初学者必看 | 方案1:从零到Offer的完整通关适用人群:刚接触编程/基础薄弱的小白???? Step 1:语法筑基(1-2周)核心目标:掌握编程思维(逻辑控制、循环、函数)必备神器:书籍《C++ Primer》开源项目加持:《C++那些事》开源版???? Step 2:实战深化(3-4周)核心...

2025-02-15 08:49:13 847

原创 如何向DeepSeek提问才能获得神级答案?

如何向DeepSeek提问才能获得神级答案?通常我们写C++程序的时候遇到过各种问题,比如:“又是Segmentation Fault?代码编译一小时,调试一整天?明明代码和教程一模一样,为什么我的IDE疯狂报红?别人的C++20写得像Python一样优雅,我的代码却像祖传屎山?”“为什么我的#include总是找不到.h文件?”“链接时报undefined reference?我明明写了函数啊!...

2025-02-11 22:38:37 401

原创 C++17十大常用特性

玩转cpp小项目星球3周年了!今天分享两个知识点:C++17我常用的十大特性。git am与git apply对patch处理的不同。

2025-02-10 23:05:06 196

原创 从bazel八问来聊快速学习!

最近在学bazel,于是有了一个学习方法,给大家分享一下,欢迎探讨!

2025-02-09 21:03:05 412

原创 2025我的第二次社招,写在春招之季

先说一个好消息,C++那些事 4w star了!前面断更了一个月,本篇文章就可以看到原因,哈哈。大家好,我叫光城,腾讯实习转正做后端开发,后去小公司做数据库内核,经过这几年的成长与积累,终于在2024年末换了工作,再一次靠自己努力实现了大厂跳跃,顺便借此机会聊一下最近的求职行情与看法。在几年前,我的第一次社招,机会非常多,比如:无人驾驶行业,AI各种方向,后端,网络安全等等,再到2024机会少了很...

2025-02-08 21:08:29 454

原创 2024年度回顾

大家好,我是光城,又到一年的最后一天了,按照惯例写出了这篇年度文章。1.C++那些事今年这一年较上一年公众号更新91篇文章,跟去年持平---我的2023年度回顾,知识星球比去年多不少,有327篇。目前公众号已发表原创653篇!C++那些事专栏210篇#C++那些事今年公众号的内容方向划分为:− 性能相关− 多线程相关− 数据库内核心相关− STL相关− 项目相关开源项目C++那些事 39.9k ...

2024-12-31 18:10:32 241

原创 ​深入浅出事件驱动libev:从理论到实现

深入浅出libev:从理论到实现大纲libev实现原理1.基本框架1.1 事件句柄(ev_watcher)1.2 IO多路复用1.3 Timer1.4 事件循环(ev_loop)2.如何使用?3.课后作业前段时间,有一个小伙伴问我能不能更新一些网络编程相关内容,本节将从源码与实现角度来讲讲libev。libev是一个跨平台的高效事件通知库,主要用于多路复用事件机制(例如select、poll、...

2024-12-11 18:48:21 1235

原创 C++20那些事之span设计与陷阱

C++20那些事之span设计与陷阱本节大纲0.初衷1. 何谓span?2. span的动态与静态2.1 静态 span2.2 动态 span3. subspan4. 使用陷阱4.1 不要让 span引用已经释放的内存4.2 改变底层数组大小时的问题C++20系列文章已经更新了快10篇了,往期如下:C++那些事之C++20协程开篇盘点C++20模块那些事C++20之lambda模版C++20四...

2024-12-10 16:01:23 1308

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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