自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AI 食用指南--更好的用AI编程

请你帮我搭建一个cmake环境,分为src和include目录,其中include包含min_linenoise的api,src是main.c和min_linenoise的实现,帮我完成cmakelists,并且加上调试标志。我现在是一名学生,需要学习优秀的C语言项目,参考linenoise项目用户实现一个简单的终端交互命令,期望实现命令行补全功能,接下来的对话将围绕这个目的,请你帮助我更好的学习他的精华。通过大量的输入,来猜下一个输出。prompt决定AI的输出,需要学会优雅的提问。

2025-10-19 22:14:20 953

原创 计算机系统 C语言运行时对应内存映射 以及 各个段的数据访问下标越界产生的后果

常见区域(可执行程序加载到内存后)提示:现代发行版默认 PIE/ASLR 会使地址每次运行都不同;但不同段仍会处在各自映射区(见 /proc/self/maps)。如果每次想看到一样的值,需要把随机的内存地址给关闭。

2025-08-24 17:55:03 542

原创 硬件抽象层 (HAL, Hardware Abstraction Layer)的简单使用示例

不要做过度的设计,没必要为了一个简单的需求写一个复杂的系统,如果这个需求是后两个版本做的,就把重构工作给后两个版本吧,谁也不知道这个代码中间会不会有改动。代码能跑就不要动他,除非你觉得这个代码很复杂繁琐,或者增加代码以及非常的麻烦了,再去重构。这里HAL层最好的一个理念就是抽象,业务层不需要了解底层干了啥,只需要了解HAL提供的抽象的接口“打开” “关闭”如何使用。

2025-08-24 12:22:50 505

原创 滑动窗口算法及例题

滑动窗口是一种,用于处理线性结构(如数组或字符串)中满足某种条件的连续子序列。,窗口内部的数据通过增量更新维护。

2025-08-17 16:22:42 766

原创 C语言字符串操作汇总

的字符。

2025-08-17 15:50:37 1067

原创 差分 前缀和

根据,把前缀和和差分拿出来讲解,大家会了之后记得刷题,容易脑子会了,做不出来题目。

2025-08-03 21:10:34 848

原创 高并发内存池 预备 单线程定长内存池

项目源地址,此项目是基于谷歌的tcmalloc,觉着很不错,学习一下。1281024针对博主的代码,他malloc之后没有free,我在析构函数的地方将内存释放了。

2025-05-03 10:18:03 485

原创 CS143 PA3 cool语法解析

int1;;;

2024-06-28 11:40:27 615

原创 vscode 调试, 调试程序依赖输入流启动

使用编译原理进行语法解析的时候需要用到这个功能。< token.txt就是输入流的文件。

2024-06-26 20:05:32 311

原创 算法设计与分析 笔记

用数组记录中间结果,避免重复计算。

2024-06-20 17:31:34 701

原创 bison flex 实现tiny语言的编译器

完成了词法分析,语法分析,中间代码生成,虚拟机执行,没有进行类型检查、错误处理和中间代码优化。

2024-06-05 20:38:36 1448

原创 ubuntu ffmpeg 手动编译 编译成功后运行,找不到xxx.so

应该安装的安装了,运行了这个配置之后,make make install 生成了对应的执行文件运行./ffmpeg 说找不到对应的库文件,我一看,其实就是在;libavdevice里,然后我就把他移动到/usr/lib下,然后又有一个其他库找不到,总不可能一个个sudo cp吧。

2024-05-26 20:49:58 585

原创 tinywebserver heaptimer模块 事件定时器

项目源网站。这个模块是事件定时器,这个模块是干啥用的?当客户端来了一个连接,但是我不发送请求,就这样干耗着,这个时候服务端就应该断开连接,给其他客户端的请求。这是主函数,GetNextTick就是询问当前有没有超时的事件需要处理,有的话就处理了,在连接客户端的函数里就是添加了一个关闭客户端的事件。

2024-05-24 16:56:20 476

原创 tinywebserver log模块 日志

项目源网站。这个模块是日志模块,开了另一个线程,往fd里写日志。

2024-05-24 16:31:43 486

原创 tinywebserver buffer模块 缓冲区

/ | | 数据 | |//读指针的位置 [readPos_, writePos_) 这一块是可读的正确的数据//写指针的位置 [writePos_, buffer_end) 这一块是空闲区域用vector buffer_相当于就是一串存储一个字节的数据,就是缓冲区。readPos_ 和 writePos_之间的,就是有效的数据。

2024-05-24 11:34:34 537

原创 tinywebserver epoller模块 非阻塞IO

面试的时候,老是考阻塞IO和非阻塞IO的区别,其实在写代码的层面上,都是系统调用。这段代码摘自,非常的优雅,用了c++新特性,我倒是觉着,这些都是文档,到时候调他的包就好了,不懂再查。上代码。

2024-05-16 20:28:46 250

原创 AI 使用示例 更有效率的编程

现在大模型能力非常强,可以帮我们减少不少的查资料的时间,我给出两个建议,和几个编程问题,给大家提供一个新的思路。

2024-05-04 20:04:11 641

原创 vscode 调试,指定程序运行的参数

我们平时写程序的时候,需要 ./tinytest aaa这样的格式,但是vscode调试功能没有指定参数的功能,这里改一下配置就好了。program是需要运行的程序,args是输入的参数。然后按F5就可以启动调试了。

2024-04-29 15:57:31 888

原创 NC32 求平方根 等差数列求法 十几行搞定

所以我们求到第一个比k^2大的数,然后让他减一就好了。非常优雅,复杂度只是O(k),也不用二分法。

2024-04-21 21:21:50 276 1

原创 tiny-redis list实现

基于实现的redis,根据书上的API描述,自己实现C++版本的redis。list是常见的数据结构,但是redis有更加抽象的实现,就很,妙,但是也会有很多bug,他用了函数指针,指来指去的。上代码。

2024-04-19 11:39:06 430

原创 tiny-redis SDS实现

基于实现的redis,根据书上的API描述,自己实现C++版本的redis。SDS是redis内部自己实现的数据结构,相较于c的char *,扩宽了内存大小,减少了对内存的申请,更加迅速。上代码。

2024-04-19 11:27:19 504

原创 70行优雅实现线程池 模拟生产者消费者问题

这段代码摘自,非常的优雅,用了c++新特性上代码。

2024-04-16 10:25:38 394

原创 c++ flex yacc 实现小型计算器

yacc 实现的小型计算器,支持+ - * / ( ) ! ,和使用变量进行运算。

2024-04-14 16:17:18 462

原创 c++ 优先级队列(堆) 自定义数据结构排序方法 简单版

c++ 优先级队列(堆) 自定义数据结构排序方法 简单版

2024-04-10 16:41:00 282

原创 c++ 可变参数 链接器找不到模板函数的实现

在.h文件里定义了参数模板,结果链接的时候找不到模板函数的实现。就是把实现也放到.h文件里就好了。

2024-03-30 10:10:09 266

原创 CS143 PA2 cool语法解析 c++版

{%}%%Rules%%这里的Declarations相当于你的代码解析的时候,用上的一些全局变量和包含的库。%{*//**/%}这里几乎都是c++的代码, fin是读入的文件,string_buf是解析的时候使用的字符数组,*string_buf_ptr是字符指针,curr_lineno是行数,每解析到一个\n (不在字符串里的\n),需要对他加一,这个会现实到token结果的第一个元素里。Definitions 你在匹配的时候使用的一些变量,状态集。LE "<="

2024-03-26 09:15:40 1777

原创 CS143 PA1 熟悉Cool语言

2、函数里面要是没有大括号,相当于只能写一个语句,而且不加分号,有大括号,里面可以写多个,每个语句块要加分号,要是有返回值,最后一行写。把每一个命令都抽象成一个指令,碰到e的时候,先判断是不是空,然后执行最顶部的命令就好了,使用了老师推荐的类的抽象,康上去也还可以,扩展也可以。算是快速上手新语言了吧。因为没有数组的概念,刚好看到老师给的示例代码里有list,就想着用list模拟stack就好了。输出4应该就是对的,linux有缓冲区的问题,输出内容比较乱,后面我自己手动输入了一次。4、每个方法之后要加;

2024-03-09 11:52:53 434

原创 手写操作系统 11 信号量和锁实现

李述铜老师的手写,复习笔记。这里需要强调的是原子操作,计算机是需要用硬件来保证,关闭硬件的中断,就是eflags寄存器。

2024-03-06 20:22:33 432 1

原创 手写操作系统 15.7 execve实现

我们看看execve( const char *name, char * const *argv, char * const *env ) 函数,name函数是需要运行函数的文件名,第二个参数是运行文件需要的参数,env是环境变量,储存着地址。这里memory_create_uvm,就是用地址分配器新建一个一级页表,然后把0--0x80000000地址段的一级页表指向操作系统的二级页表,这块代码是共享的。这里的有一个难点,就是两个进程页表不一样,不能通过虚拟地址直接复制,需要通过页表,获取当前的物理地址。

2024-03-06 19:35:15 504 1

原创 cmake 新建文件之后,找不到对应的.h or .c文件

老bug了,新建一个文件之后,在原来的build文件里make,会提示找不到文件。

2024-03-04 20:43:41 427

原创 cmake 库A依赖库B 找不到对应的函数

写cmake文件的时候,发现了一个奇怪的bug,就是链接库A依赖库B,把库A和库B都链接上去之后,还是显示找不到库。像这样。

2024-03-04 20:41:04 436

原创 手写操作系统 15.6 fork实现

李述铜老师的手写操作系统,复习笔记。

2024-02-28 21:21:38 469 2

转载 现代 C++ 教程 笔记

书籍见记录几个常见的新特性。

2024-02-25 22:02:19 109 1

原创 qemu-system-i386 库文件libpthread.so.0未定义符号

卸掉snap的 core20即可。snap软件卸掉一点关系都没有(怕的话,提前做个备份)。我卸掉snap之后,除了用软件商店下载的vscode也一起被卸掉了之外,其他的现在看上去没问题。学习李述铜老师的手写操作系统,ubuntu 22 运行下面的命令, 会报错在动态链接库找不到未定义的符号。后来在终端可以正常启动qemu,但是在vscode不行,搜索动态链接库,/usr/bin下面也有这个库。

2024-01-26 10:31:30 811 2

原创 码蹄集 进阶 动态规划部分

dp[i] 表示异或和是i的序列最后一个数字,这个数字尽可能小。举个例子,序列 0001 0010 0100 1000 和序列 0000 1111 他们都满足单调递增序列,这个时候dp[i]=1000 , 取1000和1111最小的数。

2023-07-29 11:45:55 446 1

原创 二分法模板

左闭右闭模板 [lo , hi]左闭右开模板 [lo, hi)

2023-07-19 11:51:08 121

原创 2022 码蹄杯 部分题解 白银

这道题第一反应是对每个点进行dfs或者bfs,暴力标记所有的点,但是复杂度太高,看了题解之后,发现一种转化的方法。遍历所有的点,当他是上下左右中最大的,其肯定是要挑一次水。给出我的方法,老规矩,用哨兵,减少边界检查。

2023-07-12 09:33:02 1517 1

原创 球球大作战 easyX 类复用

基于c++的easyX写的小游戏,基于和对他们的代码进行优化和修改,用java面向对象程序设计 类的思想。

2023-07-07 18:01:53 289 1

原创 c++ 数组地址 子类向父类自动转型 导致数据错误

发现他们的地址压根不一样,写base[1]会修改a[0]的数据,就像计算机系统的多个未定义的全局变量一样,会任选一个,覆盖后面的。今天写球球大战游戏的时候,用类对代码进行重构,发现一个容易出错的地方,写了一个测试程序。将子类数组son a[]传递给函数时,我们看a[0] a[1] a[2]首地址。

2023-07-05 21:04:10 189

原创 java 复用类

java 类继承和组合的选择,final关键字,类初始化的顺序

2023-01-19 20:33:25 155 1

空空如也

空空如也

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

TA关注的人

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