八股文
文章平均质量分 88
栋哥爱做饭
想都是问题
做才是答案
展开
-
61-70==c++知识点
内存泄露**一般我们常说的内存泄漏是指堆内存的泄漏。**堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定)内存块,使用完后,必须显式释放的内存。。应用程序般使用malloc,、realloc、new等函数从堆中分配到块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了(申请用完后,一定要释放,不然就是内存泄漏)避免内存泄露的几种方式:计数法。...原创 2022-08-30 11:52:52 · 410 阅读 · 0 评论 -
51-60==c++知识点
ebp-8中上面两条汇编的作用即:将x的地址存入变量b中,这不和将某个变量的地址存入指针变量是一样的吗?所以从汇编层次来看,的确引用是通过指针来实现的。const p2中const修饰p2的值,所以理解为p2的值不可以改变,即p2只能指向固定的一个变量地址,但可以通过。64bytes)的空间,这时内存池只有(20。p1或者const int。p1两种情况中const修饰。......原创 2022-08-29 09:43:09 · 293 阅读 · 0 评论 -
41-50==c++知识点
在c++中,new有三种类型典型的使用方法:plain new,nothrow new和placement new。这种new允许在一块已经分配成功的内存上重新构造对象或对象数组。原创 2022-08-28 01:34:13 · 210 阅读 · 0 评论 -
31-40==c++知识点
特例化不影响参数匹配。例如,此处如果是compare(3,5),则调用普通的模板,若为compare(“hi”,”haha”)则调用特例化版本(**因为这个cosnt char*相对于T,**更匹配实参类型),注意二者函数体的语句不一样了,实现不同功能。在基类得函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据所指对象的实际类型来调用相应的函数,如果对象类型是派生类,就调用派生类的函数,如果对象类型是基类,就调用基类的函数。因此,想保证程序的类型安全性,应尽量避免使用空类型指针void。.原创 2022-08-19 14:30:15 · 395 阅读 · 0 评论 -
21-30==c++知识点
代码】21-30==c++知识点。原创 2022-08-17 16:56:11 · 309 阅读 · 0 评论 -
11-20==c++知识点
对于关联容器(如map, set,multimap,multiset),删除当前的iterator,仅仅会使当前的iterator失效,**只要在erase时,递增当前iterator即可。(1)对于序列式容器(比如vector):删除当前的iterator会使后面所有元素的iterator都失效。这是因为顺序容器内存是连续分配(分配一个数组作为内存),删除一个元素导致后面所有的元素会向前移动一个位置。(删除了一个元素,该元素后面的所有元素都要挪位置,所以,iter++,已经指向的是未知内存).......原创 2022-08-10 20:18:19 · 434 阅读 · 0 评论 -
1-10=c++知识点
【代码】1-10=c++知识点。原创 2022-08-10 15:06:29 · 226 阅读 · 0 评论 -
数据结构基础==数据结构与算法2
其中,增和删又可细分为在数据结构中间的增和删,以及在数据结构最后进行增和删,区别在于原始数据的位置是否发生改变。查找又可分为按照位置条件的查找和按照数值特征的查找。(7)Trie 树/字典树:根结点不包含字符、其他结点都只包含一个字符;从根结点到某一叶子结点,路径上经过的字符连接起来,即为集合中的某个字符串。(2)相关概念:根结点、父结点、子结点、兄弟结点、叶子结点、深度、层。(1)树是由结点和边组成的,不存在环的一种数据结构。(6)二叉查找(搜索)树(i,右子 结点为 2。......原创 2022-08-08 21:23:51 · 172 阅读 · 0 评论 -
代码效率优化方法论==数据结构与算法1
注意:复杂度与具体的常系数无关、复杂度相加的时候选择高者作为结果、O(1)是一个 特殊的复杂度即与任务算例个数 n 无关。可以看到内容时非常多,对于嵌入式软件来说,我们不需要全都掌握。...原创 2022-08-08 18:32:46 · 315 阅读 · 0 评论 -
linux网络编程大杂烩==Linux应用编程7
1、建立连接(1)socket函数:建立一个套接口,类似于open,用来打开一个网络连接,如果成功则返 回一个网络文件描述符(int),之后我们操作这个网络连接都通过这个网络文件描述符。(2)bind函数:将 socket 建立的套接口与一个本地地址捆绑(主机地址/端口号)。(3)listen函数:把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该 套接字的连接请求。(4)accept函数:开始接收从客户端发来的请求信息。(5)connect。...原创 2022-08-05 21:45:03 · 535 阅读 · 0 评论 -
linux线程大杂烩==Linux应用编程6
用户从终端输入任意字符以回车键结束,程序统计个数并显示,输入“end”则结束。原创 2022-08-05 11:49:49 · 210 阅读 · 0 评论 -
linux信号==Linux应用编程5
1、信号是内容受限的一种异步通信机制(1)目的:用来通信(2)本质: int型数字编号(事先定义好的)。(3)特点:信号是异步的。2、信号由谁发出(1)用户中终端按下按键(如 Ctrl + C)。(2)用户使用 kill 命令向其他进程发出信号。(3)硬件异常后由操作系统发出信号。(4)某种软件条件满足后也会发出信号,如 alarm 闹钟时间到会产生 SIGALARM 信号、向 一个读端已经关闭的管道 write 时会产生 SIGPIPE 信号。3、信号由谁处理、如何处理。...原创 2022-08-04 18:43:46 · 85 阅读 · 0 评论 -
linux进程大杂烩==Linux应用编程4
1.wait 和 waitpid 差别(1)基本功能一样,都是用来回收子进程。(2)waitpid 可以回收指定 PID 的子进程,可以选择阻塞式或非阻塞式两种模式,而wait不能指定且是阻塞的,直到进程回收完资源。2.waitpid 原型介绍(1),返回的 pit_t 为回收的子进程的 PID。(2)输入的 pid_t 为指定的要回收的子进程的 PID,若为-1 则不指定 PID。...原创 2022-08-03 15:48:07 · 624 阅读 · 0 评论 -
获取系统信息==Linux应用编程3
1.操作系统级别的调试(1)简单程序单步调试。(2)复杂程序printf打印信息调试。(3)框架体系日志记录信息调试。(4)内核调试的困境。2.proc虚拟文件系统的工作原理(1)Linux是一个非常庞大、非常复杂的一个单独程序,对于这样一个程序来说调试是非常复杂的。(2)像kernel这样庞大的项目,添加/更改一个功能是非常麻烦的,因为可能会影响到其他功能。(3)(4)proc文件系统的思路是(5)(3)4、扩展sys文件系统。...原创 2022-08-02 11:41:48 · 380 阅读 · 0 评论 -
文件属性==Linux应用编程2
代码】文件属性==Linux应用编程2。原创 2022-08-02 10:55:56 · 185 阅读 · 0 评论 -
linux中的文件IO==Linux应用编程1
1、与文件IO的区别(1)标准IO是C库函数,文件IO是API。(2)C库函数是由API封装而来的,比API好用。(3)C库函数具有可移植性而API不具有可移植性。(4)性能和易用性上,C库函数要好一些,譬如IO,文件IO是不带缓存的,而标准IO是带缓存的,因此标准IO比文件IO性能更高。2、常用标准IO函数介绍3、简单的标准IO读写示例0};\n");https。...原创 2022-08-01 19:32:45 · 302 阅读 · 0 评论 -
五种IO模型
1.阻塞IO:调用者调用了某个函数,等待这个函数返回,期间什么也不做,不停的去检查这个函数有没有返回,知道这个函数还回再去做下一件事2.非阻塞IO:每隔一段时间去检测IO时间是否就绪,没有就绪就可以做其他事情。3.信号驱动IO:linux用套接口进行信号的驱动IO,安装一个信号处理函数,进程继续运行并不阻塞,当IO时间就绪,进程收到SIGIO信号,然后处理IO事件。4.IO复用/多路转接IO:linux用select/poll 函数实现io复用模型,这两个函数也会使进程阻塞,但是和阻塞I原创 2021-08-06 16:57:24 · 102 阅读 · 0 评论 -
misc类设备与蜂鸣器驱动==Linux驱动开发6
1、何为misc(1)中文名杂项设备/杂散设备。(2)位于/sys/class/misc中。(3)有一套驱动框架,内核实现一部分(misc.c),驱动实现一部分(x210-buzzer.c)。(4)misc是对原始字符设备注册接口的一个类层次的封装,很多典型字符设备可以归到misc类,使用misc驱动框架来管理。2、misc类驱动框架架构(1)内核开发者实现部分,关键点有两个一个是类的创建,另一个是开放给驱动开发者的接口。(2)设备工程师具体实现部分。...原创 2022-07-26 22:13:42 · 168 阅读 · 0 评论 -
Linux 设备驱动模型platform==Linux驱动开发5
1、什么是设备驱动模型(1)类class、总线bus、设备device、驱动driver。(2)kobject和对象生命周期(3)sysfs。(4)udev。2、为什么需要设备驱动模型(1)早期内核(2.4之前)没有统一的设备驱动模型,但照样可以使用(2)2.6版本正式引入设备模型,目的是在设备越来越多,功耗要求等新特性要求的情况下更易用、更优秀。(3)设备驱动模型负责统一实现和维护一些特性,比如电源管理、热插拔、对象生命周期、用户空间和内核空间交互等基础设施。...原创 2022-07-26 21:13:18 · 179 阅读 · 0 评论 -
驱动框架入门之开关量==Linux驱动开发4
代码】驱动框架入门之开关量==Linux驱动开发3。原创 2022-07-25 19:03:57 · 240 阅读 · 0 评论 -
字符设备驱动高级==Linux驱动开发3
代码】字符设备驱动高级==Linux驱动开发2。原创 2022-07-24 21:32:21 · 207 阅读 · 0 评论 -
字符设备驱动基础==Linux驱动开发2
(2)在init和exit函数中分别点亮和熄灭LED。-(1)先定义file_operations结构体变量。原创 2022-07-24 18:33:51 · 311 阅读 · 1 评论 -
驱动初识==Linux驱动开发1
1、理解驱动的概念(1)驱动一词的字面意义、物理上的驱动、硬件中的驱动。(2)Linux内核驱动即软件层面上的驱动,指的是这段代码操作了硬件使其动起来,所以叫硬件的驱动程序(本质上是电力提供了动力,而驱动程序提供了操作的逻辑方法)。2、Linux体系架构(1)分层思想大致可以分为两层,上层是应用,下层是操作系统,驱动、文件系统等程序包含于OS中,上层应用通过API调用OS中的驱动程序。(2)驱动上面是系统调用API,下面是硬件。(3)驱动自己本身也是分层的。...原创 2022-07-23 17:46:40 · 298 阅读 · 0 评论 -
linux常用指令==Linux操作系统4
格式grep[选项]字符串/正则表达式[文件名]-o只显示被模式匹配到的字符串,而不是整个行。-A5显示匹配到的行及其后面5行。-B5显示匹配到的行及其前面5行。-C5显示匹配到的行及其前后5行。-E使用扩展的正则表达式。-i匹配时不区分大小写。...原创 2022-07-23 16:11:35 · 391 阅读 · 0 评论 -
进程管理子系统==Linux操作系统3
1、先来先服务(FCFS)2、短作业(进程)优先(SJ(P)F)3、高响应比优先(HRN)4.时间片轮转法(RR)5、多级反馈队列(RRWMF)6、最高优先权优先(FPF)7、三个概念1、SCHED_OTHER 分时调度策略(默认)2、SCHED_FIFO 实时调度策略,先到先服务3、SCHED_RR 实时调度策略,时间片轮转4、系统中既有分时调度,又有先到先服务调度和时间片轮转调度...原创 2022-07-23 13:29:01 · 500 阅读 · 0 评论 -
I/O管理子系统==Linux操作系统2
1.用户层 I/O 软件2、设备独立性软件3、设备驱动程序4、中断处理程序5、硬件1.什么是 DMA2.DAM 过程1、什么是中断的上下部2、中断上下部的适用场景原创 2022-07-23 12:06:41 · 156 阅读 · 0 评论 -
内存管理==Linux操作系统1
例题描述在一个采用页式虚拟存储管理的系统中,有一用户作业,它依次要访问的页面序列是1,2,3,4,1,2,5,1,2,3,4,5。假定分配给该作业的页数为3且作业初始时未装载页面,那么采用FIFO、LRU、LFU调度算法产生的缺页中断次数分别为多少?(1)分页管理与分段管理的区别。(2)逻辑地址到物理地址的变换。(4)分段管理的保护方法。...原创 2022-07-23 09:54:01 · 300 阅读 · 0 评论 -
中断相关==arm裸机2
1、复位2、未定义指令3、软中断4、指令预取中止5、数据访问中止6、外部中断请求(IRQ)7、快速中断请求(FIQ)1、中断向量表2、中断优先级3、中断向量&中断模式&中断优先级表4、各种不同的处理器模式对应的物理寄存器组1.中断响应及保护现场过程2.恢复现场及中断返回过程3.注意事项4、ARM体系中控制程序执行流程的三种方式5.指令流水线......原创 2022-07-14 18:01:38 · 261 阅读 · 0 评论 -
GPIO 相关==arm裸机1
1、四种输入模式浮空输入:黄色的高亮部分显示了数据传输通道,外部的电平信号通过左边编号 1 的 I/O 端口进入 STM32,经过编号 2 的施密特触发器的整形送入编号 3 的“输 入数据寄存器”,在“输入数据寄存器”的另一端(编号 4),CPU 可以随时读 出 I/O 端口的电平状态。上拉输入:与前面的浮空输入模式相比,仅仅是在数据通道上部,接入了一个上拉电 阻,根据 STM32 的数据手册,这个上拉电阻阻值介于 30K~50K 欧姆。同样, CPU 可以随时在“输入数据寄存器”的另一端,读出 I/O原创 2022-07-14 16:17:16 · 445 阅读 · 0 评论 -
链表&状态机与多线程==C语言9
应用的核心1、从数组的缺陷说起2、时刻别忘记链表是用来干嘛的1、单链表的节点构成2、堆内存的使用和释放3、链表的头指针4、实战三、单链表的算法之插入节点1、访问链表中各个节点的数据2、将创建节点的代码封装成一个函数3、从链表头部插入新节点4、从链表尾部插入新节点5、什么是头结点1、如何遍历单链表五、单链表算法之删除节点1、删除节点的两个步骤2、如何删除一个节点六、单链表的算法之逆序1、思路七、双链表的引入和实现1、单链表的局限性2、解决思路:双链表3、双链表的封装和编程实现4、双链表原创 2022-07-12 17:49:01 · 406 阅读 · 0 评论 -
一些杂散但值得讨论的问题==c语言8
1、像人类社会一样的计算机软件系统2、操作系统的调用通道:系统API 函数3、C 库函数和 系统API 的关系4、不同平台下库函数的差异5、操作系统的重大意义:软件体系分工1、函数为什么需要返回2、main 函数被谁调用3、Linux 下一个新程序执行的本质4、实验获取 main 的返回值1、谁给 main 函数传参2、为什么要给 main 函数传参3、表面上:给 main 函数传参是怎样实现的4、本质上:给 main 函数传参是怎样实现的5、给 main 函数传参要注意什么1、C 语言属于强类型语言2、数原创 2022-07-11 21:15:45 · 223 阅读 · 0 评论 -
存储类&生命周期、作用域&链接属性==c语言7
1、存储类2、生命周期3、作用域4、链接属性5、总结1、代码段、只读数据段2、数据段、bss 段3、堆4、栈5、文件映射区6、内核映射区7、操作系统下和裸机环境下 C 程序加载执行的差异1、auto2、static3、register4、extern=别的文件里的变量我也可以用5、volatile6、restrict7、typedef1、研究变量生命周期的意义2、栈变量的生命周期3、堆变量的生命周期4、数据段、bss 段变量的生命周期5、代码段、只读段的生命周期1、局部变量的代码块作用域2、函数名和全局变量原创 2022-07-10 13:38:58 · 235 阅读 · 0 评论 -
宏定义与预处理、函数和函数库==C语言6
1、由源码到可执行程序的过程2、预处理的意义 (1)预处理帮编3、编程中常见的预处理4、gcc 中只预处理不编译的方法1.头文件包含2、条件编译3、注释1、宏定义的规则和使用解析2、宏定义示例3、带参数宏和带参数函数的区别4、内联函数和inline关键字5、宏定义来实现条件编译1、C 语言为什么会有函数2、函数编写的一般原则3、函数是动词,变量是名词1、函数的三要素:声明、定义、调用2、函数的原型和作用1、什么是递归函数2、使用递归函数的原则1、什么是函数库(sdk、接口)2、函数库提供的形式:动态链接库与原创 2022-07-09 22:14:05 · 518 阅读 · 0 评论 -
数组&字符串&结构体&共用体&枚举体==C语言5
1、内存管理是由操作系统完成的2、三种内存来源3、栈的详解4、堆的详解6、代码段(函数)、.data(初始化的全局+静态)、bss(未初始化全局+静态)7、有些特殊数据会被放到代码段8、总结:c语言中的变量和常量所使用的内存无非以上三种情况,堆、栈、全局(静态)区1、C 语言没有原生字符串类型2、C 语言使用指针来管理字符串3、字符串的本质:指针指向头部、尾部用’\0’标识的、相连的一段内存。4、注意:指向字符串的指针和字符串本身,是分开的两个东西5、存储多个字符的两种方式:字符串和字符数组1、字符数组初始原创 2022-07-09 19:38:09 · 453 阅读 · 0 评论 -
复杂表达式与指针高级应用==C语言4
1、分析指针数组与数组指针表达式1、函数指针的实质2、函数指针的书写和分析方法3、typedef 关键字的用法4、使用 typedef的重要意义1、Linux 命令行默认是行缓冲的2、scanf 相关1、二重指针与普通一重指针的区别2、C 语言中没有二重指针行不行3、二重指针的用法1、二维数组的内存映像2、哪个是第一维,哪个是第二维3、二维数组的下标式访问和指针式访问4、二维数组的应用和更多维数组1、数组指针指向二维数组的数组名2、指针指向二维数组的第一维元素3、指针指向二维数组的第二维元素.....原创 2022-07-07 15:32:50 · 159 阅读 · 0 评论 -
C的精髓指针==C语言3
1、指针的本质2、为什么需要指针3、指针使用三部曲:定义指针变量、关联指针变量、解引用1、星号*2、取地址&3、左值与右值1、什么是野指针2、什么是悬空指针3、野指针的危害4、NULL 到底是什么在 C 中,可以 int *p = (int *)0;但是不可以 int *p = 0;因为类型不同为什么让指针指向 0 地址处?0 地址作为一个特殊地址,我们认为指针指向这里就是没有被初始化。0 地址一般都是不可访问的,如果直接解引用指向 0 地址的指针就会触发段错误一般在判断指针是否是野指针时原创 2022-07-07 11:59:57 · 230 阅读 · 0 评论 -
位操作==c语言2
位操作符&,|,^在操作寄存器时的特殊作用如何用位运算构建特定二进制数位运算实战演练技术升级:用宏定义来完成位运算原创 2022-07-06 19:26:35 · 124 阅读 · 0 评论 -
内存==c语言1
程序运行为什么需要内存位、字节、半字、字的概念和内存位宽内存编址和寻址、内存对齐C语言如何操作内存内存管理之结构体内训管理之栈(stack)内存管理之堆(heap)复杂数据结构原创 2022-07-05 20:31:55 · 232 阅读 · 0 评论 -
Linux操作系统(八股文篇)
Linux内核主要由五个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。1.进程调度:2、内存管理:3.虚拟文件系统:4.网络接口:5.进程间通信Linux内核5个组成部分之间的依赖关系如下:预处理(Pre-Processing):gcc -E hello.c -o hello.i编译(Compiling):gcc -S hello.i -o hello.s汇编(Assembling):gcc -c hello.s -o hello.o链接(Li原创 2022-06-19 19:06:26 · 4303 阅读 · 1 评论 -
网络编程(八股文篇)
三次握手:四次挥手参考链接:https://blog.csdn.net/baidu_37964071/article/details/80514340参考链接:https://blog.csdn.net/qq_40866810/article/details/113701917参考链接:https://blog.csdn.net/qq_32503701/article/details/89503330参考链接:https://baijiahao.baidu.com/s?id=16181147239原创 2022-06-19 14:48:02 · 880 阅读 · 0 评论