自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 用 Neovim 优雅地构建/运行 C/C++(Quick-c)

Quick-c 是一个 Neovim 插件,旨在简化 C/C++ 开发流程,实现"即写即跑"的体验。它提供一键构建/运行/调试功能,支持跨平台(Windows/Linux/macOS)和多种编译器(gcc/clang/MSVC)。主要特性包括:异步执行、Makefile 集成、多文件构建、Telescope 交互式选择、项目级配置和 LSP 集成。通过快捷键或命令快速完成编译运行,无需手动输入命令,适合学习、刷题和小型项目开发。安装简单,开箱即用,显著提升开发效率。 项目地址:https

2025-10-26 08:07:45 944

原创 Achievo — 代码进步追踪器

摘要:Achievo是一款面向开发者的代码进步追踪工具,通过Git提交自动统计每日代码变化,结合本地评分和AI分析生成可视化报告。核心功能包括:实时统计代码行数变化、30天趋势图、AI质量评分(架构/可读性等)、自动生成日报(亮点/风险摘要)。采用Electron+React开发,支持多仓库管理,数据本地存储,仅AI总结时需调用API。适用于个人开发者量化成长、团队进度跟踪及学习正反馈建立。项目开源,持续迭代中。(145字)

2025-10-07 23:07:17 727

原创 xv6-2023 - find Lab

xv6 Find Lab 实现摘要 本实验要求实现一个简化版UNIX find命令,用于在目录树中查找特定名称的文件。关键实现点包括: 参照user/ls.c的实现方式,通过读取目录内容实现文件查找 使用递归处理子目录,但要跳过"."和".."特殊目录 使用strcmp()进行字符串比较而非==运算符 需要处理文件系统的持久化特性 主要技术要点: 使用open()打开目录文件 通过fstat()获取文件状态信息 使用递归遍历子目录结构 比较文件名时使用strcmp()

2025-09-28 14:27:48 1025

原创 xv6-2023 - primes Lab

本文介绍了如何在xv6操作系统中实现一个用户级质数筛选程序。该程序使用管道和进程递归创建筛选管道,每个进程负责识别一个质数并过滤其倍数。主程序生成2-35的数字,通过管道传递给第一个子进程。每个子进程读取第一个数字作为质数打印,创建新管道和子进程,过滤掉当前质数的倍数后将剩余数字传递给下一个进程。这种递归管道方法有效实现了埃拉托斯特尼筛法的并行版本,展示了xv6中进程间通信和递归编程的实际应用。

2025-09-28 14:26:50 405

原创 xv6-2023 - pingpong Lab

本文介绍了如何在xv6操作系统中实现一个用户级程序"pingpong",通过管道在两个进程间传递字节。主要内容包括: 程序要求:父进程发送字节给子进程,子进程接收后打印消息并回传字节,父进程再打印接收确认。 实现要点: 需要创建两个管道实现双向通信 使用pipe()、fork()、read()、write()等系统调用 及时关闭不用的管道端以避免阻塞 技术细节: pipe()系统调用在内核中的实现原理 文件描述符的分配和管理 用户空间与内核空间的数据传递 解决方案:创建两个管道,分别用于

2025-09-21 16:02:43 756

原创 xv6-2023 - Sleep Lab

这篇文章介绍了如何在xv6操作系统中实现一个用户级的sleep程序。主要内容包括: 程序功能:实现类似UNIX的sleep命令,让进程暂停用户指定的tick数。 实现要点: 代码放在user/sleep.c文件中 需要处理命令行参数,将字符串转换为整数 缺少参数时要打印错误信息 使用系统调用sleep实现暂停功能 程序结束后调用exit(0) 技术细节: 通过分析xv6系统调用机制,解释了参数传递和返回值处理过程 描述了RISC-V架构中寄存器a7存储系统调用号,a0-a5存储参数的约定 分析了内核中sys

2025-09-21 13:36:11 1161

原创 Redis C++ 实现笔记(I篇)

Redis C++ 实现笔记(I篇)摘要 本文主要讲解如何在C++中实现Redis的多线程机制,重点解决阻塞I/O和CPU密集型任务问题。文章介绍了线程池的实现,包括: 使用互斥锁和条件变量保证线程安全 生产者-消费者模式处理任务队列 将大型ZSet删除操作放入后台线程执行 关键点: 通过Work结构体封装任务函数和参数 worker线程使用while循环避免虚假唤醒 任务执行放在锁外减少锁持有时间 线程池初始化和管理任务队列 实现方法有效解决了Redis在处理大数据结构时的性能瓶颈问题。

2025-09-11 20:56:40 864

原创 Redis C++ 实现笔记(H篇)

这篇文章介绍了如何在C++中实现Redis的键过期机制,主要思路是使用小顶堆数据结构来高效管理键的过期时间。小顶堆能以O(1)时间复杂度获取最近要过期的键,插入和删除操作的时间复杂度为O(logN)。文章对比了数组和指针实现小顶堆的优劣,解释了为什么数组存储更优,并展示了相关数据结构的关系图。此外,还新增了两个命令:pexpire(设置毫秒级过期时间)和pttl(查询剩余过期时间)。文章是系列文章的一部分,主要关注与之前实现的不同之处。

2025-09-09 23:22:19 647

原创 Redis C++ 实现笔记(G篇)

Redis C++ 实现笔记(G篇)摘要 本文继续探讨Redis C++实现,重点介绍客户端空闲超时机制的设计。通过双端队列和哨兵节点实现连接状态管理,使用单调时钟记录活跃时间。详细讲解了连接节点的插入、删除操作原理,并分析为何使用哨兵节点能简化双端队列操作。通过图示展示了节点删除和插入的具体过程,帮助理解连接超时机制的核心实现思路。

2025-09-07 14:30:29 683

原创 Redis C++ 实现笔记(F篇)

《Redis C++实现笔记(F篇)》摘要:本文延续Redis C++实现系列,重点讲解有序集合(ZSet)相关命令的实现。作者基于前文实现的AVL树和哈希表(HMap)结构,新增了zadd、zrem、zscore、zquery等Redis-like命令。关键数据结构包括:ZSet(包含AVL树和HMap双重索引)、ZNode(同时作为树节点和哈希节点)。通过图示展示了数据结构的层次关系,包括g_data→db→HMap→HTab→Entry→ZSet的完整存储路径。实现时利用AVL树维护(score,na

2025-09-04 23:33:46 775

原创 Implementing Redis in C++ : E(AVL树详解)

本文介绍了在C++中实现Redis数据结构时使用AVL树的方法。主要内容包括: AVL树的特点:严格平衡的二叉搜索树,保证任意节点左右子树高度差不超过1,查找效率稳定在O(logN) 树形数据结构的基本概念:节点、根节点、父节点、子节点、兄弟节点、叶子节点、高度、深度等 不平衡二叉树的问题:当插入顺序不当时,树可能退化成链表,导致查找效率降为O(N) AVL树的旋转操作:通过左旋和右旋调整树结构,保持平衡性而不改变中序遍历的有序性 旋转操作的具体实现:详细讲解了左旋和右旋的代码实现,并解释了为何选择特定节点

2025-08-24 19:58:56 389

原创 Implementing Redis in C++ : D

本文介绍了在C++中实现Redis的TLV协议格式优化,主要改进包括: 采用TLV(Type-Length-Value)二进制协议格式,支持更高效的数据传输和更丰富的类型系统 实现了6种数据类型支持:nil、错误、字符串、64位整数、双精度浮点数和数组 优化了响应序列化机制,使用TLV格式替代简单的状态码+数据格式 新增了hashtable的遍历功能hm_foreach(),支持keys命令查询所有键 详细解释了TLV协议的优势和实现方式,包括自描述性、错误检测等特性 文章重点阐述了服务器端消息发送和客户端

2025-08-22 19:14:05 402

原创 Implementing Redis in C++ : C

本文实现了基于C++的自定义Redis键值存储系统,主要优化包括: 使用自定义哈希表HMap替代std::map,提高查询性能 采用渐进式rehash机制,避免扩容时的性能抖动 实现FNV哈希算法,提供更好的键值分布性 优化内存管理,减少内存碎片 系统采用侵入式链式哈希表设计,通过偏移量计算实现高效节点访问。主要数据结构包括HNode、HTab和HMap,其中HMap同时维护新旧两个哈希表用于平滑扩容。通过位运算优化索引计算,使用calloc确保内存清零初始化。

2025-08-21 14:21:13 637

原创 Implementing Redis in C++ : B

本文介绍了如何在C++中实现Redis的键值存储功能,通过构建非阻塞网络通信和自定义协议格式。文章重点讲解了数据解析部分,包括读取32位整数(read_u32)、字符串(read_str)和请求解析(parse_req)的实现细节。此外,还详细说明了命令处理(do_request)的核心逻辑,包括get、set、del三种基本操作的使用方法。整个系统采用map结构存储键值对,通过自定义的二进制协议与客户端进行通信,为后续扩展Redis功能奠定了基础。

2025-08-19 18:12:56 1021

原创 Implementing Redis in C++ : A

Redis C++实现摘要 本文介绍了在C++中实现Redis服务器的基础套接字编程部分。重点包括: Windows平台下需要初始化Winsock环境(WSAStartup/WSACleanup) 创建socket并设置地址结构(sockaddr_in),注意字节序转换(htons/htonl) 端口复用设置(setsockopt)及socket绑定监听(bind/listen) 内存布局分析:sockaddr通用结构与sockaddr_in等具体结构的关系 错误处理机制(die/msg函数)和套接字非阻塞

2025-08-18 13:57:30 820

原创 python QQ机器人系列: 从go-cqhttp到napcat(QQbot开发教程,基础向)

本文介绍了使用Python开发QQ机器人的教程,从go-cqhttp转向napcat框架。主要内容包括: 环境准备:介绍了napcat项目的基本信息,使用Docker安装napcat的步骤,以及Docker的优势和基本使用方法。 登录配置:详细说明了三种登录QQ机器人的方式,推荐使用webui界面扫码登录,并介绍了websocket连接的设置方法。 开发基础:提供了创建Python虚拟环境和项目结构的指导,为后续编写机器人代码做准备。 文章面向有一定Python基础的开发者,重点讲解了如何搭建开发环境,为后

2025-07-13 17:07:27 2092

原创 Neovim中快速使用python的插件

"Quick-py"是一个为Neovim设计的Python开发插件,主要功能包括自动激活虚拟环境、一键运行代码和自定义执行命令。插件通过Lua实现,核心功能是递归查找项目中的虚拟环境目录(.venv或venv),并自动设置Python路径和环境变量。它利用Neovim API如vim.fn.expand()获取文件路径,vim.fn.isdirectory()验证目录存在性,以及vim.api.nvim_create_autocmd()实现终端自动激活虚拟环境。插件还支持缓存虚拟环境路径以提高性能,并可以停

2025-05-27 22:14:05 542

原创 python爬虫系列:BeautifulSoup下载小说讲解(零基础向)

先放上代码import requests #引入request库from bs4 import BeautifulSoup###以笔趣阁《圣域》为目标的爬取url = "https://www.xbiquge.la/13/13959/"#UA伪装 让浏览器识别为用户而非爬虫headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chr

2024-06-21 13:53:51 1386

原创 pythonQQ机器人系列(基于go-cqhttp):使用requests和socket实现QQ机器人聊天(2-0)

hello,大家好,这里是菜的离谱的萌新博主。这几天不也是快春节了嘛。咱是闲下来有空了,把这个鸽了N年的博客咱抽空写完了。大家应该也是放假或者马上要放假了在此提前祝大家新年快乐。过一个好年。咱写的不好,非喜勿喷。前言(二)github地址此文章继承前面的文章,这次更新了socket,可以用socket接收群私聊消息以及多群喊话,实现群私聊消息的回复功能,以及点歌和新闻。go-cqhttp的config.yml文件改动了部分内容。

2023-01-15 22:16:12 2238

原创 pythonQQ机器人系列:使用requests实现QQ机器人聊天(1-0)

使用requests实现QQ机器人聊天

2022-10-02 22:51:00 5334 9

原创 pythonQQ机器人系列:使用requests实现QQ机器人聊天(0-2)#请去(2-0)使用新代码,此处代码过于繁杂

系列文章目录基础:requests的基本使用:QQ机器人基础传送门第一章 :pythonQQ机器人系列:使用requests实现QQ机器人聊天(一)文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言通过使用requests进行实现QQ机器人,requests库相对于使用socket库和requests库来说是相对简单的,所以比较适合那些,短时间内socket库学不完的,但是因为socket库没用的原..

2022-03-28 11:34:56 9702 27

原创 requests的基本使用以及爬虫的基本介绍:QQ机器人制作基础

系列文章目录pythonQQ机器人系列:使用requests实现QQ机器人聊天(一)传送门目录系列文章目录前言一、requests是什么?二、使用步骤1.下载库2.引入库3.爬虫的基本介绍及库的使用总结前言此requests基础对应pythonQQ机器人系列文章,并介绍部分爬虫知识,此文章更偏向零基础,可能会不定期更新。一、requests是什么?requests是python中的一个爬虫库,是一个使用非常广泛的库二、使用步骤1.下载库p

2022-03-24 15:58:13 2449

原创 如何免费建立自己的一个HTML网站(完全免费)

1.准备应用今天我们使用cpolar和phpstudye来建立免费的网站。cpolar网址:cpolar - 安全的内网穿透工具cpolar 安全的内网穿透工具,适合微信公众号开发调试,Web开发,OpenAPI开发,webhook开发和调试工具。https://www.cpolar.com/phpstudy网址:小皮面板(phpstudy) - 让天下没有难配的服务器环境!phpStudy官网2019正式推出phpStudy V8.0版本PHP集成环境,支持Windows与Linux系统,支持

2022-02-11 09:27:19 8408 1

原创 python爬虫系列:xpath爬取图片讲解(零基础向)

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学...

2021-06-23 18:33:44 10243 16

空空如也

空空如也

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

TA关注的人

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