- 博客(59)
- 收藏
- 关注
原创 操作系统高频(六)linux内核
通过这两个阶段的启动过程,引导加载程序能够在启动过程中对硬件进行初始化和配置,并加载操作系统,以使嵌入式系统能够正常运行。:Linux内核是嵌入式系统的核心,负责管理系统的硬件资源、提供各种设备驱动程序和执行系统的核心功能。:应用程序是嵌入式系统中运行在用户空间的程序,利用Linux内核提供的服务和资源完成特定的功能需求。为了保护系统的稳定性和安全性,将操作系统的核心部分放在内核态下运行,限制用户态的权限。它通过设置处理器、内存、时钟和外设等硬件的初值,确保它们处于正确的状态以便后续的系统操作。
2025-04-01 15:19:36
520
原创 操作系统高频(五)linux命令
另外,GDB 还提供了一些特殊的命令用于处理多进程调试,如 inferior 命令用于切换当前活动进程,detach 命令用于从进程中分离 GDB。例如:grep -l 'pattern' file.txt:仅打印匹配模式的文件名,而不打印匹配的行。是一个强大的 Linux 命令,用于在文件中搜索指定的模式或关键字,并将匹配的行打印出来。该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工。
2025-04-01 15:14:10
688
原创 操作系统高频(四)linux基础
在多进程的情况下,可以使用带有命名的互斥量来实现跨进程间的同步和互斥访问。需要注意的是,ulimit命令是针对当前的shell会话生效的,修改只在当前会话中有效。因此,在多核处理器上,自旋锁可以表现得更好,因为它充分利用了处理器的并行性和线程的空闲时间。总的来说,Linux的fork系统调用可以复制父进程的状态和资源,创建一个独立的子进程,从而实现并发和多进程编程的能力。互斥锁的使用场景包括:临界区较长或者需要保证临界区的独占性的情况,常见于共享资源的读写、数据库访问、线程间通信等。
2025-03-27 16:58:39
782
原创 操作系统高频(三)
在边缘触发模式下,当一个文件描述符上的状态发生变化时(如从无数据变为有数据可读),epoll_wait 函数会通知一次,并且只通知一次。:中断处理程序执行完毕后,会根据之前保存的状态信息(通常是从栈或特定的寄存器中恢复)恢复被中断的程序的执行。在调用wait时,线程会释放它持有的锁,进入等待状态,并等待其他线程通过notify或notifyAll来唤醒它。此时系统产生了死锁。类似于 select,当调用 poll 函数时,内核会遍历指定的文件描述符数组,检查是否有就绪的 I/O 事件,并进行相应的处理。
2025-03-26 19:13:24
602
原创 操作系统高频(二)线程与进程
因此,一个进程可以创建的线程数由可用虚拟空间和线程的栈的大小共同决定,只要虚拟空间足够,那么新线程的建立就会成功。理论上,一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是1MB,所以理论上一个进程可以创建2048个线程,当然更改编译器的设置可以创建多余2048个线程。父子进程都有管道的读端和写端,子进程的描述符是从父进程复制而来的。理论上,一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是1MB,所以理论上一个进程可以创建2048个线程,当然更改编译器的设置可以创建多余2048个线程。
2025-03-26 19:11:40
1006
原创 操作系统高频(一)线程与进程
同样地,阻塞也不一定意味着同步。具体而言,当线程发起一个阻塞式的操作(如等待I/O、获取锁、等待条件满足等)时,它会进入阻塞状态,暂停执行,直到条件满足或被唤醒。例如,在互斥锁的场景中,当一个线程尝试获取互斥锁但锁已经被其他线程占用时,它会被阻塞,等待锁的释放。使用进程间通信机制(IPC):使用操作系统提供的进程间通信机制,如管道、消息队列、共享内存、套接字等,可以实现进程间的数据传输和同步,确保共享数据的正确性和一致性。在同步中,任务或操作可能会按照特定的顺序执行或等待其他任务的完成,以满足特定的条件。
2025-03-25 14:59:59
682
原创 计算机网络高频(五)HTTP和HTTPS
常见的请求首部字段包括:Host:指定服务器的主机名和端口号User-Agent:标识客户端的用户代理信息Content-Type:指定请求体的数据类型Content-Length:指定请求体的长度Authorization:用于身份验证的凭据Cookie:包含客户端的Cookie信息Accept:指定客户端能够接受的响应内容类型Referer:指示请求的来源URL。协议: 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。
2025-03-25 14:58:28
1119
原创 计算机网络高频(四)socket网络编程
具体过程是,当用户访问网站时,先访问一个位于前端的负载均衡器(也称为调度器),然后负载均衡器会根据配置的算法(如轮询、权重轮询、IP-Hash等)选择一个压力较小的后端服务器,并将该访问请求引导到被选中的服务器上进行处理。在使用长连接的情况下,客户端和服务器之间的TCP连接在一个网页打开后不会立即关闭,而是保持连接状态,如果客户端再次访问服务器上的网页,可以继续使用已经建立的连接,避免频繁建立和关闭连接的开销。根据服务器处理请求的速度进行负载均衡分配,处理请求最早结束的服务器会获得下一个请求。
2025-03-24 19:46:39
927
原创 计算机网络高频(三)UDP基础
因此,在使用UDP进行数据传输时,需要对数据的可靠性和顺序性进行额外的处理,例如应用层协议可以在数据中插入序号、校验和等机制,来进行错误检测和纠正。TCP为了保证可靠传输并减少额外的开销(每次发包都要验证),采用了基于流的传输,基于流的传输不认为消息是一条一条的,是无保护消息边界的(保护消息边界:指传输协议把数据当做一条独立的消息在网上传输,接收端一次只能接受一条独立的消息)。相比之下,TCP提供了可靠性和顺序性的保证,需要进行数据重传和拥塞控制等额外的机制,这些机制会带来一定的性能开销。
2025-03-24 19:44:11
1145
原创 计算机网络高频(二)TCP/IP基础
发送方根据接收窗口的大小来调整发送数据的速率,以避免发送方持续发送过多的数据,导致接收方无法及时处理和接收,从而实现流量控制,避免网络拥塞和数据丢失。TCP使用超时重传机制来处理丢失的数据或确认。SYN攻击(SYN flood)是一种常见的网络攻击方式,其利用TCP协议的三次握手过程中的漏洞,通过发送大量伪造的SYN请求包给服务端,耗尽服务端资源,使其无法响应正常的请求。接收方在收到乱序的数据包后,可以通过发送ACK报文来通知发送方已经接收到哪些数据包,以便发送方进行数据包的重排和重传,确保数据的顺序性。
2025-03-22 20:30:28
1788
2
原创 操作系统高频(一)线程与进程
同样地,阻塞也不一定意味着同步。具体而言,当线程发起一个阻塞式的操作(如等待I/O、获取锁、等待条件满足等)时,它会进入阻塞状态,暂停执行,直到条件满足或被唤醒。例如,在互斥锁的场景中,当一个线程尝试获取互斥锁但锁已经被其他线程占用时,它会被阻塞,等待锁的释放。使用进程间通信机制(IPC):使用操作系统提供的进程间通信机制,如管道、消息队列、共享内存、套接字等,可以实现进程间的数据传输和同步,确保共享数据的正确性和一致性。在同步中,任务或操作可能会按照特定的顺序执行或等待其他任务的完成,以满足特定的条件。
2025-03-22 20:28:50
840
原创 C++高频(五)之虚函数
总结一下,虚函数的实现方式通常包括在对象中添加一个指向虚函数表的指针(vptr),虚函数表存储了虚函数的地址,子类继承并重写父类的虚函数时会替换相应的地址,通过 vptr 指针和虚函数表来实现动态绑定和多态。虚函数的调用是通过虚函数表(vtable)实现的,每个包含虚函数的类都有一个虚函数表,存储了每个虚函数的地址。派生类的虚函数表会替代基类的虚函数表。至于内联函数方面,虚函数不能直接被标记为内联函数,因为虚函数在运行时通过虚函数表进行调用,而内联函数需要在编译时进行替换,两者的机制是不相容的。
2025-03-19 19:03:02
521
原创 C++高频(四)之c++11新特性
包括了正则表达式库、基于范围的循环(Range-based for loop)、哈希表(std::unordered_map、std::unordered_set)、随机数库、异步任务库(std::async)、类型特征工具(std::is_same、std::is_convertible 等)等。可以将其简单理解为"可以取址的表达式"。移动构造函数与拷贝构造不同,它并不是重新分配一块新的空间同时将要拷贝的对象复制过来,而是"拿"了过来,将自己的指针指向别人的资源,然后将别人的指针修改为nullptr。
2025-03-19 19:01:10
842
原创 C++高频(三)
为了使CPU能够对变量进行快速的访问,变量的起始地址应该具有某些特性,即所谓的"对齐",比如4字节的int型,其起始地址应该位于4字节的边界上,即起始地址能够被4整除,也即"对齐"跟数据在内存中的位置有关。因此,在编程中需要按照平台的要求对不同类型的数据进行合理的字节对齐,以保证程序的正常运行和最优化的存储空间利用。对齐后,填充空间的大小可以最小化,节省存储空间。字节对齐是指将变量的起始地址按照一定规则调整,使得变量占用的存储空间的起始地址能够满足特定要求,常用的要求是变量的起始地址是其长度的整数倍。
2025-03-18 21:08:21
634
原创 C++高频(二)
内联函数是指在函数声明前加上inline关键字的函数,它的作用是告诉编译器在调用函数的地方直接将函数体插入,而不是通过函数调用的方式执行。在运行时,通过指针或引用访问虚函数时,编译器会根据对象的实际类型,通过虚函数指针找到对应的虚函数表,然后根据函数名或索引在虚函数表中查找相应的函数地址进行调用。多态是面向对象编程的重要概念之一,它可以实现函数的动态绑定,使得通过基类指针或引用调用的函数能够根据实际对象的类型来决定调用哪个对象的成员函数。内联函数在编译时展开,避免了宏带来的副作用和类型不匹配的问题。
2025-03-17 17:53:06
1032
原创 C语言面试高频(内存管理)
内存池则是在真正使用内存之前,先申请分配一大块内存(内存池)留作备用,当我们申请内存时,从池中取出一块动态分配的内存,释放内存时,再将我们使用的内存释放到我们申请的内存池内,再次申请内存池也可以再取出来使用。通常情况下习惯使用new/delete/malloc/free等API申请分配和释放内存,这样导致的后果是:当程序长时间运行时,由于所申请的内存块大小不定,频繁使用时会造成大量的内存碎片从而降低程序和操作系统的性能。栈:栈上的内存分配和释放是自动进行的,随着函数的调用和返回进行相应的操作。
2025-03-16 20:30:54
1234
原创 C语言面试高频(二)
指针数组的类型声明中,指针符号 * 出现在数组名的后面,用于表示指针数组的类型。当开辟的空间小于 128K 时,调用 brk()函数,malloc 的底层实现是系统调用函数 brk(),其主要移动指针 _enddata(此时的 _enddata 指的是 Linux 地址空间中堆段的末尾地址,不是数据段的末尾地址)务必正确配对分配和释放:确保每次内存分配都有相应的释放,释放内存的操作必须与分配内存的操作对应(malloc和free 一定要malloc和free的次数一致否则就泄露)。
2025-03-14 17:47:35
1082
原创 C语言面试高频(一)
const定义的常量有作用域限制,可以根据声明位置的不同而有不同的作用域。const生成符号表中的一个符号,有明确的名字和类型,可以进行调试和符号查找。在 File2.c 中,我们使用 extern 关键字来声明同名的全局变量 globalVar,以表示它是在其他源文件中定义的。它记录了程序在运行时附带的命令行参数的数量,至少为1,因为程序自身的名称也算一个参数。在这个例子中,getMessage 函数的返回类型前面的 const 关键字指示函数返回一个指向常量字符的指针。
2025-03-14 17:45:56
661
原创 C++面试高频(一)
(Pointer to a constant):指针常量是指指针本身是不可更改的,即指针变量自身的值不能被修改,但指向的值可以修改。(Constant pointer):常量指针是指指针指向的地址不能更改,即指针变量指向的地址不能被修改,但可以通过指针修改指向的值。需要注意的是,对于转换为char的int值,如果超出了char类型的范围(-128至127),将会发生溢出,只保留最低位字节的值。野指针(Dangling Pointer):指的是没有初始化过的指针,它指向的地址是未知的、不确定的、随机的。
2025-03-11 17:39:24
449
原创 计算机网络 -实验六 rip路由协议实验
1.了解rip路由协议 2. 学会启用rip协议 3. 熟悉华为网络模拟器的使用方法; 4. 掌握网络拓扑图的绘制
2025-03-10 14:15:29
427
原创 计算机网络-实验四子网划分
要划分成3个子网,则网络号n:3<=2n,所以n>=2,考虑每个部门约50台主机,主机位m:50<=2m,其中m>=6, m+n=8;主机之间测试连通性,以部门1的主机PC1测试到部门2的主机PC2、到部门3的主机PC3、到部门4的主机PC4为例子,截图说明连通性。为主机分配IP后,主机之间测试连通性,以部门1的主机PC1测试到部门2的主机PC3和到部门3的主机PC5为例子,截图说明连通性。特别提醒:通常把第1个IP地址作为主机PC的IP地址,最后1个IP地址作为主机PC的网关地址。
2025-03-03 16:45:39
1111
原创 计算机网络实验2-虚拟局域网(VLAN)划分
四、实验内容 1、根据实验拓扑图建立好实验环境,并设定 PC 机的 IP 地址;2、通过交换机的基本命令,在 S5700 交换机上创建虚拟局域网(VLAN),并完成虚拟局域网(VLAN)划分,并通过其中一台 PC 机 ping 其余主机(分别ping同一vlan的主机和不同vlan的主机),查看 ping 命令运行结果;4. 配置 VLAN、查看配置并测试网络连通性 (1) 配置 VLAN 将 PC 划分到不同vlan(同一vlan至少包括2台pc) [s1]display int #查看端口。
2025-02-27 19:22:06
650
原创 面向对象程序设计-实验十二
一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。对于输入的每一批数,按从小到大排序后输出。输出将从小到大顺序输出数据。/* 请在这里填写答案 */题目2(给出题目描述)题目3给出题目描述)
2025-02-25 21:55:18
622
原创 面向对象程序设计-实验十一
(给出题目描述)#include<iostream>usingnamespacestd;classMyTimeprivateintm_h;intm_m;intm_s;publicMyTime(inthintmintsm_h =h;m_m =m;m_s =s;MyTime()this->m_h =this->m_m =this->m_s = 0;MyTimeoperator++()m_s++;if。
2025-02-23 19:59:12
1003
原创 面向对象程序设计-实验十
/重载双目运算符'-'Complex operator+(Complex &c) const;//重载双目运算符'+'Complex operator-=(Complex &c );//重载双目运算符'-='
2025-02-20 18:11:33
1115
原创 面向对象程序设计-实验九
include<iostream>#include<string>usingnamespacestd;classvehiclepublicintspeed;intweight;voidRun()voidStop()classbicyclevirtualpublicvehiclepublicintheight;classmotorcyclevirtualpublicvehiclepublicint。
2025-02-20 18:07:45
1010
原创 面向对象程序设计-实验七
这里需要设计一个捐款人类Donator及一个相关函数getMaxName( ),Donator类中包含捐款人的姓名及其捐款额。输入本批次将参与的捐款人数。输出本批次中捐款最高者姓名。你编写的代码将被嵌入这里。个捐款人的姓名和捐款额。输入目前已有的捐款总额。你的代码将被嵌在这里。
2025-02-14 20:49:57
1195
原创 面向对象程序设计-实验3
(给出题目描述)(给出题目描述)#include <iostream>private:int days;int hours;public:days=d;hours=h;minutes=m;int a,b;return t4;t3.Show();return 0;
2025-02-09 23:31:25
834
原创 面向对象程序设计-实验2
int tamp;if(a>b)tamp=a;a=b;b=tamp;if(b>c)tamp=b;b=c;c=tamp;if(a>c)tamp=a;a=c;c=tamp;if(a>b)tamp=a;a=b;b=tamp;int main()int a,b,c;return 0;i<n;i++)j<n-i-1;j++)int t;t=a[j];a[j+1]=t;i<n;i++)j<n-i-1;j++)double t。
2025-02-07 23:26:16
1272
原创 面向对象程序设计-实验1
某商店开展买一送一活动,购买两件商品时,只需支付价格较高的商品的金额。要求程序在输入两个商品的价格后,输出所应支付的金额,请根据裁判程序编写函数cut,将代码补充完整。本题要求实现一个带默认参数的函数,求两个或三个整数中的最大数。本题要求实现一个类定义,可完成长方柱体积的计算与输出。
2025-02-06 23:50:04
674
原创 人工智能导论-第3章-知识点与学习笔记
归结规则的基本形式是对两个子句进行归结,如果其中一个子句包含一个文字,而另一个子句包含该文字的否定,则可以通过消解得到一个新的子句。一个文字是一个不能再分解的命题,它可以是一个原子谓词,也可以是一个原子谓词的否定。比如,如果我们有一个原子谓词P,那么P和¬P(P的否定)都是文字,其中P称为正文字,¬P称为负文字。在命题逻辑中,如果有两个文字,一个是某个命题变量,另一个是该变量的否定形式,则它们被称为互补文字。例如,如果有两个文字分别是P和¬P,那么它们就是互补文字,因为P是¬P的否定形式,反之亦然。
2025-02-03 23:53:54
982
原创 人工智能第2章-知识点与学习笔记
逻辑中的逻辑蕴涵式和等价式,程序设计语言中的文法规则,数学中的微分和积分公式,化学中分子结构式的分解变换规则,甚至体育比赛中的规则,国家的法律条文,单位的规章制度等,都可以用产生式表示。模式层构建在数据层之上,是知识图谱的核心。在产生式表示知识的系统中,匹配可以是精确的,也可以是不精确的,只要按某种算法求出的相似度落在预先指定的范围内就认为是可匹配的。2.知识图谱的体系架构:知识图谱的体系架构是指其构建模式结构,也包含知识图谱的更新过程。(2)特性:1,相对准确性,2,不确定性,3,可表示性和可利用性。
2025-02-02 23:25:27
811
原创 人工智能导论--第1章-知识点与学习笔记
专家系统是一个智能计算机 程序 系统,其内部含有大量的某个 领域专家 水平的知识与经验,它能够应用人工智能技术和 计算机技术 ,根据系统中的知识与经验,进行推理和判断,模拟人类专家的 决策过程 ,以便解决那些需要人类专家处理的 复杂问题 ,简而言之,专家系统是一种模拟人类专家解决领域问题的计算机程序系统。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
2025-01-31 22:33:54
792
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人