C++_友元、联合体、内联、static、指针、深浅拷贝

C++_友元、联合体、内联、static、指针、深浅拷贝

bingliaolong C++ 1年前 3 0

友元类 适用情况 紧密协作: 当两个类需要紧密协作,且需要共享内部实现细节时 例如,操作类需要访问数据类的内部数据来实现复杂的功能 封装复杂操作: 当某些复杂操作不能或不应成为数据类的成员函数时 通过友元类可以将这些操作封装在独立的类中,从而简化数据类的设计 提高性能: 在某些情...

C++_成员访问权限

C++_成员访问权限 7

bingliaolong C++ 1年前 10 0

关于继承 概念定义 用户 把包含这个基类或派生类的第三方类或函数暂时称为用户 基类定义如图: public继承 含义 基类的 public 成员在派生类中仍然是 public 的 基类的 protected 成员在派生类中仍然是 protected 的 基类的 private 成...

Skia总结概述

Skia总结概述

bingliaolong Skia 1年前 41 0

核心结构简述 画布 canvas 画布是Skia绘图操作的核心 它提供了一个虚拟的绘图空间,你可以在上面绘制形状、文本和图像 画笔 paint 画笔用于定义绘图操作的样式和颜色 可以设置笔刷的颜色、透明度、填充模式等 路径 path 路径是一系列的线段和曲线,可以用来绘制复杂的图...

C++并发编程 _ 无锁数据结构

C++并发编程 _ 无锁数据结构

bingliaolong C++ 1年前 9 0

自旋锁 用ATOMIC_FLAG_INIT进行了flag的初始化 它确保了flag的初始状态是清除(或说“未设置”)状态 lock调用了test_and_set方法来试图获取锁 test_and_set会检查flag的当前值:如果flag是清除状态,则设置它并返回false;如果...

包管理器:设计与实现

包管理器:设计与实现

bingliaolong C++ 1年前 12 0

背景 管理器用于管理多个任务 接入了管理器的模块,会根据自己要做的事情,来生成不同的任务 而这些任务的生成,是由接入了管理器的模块,通过一些重要的数据(比如目标数据包的编号,以及目标所在的位置,要求管理器执行的任务类型),来让管理器生成的不同的任务,并添加到任务队列中 目前的设计...

Zlib记述:一

Zlib记述:一

bingliaolong C C++ 1年前 15 0

概述 zlib库是一个广泛使用的压缩/解压缩库 下面实现是用了zlib 1.3版本的代码和相关库 具体是使用了zlib源码中带的minizip 其中的minizip扩展提供了处理ZIP文件的功能 解压 在解压之前可能需要处理其他的很多工作,比如验证目录,验证目标文件是否存在等。这...

Spdlog记述:四

Spdlog记述:四

bingliaolong C++ 1年前 9 0

线程池 创建线程池方法一 调用async_factory_impl::create创建线程池 但是这个函数实际作用是用于创建一个记录器 由于需要一个线程池对象参数,所以在创建记录器之前做了个检查,如果还不存在线程池,就先创建线程池,再构造记录器 这里使用递归锁的原因可能是为了使代...

51CTO:C++网络通信引擎架构与实现一

51CTO:C++网络通信引擎架构与实现一

bingliaolong C++ Socket 1年前 10 0

WIN32_LEAN_AND_MEAN 一个预处理宏,用于控制 Windows 头文件中包含哪些内容 具体来说,定义这个宏会减少 Windows 头文件中包含的一些不常用的头文件和 API,从而减小编译时间并减少编译产生的二进制文件的大小 比如在包含 windows.h 之前定义...

51CTO:Linux C++网络编程五

51CTO:Linux C++网络编程五

平台相关 select 支持:windows 支持:linux,macos,bsd,aix等 poll 支持:linux,macos,bsd等 不支持:一些交旧的或特定的unix操作系统可能不支持poll 不支持:windows不提供标准的poll,但可以通过其他相似的api来达...

51CTO:Linux C++网络编程四

51CTO:Linux C++网络编程四

UNIX-LINUX套接字描述符 套接字描述符是一个整数值,用于唯一标识进程中的一个开放的网络连接或者套接字 在UNIX和Linux系统中,套接字描述符是一种特殊类型的文件描述符,可以用于表示打开的文件、管道、设备或者网络连接 套接字描述符唯一标识了进程中的一个网络连接 在创建新...

扫一扫二维码分享