- 博客(214)
- 收藏
- 关注
原创 LInux(四)进程控制(创建、终止、等待、替换)
进程控制分为进程创建(写时拷贝技术、fork、vfork创建子进程流程)、进程终止(程序的三种退出方式,exit与_exit的区别、退出码反映程序的退出情况)、进程等待(使用wait与waitpid接口参数使用与掌握、理解Status底层结构)、进程替换(以execve系统调用接口封装起来的其余接口的理解与使用)
2023-01-24 13:28:35 3022
原创 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
原创 day03 用栈实现队列
每次 pop 或 peek 时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。将一个栈当作输入栈,用于压入 push 传入的数据;另一个栈当作输出栈,用于 pop 和 peek 操作。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(232. 用栈实现队列。
2024-09-19 22:07:14 297
原创 读研刷题复习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
原创 单链表头结点的作用
对单链表进行插入、删除操作时,如果在首元结点之前插入或删除的是首元结点,不带头结点的单链表需改变头指针的值,在C 算法的函数形参表中头指针一般使用指针的指针(在C+ +中使用引用 &);3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会。1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.
2023-09-27 10:06:15 1200
原创 网络协议(一)应用层(自定制协议、HTTP协议)
应用层:负责应用程序之间的数据沟通一、自定制协议(私有协议) 二、HTTP协议1)、请求行解析:GET /index.html HTTP/1.1第一部分:请求方法:多种多样,描述不同的请求目的第二部分:URL第三部分:协议版本2)请求头部3)空行4)正文:5)响应行三、Cookie 与 Session四、HTTPS协议
2023-02-21 21:08:24 1758
原创 面试(十二)使用fiddler抓包工具彻底搞懂Get与Host区别及使用
一、请求与响应的报文模型二、http如何解包?如何封装?三、http请求与响应是如何被读取的?四、http是如何被发送的?五、Get与Host的区别是啥?六、区别总结
2023-02-20 14:51:43 887
原创 二叉树OJ(一)二叉树的最大深度 && 二叉搜索树与双向链表 && 对称的二叉树
二叉树的最大深度二叉树中和为某一值的路径(一)二叉搜索树与双向链表对称的二叉树
2023-02-19 19:27:58 530
原创 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
原创 对撞双指针(二)接雨水问题
木桶短板,由于中间存在可能有特别大的,将区间分为左右俩半,不断维护左右区间中的俩个最大值,并对这俩个最大值进行比较,总是去利用更小的max去计算雨水量。
2023-02-17 22:07:13 138
原创 并发——原子性、可见性、有序性 &&(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
操作系统-银行家算法-银行家算法是操作系统的经典算法之一
2023-01-26
《二叉树及应用》 数据结构中二叉树使用
2023-01-26
数据结构课程设计-最短路径
2023-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人