
c/c++
文章平均质量分 73
Kuro同学
这个作者很懒,什么都没留下…
展开
-
事件监听模型于游戏业务中的实践
背景 随着版本的开发迭代,游戏开发者难免会面对一些业务扩展维护方面的难题。 由于游戏业务具体开发周期短,需求灵活多变,开发量多,模块间逻辑关联度大,容易出bug等特点,开发者往往很难同时兼顾开发效率和代码质量。而导致代码往糟糕趋势发展的原因,其中很重要的一点是,各系统模块间存在网状的调用关系,代码极易产生大量耦合,牵一发而动全身。这时候,如果项目中缺少一些统一的业...原创 2020-01-17 10:10:34 · 1117 阅读 · 0 评论 -
分布式游戏服务器全服匹配玩法设计
背景 如今的社交类游戏,大多采用分布式服务器架构,也就是说所有区服的数据存储在一个集群中,玩家可以无阻碍交互,一同游玩。再谈游戏中的匹配,多数匹配玩法都属于在线匹配,属于非常实时的一种匹配,匹配节点会根据玩家的操作(开始匹配,报名, 匹配完成等) 动态插入删除。这也就保证了匹配池的节点数量会维持在可控的范围内。而如果游戏中有海量的小团体, 要求每隔一定周期为全服所有团体分配一个实...原创 2019-06-22 20:55:08 · 6234 阅读 · 2 评论 -
C++实现轻量级的关键词查找系统
多数游戏中,都会提供关键词查找的功能,即通过输入一个子串,最终返回所有包含该子串的记录;具体的应用场景包括:陌生人查找, 公会查找,消息记录查找等等。对于这类需求,查找的数据范围往往会很广,如果是采用遍历字符串匹配的方式查询,时间开销会非常大。而如果存储方面使用的是类似于mysql这种支持like子句模糊搜索的数据库,实现起来简单,但具体的计算压力也全都交给了DB。那么项目中如果没...原创 2018-12-31 20:35:33 · 3348 阅读 · 0 评论 -
c语言实现c++继承模型
要用c语言实现c++继承模型,首先需要回顾一些关于类,继承相关的理论知识:1. class的本质仍是struct, 在内存中class依旧可以看作变量的集合,每个对象有独立的成员变量,所有对象共享类中的成员函数, 类中的成员函数位于代码段中。2. 运行时的对象退化为结构体的形式 ,访问权限关键字在运行时失效, 访问权限控制是编译期的限制。3. 调用成员函数时对象地址作为参数隐式传递 (函数编程=》...原创 2018-05-01 21:14:38 · 1156 阅读 · 0 评论 -
C++使用protobuffer的一些坑
服务器用protobuffer (之后简称pb)做协议包体使用了两个月, 确实体验到了很多方便的地方(接口代码易写易维护, 内部编码高效,传输快等)但不可否认的是C++在使用它的时候存在一些很难发现的坑。c++ pb包体序列化/反序列化的方法有三种,分别是(从输入流, 文件流, 和string)中序列化对于网络传输的话, 用到只可能是string序列化/反序列化也就是在正常网络编程中用到的接口函原创 2017-03-22 17:55:43 · 7667 阅读 · 2 评论 -
vector迭代器失效解决方法 及 内存原理
迭代器失效vector是个连续内存存储的容器,如果vector容器的中间某个元素被删除或从中间插入一个元素, 有可能导致内存空间不够用而重新分配一块大的内存。这个动作将导致先前获取的迭代器,,第一层和第二层均失效。造成失效的两个函数:原创 2016-09-20 17:11:16 · 6589 阅读 · 1 评论 -
c++11多线程 生产者-消费者模型/条件变量condition_variable
在工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。在生产者与消费者之间在加个缓冲区,我们形象的称之为仓库,生产者负责往仓库了进商品,而消费者负责从仓库里拿商品,这就构成了生产者消费者模式。结构图如下:下例中我们通过队列来模原创 2016-07-20 21:18:48 · 6305 阅读 · 0 评论 -
数组指针和指针数组 原理 及 异同
#includeint main(){ char c[][4] = {"123","456","789"}; //数组指针 (二维数组) char (*p)[4]; //数组指针 p=c; //一个指针 指向一个 至多有4个字符 的 字符串数组 该数组保存在栈区 //该字符原创 2016-07-18 17:40:21 · 843 阅读 · 0 评论 -
指针遍历二维数组的三种方式
#includevoid func1(int p[][3], int row, int col){ //第一种遍历方式 传递 二维数组名(行指针) //通过下标遍历 简单明了 for(int i=0; i<row; ++i){ for(int j=0; j<col; ++j) printf("%4d", p[i][j] );原创 2016-07-18 16:47:03 · 7824 阅读 · 1 评论 -
vs2012 最常用快捷键
1.代码补全强迫智能感知:Ctrl+J; (补全函数名 变量名)强迫智能感知显示参数信息:Ctrl-Shift-空格; (补全参数名)2.注释注释选定块:Ctrl+K,Ctrl+C取消注释块:Ctrl+K,Ctrl+U原创 2016-06-07 12:43:55 · 599 阅读 · 0 评论 -
c++primer(第五版) 第十五章 面向对象程序设计习题答案
纯原创 转载请注明出处:http://blog.youkuaiyun.com/axuan_k略过书上有现成代码的题目15.1 15.215.1虚成员是基类中的概念基类中的某些函数希望它的派生类能够重新定义自己的版本则基类中这样的函数被称为虚函数(虚成员)15.2private的成员:只有本类的对象或友元函数或友元类的对象能调用它protected的成员:除上述之外,原创 2016-04-14 11:56:34 · 1453 阅读 · 0 评论 -
c++primer(第五版) 第十三章 拷贝控制习题答案
纯原创 转载请注明出处:http://blog.youkuaiyun.com/axuan_k13.2 13.3 13.4 13.5#includeusing namespace std;class Point{ int a;};Point global; //13.4Point foo_bar(Point arg) //1原创 2016-03-29 12:04:59 · 4088 阅读 · 2 评论 -
c++primer(第五版) 第十四章 重载运算与类型转换习题答案
14.1---14.4#include#include#include#include"Sales_data.h"using namespace std;int main(){// 14.1 重载版本与内置版本拥有相同的运算符优先级和结合律的时候 --相原创 2016-04-06 21:04:56 · 1471 阅读 · 0 评论 -
c++primer(第五版) 第十二章 动态内存习题答案
纯原创 转载请注明出处:http://blog.youkuaiyun.com/axuan_k12.1 12.2 12.3 12.4 12.5#include#include#include#include#includeusing namespace std;class StrBlob{public: typedef vector::size_ty原创 2016-03-11 17:13:15 · 2033 阅读 · 0 评论 -
c++primer(第五版) 第十一章 关联容器习题答案
纯原创 转载请注明出处:http://blog.youkuaiyun.com/axuan_k11.1 11.2 11.4#include#include#includeusing namespace std;int main(){// 11.1// vector是一个顺序容器,该容器每个对象通过下标访问// map是一个关联容器,原创 2016-03-07 12:57:37 · 2059 阅读 · 0 评论 -
c++primer(第五版) 第十章 泛型算法习题答案
第五版第九章以后的参考答案在网上很难找,于是就决定自己认真写一份,当做练习吧.10.1, 10.2#include #include #include #include #include using namespace std;int main(){ vectorv{1,2,3,4,5,6,7,8,9};原创 2016-03-05 12:41:41 · 1235 阅读 · 2 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a = 100;int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using namespace std;class CExample {private: in转载 2015-07-12 11:42:46 · 517 阅读 · 0 评论