<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LSY_HYH的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LSY_HYH</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LSY_HYH]]></copyright><item><title><![CDATA[青蛙跳台阶扩展问题]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/120103538</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/120103538</guid><author>LSY_HYH</author><pubDate>Sat, 04 Sep 2021 18:05:22 +0800</pubDate><description><![CDATA[原题：

一只青蛙一次可以跳上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)]]></description><category></category></item><item><title><![CDATA[详解2021华为笔试三道编程题]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/120083105</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/120083105</guid><author>LSY_HYH</author><pubDate>Fri, 03 Sep 2021 15:50:13 +0800</pubDate><description><![CDATA[2021华为笔试第一道

缓存转发数据包统计（100%）

题目描述


有k个节点的转发队列，每个节点转发能力为m，缓存能力n(表示此节点可立即转发m个包，剩余的缓存，最多缓存n个包，再剩余的丢弃，缓存的包在下一轮继续转发)。另外，此队列中某些节点可能因故障需要直接跳过转发，但不会有两个连续故障的节点。现分两轮操作，第一轮向此队列发送a个数据包让其转发;第二轮，直接驱动让缓存的数据包继续转发。

求两轮最后可能收到的最少数据包总个数(如果第二轮缓存仍有数据包缓存包按丢弃处理) 1 &lt;= k &lt;]]></description><category></category></item><item><title><![CDATA[6个数找最大时间]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/120067961</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/120067961</guid><author>LSY_HYH</author><pubDate>Thu, 02 Sep 2021 19:12:49 +0800</pubDate><description><![CDATA[6个数找最大时间

给定一个数组，里面有6个整数，求这个数组能够表示的最大24进制的时间是多少？




* 题目描述：给定一个数组，里面有6个整数，求这个数组能够表示的最大24进制的时间是多少，
*      输出这个时间，无法表示输出invalid
* 输入描述：输入为一个整数数组，数组内有6个整数
*      输入整数数组长度为6，不需要考虑其它长度，元素值为0或者正整数，
*      6个数字每个数字只能使用一次。
* 输出描述：输出为一个24进账格式的时间，或...]]></description><category></category></item><item><title><![CDATA[sizeof()与strlen()]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/120005178</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/120005178</guid><author>LSY_HYH</author><pubDate>Mon, 30 Aug 2021 20:46:46 +0800</pubDate><description><![CDATA[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...]]></description><category></category></item><item><title><![CDATA[linux中fork函数及子进程父进程执行顺序]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119953132</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119953132</guid><author>LSY_HYH</author><pubDate>Fri, 27 Aug 2021 17:24:21 +0800</pubDate><description><![CDATA[目录

一、fork入门知识

二、fork进阶知识

一、fork入门知识

一个进程，包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程，也就是两个进程可以做完全相同的事，但如果初始参数或者传入的变量不同，两个进程也可以做不同的事。
 一个进程调用fork()函数后，系统先给新的进程分配资源，例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中，只有少数值与原来的进程的值不同。相当于克隆了一个自己。

我们来看一个例子：
...]]></description><category></category></item><item><title><![CDATA[malloc()背后的实现原理——内存池]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119942684</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119942684</guid><author>LSY_HYH</author><pubDate>Thu, 26 Aug 2021 23:23:53 +0800</pubDate><description><![CDATA[相对于栈而言，堆这片内存面临着一个稍微复杂的行为模式：在任意时刻，程序可能发出请求，要么申请一段内存，要么释放一段已经申请过的内存，而且申请的大小从几个字节到几个GB都有可能，我们不能假设程序一次申请多少堆空间，因此，堆的管理显得较为复杂。

那么，使用 malloc() 在堆上分配内存到底是如何实现的呢？

一种做法是把 malloc() 的内存管理交给系统内核去做，既然内核管理着进程的地址空间，那么如果它提供一个系统调用，可以让 malloc() 使用这个系统调用去申请内存，不就可以了吗？当然这是一种理]]></description><category></category></item><item><title><![CDATA[详解mmap：是什么 为什么 怎么用]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119922988</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119922988</guid><author>LSY_HYH</author><pubDate>Thu, 26 Aug 2021 01:34:36 +0800</pubDate><description><![CDATA[目录



mmap基础概念

mmap内存映射原理

mmap和常规文件操作的区别

mmap优点总结

mmap相关函数

mmap使用细节

性能总结

mmap基础概念

mmap是一种内存映射文件的方法，即将一个文件或者其它对象映射到进程的地址空间，实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后，进程就可以采用指针的方式读写操作这一段内存，而系统会自动回写脏页面到对应的文件磁盘上，即完成了对文件的操作而不必再调用read,write等系统调用函数。相反，内核空]]></description><category></category></item><item><title><![CDATA[链表反转相关的题(C++模板)]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119912883</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119912883</guid><author>LSY_HYH</author><pubDate>Wed, 25 Aug 2021 15:48:34 +0800</pubDate><description><![CDATA[目录

反转单链表

反转部分单链表

K个一组反转单链表

K个一组反转单链表(从尾结点开始)

反转单链表

定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点

输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL


classSolution{
public:
ListNode*reverseList(ListNode*head){
if(hea...]]></description><category></category></item><item><title><![CDATA[为什么HTTP3.0使用UDP协议]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119909206</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119909206</guid><author>LSY_HYH</author><pubDate>Wed, 25 Aug 2021 13:23:43 +0800</pubDate><description><![CDATA[目录

1. 前言

2.HTTP2.0和HTTP3.0

2.1 HTTP2.0和TCP的爱恨纠葛

2.2 谷歌为什么选择UDP

2.3 QUIC协议和HTTP3.0

3. QUIC协议详解

3.1 队头阻塞问题

3.2 0RTT 建链

3.3 首次连接和非首次连接

3.4 前向安全问题

3.5 前向纠错

3.6 连接迁移

4. QUIC的应用和前景

5.本文小结

1. 前言

通过本文你将了解到以下内容：



	HTTP2.0和TCP存在的一些问题
	
	
	QUIC协议为什么]]></description><category></category></item><item><title><![CDATA[详解进程的虚拟内存，物理内存，共享内存]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119907395</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119907395</guid><author>LSY_HYH</author><pubDate>Wed, 25 Aug 2021 11:28:36 +0800</pubDate><description><![CDATA[​目录

写在前面：

一、关于内存的两个概念

1.1 虚拟内存

1.2 驻留内存

二、详解top命令中VIRT、RES和SHR

2.1 top命令中ⅥRT、RES和SHR的含义

三、进程的smaps文件

写在前面：

想必在Linux上写过程序的同学都有分析进程占用多少内存的经历，或者被问到这样的问题，你的程序在运行时占用了多少内存（物理内存）？

通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标，他们分别代表什么意思呢？这是本文需要跟.]]></description><category></category></item><item><title><![CDATA[详解操作系统中虚拟内存与物理内存的关系]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119907319</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119907319</guid><author>LSY_HYH</author><pubDate>Wed, 25 Aug 2021 11:25:32 +0800</pubDate><description><![CDATA[​

点击链接阅读更多：

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 ]]></description><category></category></item><item><title><![CDATA[C++类对象中虚函数表指针、虚函数表、虚函数之间的关系以及在内存中的布局]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119907130</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119907130</guid><author>LSY_HYH</author><pubDate>Wed, 25 Aug 2021 11:22:36 +0800</pubDate><description><![CDATA[​

目录

C++类的虚函数表和虚函数在内存中的位置

虚函数表和虚函数在内存中的位置说明

结论

原文https://blog.youkuaiyun.com/JMW1407/article/details/108243316

C++类的虚函数表和虚函数在内存中的位置

关系：虚函数表指针(保存在堆或栈)-&gt;虚函数表(常量区.rodata)-&gt;虚函数(代码段 .text)

虚函数表指针是虚函数表所在位置的地址。虚函数表指针属于对象实例。因而通过new 出来的对象的虚函数表指针位于堆，声名对象的...]]></description><category></category></item><item><title><![CDATA[C++类对象在内存中的布局]]></title><link>https://blog.youkuaiyun.com/LSY_HYH/article/details/119906682</link><guid>https://blog.youkuaiyun.com/LSY_HYH/article/details/119906682</guid><author>LSY_HYH</author><pubDate>Wed, 25 Aug 2021 11:15:14 +0800</pubDate><description><![CDATA[目录



一、前言

二、C++ 类对象的内存布局

2.1 只有数据成员的对象

2.2 没有虚函数的对象

2.3 拥有仅一个虚函数的类对象

2.4 拥有多个虚函数的类对象

三、继承关系中的C++类对象内存分布

3.1 存在继承关系且本身不存在虚函数的派生类的内存布局

3.2本身不存在虚函数(不严谨)但存在基类虚函数覆盖的单继承类的内存布局

3.3 定义了基类没有的虚函数的单继承的类对象布局

3.4 多继承且存在虚函数覆盖同时又存在自身定义的虚函数的类对象布局

3.5如果第1个直接...]]></description><category></category></item></channel></rss>