- 博客(13)
- 收藏
- 关注
原创 青蛙跳台阶扩展问题
原题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。class Solution {public: int numWays(int n) { int p = 0, q = 0, r = 1;//初始化p为0 q为f(0)==0 r为f(1)==1 //p q r分别指f(x - 2) f(x - 1)
2021-09-04 18:05:22
135
原创 详解2021华为笔试三道编程题
2021华为笔试第一道缓存转发数据包统计(100%)题目描述有k个节点的转发队列,每个节点转发能力为m,缓存能力n(表示此节点可立即转发m个包,剩余的缓存,最多缓存n个包,再剩余的丢弃,缓存的包在下一轮继续转发)。另外,此队列中某些节点可能因故障需要直接跳过转发,但不会有两个连续故障的节点。现分两轮操作,第一轮向此队列发送a个数据包让其转发;第二轮,直接驱动让缓存的数据包继续转发。求两轮最后可能收到的最少数据包总个数(如果第二轮缓存仍有数据包缓存包按丢弃处理) 1 <= k <
2021-09-03 15:50:13
549
1
原创 6个数找最大时间
6个数找最大时间给定一个数组,里面有6个整数,求这个数组能够表示的最大24进制的时间是多少?* 题目描述:给定一个数组,里面有6个整数,求这个数组能够表示的最大24进制的时间是多少,* 输出这个时间,无法表示输出invalid* 输入描述:输入为一个整数数组,数组内有6个整数* 输入整数数组长度为6,不需要考虑其它长度,元素值为0或者正整数,* 6个数字每个数字只能使用一次。* 输出描述:输出为一个24进账格式的时间,或...
2021-09-02 19:12:49
1448
原创 sizeof()与strlen()
sizeof()可以计算所有类型,strlen()仅计算字符串。sizeof计算对象所占内存字节数,strlen()计算字符个数,遇到'\0'截止。char *a;char b[5];sizeof(a) = 8 ; // 64位系统,8代表的是指针的大小,指针占8字节sizeof(b) = 5 ; // 计算字符串数组的结果是真实的字符数组大小//strlen(a) strlen(b) // 无固定值,因为strlen判断的唯一标准是'\0',//它会根据a...
2021-08-30 20:46:46
134
原创 linux中fork函数及子进程父进程执行顺序
目录一、fork入门知识二、fork进阶知识一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。我们来看一个例子:...
2021-08-27 17:24:21
344
原创 malloc()背后的实现原理——内存池
相对于栈而言,堆这片内存面临着一个稍微复杂的行为模式:在任意时刻,程序可能发出请求,要么申请一段内存,要么释放一段已经申请过的内存,而且申请的大小从几个字节到几个GB都有可能,我们不能假设程序一次申请多少堆空间,因此,堆的管理显得较为复杂。那么,使用 malloc() 在堆上分配内存到底是如何实现的呢?一种做法是把 malloc() 的内存管理交给系统内核去做,既然内核管理着进程的地址空间,那么如果它提供一个系统调用,可以让 malloc() 使用这个系统调用去申请内存,不就可以了吗?当然这是一种理
2021-08-26 23:23:53
433
原创 详解mmap:是什么 为什么 怎么用
目录mmap基础概念mmap内存映射原理mmap和常规文件操作的区别mmap优点总结mmap相关函数mmap使用细节性能总结mmap基础概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空
2021-08-26 01:34:36
159
原创 链表反转相关的题(C++模板)
目录反转单链表反转部分单链表K个一组反转单链表K个一组反转单链表(从尾结点开始)反转单链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLclassSolution{public:ListNode*reverseList(ListNode*head){if(hea...
2021-08-25 15:48:34
61
原创 为什么HTTP3.0使用UDP协议
目录1. 前言2.HTTP2.0和HTTP3.02.1 HTTP2.0和TCP的爱恨纠葛2.2 谷歌为什么选择UDP2.3 QUIC协议和HTTP3.03. QUIC协议详解3.1 队头阻塞问题3.2 0RTT 建链3.3 首次连接和非首次连接3.4 前向安全问题3.5 前向纠错3.6 连接迁移4. QUIC的应用和前景5.本文小结1. 前言通过本文你将了解到以下内容: HTTP2.0和TCP存在的一些问题 QUIC协议为什么
2021-08-25 13:23:43
89
原创 详解进程的虚拟内存,物理内存,共享内存
目录写在前面:一、关于内存的两个概念1.1 虚拟内存1.2 驻留内存二、详解top命令中VIRT、RES和SHR2.1 top命令中ⅥRT、RES和SHR的含义三、进程的smaps文件写在前面:想必在Linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题,你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟.
2021-08-25 11:28:36
286
原创 详解操作系统中虚拟内存与物理内存的关系
点击链接阅读更多:https://zhuanlan.zhihu.com/p/393403828目录一、虚拟内存与物理内存1.1 虚拟内存1.2 虚拟内存与物理内存二、C/C++中虚拟内存分配模型2.1 C语言中内存分配模型2.2 C++语言中内存分配模型三、程序占用的内存是虚拟内存还是物理内存3.1 内存管理3.1.1 内存管理概念3.1.2 glibc内存管理器3.1.3 内存管理器面临的困难3.1.4 以堆为例讲解内存的申请与释放3.2
2021-08-25 11:25:32
146
原创 C++类对象中虚函数表指针、虚函数表、虚函数之间的关系以及在内存中的布局
目录C++类的虚函数表和虚函数在内存中的位置虚函数表和虚函数在内存中的位置说明结论原文https://blog.csdn.net/JMW1407/article/details/108243316C++类的虚函数表和虚函数在内存中的位置关系:虚函数表指针(保存在堆或栈)->虚函数表(常量区.rodata)->虚函数(代码段 .text)虚函数表指针是虚函数表所在位置的地址。虚函数表指针属于对象实例。因而通过new 出来的对象的虚函数表指针位于堆,声名对象的...
2021-08-25 11:22:36
119
原创 C++类对象在内存中的布局
目录一、前言二、C++ 类对象的内存布局2.1 只有数据成员的对象2.2 没有虚函数的对象2.3 拥有仅一个虚函数的类对象2.4 拥有多个虚函数的类对象三、继承关系中的C++类对象内存分布3.1 存在继承关系且本身不存在虚函数的派生类的内存布局3.2本身不存在虚函数(不严谨)但存在基类虚函数覆盖的单继承类的内存布局3.3 定义了基类没有的虚函数的单继承的类对象布局3.4 多继承且存在虚函数覆盖同时又存在自身定义的虚函数的类对象布局3.5如果第1个直接...
2021-08-25 11:15:14
83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人