自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

原创 无缝大世界

前言无缝大地图只是外在表现,其实都是有缝隙的,现在的电脑性能还不足以加载一张非常大的地图,比如80公里,甚至几百,几千公里这么大的地图,电脑做不到,手机就更加不用说了这类大地图,在客服端都是分区域进行加载,也就是会进行切割,比如像绝地求生这样的游戏,大概80公里左右大的地图,会被切割成100 *100 个格子,大概每个格子800米左右,每个格子会打上索引标记,当客服端在进行移动的时候就会根据视野,一般都是九宫格区域,然后根据视野新旧对地图块进行预加载和删除。在绝地求生跳伞阶段,其实是整张地图进行加载

2022-04-04 17:06:37 874

原创 AOI -单点比如国战聚集问题解决方案

首先假设我们有一片大区域,在这片区域内的对象都可能产生交互.因此这片区域形成一块统一的AOI管理区域.进入这片区域的对象都要受到管理.可以将这片区域分布到N个进程上.所有受管理的对象在这N个进程中都存在副本.这些副本对象被分成两类:master对象或ghost对象.master对象只能存在于一个进程中,其它进程中必然是ghost对象.游戏对象发生位置变更时,将变更同步给所有的AOI对象.对于ghost对象只是简单的更新当前位置.只有master对象才会有进一步的处理.AOI服务以固定的频率处理mast

2021-08-18 18:04:40 332

原创 微服务帧同步方案

2021-08-10 11:40:13 210

原创 自己整理的c#语法和特性知识(c#1.0 -c#10)

C#语法概述一、C#1.0 51.0.1 类(Classes) 51.0.2 结构体(Structs) 51.0.3 类vs结构体 61.0.4 类与结构的选择 61.0.5 枚举类型(Enum) 61.0.6 接口(Interfaces) 61.0.7 事件(Events) 71.0.8 属性(Properties) 71.0.9 抽象属性(Abstract Properties) 71.0.10 委托(Delegate) 71.0.11 委托的多播(Multic

2021-07-26 11:55:29 552

原创 protobuf 下载编译,拷贝,proto文件生成c# c++代码

下载并编译protobuf源码echo off & color 0Aset "WORK_DIR=%cd%"echo %WORK_DIR% rem 这里可以替换版本号set "PROTOBUF_VESION=v3.12.4"echo %PROTOBUF_VESION%set "PROTOBUF_PATH=protobuf_%PROTOBUF_VESION%"echo %PROTOBUF_PATH%git clone -b %PROTOBUF_VESION% git://gi

2021-07-21 13:03:57 903

原创 C环形buff

图解释结构体typedef struct byteQueue_s{ char* pBuffer;//数据 size_t nCapacity;//容量 size_t nReadIndex;//读指针索引 size_t nWriteIndex;//写指针索引} byteQueue_tt;初始 结构体假设要申请的空间 环形buff结构体大小为8nWriteIndex 写指针索引nReadIndex 读指针索引环形buff初始化void byteQueue_init(byteQu

2021-06-21 17:57:51 648 2

原创 bat 文件用 windows terminal启动方法

game.bat@echo offif not defined bflag set bflag=1 && start wt --title "game" %0 && exitcd /d %~dp0set CURRENT_DIR=%cd%set SERVER_BIN_PATH=%CURRENT_DIR%\..pushd %SERVER_BIN_PATH%\binserverHolder.exe res\lua\server\game\start-up.lua

2021-06-15 21:18:50 3750 3

原创 游戏方面NTP时间同步相关知识

示意图protobuff包定义message SceneClocksyncRequest{ int64 originate_timestamp = 1;客户端发送请求的时间T1}message SceneClocksyncRet{ int64 originate_timestamp = 1;客户端发送请求的时间 T1 int64 receive_timestamp = 2;服务器接收请求的时间 T2 int64 scene_timestamp

2021-06-08 19:36:57 370

原创 角色登陆流程

2021-05-28 10:55:45 244

原创 四叉树lod结合灯塔AOI

灯塔相关结构体1:灯塔区域结构struct towerSpace_s{ void (*callback)(void*pUserData,bool bAddTo,uint64_t watcher, uint64_t marker); -- 回调函数 void* pUserData; //用户信息 float fMin[2]; //最小位置 float fGridLength[3];//网格x y,z方向长度 float fMovefRange;//移动范围 int32_t

2021-05-25 18:02:18 2246 5

原创 网络同步技术

基于ARQ(自动重传请求)原理超时自动重传时候有三种实现方式等待式在A重传M1的时候需要B确认之后A在发送M2的包,如果这种情况会造成信道的浪费(通道过于空旷),所以我们会有进一步的优化,于是就有了后退N步方式后退N步式M3丢包了,这个时候就会启动对M3的超时重传,A在重传M3的时候又会把M4M5重传一次,这样会造成一个问题,造成对网络信道的一种浪费(通道过于拥挤),为了对这中浪费我们需要进一步的优化,于是就有了选择重传选择重发这个时候我们可以把M4,M5缓存起来,这个

2021-05-24 14:54:38 269

原创 CAS怎么保证原子性的

2021-05-10 15:25:45 536

原创 linux 内核时间轮

2021-04-28 18:55:16 136

原创 机器人进入场景流程图

2021-04-27 16:03:55 399

原创 微服务器网络层流程图

2021-04-27 16:02:38 142

原创 lua热更新方案总结

1:clearcache2:inject3:玩家长连接gate 后台新启动进程或者微服务加载新脚本,然后玩家断开旧微服务或者进程,重新连接新微服务或者进程4:内存数据存入redis,进行数据分离以后,只需要重新加载5:进行打补丁方式热更数据6:永久驻留的 数据 + 动态更新的代码(一个进程 保存 全局数据 其他工作进程 读取全局数据)...

2021-04-19 11:56:40 184

原创 智能指针注意事项

1:一个裸得指针不要使用两个shared_ptr unique_ptr2:用weak_ptr打破循环引用3:当需要在类得内部接口中,需要将this作为智能指针使用,需要用该类派生自enable_shared_from_this4:使用share_ptr作为函数接口时候,最好用 const share_ptr5:share_ptr weak_ptr和裸指针比,会大很多,效率有问题,特别在多线程下6:enable_shared_from_this 和析构函数一样,在析构函数构造函数最好别用7:某些时

2021-03-17 23:41:15 497

原创 开始立项时候的一些帧同步的总结

一 帧同步注意事项1:float问题主要是和平台iee754 和iee854平台不同,还有运算精度问题,建议使用定点数来解决这个问题2:多线程问题主要是每个客服端多线程算出结果可能会不一致,比如A客服端用了3个线程来算你 这个数据,b客服端用1个线程来算你这个数据导致最后A和B的结果不一致,除非你 能保证最后结果一致,要不最好别用3:注意容器的排序不确定性,Coroutine内写逻辑带来的不确定性4:vector 浮点数问题5:物理碰撞问题6:随机数问...

2021-03-16 15:11:49 477

原创 抓取霹雳轻小说爬虫代码

今天花了一天写的一个爬虫小程序# -*- coding: utf-8 -*-# @Time : 2020/5/9 19:03# @Author : 贺林森# @FileName: 抓取霹雳轻小说# @Software: PyCharm# @Email : 505384662@qq.comimport requestsimport reimport osheaders = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel M

2020-11-03 23:46:31 728 2

原创 通讯协议包定义

2020-05-22 11:56:34 173

原创 内存函数地址const属性操作浅谈

同一类的不同对象,在调用相同的成员函数时,他们的入口地址是否相同?什么样的机制来保证他们同时调用的时候不冲突,并且输出是各自的结果的?...

2020-04-26 21:21:09 207

原创 stl多线程问题总结

1:stl多线程下可以同时读同一个容器数据2:stl 多线程下不可以写同一个容器,需要保证顺序3:stl多线程下可以写不同容器4:stl多线程下不可以读写同一个容器,需要加读写锁5:stl多线程下可以同时读定长的数据,不可以同时读取不定长的数据6:stl多线程下要考虑的是别的线程会不会对当时的数据造成污染[不管是在读还是在写],如果有就有问题...

2020-04-26 14:25:35 462

原创 移动构造函数形象解释

std::movestd::move() 并不會真正的移動對象真正移動对象的是移动构造函数,移动复制函数等的完成std::move()只是将参数转换成右值罢了(可以理解为进行了static_cast操作)这块代码会被移动吗std::stting str = "test";string && r = std::move(str);std::string t(r);...

2020-04-25 21:20:05 362

原创 位置同步策略

此思路参考的云风写的开发笔记流程如下:进入地图时做一次客户端和服务端的对时,以服务端为准,计算时间差,以后每隔一段时间(1分钟)对时一次。客户端每隔一段时间(1秒),将当前运动状态(位置、速度、加速度)和时间戳T1同步到服务端。服务端接到客户端同步后,立即推送给地图中的所有人的客户端。以下对于接收方是自己和其他人,两种情况分别讨论:对于其他人,根据T1时刻的运动状态和当前本地时...

2020-04-22 23:48:02 379

原创 客服端先进行判断服务器进行验证技能流程

2020-04-22 23:33:48 220

原创 内存对齐

为什么要内存对齐?硬件平台限制,内存以字节为单位,不同硬件平台不一定支持任何内存地址的存取,一般可能以双字节、4字节等为单位存取内存,为了保证处理器正确存取数据,需要进行内存对齐。提高CPU内存访问速度,一般处理器的内存存取粒度都是N的整数倍,假如访问N大小的数据,没有进行内存对齐,有可能就需要两次访问才可以读取出数据,而进行内存对齐可以一次性把数据全部读取出来,提高效率。内存对齐规则...

2020-04-21 21:19:51 99

原创 New[]和delete []为哈要匹配

New一个数组的时候他得地址大小是k*n+4的大小 k是几个 n是大小 4个字节是为了存储数组长度这样在删除的时候可以知道要析构delete []多少次析构函数释放多少内存New和delete[]结合int main(int argc, char *argv[]) {inner *p = new inner[2];delete p;return 0;这块很容易崩溃因为我们使用了del...

2020-04-21 21:08:04 148

原创 Gdb调试

Gdb调试命令gdb filename:run开始、quit结束gdb attach pid:程序已经运行后,可使用attach跟踪进程,attach目标进程后,调试器会暂停下来,需要continue才继续,停止调试后使用detach命令分离调试器,quit结束gdb filename corename:默认不开启core,需要设置core文件大小,使用ulimit -a可查看core文件...

2020-04-21 20:51:14 576

原创 一些网络编程笔记

常用的linux用于查问题命令ifcoinfgncnetstartisofcpdumptelnet常见的网络问题1.bind函数地址问题不绑定端口设置为0,然后用getsockname去获取端口,可以避免自己指定的端口被别人使用而自己不能用bind客服端也可以使用,用来指定自己使用的端口号 不是服务器专用2.异步的connect函数connect不是客服端专用 是...

2020-04-18 22:46:07 136

原创 tcp timewait closewait 过多情况

TIMEWAIT作用为实现TCP全双工连接的可靠释放[最后一个ACK丢失了,被动关闭一方会重发它的FIN,主动关闭一方必须维持一个有效状态信息(TIMEWAIT状态下维持),以便能够重发ACK,否则被动一方会认为有错误产生]保证在下一个人使用的IP地址与端口与先前的完全相同的情况下,上一个残留的数据包,不会被下一个人接收到(time_wait持续等待时间为2msl,确保数据丢失成功)。T...

2020-04-17 23:23:35 287

原创 并发多进程服务器和多线程服务器总结

多进程服务器和多线程服务器区别多进程的服务器就好比是 立体的交通系统(立交桥)虽然说建造的时候花费比较大,消耗的资源比较多,但是真要是跑起来不会交通堵塞。但是汽车在上面跑,相互通信就是个很费事儿问题(进程间通信比较麻烦);多线程就好比是平面的交通系统,造价低,但是很容易交通堵塞, 但是也有好处同步的时候方便。在网络服务器方面单进程 < 多进程(单线程)< 多进程(多线程)...

2020-04-17 00:15:46 746

原创 c++内存泄漏方面的知识

在使用内存时候记得进行null判断 如果指针 p 是函数的参数,那么在函数的入口 处用 assert(p!=NULL)进行检查。 如果是malloc和new申请的内存记得进行(p!=null)或者(p==null)判断

2020-04-16 12:31:54 282

原创 linux 命令整理

标题在gcc支持c++11版本上安装protobuf2.4.1敲入这个命令./configure -disable-shard CFLAGS="-fPIC" CXXFLAGS="-fPIC -std=c++98-D_GLIBCXX_USE_CXX11_ABI=0"

2020-03-31 18:45:34 221

原创 网络七层协议

有不足之处欢迎指正,指导

2020-03-31 00:04:41 166

原创 算法整理

怎么记住那些是稳定还是不稳定排序考研好痛苦,情绪不稳定,快(快速排序)些(希尔排序)选(选择排序)一堆(堆排序)朋友来聊天吧,我这样记的,其余的都是稳定排序...

2020-03-26 21:10:19 141

原创 同步,异步,堵塞,非堵塞

阻塞,非阻塞是从调用者角度来讲的,调用后是否可以去干其他工作。同步,异步是从被调用者来讲,调用结束后是否主动返回结果。 他们是2可以22组合共4种阻塞同步,阻塞异步,非阻塞同步,非阻塞异步。...

2020-03-26 12:54:55 110

原创 图论整理

克鲁斯卡尔算法不断找权值最小得边,然后判断是否形成环路,形成了就找次权值边,一直到结束为止

2020-03-24 08:07:35 84

原创 二叉树整理

为什么二叉树n0节点比n2节点多1因为二叉树所有结点滴个数都不大于2,所以结点总数(1)n=n0+n1+n2又因为度为1和度为2的结点分别有1个子树和2个子树,所以,二叉树中子树结点就有(2) n(子)=n1+2n2二叉树中只有根节点不是子树结点,所以二叉树结点总数n(总)=n(子)+1 即 n(总)=n1+2n2+1结合(1)式和(2)式就得n0=n2+1...

2020-03-17 09:25:42 558

原创 Mysql索引介绍及常见索引

前言mysql索引是什么有哪些索引,如果随便找一个人都会说出几点出来,但是,索引的原理和目的是什么,建立索引需要注意什么?当时设计者是遇到什么困难要创建这些索引?这些索引在磁盘上是怎么是怎么io操作的,怎么预读的?索引的底层数据结构是啥?…我想估计很多人在面对面试官咄咄逼人的问题是不是直冒冷汗!!为了吊打面试官,让我们一起来一步一步的来慢慢深入了解下去吧~~磁盘的io操作和预读...

2020-03-16 23:25:57 147

原创 游戏框架

此架构呢适用于ARPG类型游戏,便于分布式部署,当然其他类型也可以根据实际情况增删查改各游戏进程用途说明账号平台和数据统计和运维管理Web服全局游戏用微服务API服务器【可横向水平扩展全局功能API服务器-golang开发】大区内平台公用服务器大区平台内公用进程列表【目前为了简化采用1平台:1游戏配置】:单服内游戏核心进程服务器全球数据同服游戏逻辑进程服务器...

2020-03-16 23:01:42 830

自己整理的c#语法和特性知识(c#1.0 -c#10)

这个里面是自己幸幸苦苦整理的从c#1.0-c#10的语法特性,还有新增的知识等等,绝对值得下载

2021-07-26

云风pbc 库 示例

这个是我看了云风github上 pbc库,然后自己摘除来的关键数据,和写的例子

2020-05-15

空空如也

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

TA关注的人

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