自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ocfbnj的博客

万丈高楼平地起

  • 博客(11)
  • 收藏
  • 关注

原创 C++函数的调用约定

C++函数的调用约定文章目录C++函数的调用约定引入常见的调用约定__cdecl__stdcall__fastcall参考引入调用约定允许你指定被调函数和调用者之间传递参数和返回值的方式。不同的调用约定区别主要在于:参数和返回值放置的位置。参数传递的顺序。调用前设置和调用后清理的工作,在调用者和被调用者之间如何分配。并非所有约定都在所有支持的平台上可用,某些约定使用平台特定的实现。这篇文章描述的是x86平台。在 x86 平台上,所有参数在传递时都将加宽到 32 位。 返回值也将加宽到 3

2020-10-28 14:34:23 704

原创 TCP连接的建立和中止

TCP连接的建立和中止文章目录TCP连接的建立和中止TCP连接的建立TCP连接的中止TCP状态转换图观察分组TIME_WAIT状态参考理解TCP连接的建立和中止,有助于我们理解connect、accept和close这3个函数。TCP连接的建立服务器准备好接受外来的连接。这通常通过调用socket、bind和listen这3个函数来完成,我们称之为被动打开(passive open)。客户通过connect发起主动打开(active open)。这导致TCP客户发送一个SYN分节,它告诉服务器客

2020-10-26 12:55:46 566

原创 Linux系统引导过程

Linux系统引导过程理解引导过程可以帮助你解决引导系统时遇到的问题。引导过程涉及一些文件,这些文件中的错误通常造成了引导问题。引导过程和配置是不同的,这取决于你的硬件是使用UEFI固件还是传统的BIOS去处理系统引导。该文章描述的操作系统为Oracle Linux 8。UEFI引导在一个基于UEFI的系统中,系统引导过程按如下顺序执行:系统的UEFI固件执行开机自检(POST),然后定位和初始化外围设备,包括硬盘。UEFI查找一个带有特定的全局唯一标识符(GUID)的GPT分区,标识符

2020-10-22 22:51:28 291

原创 C++代码布局

C++代码布局问题一致的布局是很有用的,C++对代码的布局没有严格要求,这导致了许多C++代码都有不一样的布局风格,阅读起来很不方便。在我们周围存在许多不同风格的代码布局,人们赞同或反对它。实际的项目可能包含了许多不同来源的代码,因此,统一代码的布局通常是不可能的。但是,在你不知道使用或不被要求使用某种布局时,使用一种统一的布局是明智的做法。我们可以通过IDE或一些工具来格式化我们的代码,例如Visual Studio IDE和clang-format工具。C++核心指南(C++之父参与编写)提供

2020-10-09 14:16:19 417

原创 C++线程池

C++线程池文章目录C++线程池介绍使用C++实现线程池1. 查看系统支持的最大线程数量2. 线程池的方法和数据结构3. 线程池的构造函数4. 无限循环的函数5. 线程池的析构函数6. start函数测试参考资料C++线程池的简单实现。完整代码:https://github.com/ocfBNj/ThreadPool介绍线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免

2020-10-07 17:14:24 784 1

原创 使用CocosCreator开发的FC坦克大战

游戏预览:https://tank.ocfbnj.cnApp下载:https://app.ocfbnj.cnGitHub仓库:https://github.com/ocfBNj/CocosCreatorTank除了道具和双人游戏没有完成,其他功能基本与原版游戏相同。因为Cocos Creator是跨平台的游戏开发工具,因此该游戏可以运行在Web、IOS、Android、Windows、Mac以及各个小游戏平台。下面是一些运行截图:...

2020-10-05 16:10:06 1357 2

原创 稀疏表

文章目录稀疏表构造稀疏表查询范围最小值洛谷P3865 ST表稀疏表学习稀疏表:https://www.youtube.com/watch?v=c5O7E_PDO4U稀疏表(Sparse Table),也叫ST表,用来解决范围最值查询(Range Minimum Query)问题。假设有一个数组,我们需要对该数组执行如下操作(以下全部假设数组下标从0开始):求一个区间[low,high][low,high][low,high]内的最大值不同的解决方法所花的时间不同:解决方法预处理时

2020-10-05 15:00:06 981

原创 使用VS Code进行Qt开发

使用VS Code进行Qt开发Qt Creator界面不美观,而VS Code更漂亮一些。因为Qt5支持使用CMake进行构建,而VS Code也可以支持CMake构建系统,因此是完全可以的。测试环境Qt 5.15.0CMake 3.17.5Visual Studio 2019 16.7.5(使用C++的桌面开发)Visual Studio Code 1.49.3步骤1. 将Qt的bin目录添加到环境变量假设Qt安装在C:\Qt,那么将C:\Qt\5.15.0\msvc2019_64

2020-10-04 19:47:05 71171 43

原创 线段树

文章目录线段树构造线段树使用普通方式求范围和懒惰传播(lazy propagation)使用懒惰传播的方式更新范围值使用懒惰传播的方式求范围和洛谷P3372 线段树1线段树学习线段树(segment tree):https://www.youtube.com/watch?v=ZBHKZF5w4YU学习线段树的懒惰传播(lazy propagation):https://www.youtube.com/watch?v=xuoQdt5pHj0首先简单介绍一下什么是线段树,以及为什么要使用线段树。假设有

2020-10-04 13:10:50 309

原创 洛谷P3368 树状数组2

文章目录洛谷P3368 树状数组2题目链接树状数组差分数组解决洛谷P3368 树状数组2题目链接https://www.luogu.com.cn/problem/P3368树状数组学习树状数组:https://www.youtube.com/watch?v=v_wj_mOAlig首先简单介绍一下树状数组,以及为什么要使用树状数组。假设有一个数组,我们需要对该数组执行如下操作(以下全部假设数组下标从1开始):求前i项的和。将第i项元素加上某个给定的值。如果使用普通的数组,执行第一个操作

2020-10-03 20:15:14 353

翻译 C++20 协程(1):协程理论

这是C++ Coroutines TS系列文章的第一篇,Coroutines是一种新的语言特性,目前已经纳入C++20语言标准。

2020-10-01 16:38:09 2482

空空如也

空空如也

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

TA关注的人

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