- 博客(52)
- 收藏
- 关注
原创 笔记-线性表-链表-单链表的定义 建立 插入 删除 查找
相对于顺序表:优点:不需要大片连续的空间,改变表长方便缺点:不可以随机存取,要耗费一定的存储空间存放指针a1指针指向a2a2指针指向a3a3NULLa1也会有一个指针指向,每一个结点的存储空间包括:数据元素+指向下一个结点的指针。
2024-03-05 12:42:04
877
原创 笔记-线性表-顺序表-查找
由于我们之前谈到过的线性表性质可知,获取表中的第几个位置的元素值是很轻松的一件事我们还是以静态分配为例子这里我定义的函数的i值选择的是位序,实际过程中也可以定义成其他的(i-1)
2024-03-04 16:58:53
321
原创 笔记-线性表-顺序表-删除
删除表中第i个位置的元素,并用e返回删除元素的值b这里删除了b,cde都要依次向前移动一格1:判断i值是否合法,第i个在不在表中,不是正整数或者数值大于表长都是不可以的2:将要删除的位置上的值赋给e,一定要在删除前保存这个数据3:将删除位置后的所有元素前一一位,这个要从第i+1个开始移动,以便给后面数据留存位置4:表的长度记得要减1。
2024-03-03 18:04:12
332
原创 笔记-线性表-顺序表-插入
在表L中的第i个位置(位序)上插入元素e我们用静态分配创建出的表来举例插入f,bcde都要向后移动一格1:所有第i个后面的元素,全部向后移动一个,要从最后一个开始依次往后移动,以便于给前面的元素提供空间移动,不会产生数据缺失2:将e插入到第i个位置3:表长加一不要忘记了,前面加上判断:如果插入的位置不是正整数或者超过表的长度,或者表已经填满,超过最大长度都要进行判错。
2024-03-03 17:07:42
326
原创 笔记-线性表-顺序表-定义 初始化
顺序存储方式实现的线性表顺序存储:逻辑结构上相邻的元素存储在物理位置也相邻的存储单元中内存a1a2a3假设内存中顺序表中存储三个元素a1 a2 a3(元素类型:ElemType)如果a1存放的位置是 location则a2存放的位置就是 location+sizeof(ElemType)则a3存放的位置就是 location+sizeof(ElemType)*2由第一个开始,下面依次加入元素类型留存的空间的大小,方便查找(线性表的性质:每个元素所占空间一样大)
2024-03-03 12:28:08
497
原创 笔记-算法-基本概念 时间复杂度 空间复杂度
所以判断算法的时间复杂度,不一定需要每一个语句都要判断1 顺序执行的代码,只会影响常数项,可以忽略掉2 只需要挑循环中的一个操作分析它的执行次数和n的关系即可3 如果多层嵌套,只需要关注最深层循环了几次。
2024-03-01 12:53:47
675
原创 自学笔记-同步简述
1 没有线程持有读写锁写入时,可以有任意数量的线程同时持有读写锁进行读取,允许多个线程并发的读取,并且不会被阻塞。返回ebusy(错误码) ,则说明互斥锁已经被其他线程占用,可以等待一段时间后重试或者进行其他操作。2 当没有其他线程读取或者写入时,线程才能进行写入,避免对共享数据并发的修改。等于0,调用线程则会被设置为睡眠状态,直到他大于0,然后减一,并返回函数。允许多个线程同时读取共享资源,但是只允许一个线程写入。
2023-12-26 23:38:15
434
原创 自学笔记-进程间通信相关
由于共享内存段维护有一个附加计数,因此只有在使用该段的最后一个进程终止或分离它时,才会删除该段,无论该段是否仍在使用,其标识符都会立即被删除,以便shmat不能再将其附加。当创建了一个新的共享内存段时,该段内容将会被初始化为0,这种初始化可以保证共享内存段的可用性(创建共享字段才会发送这种初始化,已经存在的共享内存段不会被自动初始化)这就允许接受者根据不同的类型顺序来进行消息的获取、消息数据存储在ptr指针指向的内存区域中,并返回消息数据部分的大小。
2023-12-26 22:27:45
1656
原创 自学笔记-能够形成并行服务的基本函数关键字
2 应该进程需要执行另一个程序时,因为创建新进程的唯一方法是调用fork函数,所以该进程先调用fork来创建自身的一个副本,然后副本调用exec函数族的一个函数来替换自己的映像为新程序的映像。创建线程指定的函数,地址被指定为func参数,使用单个指针arg作为输入参数,如果要向函数传递多个参数,就要把他们打包成一个结构体,然后将结构体的地址作为单个参数传递给启动函数。每个进程中的线程都由一个线程 ID 标识:pthread_t,成功创建一个新线程时,它的 ID 将通过 tid 指针返回。
2023-12-26 18:06:55
402
原创 自学笔记-套接字基础关键字
https://img-blog.csdnimg.cn/direct/652e9dc378a24632b6fe9688333141a3.jpeg
2023-12-26 16:56:40
325
原创 计算机组成原理自学笔记——控制器的基本结构简述
根据IR的内容(指令)、PSW的内容(标志信息)以及时序信号,产生控制整个计算机系统所需要的各种控制信号,其结构有组合逻辑型和存储逻辑型两种。因程序中的指令通常都是顺序执行的,使用PC具有自增功能。产生各种时序信号,都是有统一的CLOCK分频得到。(PC进入,自增,PC送回到CPU内部总线上)用于存放向主存写入的信息或者从主存中读出的信息。CPU是根据PC的内容去主存中取指令的。指出下一条指令在主存中的存放地址。用于存放要访问的主存单元的地址。用于存放当前正在执行的指令。指令译码器:(ID)
2023-07-02 21:38:01
233
原创 操作系统自学笔记——磁盘
← ← ← ← ← ← ← ←最大的。自里向外移动,当磁头移到最外的磁道并且访问后,磁头立即返回到最里的欲访问磁道。扇区(盘块/磁盘块):每个扇区存放的数据量相同,内测扇区的密度大,外侧扇区的密度小。所有的磁头都是连接在同一个磁臂上的,所有磁头都只能共进退(方向必须统一)从初始位置,一直访问到磁道号最大的开始再向前依次检索(磁道号增大的方向)如图我的买的硬盘是2T的,但是实际只能使用1.81T。
2023-07-02 12:28:47
105
原创 计算机组成原理自学笔记——总线仲裁简述
同一时刻只能有一个设备而控制总线传输操作,可以有一个或者多个设备从总线接收数据将总线上各个设备按照对总线有误控制功能可以分为:主设备:获得总线控制权的设备从设备:被主设备访问的设备,只能响应从主设备发来的各种总线命令。
2023-07-02 11:11:47
1078
原创 计算机操作系统自学笔记——文件管理概述
基本数据项:描述一个对象的某种属性的字符集,是数据组织中科院命名的最小逻辑数据单位,又称字段。每个文件都建立一个索引表,每个索引表项对应一组记录中的第一个记录。按关键字建立索引:对变长记录顺序文件的顺序检索→对定长记录索引文件的随机检索。所有记录中的各项数据项都处在记录中的相同位置,具有相同的数据和长度。的管理功能是将管理的程序和数据通过组织为一系列文件的方式来实现的。由创建者所定义的、具有文件名的一组相关元素的集合。:具有文件名的若干相关元素(纪录:有意义的数据项集合)的集合。
2023-07-02 10:36:13
93
原创 计算机组成原理自学笔记——总线性能指标
包括,申请阶段(总线仲裁)、寻址阶段(主设备寻找从设备)、传输阶段、结束阶段(释放总线的使用权,把总线让给其他设备使用),通常由若干个总线时钟周期构成的。因为时钟周期存在一个上升沿和一个下降沿,在上升和下降的时候,都可以进行数据传输,这样就形成了一个时钟周期对应多个总线周期的情况。机器的时钟周期,计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也受整个时钟的控制。不过,总线周期和总线时钟周期的关系,可以是1对1,1对多,多对1的。总线的数据传输率,单位时间内总线上可传输数据的位数。
2023-07-02 10:25:58
357
原创 计算机组成原理自学笔记——总线概述
地址总线数据总线控制总线每个总线可能包含很多跟信号线多条信号线组成一根总线,同一时刻只能有一个部件发送数据,但是可以有多个部件去接受数据本次只介绍前两个内容总线:一组能为多个部件的公共信息传送线路早期计算机外部设备少时大多采用分散连接防晒霜,不易实现随时增减外部设备引入总线,更好地解决了io设备和主机之间连接的灵活性问题,计算机的结构从分散连接变为总线连接同一时间只允许有一个部件向总线发送信息,如果系统有多个部件,他们只能分时的发送信息。
2023-07-01 14:44:34
143
原创 计算机组成原理自学笔记——指令寻址 数据寻址(隐含寻址 立即寻址 直接寻址 间接寻址 寄存器寻址 寄存器间接寻址 基址寻址 相对寻址 变址寻址)
指令寻址:如何确定下一条指令的存放地址,始终由PC给出数据寻址:确定本条指令的地址码指明的真实地址计算机工作的过程:程序计数器PC,指明下一条指令的存放地址。
2023-07-01 11:41:47
6491
原创 计算机组成原理自学笔记——拓展操作码的设计
定长指令字结构+可变长操作码 = 拓展操作码(不同地址数的指令使用不同长度的操作码)零地址指令为16条 最后一条为 1111 1111 1111 1111。只剩下1111没有被表示指令,则利用1111作为下三地址和二地址的区别。不允许短码是长码的前缀,短操作码不能与长操作码的前面的部分相同。二地址指令的前一位空位要填充1111,指令数仍然是15条。一地址指令的前两位空位要填充1111,指令数也为15条。通常情况下,对使用频率较高的指令,分配较短的操作码。4位基本操作码全部用于三地址指令,则共有16条。
2023-07-01 09:49:59
1282
原创 计算机组成原理自学笔记——指令格式与分类
A4指下一条将要执行的指令的地址(采用四地址,执行完指令之后不指向下一个指令,而是指向A4所指的地址)需要两个操作数,但是其中一个操作数隐含在某个寄存器中(A1是主存地址,表示指向地址中的内容)指令:计算机运行的最小功能单位,一台计算机的所有指令的集合构成该计算机的指令系统(指令集)转移操作(程序执行流的变化,即改变程序执行的顺序,改变PC 的值)每一台计算机只能执行自己系统中的指令,不能执行其他系统的指令。指令字长:一条指令的总长度,影响取指所需的时间。定长指令字结构:指令系统中所有的指令长度都相等。
2023-06-30 23:53:53
237
原创 操作系统自学笔记——IO设备 简述2
传送必要的参数 在确定涉笔处于就绪状态后,可以将控制器的数据和本次数据传输有关的参数传送到相应的寄存器中。将抽象的要求转换为具体的要求 在驱动程序中 将要求转换为命令 数据 参数。启动io设备 驱动程序可以向控制器中的命令寄存器传输相应的控制命令。整个系统中设置一个io进程 专门用于执行系统中所有各类设备的io操作。输入进程数据的速度 > 计算进程处理数据的速度。输入进程数据的速度 < 计算进程处理数据的速度。不设置专门的设备处理进程 只为各类设备设置相应的设备驱动程序。系统受计算的限制,缓冲区满。
2023-06-29 22:14:54
197
原创 操作系统自学笔记——IO设备 简述1
当处理一个中断时,会屏蔽其他所有的中断,直到处理完当前的中断之后,再去检查其他中断,如果有就处理新的中断,如果没有,就返回被中断的程序。当多个不同优先级的中断请求时,CPU先响应最高优先级的中断请求。执行控制IO的电子部件(设备控制器,适配器)控制一个或者多个IO设备,实现io设备与计算机之间的数据交换。高优先级的中断信号是可抢占的。执行IO操作的机械部分(一般的IO设备)CPU对io设备发来的中断信号的一种响应。设备控制器必须识别每个设备的地址。分为控制字符设备的控制器和控制块设备的控制器。
2023-06-29 13:27:13
111
原创 操作系统自学笔记——IO系统概述
不可寻址 不指定输入源地址和输入目标地址。块设备支持上层发来的对文件或者设备的打开、读写、关闭等抽象的命令。传输速率低 几个字节每秒-数千个字节每秒。IO通道方式 使IO操作无需CPU的干预。让用户可以直接通过控制命令和参数在设备管理器中,直接管理IO设备。仅仅提供少量且抽象的读写命令,对设备加以抽象。中断可编程的IO方式(打印机 键盘)低速字符。减少每一个IO设备运行时处理器的干预时间。抽象化成了线性的序列。隐藏了磁盘的二维结构(扇区+磁道)
2023-06-29 12:34:26
91
原创 计算机组成原理自学笔记——Cache
当CPU对Cache没有命中,则把主存对应的整块调入Cache中,在Cache中修改,通常搭配写回法使用。为每一个Cache块都设置计数器,用于记录这个块多久没有被访问到了,替换时,优先替换计数器最大的一个块。当CPU对Cache写命中时,只修改Cache的内容,而不立即写入内存,只有在当此块被换出再写入内存。CPU的速度很快,若写操作不频繁,效果很好,频繁的话,可能会因为写缓冲饱和而发生阻塞。标记位可以不标记最后两位。3.未命中且没有空闲行,计数器最大的行信息块被替换,新装入的块计数器置0,其余加1。
2023-06-28 10:22:24
1050
原创 计算机网络自学笔记——联网应用程序 两种模型
联网应用程序:可以拥有多台计算机,每台计算机都拥有私人的数据,每个数据都可能由不同的人拥有和控制本地应用程序:只能访问本地应用程序上的数据基本模型:两台计算机每台计算机在本地运行一个程序两个程序通过网络通信(双向可靠的字节流):计算机A上运行了程序A,写入通过网络传输的数据,计算机B上的程序B可以读取它计算机B等待连接(服务器)计算机A 与 B进行连接这是A将数据写入连接,通过网络传输,B可以读取,反之也可以任何一方都可以关闭连接。
2023-06-27 23:49:13
89
1
原创 PY自学笔记——Pandas 其他的补充
整数或列表,需要忽略的行数或需要跳过的行号列表。字符串,每行各数据之间的分隔符,默认为‘,定义列索引,默认文件中第一行为列索引。根据性别来算 python 的均值。要用分隔符参数 sep。对每个分组进行统计分析转换。字符串,文件路径和文件名。,文件中第一行不是列索引。查看数据按列的统计信息。返回前后n行,默认五行。查看某列有多少不同的值。数字,用作行索引的列。包括计数 均值 方差。
2023-06-26 12:20:23
68
1
原创 PY自学笔记——Pandas DataFrame数据结构
axis1 列方向(水平方向)axis = ‘columns’axis 0 行方向(垂直方向)axis = ‘’index’这样操作只会返回视图,并不是对students这个本身删除。这样可以实现真正意义上的删除。如果覆盖不足,则采用广播技术。这个时候要么是1,要么为行数。表达二维数据或者多维数据。通过例子展示 切片 引用。包含值 行索引 列索引。利用Series创建。
2023-06-26 11:37:40
129
1
原创 PY自学笔记——Pandas Series数据结构
如果没有指定索引,会自动创建对应数据的索引。这样处理,代表原地操作,对原数据进行修改。而是对原来的series进行了深复制。将两个Series拼接成一个新的。也可以用字典创建Series。s.get('d') 空。利用标量值创建Series。不会改变原来的Series。b[1] 指的第二个元素。里面的对象可以随时修改。这样合并会重新分配索引。
2023-06-26 11:13:23
82
1
原创 PY自学笔记——列表简述
括号内可以放 元组 range对象 字符串 以及其他类型的可迭代对象类型的数据。可变的,可以在不复制的情况下添加、删除或者修改元素。列表中包含的是对元素值的引用,而不是直接包含元素值。list[0]指列表的第一个元素(第0个元素)把一个列表整体拓展添加到另一个列表的尾部。统计括号内指定远古三在列表中出现的次数。定义列表可以使用变量,转换为变量的值。列表中的元素,不需要具有相同的类型。弹出列表最后一个元素,可以指定索引。在列表指定位置插入一个元素。返回列表的长度:元素的个数。在列表尾部添加一个元素。
2023-06-26 10:45:50
64
1
原创 PY自学笔记——字典
dict()方法是一个动态参数的方法,不会限制传入的类型和个数。利用一个List,列表内的元素都是包含两个元素的元组。键必须是不可变的(所以字典的键不能是字典或者列表)如果创建字典时,一个键被赋值了两次,以最后一个为准。所以如果字典发生变化,视图也会对应变化。删除字典中的某个键值对,并返回该键值对。当不在乎字典元素的顺序时,此函数适用。元组内第一个为键,第二个为键值。会以变量名去充当键值对应的键。通过系统dict()的方法。以变量的值充当键值对应的值。如果存在不同的键,则添加。
2023-06-26 10:03:49
86
1
原创 PY自学笔记——Numpy基础 数组基本运算
np.argmin() //最小值的下标。np.argmax() //最大值的下标。np.exp(10) //以e为底的指数。同行同列的数组,加减乘除都是对应运算。np.prod() //所有元素相乘。np.median() //中数。np.power() //幂运算。np.mean() //平均值。np.log(10) //对数。np.std() //标准差。np.sqrt() //开方。np.min() //最小值。np.max() //最大值。np.sum() //求和。np.var() //方差。
2023-06-25 22:21:42
55
原创 PY自学笔记——Numpy基础 布尔索引
注意的是,python中的关键字 and 和 or 在布尔型的数组中无效。假设每一个名称都对应这数组的一个行,想要找出对应a的所有行。-1表示该维度大小由其他未对和原始数组的长度自动推断而出的。设置一个存储名称的数组(含有重复项a的)同样可以用和,或之类的布尔运算符(& |)如果需要多个组合时,可以用多个布尔条件。这个是对前面创建的一维数组进行重塑运算。列也是隔一个,取下一个(第三个2)隔一个,取下一个(第二个2)行从第二行开始(第一个2)和一个存储数据的数组。
2023-06-25 22:01:35
560
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人