- 博客(37)
- 收藏
- 关注
转载 cocos2d-x手游性能优化总结
近段时间在使用cocos2d-x开发2D手游,技术方案使用的是cocos2d-x+lua,因为游戏使用的是cocos2d-x 2.1.5版本,有些优化方案在最新版的cocos2d-x版本已经实现了。这篇文章主要是总结在使用cocos2d-x2.x版本+lua技术方案时遇到的问题和一些性能优化总结。1. 渲染优化(1). 合并渲染-自动批处理因为我使用的cocos2d-x2.
2015-10-30 11:43:55
10961
原创 位运算 游戏开发中的应用
大部分刚刚进入到游戏行业里的程序员,你问他什么叫位运算,他都懂,但实际中往往却不记得去使用它。任何一个整数都可以用二进度的方式来表示的,不同类型的整数它的位数的长度也不一样,INT8或者char是由8个2进度位表示,INT16或者short是由16个2进度位表示,INT32是由32位状态位表示。
2014-08-28 17:05:23
2069
原创 C++ 类型转换
在C语言里用到的类型转换方式,一般都是用强制类型转换,语法:(类型说明符)(表达式),例如: (float)a 把a转换为实型,(int)(x+y) 把x+y的结果转换为整型。C语言这种赋值时的类型转换形式可能会使人感到不精密和不严格,因为不管表达式的值怎样,系统都自动将其转为赋值运算符左部变量的类型。
2014-08-27 10:03:32
1855
1
原创 Flash AS游戏引擎原理
其实一提到游戏引擎,很多初学者,会显得有一种畏惧感,会觉得这是一个非常高深的东西。曾经页游行业很乱,就像现在的手游一样,各种非计算机专业出生的同学,经过一个短暂的培训就开始了程序员之旅。
2014-08-22 13:36:58
4244
原创 游戏行业创业分析
目前游戏主要分为三大类,传统的客户端游戏(端游),网页游戏(页游),手机游戏(手游)。端游由于技术成本以及开发周期,自然不在考然范围,估计大部分游戏行业的创业者也是这样想的,主攻页游或者手游。那在这里,我也先恭喜那一小部分敢想敢做的,去做端游的同行们,祝你们成功,你们是有想法的人。
2014-08-22 10:52:29
3903
转载 如何成为一个C++高级程序员
C++这门语言从诞生到今天已经经历了将近30个年头。不可否认,它的学习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。现在C++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器。 现在学习java、C#等语言的人数远远高于C++,主
2014-08-21 15:21:44
731
转载 Redis学习手册(事务)
一、概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石。相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出Redis中事务的实现特征: 1). 在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,R
2014-05-11 10:29:14
658
转载 关于SIGPIPE信号
我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两
2014-04-12 13:57:21
837
转载 函数的线程安全与可重入
线程安全的(Thread-Safe):如果一个函数在同一时刻可以被多个线程安全地调用,就称该函数是线程安全的。线程安全函数解决多个线程调用函数时访问共享资源的冲突问题。可重入(Reentrant):函数可以由多于一个线程并发使用,而不必担心数据错误。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入性解决函数运行结果的确定性和可重复性。可重入函数编写规范为:1、不在函
2014-04-05 17:44:24
606
转载 TCP/UDP Socket编程步骤
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);WINDOWS环境下TCP/UDP编程步骤:1. 基于TCP的socket编程是采用的流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib的库文件。服务器端编程的步骤:1:加载套接字库,创建套接字(WSA
2014-04-05 15:40:48
3988
转载 Lua在Linux下的安装
本来这个很简单,但常常会偶尔会有问题,也记不住,所以就直接转下来,以后方便遇到的时候解决安装进入官方站点(http://www.lua.org/download.html )下载最新的安装包。当前是 Lua 5.2.0wget -c http://www.lua.org/ftp/lua-5.2.0.tar.gz 解压: tar zxvf lua-
2014-03-13 21:23:13
20553
转载 Redis C客户端Hiredis的安装
Hiredis安装步骤:tar zxvf antirez-hiredis-v0.10.1-0-g3cc6a7f.zipcd antirez-hiredis-3cc6a7fmakemkdir /usr/lib/hirediscp libhiredis.so /usr/lib/hiredis #将动态连接库libhiredis.so至/usr/lib/hiredismk
2014-03-08 14:15:20
4425
原创 Epoll 连接无响应或响应时间过长
Epoll有两种模式,LT模式 与 ET模式。默认情况下是LT模式,由于ET模式在高并发,高流量的情况下,处理效率会高于ET模式,所以也就采用了ET模式。服务器一直运行良好,跑几千机器人也没有什么问题。但突然之间发现,机器人在反复掉线上线的测试后,会出现一种情况:服务器端会再也收不到客户端的连接事件,或者这个连接事件响应会非常慢,而已连接成功的fd读写数据是没有任何问题的。我不知道是不是只
2014-03-05 15:01:00
4927
2
原创 deepcopy引起的LUA内存泄露的问题
网络游戏项目中,LUA引起的内存泄露的一次事故。 在用lua的时候,某种情况下,很多同学都喜欢把对象拿来深度拷贝,虽然我是不太喜欢这么干,但项目组开发的同学比较多,也难免别人不会这么干。 当一个table里存在交叉引用的时候,用deepcopy就会出现严重的内存泄露,实际证明,deepcopy并不会因为有交叉引用的存在而进入一个死循环,而是成功返回了一个拷贝对象,但拷贝的数据量非常
2014-03-05 13:26:35
4222
转载 谈谈Memcached与Redis
1. Memcached简介Memcached是以LiveJurnal旗下Danga Interactive公司的Bard Fitzpatric为首开发的高性能分布式内存缓存服务器。其本质上就是一个内存key-value数据库,但是不支持数据的持久化,服务器关闭之后数据全部丢失。Memcached使用C语言开发,在大多数像Linux、BSD和Solaris等POSIX系统上,只要安装了libe
2014-03-03 19:52:49
1286
转载 VS2012下boost 配置与使用
1.去www.boost.org下载最新的boost,我下载了boost_1_55_0.7z2.(我放在D:/cpp目录下)解压到当前文件夹3.打开VS2012->VS TOOLS->VS命令提示4.在DOS窗口下输入命令 CD D:/cpp/boost_1_55_05.输入bootstrap,便生成bjam.exe文件在你的D:/CPP目录下。
2014-03-03 17:18:48
8491
转载 Linux下高并发socket最大连接数所受的各种限制
1、修改用户进程可打开文件数限制在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit
2014-03-03 14:41:16
917
原创 分享比较全面的NoSQL,Redis的学习资源库
Redis的学习资源大部分可以在以下网址找到http://www.it168.com/redian/redis/index.html下面简单的介绍一下Redis在Linux下的安装由于没有第三方的包依赖关系,Redis的安装十分简单: $ wget http://redis.googlecode.com/files/redis-2.2.11
2014-03-03 14:39:28
687
转载 MongoDB入门简介
有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大多由笔者翻译自官网,请翻译或理解错误之处请指证。之后笔者会继续关注MongoDB,并翻译“Developer Zone”和“Admin Zone”的相关内容,敬请期待下期内容。 MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点
2014-03-03 14:18:49
537
转载 Valgrind 使用简单说明
本文部分参考网上相关资料。Valgrind能做什么? •内存使用检测,包括: –内存泄漏 –非法内存访问 –未初始化变量使用 –重复释放内存 •多线程竞争 –检测死锁 -检测竞争Valgrind还能做什么? •性能分析 –Cachegrind+ cg_annotate 它模拟 CPU中的一
2014-02-19 14:22:44
673
转载 消息队列RabbitMQ入门介绍
(一)基本概念RabbitMQ是流行的开源消息队列系统,用erlang语言开发。我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不过它也只有几个关键概念,这里简单介绍。RabbitMQ的结构图如下:几个概念说明:Broker:简单来说就是消息队列服务器实体。
2014-02-19 14:13:47
578
原创 简单直接Linux下开启Core功能
1. 查看Core是否开启命令:ulimit -c如果返回 0 则证明没有开启 2. 开启Core命令:ulimit -c size;size 可以写整数,比如1024,或者 unlimited 无限度。 3. /proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,生
2013-11-04 18:26:05
1505
转载 源码编译安装 MySQL5.1.68
http://880314.blog.51cto.com/4008847/1246544 源码编译安装 MySQL 5.5.300、安装cmake[root@lyq314 ~]# tar -zxvf cmake-2.8.11.2.tar.gz [root@lyq314 cmake-2.8.11.2]# ./configure [root@lyq314 cmake-2.8
2013-07-26 11:23:03
691
转载 Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
文章作者:张宴 本文版本:v6.3 最后修改:2010.07.26 转载请注明原文链接:http://blog.s135.com/nginx_php_v6/ 前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第6篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一,为推动 Nginx 在国内的发展产生了积极的作用。本
2013-05-29 10:36:26
1699
原创 最快速的Android开发环境搭建ADT-Bundle及Hello World
ADT-Bundle for Windows 是由Google Android官方提供的集成式IDE,已经包含了Eclipse,你无需再去下载Eclipse,并且里面已集成了插件,它解决了大部分新手通过eclipse来配置Android开发环境的复杂问题。有了ADT-Bundle,新涉足安卓开发的同学也无需再像以前那样在网上参考繁琐的配置教程,可以轻松一步到位进行Android应用开发。第
2013-05-25 23:42:00
178443
16
转载 AndroidManifest.xml文件解析
一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent
2012-10-05 10:47:40
2658
转载 自旋锁
何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在
2012-10-05 10:31:04
679
转载 C++ 中 volatile 变量.
下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量 更多内容去百度百科了解.http://baike.baidu.com/view/608706.htm
2012-07-03 15:22:59
519
转载 Apache遇到的问题:APR not found
#./configure --prefix……检查编辑环境时出现:checking for APR... noconfigure: error: APR not found . Please read the documentation.可以用./configure –help | grep apr 查看帮助。--with-included-apr Use bundled
2012-05-29 16:10:17
1555
转载 八款开源 Android 游戏引擎 (巨好的资源)
初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情。事实上,这种想法完全是没有必要且
2012-02-29 09:55:21
567
转载 zeromq的主要特点.
zeromq的特点1.将所有io处理由一些io线程完成。2.线程间通过传送对象指针,将本该由应用线程完成的io操作,交给io线程完成。 几种模式PUB and SUB类似于观察模式,一旦有消息要发送,PUB会发送所有SUB。如果PUB发送消息时,SUB还没有启动,那么SUB会漏掉该消息。PUSH and PULL一个1-to-n队列的实现,PUSH将数据放入队列,PUL
2012-02-21 16:17:26
2067
转载 zeromq安装手册
1.下载 posix版:http://download.zeromq.org/zeromq-2.1.7.tar.gz win版:http://download.zeromq.org/zeromq-2.1.7.zip 2.安装 tar -zxvf zeromq-2.1.7.tar.gz cd zeromq-2.1.7 ls ./configure --pre
2012-02-20 12:15:20
1068
转载 ZeroMQ 消息内核
总在寻找一种高效的消息传递方式中不断徘徊,最近发现了它,它的性能让人眼前一亮。ZeroMQ熟悉分布式消息总线的朋友,可以不假思索地脱口而出Kafka,ActiveMQ,***MQ等,但是,ZeroMQ的设计另辟了新天地。它的特性:1)ZeroMQ位于(TCP/IP协议层次结构)会话层和应用层之间。ZeroMQ 并不是一个对 socket 的封装,不能用它去实现已有的网络协议。2)无
2012-02-20 12:05:43
1355
转载 用命令建立的外键实例
create database zhouhuigouse zhouhuigocreate table customer ( customerID int primary key, customerName varchar(50) not null, address varchar(100) null, linkMan char(20) nul
2012-02-09 17:37:31
1019
转载 Win32命令行应用,+ReadConsoleInput()得到键盘VK_CODE
BOOL ReadConsoleInput( HANDLE hConsoleInput, //输入句柄 PINPUT_RECORD lpBuffer, //指向INPUT_RECORD结构体(数组)的指针 DWORD nLength, //上面那个结构体的大小
2011-10-13 13:50:59
8059
2
转载 cin、cin.get()、cin.getline()、getline()、gets()等
几个C++的输入函数,总是分不清,总结一下! 1、cin 1、cin.get() 2、cin.getline() 3、getline() 4、gets() 5、getchar() 1、cin>> 用法1:最基本,也
2011-10-13 12:57:41
611
转载 C/C++ 堆和栈的区别[转载]
一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结
2011-04-01 17:16:00
862
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人