- 博客(10)
- 收藏
- 关注
原创 进程和线程
银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。安全的状态指的是一个进程序列{P1,P2,…Pn},对于每一个进程Pi,它以后尚需要的资源不大于当前资源剩余量和其余进程所占有的资源量之和。,在各自占有一定资源的情况下,希望获得其他进程占有的资源以推进执行,但是其他资源同样也期待获得另外进程的资源,大家。程序 > 进程 > 线程。,进程无法推进的情况。
2025-06-05 20:34:55
270
原创 设计模式——单例模式
才初始化的特性,并且由于C++11标准解决了局部静态变量的线程安全问题,使得它成为当前最简洁也最高效的实现方式。一个自行创建的实例对象,并由单例类提供获取这个唯一实例的接口。C++11标准之后的最佳的选择是Meyers’ Singleton(属于。),它利用了局部静态变量在。单例模式保证保证全局只有。
2025-06-05 20:24:04
125
原创 STL各类容器的底层实现、数据结构
补充:平衡二叉树(AVL)和红黑树的区别:AVL 树是高度平衡的,频繁的插入和删除,会引起频繁的rebalance(旋转操作),导致效率下降;红黑树不是高度平衡的,算是一种折中,插入最多两次旋转,删除最多三次旋转。当数据量很大的时候用快排,划分区段比较小的时候用插入排序,当划分有导致最坏情况的倾向的时候使用堆排序。会创建一个局部临时对象,并将其压入容器中(可能调用拷贝构造函数或移动构造函数)函数使用传递来的参数直接在容器管理的内存空间中构造元素(只调用了构造函数);
2025-06-05 20:20:28
651
原创 C++关键字
二者都会做类型安全检查,只是static_cast在编译期进行类型检查,dynamic_cast在运行期进行类型检查。后者需要父类具备虚函数,而前者不需要。
2025-06-05 19:55:20
111
原创 C++内存管理
若不进行对齐,要取出两块地址中的数据,进行掩码和移位等操作,写入目标寄存器内存,效率很低。若不进行对齐,要取出两块地址中的数据,进行掩码和移位等操作,写入目标寄存器内存,效率很低。堆是C和操作系统的术语,自由存储区是C++的术语,指的是通过new和delete动态分配和释放对象的抽象概念;声明数据结构时,字节对齐的数据依次声明,然后小成员组合在一起,能省去一些浪费的空间,不要把小成员参杂声明在字节对齐的数据之间。,前者是C语言中的库函数,后者是C++语言的运算符,对于自定义对象,
2025-06-05 19:35:00
336
原创 游戏客户端-网络
帧同步则是把计算的逻辑放在本地,当数据发生改变的时候,主机向服务器发送数据,服务器转发数据给别的主机,数据得以同步。这样的同步逻辑适合对同步要求不那么高的游戏,比如MOBA类和FPS类游戏,开发难度较小,同时难以防止作弊(MOBA开全图迷雾的作弊)。状态同步是把所有看到的数据逻辑都放在服务器上处理,客户端负责展示服务器的计算结果,这样的逻辑很适合对同步要求很高的MMO游戏,同时也不容易作弊。主要是基于TCP网络协议开发。当进行网络游戏的时候,他们看到的东西得以同步,是因为每个玩家的主机之间有数据进行同步。
2025-06-03 10:37:57
104
原创 解决UE5 Video Memory Has Been Exhausted的问题
有帖子解释说将项目RHI改成DX11就可以解决,但是现在只有DX12才能使用Nanite,所以又去找了别的解决方法。左上角 -> 编辑 -> 项目设置 -> 目标硬件, 将“Target Hardware” 第二项改成可缩放。点击 “设置”, 找到 “引擎磕延展性设置”, 选择一个合适的值即可。选中地图中需要设置的场景。这里我选中的是LandScape。然后重新启动,进入项目。
2025-05-10 22:56:58
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人