- 博客(23)
- 收藏
- 关注
原创 进程、线程知识积累
线程 1、线程首先明白一点,新开一个线程开始执行是很慢的,主线程也就是生成线程者可能已经执行很多指令了新线程才开始执行,那是因为新线程开启要分配资源,占用一部分时间。例如for循环生成大量线程,可能主线程for循环都已经执行完了开启的第一个线程还没有开始执行,所以传参的时候一定要注意不要把循环变量作为参数传进去,因为循环变量早已变了,一般将多个参数打包放在一个节点中统一传进去,使用结点数
2016-05-23 22:24:13
411
原创 send() 、 rev()、write()、read()笔记
1、TCP模式的send()数据发送原理: 假如socket的文件描述符被设置为阻塞方式,但是发送缓冲区没有足够空间容纳这个send所指示的应用层buffer的全部数据,那么能拷贝多少就拷贝多少,然后进程挂起,等到TCP对端的接收缓冲区有空余空间时,通过滑动窗口协议(ACK包的又一个作用----打开窗口)通知TCP本端:“亲,我已经做好准备,您现在可以继续向我发送X个字节的数据了”,然
2016-05-19 09:50:33
1054
原创 云计算相关概念储备
Hypervisor:hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统。(未完待续)
2016-04-27 19:53:00
771
原创 同步与异步、阻塞与非阻塞
同步与异步 阻塞与非阻塞 同步和异步仅仅是关注的消息如何通知的机制,而阻塞与非阻塞关注的是等待消息通知时的状态。也就是说,同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者,所以在异步机制中,处理消息者和触发机制之间就需要一个连接的桥梁:在银行的例子中,这个桥梁就是小纸条上面的号码。在小明的例子中,这个桥梁就是
2016-04-25 14:57:54
312
原创 map元素的插入方式
map采用的是键值对的方式存储;元素插入方式有四种:分别是: [" "] = value;模式; make_pair(" " , value);模式 make_pair(" " , value)模式; map::value_type(" " , value);模式;举例所示:#in
2016-04-21 17:56:05
5591
原创 虚函数列表
在游戏中,很多时候我们要求不同的对象做相同的工作,例如CCLabelTTF和CCLabelTTFColor都继承自CCLabelProtocol,CCLabelProtocol就是一个接口类,只有setString()和getString()两个纯虚函数,派生类CCLabelTTF和CCLabelTTFColor对他们进行复写之后都可以完成自己的功能,当父类的指针指向子类时就可以调用子类的同名函数
2016-04-21 16:54:27
661
原创 客户端Crash一般原因小结
客户端Crash一般原因小结 客户端Crash的原因是很多的,也是开发中最不希望发生的问题,那我先总结一下我遇到Crash的情况以及解决办法。 1、最常见的问题是野指针的问题。 野指针是指当内存已经释放之后又去调用原来指向该内存的指针,这时由于内存已经释放掉了,所以再次访问时就会发生Crash。 解决的办法:
2016-04-21 16:53:49
3064
原创 简单Python脚本实现数据导出Excel格式的尝试
实习期间,服务器的一位师兄让我帮忙整理一下服务器的log数据,最终我用Python实现了数据的提取并将其用Excel格式导出。下面是我Python实现的源码,可以自动遍历某一文件目录下的所有文本文件,并将总的数据导出到Excel文件中,导出为Excel格式这样就比较方便统计了。 //实现将目录下所有文件格式为.txt的文件进行遍历统计,如果是别的格式直接将下面的.txt改为你所需要的
2016-04-21 16:53:21
4248
原创 Demo打包尝试以及初略步骤
对于刚开始尝试做游戏的同学来说,自己的demo打包可能会遇到很多奇葩的问题,我在刚开始打包的时候也遇到了很多坑,这里把打包过程全部叙述一遍,希望对大家能有一些帮助。(cocos2d-x版本为3.2) -工具安装 工具主要需要NDK \ SDK \ ANT,资源可以在客户端的环境与工具中找到下载。(尽量安装在一个文件路径下,这样比较好管理) -环境
2016-04-21 16:52:47
616
原创 客户端服务器消息收发过程与排错步骤
客户端与服务器收发消息及问题查找排除的一些方法一、 客户端与服务器收发消息的流程 准备工作: 订协议:即客户端与服务器先商定好所要用的OP_CODE和数据结构。 明确数据收发以及使用的规则。(这一点一定要双方完全明确,也是写这篇wiki的原因,正是因为没有完全设计好使用规则所以改bug时遇到很大的麻烦。)
2016-04-21 16:52:16
2595
原创 Cocos Studio images文件与CSB的路径相对关系
Cocos Studio 新版本CSB文件与图片路径的相对关系 版本使用的是最新的Cocos Studio 2.3.1。相对于完全使用代码搭界面调坐标的繁琐,Cocos Studio 在搭建界面方面有很大的优势,所见即所得,这给我们搭建界面带来了很大的方便。 首先我们先看一下cocos studio 和cocos2d-x所需的工程目录结构 Cocos
2016-04-21 16:46:20
1322
原创 中文乱码的问题
关于cocos2d-x中文乱码的问题cocos2d-x中文显示乱码的问题大家都遇到过,网上的方法有很多,这里给大家整理两种简单实用的方法。常用的解决方法多半是将编码格式改为UTF-8,但是在我的几次试验中出现了有的时候可以,有的时候不行的情况,具体原因上不是很清楚,但是从网上大家反映的情况来看这种方法的确是不可靠的。现在给大家整理两种经过验证之后有效的方法:1、键值对的方法
2016-04-21 16:45:38
406
原创 Cocos2d-x坐标系理解
Cocos2d-x坐标系初解:首先我们先了解一下Cocos2d-x世界中的几种坐标类型: 屏幕坐标系:原点在左上角,X轴向右,Y轴向下。 GL坐标系:原点在左下角,X轴向右,Y轴向上。 世界坐标系:指相对于整个屏幕的坐标系,480*320为例,(0,0)就是屏幕的左下角,(320,480)就是屏幕
2016-04-21 16:45:12
631
原创 Cocos2d-x内存管理
Cocos2d-x内存管理浅解1、首先我们知道内存管理分为c++自身管理机制以及Cocos2d-x内存管理机制。在c++中,内存分为堆区、栈区、静态存储区(全局存储区)、常量存储区、自由存储区。 主要先说一下堆区和栈区。堆区主要由new和malloc分配,new与delete,malloc与free成对出现,保证内存的分配与回收。堆内存分配地址是逐渐增大的,这一点
2016-04-21 16:44:37
1133
原创 PC_Lint在source insight中的集成与配置
pc_lint可以帮助source insight进行代码的静态检查:1、首先,下载pc_lint 这个在百度上直接搜索就可以了(安装的时候按照默认目录直接安装在C盘就可以了,这样方便一些,过程见http://www.docin.com/p-399952053.html);2、配置完pc_lint后在source insight中添加pc_lint插件,方法: 从“Op
2016-04-21 16:36:40
4547
原创 vmware 虚拟机网络配置
vmware 虚拟机网络配置:1、主机无线网: 直接在网络配置中选择桥接模式,使用无线网上网连接。2、主机有线网: 在网络配置中选择NAT模式,默认主机的IP地址。注意:如果还不能上网,则在VMware的编辑-》网络虚拟编辑中选择Vmware8模式,下面的选择管理员模式并 重置网络配置!!
2016-04-21 16:36:07
388
原创 将某目录文件打成tar包
要点:1、char tarName[100] = {0}; sprintf(tarName , "tar -cvf data.tar %s" , tarPath);// 把某个路径(tarPath)做成一个名为 data.tar 的归档包 //其中sprintf()的作用是将后面的路径做成一个字符串2、system(tarName);
2016-04-21 16:35:21
1708
原创 Linux 常用命令
Linux 常用命令 (时刻更新中):1、Ctr + C 可以返回原目录进行再次命令输入 (这个很实用,避免了每次都需要重开终端!)2、ls (这个就不说了,查看该目录下的项目)3、make clean 清除编译结果 make 再次编译
2016-04-21 16:34:31
292
原创 数组和指针的区别(a和&a以及&a[0]的区别)
一、一维数组*这里记住数组的首地址和数组首元素的地址是不一样的,虽然他们的值是一样的,但是代表的意思不一样;*数组 int a[5];* a是数组的共五个整形数据的内存的名字,是一块连续的地址的名字;* a代表首元素的地址同&a[0]是一样的;所以a+1代表的是第二个元素的地址* &a则是整个内存空间的地址,所以&a+1代表的是数组之后的另一块数
2016-04-21 16:32:06
806
原创 C++ 类的“三法则”
三法则:定义其中一个成员函数,那么程序员必须连其他二个成员函数也一同编写至类内,亦即下列三个成员函数缺一不可。 析构函数(Destructor) 复制构造函数(copy constructor) 复制赋值运算符(copy assignment operator) 理解点:用到自己写析构的话一般
2016-04-21 16:31:40
1515
原创 构造函数不能为虚函数
初步理解:1、虚函数是动态绑定,与多态相关,所以需要知道对象的类型,如果没有构造出对象怎么知道对象的类型,怎么执行虚函数;2、虚函数实现多态,最后只执行一个函数,而构造函数需要执行从基类到子类的各个构造函数,如果是虚函数,则只能执行一个构造函数,显然是有问题的,也是不能实现的。(后续待补充)
2016-04-21 16:30:42
323
原创 C++ 基础杂项
1、String 类: String是一个类,不同于C语言中的一个字符数组,他初始化的时候只有固定的大小,并没有为字符串分配内存空间,所以需要等到初始化字符之后才会为其分配内存,所以Sting大小只包含了对象的大小没有计算字符串的大小。 EG: string strtemp = "1234567";cout
2016-04-21 16:29:52
343
原创 Vector迭代器的使用
要点:1、Vector迭代器使用erase删除元素之后迭代器指向删除元素的下一个;当删除元素是最后一个时,指向end();2、find()函数实现从某个范围内寻找某元素,find函数头文件是 #include vector::iterator itertemp = find(vec.begin(), vec.end() , 5); //在vec中寻找值为
2016-04-21 16:09:04
1665
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人