自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NPuzzle Problem

OUC计算机科学与技术学院 人工智能导论2024 实验记录

2024-11-19 17:45:21 1076

原创 哈夫曼编码的应用

数据结构与算法课的一个简单实验,记录一下,以供参考。

2024-05-15 22:40:55 1125

原创 基于栈求解迷宫的单条路径和所有路径

数据结构与算法课的一个实验,记录一下。单纯想要了解利用栈求解迷宫的算法可以直接跳转到相应的小标题。完整代码链接。

2024-04-16 22:56:29 1001 1

原创 【Linux】进程间通信之共享内存

然后将申请的这部分内存空间映射到进程地址空间的共享区,在另一个进程中我们也做相同的事情,这样两个进程就同时关联了同一块物理内存空间,一个进程向这段内存中写,另一个进程从这块内存读取,这样同样也能实现两个进程之间的通信。在上一篇文章中我们分别介绍了匿名管道和命名管道两种通信方式,通过建立一个内存级文件,一个进程向该文件写内容,另一个进程从该文件中读内容,这样就完成了两个进程之间的通信。所以共享内存的生命周期是不随进程的,如果我们一直不释放,只有在关掉系统时消失,所以共享内存的生命周期是随OS的。

2024-02-29 22:23:57 873 1

原创 【Linux】进程间通信之管道

当然,为了防止乱写导致读写混乱,还要分谁向谁写的,父子进程需要各自关掉不需要的进程描述符,比如父进程关闭读端,子进程关闭写端,这样一个子进程可以向父进程发送信息的管道就建立完成了。而如果管道的写端对应的文件描述符关闭,或者负责写端的进程退出后,读端还在读数据,那么read将返回0,此时就要意识到写端已经关闭,读端也没有读下去的必要了。有了管道,可以用父进程创建一堆子进程,然后与每个子进程之间都建立一个管道,父进程就可以通过管道发送信息控制子进程,向子进程分配任务,做一个基于管道的进程池。

2024-02-27 11:55:32 1061 1

原创 【csapp】cachelab

中国海洋大学 计算机系统基础 lab4CMU 深入理解计算机系统(csapp) cachelab

2023-12-25 23:46:07 1344

原创 【csapp】bufferlab

中国海洋大学 计算机系统基础 bufferlab

2023-12-21 17:04:18 1695

原创 【csapp】bomblab

中国海洋大学 计算机系统基础 bomblab

2023-11-19 11:15:48 1134 1

原创 【Linux】深入理解文件缓冲区

比如可以记录一下缓冲区的当前大小,需要刷新缓冲区的时候,先把缓冲区的数据拷贝出去,然后把缓冲区的大小 置零,此时就完成了惰性删除。下一步子进程和父进程都结束,在两个进程退出之前会先刷新缓冲区,所以两个进程的缓冲区中的数据都被刷新出来,也就是两组相同的字符串,每组两条。,很简单,直接把要写入的数据拷贝到文件的缓冲区即可,此时缓冲区中可能已经有部分数据,所以写入的时候要注意细节。我们把北京比作外设,把商品比作信息,把青岛比作内存,把你比作进程,所以现在的情景就变成了位于内存的进程要从外设中读取一段信息。

2023-08-29 02:09:49 871

原创 【Linux】深入理解文件操作

有基础的小伙伴应该听说过输入重定向、输出重定向和追加重定向。在命令行中我们可以通过>>分别实现输入重定向、输出重定向和追加重定向。比如下面这样:输出重定向:追加重定向:输入重定向:简单看来,重定向就是本该从file1输入或向file1输出,结果却从file2中输入或向file2中输出了。

2023-08-28 01:20:41 836

原创 【数据结构与算法】二叉搜索树

普通二叉搜索树的每个节点都要存放数据,并且要链接子树,T _key;: _key(x){}注意要定义节点的构造函数,因为插入的时候会有这种操作,如果不写构造函数的话就new不出新节点。

2023-08-14 14:52:06 552

原创 【GO】go语言入门实战 —— 命令行在线词典

在运行程序的时候以命令行的形式输入要查询的单词,然后程序返回单词的音标、释义等信息。

2023-07-28 19:54:04 805

原创 【GO】go语言入门实战 —— 猜数字游戏

首先生成一个介于1~100之间的随机数,然后提示玩家输入数字,并告诉玩家是猜对了还是猜错了,如果对了程序就结束,如果错了就提醒玩家是大了还是小了,然后玩家继续输入。

2023-07-27 01:55:00 571

原创 【GO】go基础语法一览

获取运行进程时的命令行参数,第一个值是进程的当前路径,后面就是命令行参数。去构造一个带时区的时间,构造完的时间可以通过一系列的函数获取时分秒等。22~24行是切片操作,将指定范围的变量打印出来,区间左闭右开。切片是可变长度的数组,可以任意时刻去更改长度。可能会发生变化,所以追加结果要赋值回去。创建切片,切片可以像数组一样使用。和函数名之间,结构体可以写成指针。,并将子进程的输入输出存放在。多种类型,甚至可以条件分支。做两个时间的减法得到一个。将一个字符串解析到时间。类似与类的成员函数,

2023-07-27 01:50:21 708

原创 【C++】模板

先声明的,相对低地址,d2 后声明的,相对高地址(因为栈是向下生长的),所以最终结果也没问题。函数形参表: 必须要和模板函数的基础参数类型完全相同,如果不同编译器可能会报一些奇怪的错误。举个简单的例子,比如我要实现两个变量的值的交换,但我不知道这两个变量的类型。当函数模板识别到参数生成一个具体的模板函数时,这一步就是函数模板的实例化。如果调用上面的模板函数,那就会报错,因为一个模板参数只能实例化成一种类型。无论这里的参数列表全特化还是偏特化,都没有引入一个全新的模板,

2023-05-03 15:27:31 1108

原创 【C++】面向对象之多态

对于一个火车票售票系统,可能会有多重角色,比如普通成人类、学生类、军人类、儿童类等等…这些类可能都是从某个基类派生出来的,而且每个类都有一个基本需求,就是买票,所以对于同一个购票函数当不同的类去调用它时它应该执行不同的功能,比如成人要全价卖票,学生可以半价买票,军人得优先买票…所以怎样满足这一需求呢?通过多态的机制。所以多态其实就是不同继承关系的类实例化出来的对象去调用同一函数最终用同一个函数了执行不同的动作。感觉其实有点儿函数重载的意味…

2023-04-28 18:31:46 1570 1

原创 【C++】面向对象之继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类,也叫做子类,被继承的类称为基类,也叫父类。继承呈现了面向对象程序设计的层次结构体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。我们刚刚写的一个继承其实分为三部分:派生类和基类我们已经通过继承的定义差不多理解了,那继承方式又是什么呢?

2023-03-20 21:02:32 1522 2

原创 【Linux】进程控制

以最详细通俗的方式来讲解有关进程创建、进程退出、进程等待、进程替换等进程控制方式。详细介绍了fork()、exit()、_exit()、wait()、waitpid()、exec*函数等一系列函数和接口,看不懂算我输!

2023-02-18 01:09:34 759

原创 【Linux】进程的虚拟地址空间

什么是虚拟地址,为什么要有虚拟地址,虚拟地址和物理地址有什么关系,又有所谓线性地址、逻辑地址,它们又是什么?

2023-02-13 18:08:17 428

原创 【Linux】初识环境变量

对环境变量的概念性问题进行探讨。

2023-01-31 23:03:52 739

原创 【Linux】进程状态与优先级

关于进程状态你知道多少呢?关于linux的进程状态你又知道多少呢?这里还是以一种相对通俗的角度,并加以演示去认识进程状态,还有优先级,不妨花几分钟一看。

2023-01-11 15:22:29 766

原创 【Linux】初识进程

听说过进程吗?没听说过就进来听说一下吧,听说过就进来看看和你听说的一不一样吧,欢迎讨论~

2023-01-07 15:31:36 732

原创 【Linux】计算机软硬件体系结构

从底层的硬件到上层的用户,计算机是怎么构建这一套体系的,本文就较为简单的视角对其进行了不严谨的介绍。

2023-01-05 19:21:44 1094

原创 【Linux】基础开发工具的简单使用——yum/vim/gcc/gdb/make/git

如何在linux下安装程序、写代码、编译调试c语言代码、生成和清除解决方案、托管代码到远程仓库,答案都在里面

2022-10-18 20:30:44 2327 1

原创 【Linux】对权限的初步理解

Linux中权限是一个非常重要的概念,阅读本文也许会让你对权限的理解更上一层。

2022-10-09 13:40:20 938

原创 归并排序(MergeSort)

文章从浅入深,步步推进,详细讲解了归并排序的思路和递归和非递归两种代码实现方式。

2022-09-17 00:46:29 3255

原创 快速排序(QuickSort)

最保姆级的快速排序讲解,文章用步步图解的方法去讲解快排三种单趟排序的实现,分析了快排的实际复杂度和稳定性,并提出了优化方法,分别实现了快速排序的递归版本和非递归版本。

2022-09-04 19:36:27 1403

原创 【C++】类和对象中的static和const

文章讲了一下static和const两个关键字在类和对象中的使用,文章不长,内容也很简单。

2022-08-29 23:23:09 1395

原创 【C++】运算符重载

< 是有两个操作数的,像我们使用最多的 cout ,它的类型就是 ostream,是

2022-08-24 15:21:13 505 1

原创 【C++】类和对象——拷贝构造函数

文章详细讨论了什么是拷贝构造函数、为什么拷贝构造函数只能传引用、编译器自动生成的默认拷贝构造函数做了什么、浅拷贝和深拷贝、以及编译器对拷贝构造的优化。

2022-08-21 00:34:06 5947 1

原创 【C++】类和对象——构造函数

文章摘要:什么是构造函数、默认构造函数、初始化列表、通过构造函数进行隐式类型转换的条件、C++11变量初始化新玩法

2022-08-16 22:41:24 1872 5

原创 【C++】初识类和对象

还不知道C++中最基本的类和对象是什么?那就进来看看吧^ ^

2022-08-11 16:12:33 740

原创 【C++】缺省参数 函数重载 内联函数

关于缺省参数、函数重载、内敛函数的一切,看看有没有你想要的吧

2022-08-10 21:34:30 743

原创 【C++】命名空间

什么是命名空间

2022-08-06 23:17:37 339 1

原创 【C++】引用做函数返回值时必须要注意

如果函数返回时,出了函数作用域,如果返回对象还未还给系统,则可以使用引用返回,如果已经还给系统了,则必须使用传值返回。

2022-08-06 23:13:14 572 7

原创 a += 1 += 1为什么是错的?

通过一个案例深刻认识简单的赋值运算

2022-08-04 16:03:54 248

原创 浅学一下二叉树链式存储结构的遍历

二叉树的前序遍历、中序遍历、后序遍历、层序遍历(数组模拟栈、链表模拟栈)

2022-08-03 14:10:34 909

原创 浅学一下二叉树的顺序存储结构——堆

文章介绍了树和二叉树的一些基本概念问题,主要讨论的堆的几个相关函数、堆排序和用堆排序解决TopK问题。还有关于建堆的时间复杂度等的讨论。

2022-07-29 16:56:19 1024

原创 【数据结构与算法】学完链表,快来做做这些题吧

在下面的所有题目中,链表都是单链表,且链表节点的声明如下: struct ListNode { int val; struct ListNode *next; };文章目录移除链表元素题目描述思路分析代码实现反转链表题目描述思路分析代码实现链表的中间结点题目描述思路分析代码实现链表中倒数第k个节点题目描述思路分析代码实现合并两个有序链表题目描述思路分析代码实现分割链表题目描述思路分析代码实现回文链表题目描述思路分析代码实现相交链表题目描述思路分析代码实现环形链表题目描述思路分析代

2022-05-25 20:00:42 1042 1

原创 【数据结构与算法】栈和队列

文章目录栈什么是栈?栈的实现代码实现栈的声明初始化栈判断栈是否为空入栈出栈返回栈顶的值获取栈中有效元素的个数销毁栈队列什么是队列?队列的实现代码实现队列的声明初始化队列判断队列是否为空队尾入队列队头出队列取队头的数据取队尾的数据返回队列的数据数销毁队列销毁队列栈什么是栈?栈是线性表的一种。它只允许在固定的一端进行插入和删除元素操作。而进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。所以栈增删元素就有了我们常说的先进后出(Last In First Out):压栈:栈的插入操作叫做进栈/压

2022-05-19 21:16:02 589 1

空空如也

空空如也

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

TA关注的人

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