自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux(五)创建一个miniShell

实现一个minishell

2023-01-24 16:25:24 1445

原创 LInux(四)进程控制(创建、终止、等待、替换)

进程控制分为进程创建(写时拷贝技术、fork、vfork创建子进程流程)、进程终止(程序的三种退出方式,exit与_exit的区别、退出码反映程序的退出情况)、进程等待(使用wait与waitpid接口参数使用与掌握、理解Status底层结构)、进程替换(以execve系统调用接口封装起来的其余接口的理解与使用)

2023-01-24 13:28:35 3022

原创 数据结构 最短路径课设(源码+实验报告+视频讲解)(用了自取)

关于数据结构最短路径问题实验报告+代码+视频(用了自取)

2023-01-23 20:18:50 2707

原创 LInux(三)程序地址空间、内存管理

介绍程序地址空间、操作系统中三种内存管理方式(分页式内存管理、分段式内存管理、段页式内存管理)、缺页中断与内存置换算法

2023-01-19 19:47:18 1715

原创 Linux(二)进程概念

介绍冯诺依曼体系结构、操作系统控制管理计算机上的软硬件资源、进程相关信息以及fork接口的详细介绍与使用、简单模拟父子进程、僵尸进程、孤儿进程。以及对于环境变量也展开了具体的描述,对于三种获取环境变量的方式进行模拟实现

2023-01-19 00:08:54 1278

原创 Day05 日期类OJ题目

计算日期到天数转换_牛客题霸_牛客网根据输入的日期,计算是这一年的第几天。保证年份为4位数且日期合法。进阶:时。题目来自【牛客题霸】根据输入的日期,计算是这一年的第几天。保证年份为4位数且日期合法。进阶:时间复杂度:O(n) O(n) ,空间复杂度:O(1) O(1)

2024-09-22 14:20:01 935

原创 Day04 求1+2+3+...+n

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围: 0<n≤2000<n≤200进阶: 空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)

2024-09-21 21:41:01 186

原创 (八)explicit关键字在C++中的用法

explicit修饰构造函数,禁止类型转换

2024-09-20 21:25:24 252

原创 day03 用栈实现队列

每次 pop 或 peek 时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。将一个栈当作输入栈,用于压入 push 传入的数据;另一个栈当作输出栈,用于 pop 和 peek 操作。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(232. 用栈实现队列。

2024-09-19 22:07:14 297

原创 一、Numpy使用

打印结果如左图。

2024-09-18 09:54:36 271

原创 读研刷题复习day02

给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)数据范围:0

2024-09-03 19:50:56 332

原创 读研刷题复习day01

读研日记

2024-09-02 20:56:05 899

原创 单链表头结点的作用

对单链表进行插入、删除操作时,如果在首元结点之前插入或删除的是首元结点,不带头结点的单链表需改变头指针的值,在C 算法的函数形参表中头指针一般使用指针的指针(在C+ +中使用引用 &);3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会。1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.

2023-09-27 10:06:15 1200

原创 基础(一)十六进制转八进制

.

2023-03-03 22:56:28 905 2

原创 网络协议(一)应用层(自定制协议、HTTP协议)

应用层:负责应用程序之间的数据沟通一、自定制协议(私有协议) 二、HTTP协议1)、请求行解析:GET /index.html HTTP/1.1第一部分:请求方法:多种多样,描述不同的请求目的第二部分:URL第三部分:协议版本2)请求头部3)空行4)正文:5)响应行三、Cookie 与 Session四、HTTPS协议

2023-02-21 21:08:24 1758

原创 二叉树OJ(二)二叉树中和为某一值的路径 I、II、III

处理好何时该剪枝

2023-02-20 14:52:20 404

原创 面试(十二)使用fiddler抓包工具彻底搞懂Get与Host区别及使用

一、请求与响应的报文模型二、http如何解包?如何封装?三、http请求与响应是如何被读取的?四、http是如何被发送的?五、Get与Host的区别是啥?六、区别总结

2023-02-20 14:51:43 887

原创 二叉树OJ(一)二叉树的最大深度 && 二叉搜索树与双向链表 && 对称的二叉树

二叉树的最大深度二叉树中和为某一值的路径(一)二叉搜索树与双向链表对称的二叉树

2023-02-19 19:27:58 530

原创 数据结构复习(七)模板类封装实现不带头结点的单链表

带头结点的单链表的L指向头结点不带头结点的单链表的L指向第一个结点

2023-02-19 14:16:42 465

原创 言简意赅+图解 函数传参问题(传值、传地址 500字解决战斗)

所以为什么说传地址就能修改实参的值呢?原因就是上面这段话。

2023-02-19 13:22:05 519

原创 链表OJ(七)删除有序链表中重复的元素-I -II

删除有序链表中重复的元素-I删除有序链表中重复的元素-II

2023-02-19 10:56:42 494

原创 链表OJ(六)链表相加(一) 链表相加(二)

对于指针结尾移动以及开始是val的赋值可以规避大量的访问溢出错误√ Nice

2023-02-18 23:23:19 403

原创 链表OJ(五)判断一个链表是否为回文结构(中点位置的细节剖析)

对于中点位置信息的精确把握至关重要

2023-02-18 22:04:35 124

原创 链表OJ(四)链表排序合集

合并两个排序的链表 && 合并k个已排序的链表 && 单链表的排序 && 链表的奇偶重排 && 链表的奇偶重排扩展

2023-02-18 19:17:58 636

原创 链表OJ(三) 反转链表合集

区间反转链表、反转链表、哑结点的定义使用,递归实现每k个一组的反转,递归反转链表

2023-02-18 16:55:22 719

原创 Linux(十三)设计模式——单例模式

饿汉模式就是提前实例化对象,等用的时候就能直接用,使用静态成员变量(保证它在初始化就能有一份内存)构造函数私有化;懒汉模式就是在用的时候才去实例化对象, 1、构造函数私有化(保证只能实例化一个对象) 2、定义静态类型的指针,在用的时候进行new 3、new的时候注意线程安全问题(加锁保护) 4、避免已经实例化之后后续资源重复加解锁访问(double check) 5、使用volatile修饰,避免编译器过度优化

2023-02-18 14:35:43 671

原创 (模板)关于有序数组中重复数字的删除(图解+模板讲解)

对后面的每一位进行继续遍历,能够保留的前提是与当前位置的前面 k 个元素不同(答案中的第一个 1),因此我们会跳过剩余的 1,将第一个 2 追加,得到 1,1,2。这时候和答案中的第 1 个 2 比较,只有与其不同的元素能追加到答案,因此剩余的 2 被跳过,3 被追加到答案:1,1,2,2,3。继续这个过程,这时候是和答案中的第 2 个 1 进行对比,因此可以得到 1,1,2,2。② 当this继续访问的时候,如果它的值与len 之前k个元素的值相同,那么this直接后移。将保留2位转化为保留k位。

2023-02-18 00:21:00 361

原创 链表OJ(二)删除链表的倒数第 N 个结点

在对链表进行操作时,一种常用的技巧是添加一个哑节点(dummy node),它的 nextnext 指针指向链表的头节点。这样一来,我们就不需要对头节点进行特殊的判断了。

2023-02-18 00:06:08 77

原创 字符串(二)KMP算法——找出字符串中第一个匹配项的下标

KMP就是个背

2023-02-17 23:09:09 81

原创 对撞双指针(二)接雨水问题

木桶短板,由于中间存在可能有特别大的,将区间分为左右俩半,不断维护左右区间中的俩个最大值,并对这俩个最大值进行比较,总是去利用更小的max去计算雨水量。

2023-02-17 22:07:13 138

原创 MySQL(二)表的操作

表的各项操作、增删改查、表名的修改、字段名的修改、表的修改、字段的删除、表的创建到删除

2023-02-17 19:22:35 696 1

原创 MySQL(一)服务器连接 && 库的基本操作

库的基本操作

2023-02-17 17:05:55 1857 1

原创 并发——原子性、可见性、有序性 &&(volatile关键字)

而volatile关键字的作用是,防止编译器过度优化,因此具备 可见性与有序性 功能

2023-02-17 15:11:05 120

原创 CAS(Compare-and-Swap)

CAS(Compare-and-Swap):一种比较后数据若无改变则交换数据的一种无锁操作(乐观锁)正确选项 为B选项,可以将B选项的数值代入理解CAS锁的原理思想。这个题里边注意各个参数的是否使用指针即可。

2023-02-17 15:08:54 106

原创 Linux(十二)线程池(大量数据请求需要并发处理)

在一个线程池中创建固定数目的线程使其处于能够被唤醒的阻塞状态,使用一个具备线程安全的任务队列,生产者不断的给任务队列中Push元素(这个元素就是要说的任务类,这个任务类就是封装了数据,以及数据的处理方法)将这个任务结点入队列之后就会唤醒线程池中的线程竞争访问这个任务结点,线程对该任务进行Pop出队列,并执行其对应数据所对应的方法。1、避免峰值压力下系统资源耗尽导致程序崩溃2、避免了线程重复创建与销毁所产生的时间成本

2023-02-17 14:35:22 891

原创 关于生产者与消费者实现安全队列入队出队没有给出pop问题

消费者过来先加锁,如果没有资源那么进行解锁然后阻塞,等待被唤醒,唤醒之后进行阻塞,醒了之后重新加锁,并且进行数据操作,这里应该将队头数据取出放入data中,并进行队列pop,接着唤醒一个或多个生产者,解锁

2023-02-17 14:19:06 109

原创 滑动窗口(四)

每次right右移的时候就可以使用这个map来进行判断,都不需要对区间进行遍历呢,因为map直接访问到当前元素出现的次数,在right位置重复条件下左窗口持续左移。每次right移动都始终维护一个窗口元素个数的res

2023-02-17 00:43:35 67

原创 滑动窗口(三)最小覆盖子串

滑动窗口…………Nice!Nice!Nice!

2023-02-17 00:05:22 153

原创 C++ ——多态 下 (图解多态原理、虚函数的再认知)

抽象类的引入详解与探究、多态原理的剖析、图解多继承方式下的内容结构

2023-02-16 18:49:58 1249

原创 对撞双指针(一) 盛水最多的容器

对撞双指针的用法

2023-02-15 21:08:11 317

Linux多线程-相关手写笔记

线程概念、线程控制、线程安全

2023-02-06

操作系统-银行家算法-银行家算法是操作系统的经典算法之一

银行家算法是操作系统的经典算法之一,用于避免死锁情况的出现。 它最初是为银行设计的(因此得名),通过判断借贷是否安全,然后决定借不借。 在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。 用在操作系统中,银行家、出借资金、客户,就分别对应操作系统、资源、申请资源的进程。 每一个新进程进入系统时,必须声明需要每种资源的最大数目,其数目不能超过系统所拥有的的资源总量。当进程请求一组资源时,系统必须首先确定是否有足够的资源分配给该进程,若有,再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态如果不会才将资源分配给它,否则让进程等待。 (1)互斥条件:并发进程所要求和占有的资源是不能同时被两个以上进程使用或操作的,进程对他所需要的资源进行排他性控制。 (2)不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而且只能由获得该资源的进程自己释放。 (3)请求和保持条件:进程已经至少保持了一个资源,但又提

2023-01-26

《二叉树及应用》 数据结构中二叉树使用

[问题描述]建立一个二叉树,并对其进行4种遍历(前中后层)。 [要求] 使用递归和非递归,计算二叉树中节点的个数,树的深度等。 [目的] 通过对二叉树的应用,熟练运用递归,栈和队列。 [实现提示] 二叉树中节点的结构如下: class BNode { char m_value; //二叉树中节点的值 BNode* m_left; //指向左子树指针 BNode* m_right;//指向右子树指针 }; 1、课程设计目的和内容 主要包括:需求分析,模块功能要求,分析理解问题,明确问题; 2、算法的基本思想 主要包括:概要设计,详细设计,数据结构定义,流程图 以及各个模块之间的关系; 3、测试数据 列出对于给定的输入所产生的输出; 4、源程序及文档说明 程序最终源码\程序最终设计文档 5、心得体会 课程设计的收获,遇到问题的思考过程,程序的调试能力,以及对于数据结构这门课程的思考 6、参考文献 二叉树先序中序后续遍历递归与非递归的实现、掌握栈和队列的用法。了解结构体内部嵌套之间的关系 二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构

2023-01-26

数据结构课程设计-最短路径

最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。 算法具体的形式包括: 确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题。 确定终点的最短路径问题 - 与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。 确定起点终点的最短路径问题 - 即已知起点和终点,求两结点之间的最短路径。 全局最短路径问题 - 求图中所有的最短路径。 1、用邻接矩阵存储一张带权有向图。 2、对图进行从某一源点到其他各顶点的最短路径 3、输出最后结果(路径名称、路径长度)。 邻接矩阵建立包括:用二维数组存储信息。没有直达路径的为无穷。 用循环来判断最小值。 最终结果用一维数组存储。D[]存放源点到其他顶点的最短路径的长度,P[]存放该顶点最短路径的前驱顶点下标,visit[]为访问标识。初始全部值设为F,先把源点的标识设为T,后面每找到一个源点到其余顶点的最短路径,就将该顶点下标对应的标识置为T。直到全部顶点执行完毕。 输出一维数组D[

2023-01-26

空空如也

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

TA关注的人

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