自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HTTP协议认识理解

我们平时输入一个网址,比如www.baidu.com,这其实就是一个域名,浏览器会解析成ip地址,然后通常对应的协议就会对应固定端口号,比如http--80,https--443.这样对外提供服务的程序通常端口号是不能随便改变的,比如火警--119,如果随意改变,下次找不到了那就不能很好为外部提供服务了。url有自己格式和特殊字符,所以我们要保证我们传上去的数据不会破坏url的格式,就需要对传上去的和url特殊字符数据相同的做处理。

2024-05-13 21:56:24 265

原创 多态的原理和应用

C++多态

2024-05-13 11:57:48 711

原创 详解fork()函数

答案是的,在这之前子进程就已经创建好了,既然父子进程代码共享,所以子进程也要执行对应的return,那么就return了俩次,但是每次return的结果是各自保存,他们的数据是不一样的。(如果数据也相同,那么就没啥意义,直接让父进程执行就行,不需要子进程,我们创建子进程必然是为了执行不同的操作)。,所以一个进程里边变量命名和另一个进程没有关系,创建好子进程后,通过写时拷贝,不同的进程里边对应相同的变量就有不同的值。通过返回值的不同,父子进程对应的数据不一样,通过代码条件判断,让父子进程执行不同的代码。

2024-05-04 15:52:26 417 1

原创 详解进程概念

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。为用户程序(应用程序)提供一个良好的执行环境(对资源已经做了基本处理,比如我们可以直接申请一个进程,而不需要去把进程描述组织起来)在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。内核(进程管理,内存管理,文件管理,驱动管理)谈进程之前,我们先了解一下计算机的设计。

2024-05-03 20:52:18 294 1

原创 详解线程概念

什么是线程?我们认为,线程是操作系统调度的基本单位。重新理解进程?内核观点:进程是承担分配系统资源的基本实体。那么线程在操作系统中应该如何描述组织呢?大多数其他操作系统中有线程对应的调度,执行,描述,组织,但是Linux中是没有专门去对线程进行描述组织的,它复用了进程的数据结构和管理算法。Linux没有真正意义上的线程体现在其没有为线程专门用tcb描述组织起来,但是它符合操作系统对线程的定义。我们考虑一下,那CPU怎么区分线程和进程呢?对于CPU而言,我不关心是进程还是线程,只存在执行流的概念。

2024-05-03 19:17:11 685 1

原创 进程同步与进程互斥

原文链接:https://blog.csdn.net/weixin_43819566/article/details/128782933。

2024-04-22 20:59:01 1065

原创 操作系统五种io模型

IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等I/O操作是相对于内存而言的,从外部设备进入内存就叫Input,反之从内存输出到外部设备就叫Output。LINUX中进程无法直接操作I/O设备,必须通过系统调用,请求kernel来协助完成I/O动作。内核会为每个I/O设备维护一个缓冲区。

2024-04-22 16:26:08 1185

原创 进程地址空间详解

代码共享,所以看到前五次打印的g_val的地址都是一样的,这我们不意外,等到了第六次时,我们发现父进程g_val依然是0,子进程的g_val变成了100,因为我们将它改了,这也不意外,因为前面说了,父子进程之间代码共享,而数据是各自私有一份的(写时拷贝),但是令人奇怪的是地址竟然是一样的!其本质是虚拟地址空间,通过虚拟地址与物理地址的映射来分配空间。这段空间中自下而上,地址是增长的,栈是向地址减小方向增长(栈是先使用高地址),而堆是向地址增长方向增长(堆是先使用低地址),堆栈之间的共享区,主要用来加载。

2024-04-21 20:52:52 378 1

原创 socket套接字

套接字(socket)是 Linux 下的一种进程间通信机制,socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口。我们无需深入的去理解 tcp/udp 等各种复杂的 TCP/IP 协议,socket 已经为我们封装好了,我们只需要遵循 socket 的规定去编程,写出的程序自然遵循 tcp/udp 标准的。它用于创建一个网络通信端点(打开一个网络通信),如果成功则返回一个网络文件描述符,通常把这个文件描述符称为socket 描述符。

2024-04-20 16:42:54 864

原创 C++继承详解

机制是面向对象程序设计。

2024-04-12 19:52:58 420

原创 详解进程和线程的区别

1.进程:进程是操作系统中资源分配的基本单位。进程是操作系统对正在运行程序的一种抽象,可以将进程看作程序的一次运行。2.线程:线程是cpu调度执行的基本单位。一个线程是一个“执行流”,每个线程之间按照顺序执行自己的代码,多个线程“同时”执行多份代码。

2024-04-12 10:25:18 709

原创 RAII智能指针

把这里修改一下就OK,weak_ptr不是RAII智能指针,是为了解决shared_ptr的循环引用。当然,shared_ptr也不是万能的,它会有循环引用问题,需要借助weak_ptr来解决。借此,我们实际上把管理一份资源的责任托管给了一个对象。,接着控制对资源的访问使之在对象的生命周期内始终保持有效,采用这种方式,对象所需的资源在其生命期内始终保持有效。存、文件句柄、网络连接、互斥量等等)的简单技术。一般不用c++98的auto_ptr。没有析构,会有内存泄漏风险。不需要显式地释放资源。

2024-04-08 20:29:13 138 1

原创 c++类和对象

类如果没有定义对象,那么类也就相当于声明,定义和声明区别于是否有开空间,类就相当于一张图纸,可以用图纸去建造对象,没有成员变量的类对象,需要1byte,是为了占位,表示对象存在,不存储有效数据。

2023-10-25 19:55:40 16

原创 c语言指针,数组

( void (*) () ) 0 ),将0强制类型转换成函数指针,(* ( void (*) () ) 0 ) () 这整个代码就是对函数指针解引用调用0地址处的函数,函数没有传递参数。&arr是把整个数组的地址取出来,是 int(*)[]类型,arr表示的是数组首元素的地址,是int*类型,数组的地址+1,跳过整个数组的大小,&arr+1 相对于 &arr 的差值是40.其中p表示函数指针变量,前边的int表示函数返回值,后边的俩个int表示函数参数,p指向一个对应类型的函数。

2023-10-16 17:27:57 22 1

原创 c语言数据在内存中的存储

那么,按照上面V的格式,可以得出S=0,M=1.01,E=2。补码10000000直接处理成-128,char的取值范围(-128,127),无符号unsigned char(0,255)。在计算机系统中,数值用补码标识和存储是因为,补码可以将符号位和数值位统一处理,加法和减法也可以统一处理(CPU只有加法器),补码和原码相互转换的运算过程相同,不需要额外的硬件电路。这时,浮点数的指数E等于1-127(或者1-1023)即为真实值, 有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。

2023-09-22 09:28:22 13 1

原创 C语言实现简易扫雷

c语言的简单实现

2023-03-07 15:15:07 23

空空如也

空空如也

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

TA关注的人

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