自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统Lesson6 - 进程切换和线程调度

进程,init 进程作为所有其他进程的根,负责系统的初始化和后续进程的创建。例如, init 会根据系统配置读取信息,为每个可用的终端创建一个新的进程,这些进程通常用于等待用户登录。但是对于需求高的html资源来说,我们可以将其放入缓存以便快速响应,而如果用进程来访问这块资源,会导致不必要的浪费,所以用线程共享这块资源。当切换任务的时候,我们需要花费许多资源去更改这些数据,但是有时候这是没有必要的,所以就有了线程。,之后会由操作系统回收。也就是说,在Linux上,子进程的父进程死了,这个进程会变为。

2024-10-22 21:22:14 739

原创 操作系统Lesson - 5 进程简介及进程编程模型

进程 = 程序运行的过程,系统进行资源管理和调度的独立单位。静态区:代码段:保存了代码。数据段:保存全局变量等数据。动态区:堆区:保存程序动态申请的空间。栈区:保存程序自动分配的内存。多个程序同时运行(并发单个程序同时多次运行。所以需要操作系统来帮助程序运行。

2024-10-14 19:29:21 733

原创 操作系统Lesson4 - 操作系统发展史

传统上,所有的层都被置于内核中,但这并非必要,且可能不是最佳实践。实际上,减少内核中的功能以达到最小化内核的目标可能是更优的选择。因为内核中的错误难以处理,一旦出现错误,可能导致整个系统的崩溃。所以就将操作系统划分为微小且功能明确的模块,这些模块中只有微内核在内核模式下运行,其他都在用户态下运行。若文件数据不在内存中,则会调用驱动访问磁盘,这个属于I/O操作了,所以进程会进入休眠。为了增强系统的模块性和可扩展性,现代操作系统引入了模块化和动态加载的机制。将系统分为多层,类似于网络分层,每层通过接口通信。

2024-10-13 18:45:42 548

原创 Lesson3 - 操作系统软件视角和系统调用

程序在执行时,会有对硬件进行操作的需求,但是程序在用户空间执行,不能直接对内核区的硬件进行操作,所以就需要。为了更有效地管理这些硬件资源,系统设计者引入了抽象的概念,其中最为核心的三大抽象便是。shell是封装在OS之上的一种软件,提供了一系列指令给操作者来对OS进行操作。从操作系统层级上看,虚拟地址空间主要分为两个部分内核区和用户区。当程序正在执行时,发生了一个错误导致未能正常运行,这个就叫。异步分为两种:软件异步和硬件异步。他们的流程都是一样的。同步就是程序的顺序执行过程。

2024-10-07 19:22:05 800

原创 Lesson1 - 操作系统概述与硬件视角

操作系统是一组控制和管理计算机硬件和软件资源合理地对各类作业进行调度,方便用户使用计算机的程序集合。操作系统的核心目标是,使系统资源的利用率高系统的吞吐量大。寄存器分为:普通寄存器特殊功能寄存器PC寄存器:保存下一个任务的地址SP寄存器:保存数据存放的栈指针PSW寄存器:保存状态记录。

2024-10-05 16:38:28 1001

原创 LeetCode - 2207. 字符串中最多数目的子序列

那么我们应该如何在只遍历一遍的情况下得到原本字符串中的子序列个数(未插入情况下)呢?由于子序列长度只有2,所以要么首位插入队头,要么末位插入队尾,就能取得最大数目。的个数,两者取最大值,就是插入的字符组成的子序列个数。于是遍历一遍字符串,统计。

2024-09-24 22:30:54 431

原创 Linux中read()函数与拷贝文件

read()每次调用会读取指定缓冲区大小的数据,直到到达文件末尾。在文件没有读完之前,read()返回读取的字节数(非零)。只有当文件被完全读取时,read()才会返回0,表示没有更多的数据可读了。

2024-09-12 23:28:32 362

原创 Linux计算文件权限的mode和umask

是一个权限掩码,用于指定在创建新文件或目录时应当“屏蔽”(即剥除)哪些权限位。它不直接设置权限,而是从默认权限中去掉一些权限。它在创建新文件或目录时,影响文件系统的权限掩码,从而影响最终设置的权限。这个公式是用来计算新创建文件或目录的最终权限的。文件权限由三个数字组成,每个数字分别表示文件所有者、所属组和其他用户的权限。是一个八进制数,由三个部分组成,每个部分表示不同的用户组对文件的权限。通过这种方式,可以灵活地为不同的用户组设置文件的权限。指定的权限位从默认权限中去掉。,这表示屏蔽写权限(写权限是。

2024-09-12 22:10:52 1100

原创 C++提高篇 - 模板

默认模板参数应该在模板参数列表的末尾。也就是说,如果有多个模板参数,只能将最右边的一个或多个参数设置为默认参数。默认值可以是任何合法的类型,包括基本类型(如intdouble)、自定义类型(如类、结构体、枚举等)以及其他模板类型。如果一个模板有多个参数,并且其中一个有默认值,则只有最右边的参数可以有默认值。其余的参数必须显式提供模板实参。

2024-07-26 12:10:31 1028

原创 C++文件操作

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件文本文件- 文件以文本的ASCII码形式存储在计算机中二进制文件- 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们ofstream:写操作ifstream: 读操作fstream : 读写操作。

2024-07-22 11:22:37 871

原创 C++类与对象 - 多态

多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码。制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料。​ 1. 虚析构或纯虚析构就是用来解决通过父类指针释放子类对象。​ 2. 如果子类中没有堆区数据,可以不写为虚析构或纯虚析构。重写:函数返回值类型 函数名 参数列表 完全一致称为重写。​ 3. 拥有纯虚析构函数的类也属于抽象类。解决方式:将父类中的析构函数改为。

2024-07-21 21:29:36 385

原创 C++类与对象 - 继承

继承实现:总结:继承的好处:可以减少重复的代码class A : public B;A 类称为子类 或 派生类B 类称为父类 或 基类派生类中的成员,包含两大部分:一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。继承的语法:继承方式一共有三种:示例:继承中的对象模型问题: 从父类继承过来的成员,哪些属于子类对象中?解答: 子类全部继承父类中的所有成员,只不过对无法访问父类私有成员进行访问。示例:利用工具查看:即可查看类的结构等信息子类继承父

2024-05-17 15:00:03 500

原创 C++类和对象 -封装

但是对于一些地址来说,只拷贝地址数值是不行的,因为对于这两个对象的释放来说,这两个属性所指向的地址是相同的,所以会造成二次释放的问题,所以我们就需要在拷贝的时候在堆区申请一个新空间。**注意:**在函数参数中的引用不可以传入一个临时变量,如果真的想引用这个变量,用。**作用:**重载关系运算符,可以让两个自定义类型对象进行对比操作。**作用:**函数传参时,可以利用引用的技术让形参修饰实参。作用: 通过重载递增运算符,实现自己的整型数据。**优点:**可以简化指针修改实参。**作用: **给变量起别名。

2024-05-16 17:39:18 606

原创 LeetCode - 1702. 修改后的最大二进制字符串

简单来说我们需要想办法将0配对,将其变为10,对于单个的0,我们需要用10->01这个操作将后面的0冒泡到前面进行配对。

2024-04-10 23:40:48 558 3

原创 LeetCode - 2529. 正整数和负整数的最大计数

【代码】LeetCode - 2529. 正整数和负整数的最大计数。

2024-04-09 20:30:20 409

原创 Leetcode - 2009. 使数组连续的最少操作数

枚举窗口的右边界,也就是让数组中的每一个数都充当一次右边界,然后我们的左边界从0开始,看是否符合窗口大小,不符合就一直推进左边界到合法,然后重新计算窗口内的数字多少,取最大值,此值就是我们能保留的数目的最大值,那么需要修改的最小数目用数组长度减去保留的最多数目。题中所述的连续数组就是一串连续的自然数,想问需要多少次操作能将原数组变为连续的数。我们排序去重,用逆向思维想能保留的数字数目最多是多少,及用滑动窗口来获取最大数目。

2024-04-08 22:05:04 351

原创 Leetcode - 2580. 统计将重叠区间合并成组的方案数

区间和并,快排(对二维数组进行排序),快速幂

2024-03-27 22:18:15 391

原创 按位取反~

计算机如何读取数呢?

2024-03-17 13:46:14 136

原创 计数类Dp

我们可以用完全背包的思想来做:在前 i 件物品中,选出若干件,使其和正好为 j。然后根据完全背包的优化思路将其压缩至一维即可。

2024-03-14 20:05:53 321

原创 LeetCode 2864. 最大二进制奇数

我们可以利用双指针,一个指着原数组,一个指着新开的数组(全0)。原指针一直走,当原数组中碰到1时,就给交换一下,新指针指向下一位,一直循环。当走到末尾,只要把新指针的后一位跟末尾的0交换即可。但是其实我们发现这可以在一个数组中直接操作,我们默认新指针指的元素一直是0,等到原指针碰到1交换,最后交换末位。由于二进制基数的最后一位必须是1,而其他位越大越好,所以让一个1在最低位,其他全部放到最高位即可。所以我们数出字符串中1的个数,另开一个字符空间,把最后一位置1,把剩余的1全部放在前面。

2024-03-13 20:10:34 344

原创 计网Lesson19 - 应用层之WWW

应用层协议 (application layer protocol)定义了在不同端系统上应用程序是如何相互传输报文的。交换的报文类型交换的是请求报文还是响应报文。报文字段的解释:对报文中各个字段的详细描述。报文字段的语义:报文各个字段的含义是什么。报文交换时间、方式:程序何时、以什么方式发送报文以及响应。应用层只关心数据的产生和使用,是一个逻辑层,并不关心数据的传输。应用层共有两种层次结构。

2024-03-11 16:21:47 859

原创 计网 - 子网掩码的改变与内网之间通信的关系

想要弄清楚这个问题,必须了解数据包在网络上是如何传输的:

2024-02-29 23:31:40 857

原创 计网Lesson18 - TCP链接管理

两次挥手之后,从TCP客户进程到TCP服务器进程这个方向的连接就释放了,但TCP服务器进程如果还有数据要发送,TCP客户进程仍要接收,也就是从TCP服务器进程到TCP客户进程这个方向的连接并未关闭。这是 TCP 协议的一个重要特性,它确保了连接的双向性和全双工通信。如果遇到大量CLOSE_WAIT情况是什么原因,怎么解决?如果遇到大量TIMe_WAIT状态是什么原因,该如何解决?无论是客户端还是服务器,

2024-02-28 11:44:24 1030

原创 计网Lesson17 - 拥塞控制

拥塞:在某段时间,若对网络中某⼀资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫作拥塞(congestion)。计网中的链路容量(带宽)、交换节点中的缓存和处理机等都是网络资源。两条马路合并成一条,那么当两条路车流量都很大时,汇聚时会造成拥堵。拥塞控制是⼀个全局性的过程:涉及到所有的主机、路由器,以及与降低⽹络传输性能有关的所有因素。是需要靠所有节点共同努力的结果。防止过多的数据注入到网络中,使网络能够承受现有的网络负荷。

2024-02-27 21:12:34 508

原创 计网Lesson16 - TCP选择重传和流量控制

TCP通信中,发送序列中的某一包丢失(1,2,3,4,5 中 3 丢失),如果全部重传消耗太大,接收方会确认 2 ,然后窗口划过去,将3,4,5重传,但是由于4,5传过了,造成重复。发送方给出窗口为0,之后又有了一些缓存,想让发送方继续发送数据,发送非0窗口报文,结果这个报文丢失了,改如何解决?机制,以解决因发送方发送数据太快而导致接收方来不及接收,造成接收方的接收缓存溢出的问题。TCP为应用程序提供了。

2024-02-26 22:59:07 1181

原创 计网Lesson15 - TCP可靠传输

当发送方发出一连串数据,但是其中丢了几个包,接收方会确认第一个丢失的包的位置(ACK),之后会在选项中标注出哪些包丢失了,也就是选择性确认技术(SACK)。例如,在TCP(传输控制协议)中,重传5次还未成功就会发送RST报文,连接将被断开。发送方迟迟没收到确认报,于是重传,重传的接收到确认报了,之后前面的确认报才来,这时候无事发生。发送方依然没有收到确认报,所以会触发重传,而接收方接收到两个重复的包,直接将后来的包丢掉。发送方过久没有接收到接收方的确认报,这种情况会触发超时重传机制,发送方重新发送报文。

2024-02-26 22:24:37 710

原创 计网Lesson14 - 传输层协议头分析

计网中的物理层、数据链路层和网络层共同解决了异构网络之间的通讯问题,实现主机到主机的通信。为运行在不同主机上的应用进程提供直接的逻辑通信服务,也叫端到端的通信。传输层为应用层提供端口,用来区分不同应用进程的标识符,为应用层屏蔽了下层的细节,好像一根管道直接连接了两主机的同一应用。

2024-02-26 10:57:40 653

原创 简单区间DP

区间Dp指的是某些问题可以用区间来划分解决。

2024-01-30 21:23:41 931

原创 简单线性Dp

处理起来是线性的(???

2024-01-30 20:01:37 725

原创 计网Lesson12 - UDP客户服务器模型和UDP协议

丢个图在这,实在不是很明白在讲啥,等学完网编的我归来狠狠拿下它。

2024-01-29 20:18:09 247

原创 计网Lesson11 - 虚拟机网络环境及socket概述

socketsocketsocket是一种用于应用层的用户态与应用层以下的内核态交互的工具,本意为“插座”。也就是用来连接数据包到各个端口的一个工具。但具体是什么我也不太懂,网编这块之后再来补坑吧 >\/<

2024-01-29 20:05:58 248

原创 简单背包问题

01背包就是指问题:从NNN件物品中选出kkk件放入容量是VVV的背包中,最终答案具有某种属性(价值最大/最小/物品数量最多…),而且每种物品只能选一次。我们可以看出,其实动态规划就是把每一种可能滚了出来,然后选取符合要求的那一个解。与01背包类似,唯一区别就是物品数量无限。附加条件:每件物品限制个数,且个数不一每一次选则一个组别里面的某一个元素。现在是选不选,选的话选组里面的哪个?

2023-12-18 21:57:27 1024

原创 容斥原理的并

画了图,清晰易懂,懒得打字了。SS1S2S3−S1∩S2−S1∩S3−S2∩S3S1∩S2∩S3S​S1​S2​S3​−S1​∩S2​−S1​∩S3​−S2​∩S3​S1​∩S2​∩S3​​我们可以把这个式子推导到nnn维,奇加偶减。

2023-12-17 21:29:26 883

原创 求组合数的四种方法以及卡特兰数

从网格图的左下走到右上,只能往右往上走,而且往上走的步数不能超过往右走的步数,也就是路线不能超过绿线,那么所有的走法就是卡特兰数。

2023-12-17 19:30:17 899

原创 中国剩余定理CRT

孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?这就是经典的剩余定理问题,也是我们小学题目:三个三个数余二,五个五个数余三,七个七个数余二,求这个数是几?思路就是:先读入一个式子,然后以这个式子为基准,再读入一个式子,找他们的通解,将式子更新为他们的通解,然后再读入,继续找通解,直到读完。真的nm太抽象了吧,这玩意儿是人学的?我选择直接背,以我的水平考到了也做不出来。用于求模数两两互质的线性同余方程组,若不互质则不存在解。,求个模找最小即可。

2023-12-17 13:51:23 2082

原创 扩展欧几里得算法与线性同余方程

既然已经得到了递推式,我们可以直接递归来求系数,递归终点就是。为任意整数,所以只能让两个括号内的项为。而扩展欧几里得算法就是来求这个系数。的倍数,那么证明有解,系数。也要成倍数增加,倍数就是。

2023-12-15 16:23:27 877

原创 计网Lesson10 - 网络层之IP协议分析

片偏移指的是每个数据在原数据报中的位置。的总长度,那么就想到一个办法:右移。但是这样就得保证数据片长度得是。的偏移长度肯定不够表示。

2023-12-13 20:18:13 938

原创 计网Lesson9 - 链路协议和网络概述

因特网用户指的是:边缘以太网与中央骨干路由之间的链接。

2023-12-13 19:53:45 1070

原创 欧拉函数与欧拉定理

对于范围内的每个数都求欧拉函数,肯定不能用定义法一个一个求,这样时间复杂度为。,我们可以用线性筛筛出质数再计算质因数,时间复杂度为。按照分解质因数的逻辑挨个得到质因数,然后累乘即可。复杂度瓶颈在于分解质因数,所以是。,欧拉函数是小于或等于。互质的数的数目,记作。

2023-12-12 17:36:58 1028

原创 约数性质以及辗转相除法

基于算术基本定理,从最小质数开始往上除,直到不含这个因数,而和数都是由比它小的质数相乘得来,所以所有约束都是质数。这个公式展开就是每项约数的和。

2023-12-12 11:43:56 789

空空如也

空空如也

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

TA关注的人

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