自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 手撕strcpy、strncpy与memcpy

如果采用int*类型,3中的元素重叠问题就无法解决了(可以考虑一个memcpy,若未发生重叠问题就用int*拷贝,若发生重叠就用char*去拷贝),其次如果使用多个字节拷贝的情况,比如我只想拷贝两个字符就无法实现了(需要修改内部函数)。strcpy的本质就是将源字符串的字符逐个拷贝到目标字符串中,当然会拷贝'\0',当拷贝'\0'时就会结束循环,但是当src的长度大于dest时,函数仍然会继续拷贝,此时就会出现内存溢出的问题。传入的参数具体类型不确定,采用显式转换的方法保证类型安全。

2023-05-06 16:25:04 217

原创 从上下文切换到零拷贝

在谈论什么是上下文切换前,我们先讨论一下什么是上下文。上下文:进程的物理实体(代码和数据等)和支持运行的环境合称为进程的上下文。直白的概括就是:当前进程运行的实体以及状态。上下文切换:那么上下文切换也就呼之欲出了,上下文切换指的就是当前进程/线程在CPU中的运行暂时被中止,切换到另一个进程/线程的过程占用CPU,就称为上下文切换。可见,上下文切换实际上是一个过程,它具体干了以下三件事:1、当前进程时间片结束,系统保存其当前的运行状态。2、加载新进程的运行状态3、控制权转移到新进程。

2023-04-29 16:09:52 93 1

原创 HTTP协议(1.0/1.1/2.0/3.0)发展历程

由此,头部过大以及队头阻塞的问题就解决了,但是还是存在另一个问题——TCP队头阻塞问题,众所周知,TCP协议过滑动窗口这么一个机制来进行包之间的传递的,当服务端接收到某个序列号靠前的包在网络中丢失了,那么后续的包都需要等待该数据包到达才能进行发送(本身TCP协议为了解决该问题也有快重传以及快恢复机制),这就是TCP队头阻塞问题。首先是HTTP1.0,HTTP1.0协议是较早提出的且应用广泛的HTTP协议,它仍然默认采用的是。最早期的时候,采用的是HTTP0.9协议(只有短连接),这里就不谈该协议了。

2023-04-28 17:47:07 154

原创 cMake简单使用:如何包装自己的项目

cMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。自己之前的项目非常的杂乱无章,但是一个具体的项目一般包括src、inc、bin、log等文件夹(),本文介绍一下如何简单地利用cMake来对项目进行包装。

2023-04-27 17:28:42 182 1

原创 手撕一个简易的shared_ptr

主要是为了保证所有指向该内存的指针共享同一份数据,每次指针拷贝的时候,实际上是拷贝的指针,该指针同样指向的是相同的地址,所以实现了一个同步的功能。共享指针shared_ptr是RALL机制的一个典型实现,主要功能是管理动态创建对象的销毁,从而帮助彻底消除内存泄漏和悬空指针(野指针)的问题,并且通过引用计数的方式实现了可以多个共享指针可以指向同一个对象。首先实现一下构造函数与拷贝构造函数,主要是对指针、引用计数以及锁进行初始化,注意引用计数改变时需要加锁,保证线程安全。可以再写一个获取当前引用计数的接口。

2023-04-24 16:54:04 226 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除