9 会编程的小毛驴

尚未进行身份认证

我要认证

从2011年底就从事游戏开发至今,开发过SLG、ARPG、MMORPG、FPS游戏。擅长Java游戏服务器、Unity3D客户端和android客户端,同时也是一名独立游戏开发者,平时自己做一些游戏。

等级
TA的排名 1w+

【Netty4.X】Netty源码分析之ByteBuf(七)

ByteBuf是一个缓冲区,用于和NIO通道进行交互。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。每当你需要传输数据时,它必须包含一个缓冲区。虽然Java NIO 为我们提供了原生的多种缓冲区实现,但是使用起来相当复杂并且没有经过优化,有着以下缺点:1、不能进行动态的增长或者收缩。如果写入的数据大于

2017-07-05 16:37:58

【Netty4.X】Netty源码分析之NioEventLoop(六)

继承关系: NioEventLoop初始化NioEventLoop(NioEventLoopGroup parent, ThreadFactory threadFactory, SelectorProvider selectorProvider) { super(parent, threadFactory, false); if (selectorProvider == null

2017-06-16 15:48:17

【Netty4.X】Netty源码分析之NioEventLoopGroup(五)

NioEventLoopGroup实际是NioEventLoop的线程组,主要负责管理EventLoop的生命周期,EventLoop的默认大小是2倍的CPU核数,但这并不是一个恒定的最佳数量,为了避免线程上下文切换,只要能满足要求,这个值其实越小越好。继承关系如下: 首先看NioEventLoopGroup构造方法:public NioEventLoopGroup() { this(0

2017-05-24 17:31:47

开发笔记(二):查找数据丢失问题

今天在跑机器人压测的时候发现服务器日志里出现了不少错误,其中最多的是java.lang.NullPointerException,开发中很常见的空指针问题,不过出现在即将上线的游戏中却显得不太正常。每一个NullPointerException都表示玩家有可能丢失了某条数据。想想一个月前开发性格装备系统时也遇到过类似问题,玩家的装备栏数据丢失导致装备没能显示出来。经过查询发现造成这个问题的原因是因为

2017-04-06 15:27:08

开发笔记(一):protobuf避免重复代码newBuilder

最近大家都在忙着改BUG,而我却比较闲,开发的模块没有什么BUG,决定抽些时间改下正在开发项目中的一些坏代码。 //坏代码 SC_ResponseMsgProto.Builder responseMsgBuilder = SC_ResponseMsgProto.newBuilder();//重复一 DataMsgProto.Builder dataMsgBuilder = Da

2017-02-20 16:20:47

阿里巴巴Java开发手册

1.不要嫌名字长无论是方法,变量,还是函数的取名,不要嫌弃名称太长,只要能够表示清楚含义就可以了。 2.String[] args而不是String args[],中括号是数组类型的一部分,数组定义如下:String[] args;在《Thinking in Java》这边书里面,是这么解释的: 大部分开发人员,习惯前一种写法。 前一种写法符合我们的口语化,我们口语通常都说:定义一个字符

2017-01-17 12:03:22

Java游戏服务器之一元夺宝活动设计(一)

目前市场上一元夺宝活动有很多,但规则基本都一样。今天主要说说我目前正在参与开发的游戏《元气战姬学院》服务器是如何设计一元夺宝活动的,规则与网易的一元夺宝基本相同,唯一不同的是我们的开奖不一定要达到满人次,即只要在规定时间内达到我们自己设置的上限就可以开奖,如果开奖失败,则返还玩家消耗的游戏币。先说说规则:  1页面显示的人次数据所有玩家共享,即服务器要保证不会出现购买次数超出上限  2活动定开奖或

2016-12-12 15:55:35

【Netty4.X】Unity与Netty使用protoBuf(四)

客户端与服务器端之间传输的数据格式有很多种如Json、XML、thrift、Protobuf等等。protobuf来自谷歌,它的特点是数据小、编解码性能高、支持多种语言,它序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一。更加详细请阅读下面2篇文章:【Google Protobuf】windows下protobuf的环境搭建(一)【Google Protob

2016-09-03 19:50:29

【深入浅出Mysql】MySql存储引擎之MyISAM(二)

一、MyISAM   1.1 数据存储  MyISAM是默认的MySQL插件式存储引擎。它不支持事务和外键。优势:访问速度快,基本上以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表。每个MyISAM在磁盘上存储称3个文件,其文件名和表名相同,扩展名不同,分别是:.frm(存储表自定义).MYD(MYDATA,存储数据).MYI(MYIndex,存储索引)  MyISAM的数据

2016-08-29 13:00:48

【深入浅出Mysql】MySql存储引擎(一)

一、 MySQL存储引擎   1.1 有哪些存储引擎  MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎。1事务安全表引擎BDB(BerkeleyDB)、InnoDB2非事务安全表引擎MyISAM、MERGE、MEMORY(HEAP)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。   1.2 如何选择最适合你的存储引擎呢?MyISAM:默认的M

2016-08-28 20:44:03

Java游戏服务器端面试题整理(转载)

一、选择题1、既希望较快的查找又便于线性表动态变化的查找方法是?A:顺序查找 B:折半查找 C:索引顺序查找 D:哈希法查找ans:C详细解释:查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。用关键字标识一个数据元素,查找时根据给定的某个值,在表中确定一个关键字的值等于给定值的记录或数据元素。在计算机中进行查找的方法是根据表中的记录的组

2016-08-27 16:26:14

【Redis教程】Redis 简介、安装与配置(一)

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。一、简介   1.1 Redis 特点   Redis

2016-08-24 12:53:16

【游戏后端】游戏服务器端开发的一些建议(转载)

摘要: 本文作为游戏服务器端开发的基本大纲,是游戏实践开发中的总结。第一部分专业基础,用于指导招聘和实习考核, 第二部分游戏入门,讲述游戏服务器端开发的基本要点,第三部分服务端架构,介绍架构设计中的一些基本原则。希望能帮到大家一 专业基础1.1 网络1.1.1 理解TCP/IP协议网络传输模型滑动窗口技术建立连接的三次握手与断开连接的四次握手连接建立与断开过程中的各种状态T

2016-08-15 21:04:12

【Unity NGUI】学习笔记(一):英雄选择,皮肤更换

一、准备工作  所需图片资源,包括英雄预制件,人物头像,服装,武器图集和人物动画1.创建图集,选择NGUI->Open->Atlas Maker,设置图集名称heroAtlas后,选中Textures下的所有图片,点击Create2.将四个英雄的预制件拖入到Scene中并重新命名为hero0~hero33.创建NGUI panel,分别是英雄列表,英雄招式,英雄装备

2016-08-13 11:58:51

【Google Protobuf】protobuf的使用(二)

一、使用   1.1 限定修饰符required: 表示是一个必须字段,发送之前没有设置required字段或者无法识别required字段都会引发编解码异常,导致消息被丢弃。Optional:表示是一个可选字段,可选对于发送方,在发送消息时,可以有选择性的设置或者不设置该字段的值。对于接收方,如果能够识别可选字段就进行相应的处理,如果无法识别,则忽略该字段,消息中的其它字段正常处理。Repeat

2016-07-20 15:02:58

【Java并发编程】深入分析AtomicInteger(二)

什么是线程安全性 如果一个类可以安全地被多个线程使用,它就是线程安全的。你无法对此论述提出任何争议,但也无法从中得到更多有意义的帮助。那么我们如何辨别线程安全与非线程安全的类?我们甚至又该如何理解“安全”呢? 任何一个合理的“线程安全性”定义,其关键在于“正确性”的概念。在<>书中作者是这样定义的:一个类是是线程安全的,是指在被多个线程访问时,类可以持续进行正确的行为。 提示...

2016-07-20 08:30:38

【Google Protobuf】windows下protobuf的环境搭建(一)

一、Protobuf介绍   Protobuf是由谷歌开源而来,在谷歌内部久经考验。它将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关的方法和属性。特点如下:结构化数据存储格式(XML,JSON等)高效的编解码性能语言无关、平台无关、扩展性好官方支持Jaca、C++、Python三种语言   1.1序列化数据对比   1.2 bytes

2016-07-14 16:40:22

【设计模式】单例模式(一)

一、简介   1.1 定义  Ensure a class has only one instance, and provide a global point of access to it.  确保某个类只有一个实例,并提供一个全局访问点。   1.2 UML类图Singleton是单例类。实现单例模式的几个关键点:1、构造函数(Singleton())不对外开放,一般为private。2、通过

2016-07-14 12:57:45

【Apache Thrift】Thrift的使用和编译(二)

一、Thrift的使用   1.1基本类型  thrift不支持无符号类型,因为很多编程语言不存在无符号类型,比如javabyte: 有符号字节i16: 16位有符号整数i32: 32位有符号整数i64: 64位有符号整数double: 64位浮点数string: 字符串   1.2容器类型  集合中的元素可以是除了service之外的任何类型,包括exception。list: 一系列由T类型的

2016-07-12 20:07:24

【Apache Thrift】windows下thrift的安装(一)

概述  Thrift最初由Facebook开发的,后来提交给了Apache基金会将Thrift作为一个开源项目。当时facebook开发使用它是为了解决系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性,所以Thrift是支持跨语言,比如C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Ja

2016-07-12 15:17:57

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!