2021年1月13日概述 Redis中的List是一个有序(按加入的时序排序)的数据结构,一般有序我们会采用数组或者是双向链表,其中双向链表由于有前后指针实际上会很浪费内存。3.2版本之前采用两种数据结构作为底层实现: 压缩……
阅读全文
2021年1月12日环境 vscode- gcc5.4 ubuntu16.04 或者 ubuntu18.04 make 下载6.2版本. 我使用的是国内github镜像地址:github.com.cnpmjs.org,速度比较快。 $ git clone https://github.com.cnpmjs.org/redis/redis.git redis $ git checkout -b 6.2 remotes/origin/6.2 vscode不参与编译,只充当可视化的调试工具。 使用……
阅读全文
2021年1月12日缘由 使用VScode的时候,断点看到指针显示的是一串地址,而不是指针指向的对象的值。上网找了一圈,没看到vscode有对应的插件来解决这个问题。vscode有对应的语法来解决这个问题。 网上几乎都在说在……
阅读全文
2021年1月11日缘由 现在有个应用场景,我们要在go中获取C结构体数组中的值。在C语言中,对于结构体数组,我们可以利用指针的偏移量来获取我们想要的值的位置。在go中我们怎么使用C指针和偏移量进行运算呢?下面的文字中C指……
阅读全文
2021年1月6日SDS头文件及作用 sds.h: sds声明- sdsalloc.h: 为sds分配内存 源码文件sds.h中有这样一行代码 typedef char *sds; 很清晰、明了,sds其实就是char*。 最新的6.2分支的代码: struct __attribute__ ((__packed__)) sdshdr5 {<!-- --> unsigned char flags; /* 3 lsb of……
阅读全文
2021年1月5日缘由 最近在看redis的源码,刚开始看sds,看到这块代码 struct __attribute__ ((__packed__)) sdshdr5 { unsigned char flags; /* 3 lsb of type, and 5 msb of string length */ char buf[]; }; 好奇为什么使用 char buf[],而不用char *buf,找到答案记录一下。 struct中的char*……
阅读全文
2021年1月2日游戏场景服务器概况 指令对应的处理handle的文件:SSBattleMgr.cpp 创建战场 指令: eMsgToSSFromCS_CreateBattle GC服务器发往SS fromCS 收到中心服务器CS创建站场的指令,在函数INT32 CSSBattleMgr::OnMsgFromCS_CreateBattle(const char* pData, int n32DataLengt……
阅读全文
2020年12月30日ccnet从单线程演变为多线程 ccnet现状: epoll linux平台 事件循环 单线程 reactor 监听和新连接的事件都在主线程中 单线程的ccnet ccnet的单线程的角色: EventLoop: 整个事件循环。 EPollPoller: 负责事件的收集。 Channel……
阅读全文
2020年12月29日概述 自己做的一个golang项目需要优化,优化方向是减少gpu内存的使用。同一个模型被重复加载多次,使用更多的gpu内存,也增加 sync.Mutex的使用。 优化的方向是: 减少代码量的改动- 减少gpu内……
阅读全文
2020年12月28日概述 在网络上看到很多关于阻塞IO、非阻塞IO、同步IO、异步IO的例子,总觉得写的过于复杂并且让人难以理解。于是我把我自己把这几个概念的理解写下来以供参考。 POSIX POSIX(可移植操作系统接口)把同步IO……
阅读全文