自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 网游帧同步的分析与设计

今年的春节非同寻常,由于新肺炎疫情的蔓延,假期时间比较长,恰好自己也打算利用春节的假期充充电,所以系统的研究和设计了一下帧同步方案,将其作为自己和公司的一个技术储备,本文中如有疏漏和错误,还请各位多多指教。我一直在脑补这样一种游戏类型,开放世界+位面战斗,这是一种状态同步与帧同步结合的游戏玩法,既不失去在大世界中与玩家交互的乐趣,又可以在战斗时达到极致的爽快感,只要没有进入战斗,那么一直是状态...

2020-02-16 23:43:48 721 1

原创 UE4线程池源码分析和线程池的封装

在游戏客户端开发过程中难免有些任务是需要另外开一个线程来执行的,这些任务的特点是会有一些阻塞操作,它的执行不能影响到游戏线程的正常执行。比如一款网络游戏的客户端,那么网络的收发最好是使用单独的线程来处理,又比如在线更新数据的操作,也最好是使用单独的线程来操作才比较合理。我在封装线程池之前想了解下UE4的多线程是怎么实现的,所以最近我看了它的源码,刚开始没有找到一个很好的入口,所以看起来云里雾里

2016-11-25 18:33:48 3148

原创 【千里之行,始于足下】游戏服务端开发--开发语言篇

相信刚入行的同学,或者渴望学习的同学一定加入过几个技术讨论相关的qq群或者经常去逛逛论坛,那么在讨论中你一定参与过哪门语言才是最牛B的之类的这种话题,或者写c的鄙视写面向对象语言的,写c++的鄙视写java的,写java的鄙视写c#的,写c#鄙视写python的,写python的鄙视写php的等等。没错,在做一个项目的时候,对项目中技术选型来说,语言是一个很重要的因素,选择使用哪门语言要跟具体的业

2016-03-02 17:23:12 2704 1

原创 【千里之行,始于足下】游戏服务端开发--前言

按照惯例,首先先介绍下自己吧,我从实习起就一直在游戏公司做服务端方向的开发,至今已经有4年多了,目前在一家上市的游戏公司做服务端的开发工作,包括底层架构和一些核心逻辑的实现,最近一直在想把这四年中的在项目开发中学习到的东西记录一下,并分享出来,所以才有了现在的这个系列,我日后会不定期的更新游戏服务端开发中的经验和遇到的一些典型问题,也欢迎各位同行前来拍砖。之所以主题叫千里之行始于足下,

2016-02-26 23:09:28 545

原创 revel安装报错unrecognized import path "golang.org/x/net/websocket"

由于GFW的原因,无法下载websocket源码,其实该源码在git上也有,只要下载下来,然后再GOPATH中写上相应的路径就可以通过编译,具体步骤如下 :1. clone git上的代码到本地,比如clone到了家目录(~/)git clone https://github.com/golang/net.git2. 在GOPATH中创建相应的目录,比如GOPATH=~

2015-06-05 15:26:04 6101

转载 linux 性能分析工具

Linux平台下面有不少性能分析的工具,每个工具有何优劣却很难找到一个完整的列表,这里做一下记录,以便参考。 1. Intel VTune http://software.intel.com/en-us/intel-vtune-amplifier-xe/大名鼎鼎的分析工具,可以直接启动一个程序来分析,比如$vtuneHome/amplxe-cl  -coll

2015-01-22 15:18:56 477

转载 【转】mysql库中各个参数说明

MYSQL这个结构表示对一个数据库连接的句柄,它被用于几乎所有的MySQL 函数。MYSQL_RES这个结构代表返回行的一个查询的(SELECT , SHOW , DESCRIBE , EXPLAIN )的结果。从查询返回的信息在本章下文称为结果集合 。MYSQL_ROW这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。(如果字段值可能包含二进制数据,你不

2012-11-21 00:01:30 468

转载 socket错误码

EINTR: 4阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。如果recv的返回值为0,那表明连接已经断开,接收操作也应该结束。 ETIME

2012-10-21 22:41:53 791

原创 动态库中组装静态库

静态库其实就是很多个目标文件组成在一起,所以在共享库中连接静态库在理论上就是支持的,但是如果在编译共享库的时候直接把静态库放进去又会报错,让添加-fPIC参数。注意:这个fPIC不仅仅只是这一次加,而是要将编译的所有.O文件都加上这个参数才可以。

2012-10-21 21:38:38 327

原创 C++中使用Json格式作为http的response返回值

整个的流程大体是:client发送http的get请求,并且调用server的一个cgi程序,cgi程序处理完成后需要将返回值以json的格式给client.在c++里有一个用于处理json的库,叫做jsoncpp,可以在网上找到下载。使用的时候也很方便Json::Value json_ret;Json_ret["name"] = Json::Value("shark")Json_

2012-09-03 17:42:06 3514

转载 关于explicit,转帖

按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有

2012-05-25 18:31:06 343

原创 C/C++的一些编程规范(高质量C++编程笔记)

1.逻辑上不相关的代码有空格2.每一行后面加注释3.一行代码只做一件事4.语句块一定要加{},避免代码混乱5.关键字后加空格6.函数名后不加空格7.尽量声明后便定义8.时刻注意分行9.注释要得体,函数上面加上一个函数介绍,输入参数,输出参数,返回值的注释块10.windows命名采用大小写,unix风格是采用下划线11.不要出现以大小写来区分的函数名字,变量

2012-05-25 17:08:10 500

原创 初始化速度的效率比拼

目前据我所知有三种方式可以初始化数组,直接初始化,循环和调用函数.我今天对这三种方式做了运行时间的统计:int i[1000000] = {0};real  0.005suser 0.001ssys  0.004sint i[1000000];memset(i, 0, sizeof(i) / sizeof(int));real 0.003suser 0.0

2012-04-20 00:30:00 402

原创 C++中引用和指针的一些区别

引用是C++里增加的一个特性,其实只需要把它理解成为一个特殊的指针即可,再说白了一点,就是引用实际上放的是内存地址,指针和引用的主要区别有:1.在声明一个引用时,必须对其进行初始化,而指针则没有这个规则,它可以在任何时候初始化,这个比较好理解,在这不多说了.int *a;int &b = a; //编译器会报错//再来看下面这个int a;int *b = &a;int &c

2012-04-13 23:45:52 354

原创 fedora 16的KVM安装步骤(速成)

在fedora上安装kvm需要很多的包,如 kvm qemu virt-manager libvirt可以使用yum安装,这样比较方便 yum install yum install kvm qemu virt-manager libvirt第一次打开的时候可能会提示: Verify that the 'libvirtd' daemon is running这是因为libvirtd

2012-03-28 09:47:10 1741

原创 linux下的C语言共享库和静态库的创建和使用

Linux函数库分类:   1) 静态库    a) 定义       静态库就是一些.o目标文件的集合,以.a结尾。静态库在程序链接的时候使用, 链接器会将程序中使用到函数的代码从库文件中拷贝到可执行文件中。一旦链接完成,在执行程序的时候就不需要静态库了。由于每个使用静态库的应用程序都需要拷贝所用函数的代码,所以生成的可执行文件会比较大。    b) 创建和应用(

2012-03-05 22:43:12 935 1

原创 python中的字典clear方法

最近在学习python,准备搞服务端开发。python的字典中的clear方法,让我有些体会,书中的例子:x = {}y = xx['key'] = 'value'print yx = {}print y两次都能打印出x字典,而如果把x = {}换成x.clear()以后,第二次打印y才是空字典,这说明python里的字典应该是单独占一个内存空间的,x和y都是关联

2012-02-21 14:04:59 1344

原创 unix网络编程的基本步骤

为了便于记忆,今天将网络编程的一些基本理解写下来首先,套接字是通信端点的抽象,它类似与一个底层的描述符,是用来描述网络通信的载体.因为他类似与文件描述符,所以可以用操作文件描述副的一些函数来操作它,比如read,write,fcntl等等,但是lseek不能用于socket..如果CS架构是基于TCP的通信则需要以下几个步骤:服务端: 1.创建soc

2011-11-18 21:44:47 426

原创 写死循环的几种青年

普通青年:for(;;);文艺青年while(1){} 普通文艺青年do{}while(1);二逼文艺青年for(int i = 0; i < 1; i++,i--){i = 0;}

2011-11-11 17:04:57 894

转载 linux文件锁

linux分为共享锁和独占锁(也成为排它锁)可以用fcntl函数来获得和设置文件锁跟锁相关的数据结构struct flock { ... short l_type; /* Type of lock: F_RDLCK, F_WRLCK, F_UNLCK */

2011-11-09 21:16:50 464

apache配置文档

这是一个apache的配置文档,里面详细的介绍了apache的各个配置字段,希望对大家有所帮助

2011-08-10

空空如也

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

TA关注的人

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