自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CS143 PA3 cool语法解析

int1;;;

2024-06-28 11:40:27 436

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

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

2024-06-26 20:05:32 110

原创 算法设计与分析 笔记

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

2024-06-20 17:31:34 547

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

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

2024-06-05 20:38:36 701

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

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

2024-05-26 20:49:58 319

原创 tinywebserver heaptimer模块 事件定时器

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

2024-05-24 16:56:20 342

原创 tinywebserver log模块 日志

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

2024-05-24 16:31:43 336

原创 tinywebserver buffer模块 缓冲区

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

2024-05-24 11:34:34 397

原创 tinywebserver epoller模块 非阻塞IO

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

2024-05-16 20:28:46 156

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

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

2024-05-04 20:04:11 337

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

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

2024-04-29 15:57:31 222

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

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

2024-04-21 21:21:50 155 1

原创 tiny-redis list实现

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

2024-04-19 11:39:06 265

原创 tiny-redis SDS实现

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

2024-04-19 11:27:19 394

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

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

2024-04-16 10:25:38 295

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

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

2024-04-14 16:17:18 204

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

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

2024-04-10 16:41:00 104

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

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

2024-03-30 10:10:09 119

原创 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 782

原创 CS143 PA1 熟悉Cool语言

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

2024-03-09 11:52:53 274

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

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

2024-03-06 20:22:33 201 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 319 1

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

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

2024-03-04 20:43:41 171

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

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

2024-03-04 20:41:04 240

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

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

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

转载 现代 C++ 教程 笔记

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

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

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

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

2024-01-26 10:31:30 269 1

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

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

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

原创 二分法模板

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

2023-07-19 11:51:08 57

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

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

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

原创 球球大作战 easyX 类复用

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

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

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

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

2023-07-05 21:04:10 80

原创 java 复用类

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

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

转载 平衡二叉搜索树

平衡二叉搜索树的实现,包括查找,删除,插入

2023-01-18 22:05:18 58

转载 二叉搜索树

二叉搜索树的实现,包括查找,插入,删除算法

2023-01-18 21:52:00 45

原创 快速幂原理和实现

一种复杂度为O(log n)的求 a^n的算法。

2023-01-12 11:11:48 44

转载 图实现 bfs, dfs, dijkstra, prim

邓俊辉的数据结构,学习笔记,老师讲课真的真的好,好多地方还要细细打磨。

2023-01-07 20:47:43 146

转载 类的高级操作

类 运算符重载 静态成员 常量成员 缺省参数 对象组合

2023-01-07 10:52:46 86

转载 c++ 二叉树实现,遍历及重构

二叉树实现,遍历,重构

2023-01-05 22:47:50 219

转载 c++ 栈实现,进制转换,括号匹配,中缀表达式求值

栈及栈的应用,转自邓俊辉老师的数据结构。

2022-12-31 22:26:42 244

空空如也

空空如也

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

TA关注的人

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