自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员小毛驴的博客

好记性不如烂笔头

  • 博客(99)
  • 资源 (1)
  • 收藏
  • 关注

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

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

2017-07-05 16:37:58 1441 1

原创 【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 1795 1

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

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

2017-05-24 17:31:47 1160 1

原创 【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 3845 3

原创 MySql存储引擎

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

2016-08-29 13:00:48 2214

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

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

2016-08-27 16:26:14 10634

原创 游戏开发笔记(三):protobuf避免重复代码newBuilder

最近大家都在忙着功能优化和BUG,而我却比较闲,开发的模块没有什么BUG也没什么需要优化的,便抽些时间来改下正在开发项目中的一些坏代码。

2016-08-24 12:53:16 7639

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

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

2016-08-15 21:04:12 27549 3

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

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

2016-08-13 11:58:51 571

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

今天在跑机器人压测的时候发现服务器日志里出现了不少错误,其中最多的是java.lang.NullPointerException,开发中很常见的空指针问题,不过出现在即将上线的游戏中却显得不太正常

2016-08-10 11:36:11 2772 3

原创 【Google Protobuf】protobuf的使用(二)

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

2016-07-20 15:02:58 3078

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

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

2016-07-20 08:30:38 402

原创 【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 6110 1

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

一、简介   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 1911 1

原创 【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 10750

原创 【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 19171

原创 【Unity Shader】案例之地球云图(二)

一、地球旋转云图   1.1 添加纹理Shader "liulongling/earth" { Properties { _Tex1("地球",2D)="white"{} _Tex2("云图",2D)="gray"{} } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment f

2016-07-10 22:29:39 6711

原创 【Netty4.x】Netty源码分析(三)之LineBasedFrameDecoder

在上一篇:【游戏开发】TCP粘包/拆包问题的解决办法(二)文章中,我们在给ServerHandler之前添加了2个解码器LineBasedFrameDecoder和StringDecoder解决了服务器端粘包问题。今天我们就从源码上来分析LineBasedFrameDecoder。一、LineBasedFrameDecoder 1.1 工作原理LineBas

2016-07-09 15:13:29 2565

原创 【Netty4.x】Netty TCP粘包/拆包问题的解决办法(二)

上一篇:【Netty4.X】Unity客户端与Netty服务器的网络通信(一)一、什么是TCP粘包/拆包 如图所示,假如客户端分别发送两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确定的,故可能存在以下4中情况:第一种情况:Server端分别读取到D1和D2,没有产生粘包和拆包的情况。第二种情况:Server端一次接收到两个数据包,D1和D2粘合在一起,被称为TCP粘包。第三种情

2016-07-07 20:25:21 21490 1

原创 【Netty4.x】Unity客户端与Netty服务器的网络通信(一)

一、我的开发环境eclipse-jee-indigo-SR2-win32-x86_64JDK1.7windows-64netty-all-4.1.1.Final-sources 下载地址:http://netty.io/,从【Downloads】选择下载netty-all-4.1.1.Final-sources。创建一个java工程,选中项目右键Properties->J

2016-07-05 10:41:04 14056 2

原创 【Unity Shaders】学习笔记之通过修改UV坐标实现纹理贴图的滚动(八)

一、简介  纹理贴图可以使我们的着色器更有生命力,而且可以快速地实现非常逼真的效果。然而略显遗憾的是,你需要小心翼翼地控制用于着色器地纹理贴图的数目,因为如果添加的纹理图片过多,会非常影响游戏的性能。于是我们可以通过修改UV坐标实现纹理贴图的滚动,使用这种技术实现如瀑布,河流,熔岩流等效果二、准备工作  创建一个新的着色器文件和一个新的材质。这样,我们就创建一个

2016-07-03 15:27:22 5842

原创 【Unity Shaders】学习笔记之法线贴图(七)

一、简介  法线贴图是凸凹贴图(Bump mapping)的一种常见应用,简单说就是在不增加模型多边形数量的前提下,通过渲染暗部和亮部的不同颜色深度,来为原来的贴图和模型增加视觉细节和真实效果简单原理是在普通的贴图的基础上,再另外提供一张对应原来贴图的,可以表示渲染浓淡的贴图。通过将这张附加的表示表面凸凹的贴图的因素于实际的原贴图进行运算后,可以得到新的细节更加丰富富有立体感的渲染效果

2016-07-01 20:09:03 2942

原创 那些游戏开发牛人的博客和IT学习网站

游戏大牛的博客1.吴云洋(Cloud),网名云风,毕业于中南大学,原网易游戏核心成员、杭州研究中心总监,是网易《大话西游》、《梦幻西游》等游戏的重要开发者。2011年9月5日宣布已从网易辞职。博客地址:http://blog.codingnow.com/2.Milo Yip是香港同胞,现任职于深圳腾讯互动娱乐事业群研发部引擎技术中心。在高一高二时兼职开发游戏《王子传奇》后,便潜心向

2016-06-30 12:38:57 5816

原创 【Unity Shaders】学习笔记之为创建Half Lambert光照模型(六)

一、创建Half Lambert光照模型   Half Lambert(半兰伯特)是由Value公式提出的技术,是一种用于在低光照区域照亮物体的技术。它基于提高了材质和物体表面周围的漫反射光照。  二、如何操作   我们继续使用上一节的代码【Unity Shaders】学习笔记之为创建自定义慢反射光照模型(五),通过以下步骤进行计算:   1.将漫反射计算结果乘以0

2016-06-20 19:54:08 3139

原创 Redis安装

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

2016-06-16 22:47:09 443

原创 【Eclipse Android】Mac下eclipse无法连接手机调试问题

很多Android程序员 用Mac 来开发。但是Mac下eclipse连接 手机存在一些问题。下面就个人经验分享一下。1.确保手机开启了usb调试模式 并且连上了电脑2.设置好你的机器环境配置变量3.在mac终端输入system_profiler SPUSBDataType会显示一些数据 (如:我的是一加android手机) Product ID: 0x9011 Vend

2016-06-15 18:53:01 1492

原创 【Unity Shaders】学习笔记之为创建自定义慢反射光照模型(五)

一、简介  Lambert的光照模型是一个很经典的漫反射模型,光强与入射光的方向和反射点处表面法向夹角的余弦成正比。简单解释就是一个点的反射光强是和该点的法线向量和入射光向量和强度和夹角有关系的,其结果就是这两个向量的点积。光照模型的计算是在surf方法的表面着色之后,根据输入的光照条件,对原来的颜色在这种光照下的表现进行计算,最后输出新的颜色值给渲染单元完成在屏幕的绘制自定义光照模型,需要先

2016-06-15 17:35:00 1924 1

原创 快速排序

算法介绍   快速排序是 C.R.A.Hoare 于 1962 年提出的一种划分交换排序。它采用了一种分治的策 略,通常称其为分治法(Divide-and-ConquerMethod)。基本思想

2016-06-09 20:55:00 234

原创 Shader学习笔记之渲染命令(一)

在渲染前创建一个球体 如图先给球体加上一个漫反射,颜色为红色。需要用到的属性命令一:Diffuse 漫反射计算一个简单的(Lambertian)光照模型。光照强度随着入射光线与表面的夹角减小而减小。光照强度只依赖于这个夹角,而且不会随着相机的移动或者旋转而改变。Shader "liulongling/t1"{ Properties { _MainTex("主纹理"

2016-06-08 15:41:33 322

转载 通过GitHub Pages建立个人站点(详细步骤)

1 Git简介2 为什么使用Github Pages3 创建Github Pages3.1 安装git工具.3.2 两种pages模式3.3 创建步骤3.4 常用命令4 使用Jekyll搭建博客4.1 什么是jekyll4.2 jekyll本地环境搭建4.3 jekyll目录结构4.4 Jekyll-Bootstrap创建博客4.5 Jekyll 写博过程4.6 个性化博客5 使用Markdown5

2016-06-03 22:43:13 354

原创 【Unity Shaders】学习笔记之为表面着色器添加属性(四)

本章主要参考《Unity Shaders and Effects Cookbook》一书,感谢原书作者提供的学习资料   一、为表面着色器添加属性  着色器的属性在渲染管道过程中是很重要的,因为它们是一个接口可以让使用着色器的美工或用户指定纹理和调整着色器的值。属性可以作为GUI元素暴露在材质的Inspector面板上,而不是单独的编辑器,它提供了可视化的方法供你调整着色器。

2016-05-31 22:51:07 2985

原创 【Unity Shaders】学习笔记之表面着色器(三)

一、表面着色器   1.1 简介  表面着色器代码直接在SubShader中编写,不需要使用Pass,编译器会将代码编译到合适的Pass中   1.2 标签  硬件将通过判定标签来决定什么时候调用该着色器  属性RenderType:  值Opaque:在渲染非透明物体时调用  值Transparent:表示渲染含有透明效果的物体时调用  例:Tags

2016-05-31 22:50:10 3531

原创 【Unity Shaders】学习笔记之固定着色器命令(二)

我是小毛驴,一个游戏人,我的梦想是世界和平。转载请注明出处:http://blog.csdn.net/liulongling/article/details/51519006一、准备  在开始着色之前,我们需要创建一个场景(Scene)和球体。   1.1 Diffuse  漫反射计算一个简单的(Lambertian)光照模型。光照强度随着入射光线与表面的夹角减小而

2016-05-27 18:53:09 1749

原创 【Unity Shaders】学习笔记之Shader简介(一)

一、Shader简介  Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,我们便可以将

2016-05-27 18:40:01 2569

原创 快速排序

快速排序是 C.R.A.Hoare 于 1962 年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。一、快速排序  1.1 分治法基本思想  1.先从数列中取出一个数作为基准数(枢轴)。  2.分区过程将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。(升序)  3.再对左右区间重复第二

2016-05-27 16:18:24 1202

原创 希尔排序

算法介绍 希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因 DL.Shell 于1959 年提出而得名。基本思想 先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的) 分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序 (增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基 本有序的情况下(接近最好情况),效率是很高

2016-05-22 22:57:39 1240

原创 插入排序

// // 插入排序// Created by 刘龙玲 on 16/5/14. // Copyright © 2016年 liulongling. All rights reserved. // #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <sys/timeb.h

2016-05-15 23:21:10 1411

原创 设计模式六大原则:接口隔离原则(六)

转载请标注:http://blog.csdn.net/liulongling/article/details/51419236 面向对象其它六大原则 单一职责原则-带你走梦幻西游(一) 依赖倒置原则(二) 开闭原则(三) 迪米特原则-带你走进梦幻西游(四) 里氏替换原则(五) 定义 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 通俗来讲不

2016-05-15 21:31:51 6003

原创 设计模式六大原则:里氏替换原则(五)

转载请标明:http://blog.csdn.net/liulongling/article/details/51383159 面向对象其它六大原则 单一职责原则-带你走梦幻西游(一) 依赖倒置原则(二) 开闭原则(三) 迪米特原则-带你走进梦幻西游(四) 接口隔离原则(六)里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的OOPSLA大会上发表

2016-05-12 12:42:28 4868

转载 游戏中学会撸代码:这些编程学习网站不容错过

下面这些网站是从200多个游戏编程网站选出的12个网站,你可以通过下面的网站在游戏中学习编程。CodinGame  在玩这款游戏时会遇到许多有趣的问题,支持诸多编程语言。Code CombatCode Combat主要是面向在校学生的一个学习平台,同时也是一个社区项目,有很多志愿者来维护这个平台,在这里可以学到

2016-05-07 21:09:33 824

android仿超级课程表课程界面

csdn文章:http://blog.csdn.net/liulongling/article/details/50127819

2016-01-29

空空如也

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

TA关注的人

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