自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++static

被static修饰的静态成员 变量、静态成员函数属于类的静态资源,类的实例之间共享一个静态成员,换言之,一处变、处处变。static 修饰的变量存放在全局数据区的静态变量区,包括全局静态变量和局部静态变量,都在全局数据区分配内存。全局变量是不显式用 static 修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过 extern 全局变量名的声明,就可以使用全局变量。静态变量会被默认初始化为0,类内的普通变量是被随机初始化的。除非显示赋值初始化。.

2022-08-06 09:04:44 306 1

原创 tcb传输控制块

服务器发起连接的方式叫PassiveOpen,通来说服务器不可能知道当前时刻有哪个设备想向它发起连接,因此它只能构建一个端口,然后监听该端口,等待客户端从该端口向它发起连接请求。在OPEN阶段无论是客户端还是服务器都需要准备好TCB数据结构,但由于服务器不知道要连接它的客户端信息,因此在构建TCB模块时会默认将客户端对应的socket数据初始化为0。把发给不同设备的数据封装起来。在同一时刻,设备可能会产生多种数据需要分发给不同的设备,为了确保数据能够正确分发,TCP用一种叫做TCB,也叫传输控制块的。...

2022-08-02 09:35:35 892

原创 socket是什么

所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.123)。socket(套接字)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。每一个传输层连接唯一地被通信两端的两个端点(即两个套接字)所确定。总之,套接字Socket=(IP地址端口号),...

2022-08-02 08:53:51 344

原创 fastdfs分片上传和断点续传

断点续传是在下载或上传时,将下载或上传任务(⼀个⽂件或⼀个压缩包)⼈为的划分为⼏个部分,每⼀个部分采⽤⼀个线程进⾏上传或下载,如果碰到⽹络故障,可以从已经上传或下载的部分开始继续上传或者下载未完成的部分,⽽没有必要从头开始上传或者下载。为了避免客户端在上传之后的进度数据被删除⽽导致重新开始从头上传的问题,服务端也可以提供相应的接⼝便于客户端对已经上传的分⽚数据进⾏查询,从⽽使客户端知道已经上传的分⽚数据,从⽽从下⼀个分⽚数据开始继续上传。如果上传的文件比较大,在快上传完的时候出了错,需要重新上传。...

2022-07-16 18:25:26 1897

原创 fastdfs小文件存储学习总结

同样大小的空间采用链表进行连接,当有小文件加入的时候,通过平衡树搜索合适大小的位置,对于多余的空间,会再次作为空闲空间加入平衡树。如果一个磁盘中小文件比较多,每个小文件独立存放的话,会有很多inode,占用不小的内存,并且在对文件增删改查的时候,需要遍历的文件比较多,效率低。一个trunk中存放多个小文件,每个小文件前有一个head描述小文件的信息。小文件存储原理将多个小文件合并成一个文件,称为一个trunk。所以将多个小文件合并存放,将多个小文件合并成一个文件存放。至于小文件是多大,可自行定义。...

2022-07-16 18:05:34 468

原创 c语言实现内存泄漏检测组件

发生内存泄漏主要是因为内存没有及时释放,即malloc后没有free。实现一个检测出内存泄漏且能知道发生内存泄漏的代码行,首先要能检测出发生了内存泄漏,其次能定位到发生内存泄漏的地方。一个方法是每当分配一个内存时就用一个文件来记录该地址,文件名为分配的地址,文件内容为builtin_return_address()的值,即调用函数的代码在代码段的位置。当释放某地址的时候再文件夹中找对应的文件名,若此文件存在则删除并释放地址,若不存在则是出现二次释放。当进程结束时,若还有剩余文件,则表示发生内存泄漏,通过文件

2022-07-14 18:40:20 485

原创 c++11新特性

c++11新特性总结

2022-07-14 17:31:49 495

原创 对mutex锁的理解

对mutex锁的理解

2022-07-06 17:04:05 224

原创 c++中typedef和define

c++基础

2022-06-04 17:54:02 262

原创 协程基础知识

协程:为什么会有协程?解决什么问题? 原语 协程的切换 协程结构体定义 协程多的时候,调度策略 调度器如何定义? 协程api的实现,hook 多核模式 如何测试(如果把协程写在简历里,主要围绕这九个问题)服务端:对网络连接的处理同步:在同一个流程,也即按顺序执行。异步:不在同一个流程中执行同步与异步,是形容两者之间的关系。检测io与读写io,在同一个流程则为同步,不在同一个流程则为异步。异步io:aioio异步操作:指检测io与读写异步操作。可以一个

2022-04-13 18:40:45 428

原创 4.3Posix API与网络协议栈

tcp server。Linux下服务端api:1.socket 2.bind 3. listen 4.accept 5.recv 6.send 7.closetcp client 客户端:1.socket 2.bind(optional) 3.connect() 4.send 5.recv 6.close()socket:插 座两部分。一部分是fd(文件描述符),tcb(tcp control block)。fd是我们操作的,tcbs是...

2022-04-13 18:36:46 2304

原创 WebSocket协议理解

WebSocket,下层和 HTTP 一样也是基于 TCP 协议,这是一种轻量级网络通信协议,也属于应用层协议。http最大的问题:HTTP 是一种被动的通信模式,服务端必须等待客户端请求才可以返回数据,无法主动向客户端发送数据。无法满足实时性。这也导致在 WebSocket 出现之前,一些对实时性有要求的服务,通常是基于轮询(Polling)这种简单的模式来实现。轮询就是由客户端定时发起请求,如果服务端有需要传递的数据,可以借助这个请求去响应数据。轮询的缺点也非常明显,大量空闲的时间,其实是在反.

2022-04-01 22:35:24 2133

原创 算法刷题总结1、

1、快速查找一个数组中的某个值 可用二分查找,注意:二分查找区间的开闭。以后大家只要看到面试题里给出的数组是有序数组,都可以想一想是否可以使用二分法。同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。例如:输入:nums = [1,2,3,4,5,6,7], k = 3向右轮转 1 步: [7,1,2,3,4,5,6]。向右轮转 2 步: [6,7,1,2,3,4,5]...

2022-03-30 22:33:56 495

原创 select、poll、epoll、reactor总结

//select模型 fd_set fdSocket; //套接字集合 ,默认最大值FD_SETSIZE FD_ZERO(&fdSocket); //初始化fd_set集合,集合在使用前应该清空 FD_SET(sListen, &fdSocket); //将套接字添加到集合 while (1) { fd_set fdRead = fdSocket; //将一个套接字拷贝赋给select函数 //用于接..

2022-03-22 23:08:27 1196

原创 c++网络编程基础知识总结

TCP/IP网络通信的API(应用程序接口)。称为Socket接口(套接字)。SOCKET接口是TCP/IP网络最为通用的API。SOCKET实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有SOCKET接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个SOCKET接口来实现。Socket可以支持数据的发送和接收它定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送接收端也首先创建套接字,然后将该套

2022-03-15 19:47:53 1419

原创 c++11异步操作:

异步简单理解:有些任务不立刻使用其结果,不需要等它执行完再去干别的,可以先让它自己执行折弯,我们去干别的任务。c++11还提供了异步接口std::async,通过这个异步接口可以很方便的获取线程函数的执行结果。std::async会自动创建一个线程去调用线程函数,它返回一个std::future,这个future中存储了线程函数返回的结果,当我们需要线程函数的结果时,直接从future中获取,非常方便std::promise、std::packaged_task和std::future的关系as

2022-03-10 21:24:08 1474

原创 c++11线程同步

mutex 头文件是<mutex>,mutex是用来保证线程同步的,防止不同的线程同时操作同一个共享数据。mutex 对象只能在同一线程进行一次加锁并对应一次解锁,否则程序抛出异常。mutex不能在同一个线程中多次加锁的试验。td::mutex,最基本的 Mutex 类。 std::recursive_mutex,递归 Mutex 类。 std::time_mutex,定时 Mutex 类。 std::recursive_timed_mutex,定时递归 Mutex 类。但是..

2022-03-10 21:16:07 802

原创 进程与线程

1. 进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。2. 线程线程是一条执行路径,是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可

2022-03-08 22:47:34 134

空空如也

空空如也

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

TA关注的人

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