- 博客(219)
- 资源 (10)
- 收藏
- 关注
原创 Python 文件数据批量录入数据库(MongoDB)
引言:我写博客的习惯基本上都是: 使用 Typora 或者 haroopad 这样支持 Markdown 语法的实时可视化编辑器先编写好,然后再发布到 CSDN 或者我自己的 hexo 博客地址上。不在在线编辑器上编写的原因是可以博客本地备份而且内容不容易丢失。所以,此时假设我们写完了一篇博客,即有一个 .md 的文件,要如何将其自动录入到数据库中?多个 .md 文件如何一次录入?
2017-09-16 15:01:23 4560
原创 《Unity 3D游戏客户端基础框架》tolua 框架接入
引言:如何将 tolua 框架接入 Unity 项目中,这里假设我们已经有一个项目,并且已经实现了一些基础架构或者项目已经是完整的,此时,如何将 tolua 这个热更新框架接入进来而不影响原项目的结构?tolua 引入:1.资源下载:既然要将 tolua 引入项目,第一步肯定是先到 tolua 的 github 资源库 中下载 tolua 的资源包:tolua-master.zip2.资源引入:将
2017-09-03 10:57:54 20634 5
原创 Lua 5.3 源码解读(一) VS 2015 编译源码
引言:用 lua 来编写功能的时间很长,但对于 lua 的底层原理其实知之甚少,只知道它是开源的,用 C 语言写的。今天趁着手头任务不紧,想着还是花点时间读读源码吧,总得调点恶心自己的事情干干知道自己的极限在哪里
2017-08-30 20:56:30 9292 9
原创 Python 编写自动化工具
引言:在开发过程中,我们经常需要编写一些自动化的工具,例如:Windows 下的 BATCH (批处理)Linux 下的 Shell 等但是假如我们要做跨平台的开发,根据每个平台去开发一套功能相同的自动化脚本显然不是最好的选择,选择跨平台通用的脚本是更好的选择,Python 就是常用来编写自动化工具的跨平台脚本语言。Python 环境安装:1.资源下载:直接到 Python 官网 下载安装包
2017-08-29 00:41:44 47347 14
原创 ToLua 协程中调用 WWW
引言:在游戏中假如需要下载网络资源,一般都是借助 Unity.WWW 工具类来完成,接下来我们分别说一下 C# 和 tolua 下实现的过程。C# 下的实现在 C# 中的做法通常如下:启动一个协程来执行下载任务,创建一个 WWW 对象;在一个死循环中查询下载任务是否完成;下载完成则跳出循环体,从上面创建的 WWW 对象的 bytes 属性中取出下载到的数据。
2017-08-26 12:24:27 1494
原创 protobuf lua 版注意点
引言:在 Unity 中接入 tolua 热更框架之后,假如我们使用 protobuf 来定制协议,那么也需要引入 lua 的版本,这里我记录一下我踩过的一些坑点。repeated 类型:假设我们定义了一个请求包和回包的结构如下://玩家信息数据结构message PlayerInfo{ required string Name = 1; required int32 Id = 2
2017-08-24 10:39:21 4132 2
原创 Android Studio 安装和 Android 项目创建
简述:在 Android Studio 推出之前,Eclipse 一直是 Android 开发者不可或缺的集成开发工具,但由于对非 Android 类开发的支持使得 Eclipse 整体架构日渐庞大,在开发过程中容易出现启动缓慢,操作卡顿的不良体验。2013年5月16日,在I/O大会上,谷歌推出新的Android开发环境——Android Studio,近年来逐渐取代 Eclipse 在 Andro
2017-08-17 12:13:42 920
原创 CentOS 下安装和使用 Docker
引言:在服务器开发过程中,环境部署无疑是及其繁琐的事情,特别是当项目数量和规模达到一定级别之后,在一台新的机器上部署项目环境无疑是极其漫长而痛苦的,那么什么办法能够实现我们的目标:在开发环境的一次配置编译,就可以批量部署到生产环境。 这就需要用到我们接下来要说到的这个引擎了 —— Docker简介:Docker 是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者
2017-08-08 20:10:55 838
原创 Skynet服务器框架(十) CentOS 防火墙设置
引言:今天修改了 skynet 服务器的 IP 地址(即 config 文件中的 address 和 master 两项参数,IP 与当前及其的保持一致,端口号为 2017),然后使用一个简单的客户端去连接服务器,结果服务器完全没有收到 Socket 连接请求,客户端也出现了连接超时,猜想应该是 CentOS 中防火墙导致的,在真正排查解决此问题之前,我们先来连接一下 CentOS 7.0 的防火墙
2017-08-08 10:48:53 2415
原创 《Unity 3D游戏客户端基础框架》多线程异步 Socket 框架构建
引言:之前写过一个 demo 案例大致讲解了 Socket 通信的过程,并和自建的服务器完成连接和简单的数据通信,详细的内容可以查看 Unity3D —— Socket通信(C#)。但是在实际项目应用的过程中,这个 demo 的实现方式显得异常简陋,而且对应多个业务同时发起 Socket 通信请求的处理能力也是有限,总不能每个请求都创建一个线程去监听返回结果,所以有必要进一步优化一番,例如加入线程池
2017-08-02 16:06:17 11995 2
原创 《Unity 3D游戏客户端基础框架》消息系统
功能分析:首先,我们必须先明确一个消息系统的核心功能:一个通用的事件监听器管理各个业务监听的事件类型(注册和解绑事件监听器)全局广播事件广播事件所传参数数量和数据类型都是可变的(数量可以是 0~3,数据类型是泛型)设计思路:清楚了上述的几个要求之后,我们不难自行定制一个业务层的消息系统,即在消息系统初始化时将每个模块绑定的消息列表,根据消息类型分类(用一个 string 类型的数据类标识)
2017-08-01 11:50:37 11822 12
原创 《Unity 3D游戏客户端基础框架》系统设计
引言最近到看一个 《贪吃蛇大战开发实例》,其中 贪吃蛇大作战游戏开发实战(3):系统构架设计 提供的系统架构的设计思路我觉得还是值得学习一下的,接下来的内容是我看完视频后的一点笔记。
2017-07-30 13:41:22 4788 1
原创 LitJson 不支持 float 类型数据
在 Unity 中使用 Best HTTP 插件的 LitJson 发送一些 Json格式数据给服务器,出现了报错: “LitJson.JsonException: Max allowed object depth reached while trying to export from type System.Single “显然,是传入了 Json 不支持的数据类型,这里我传入了 fl
2017-07-28 11:06:30 4178
原创 Skynet服务器框架(九) snax框架
什么是 snax 由于 skynet 的 API 还是比较偏底层,为简化服务的编写提供一套简单的 API ,便有了这套 snax 框架,解决的问题: “编写一个 skynet 内部服务,处理发送给它的消息。snax 并不会取代 skynet 原有的 api ,只是方便实现这类简单需求而已。” —— 云风换句话说,snax 就是对 skynet API 的部分封装
2017-07-27 17:10:30 2745 2
原创 CentOS 7常用工具安装
git在Linux下开发项目,少不了要使用git工具,安装方法十分简单,通过一条 yum 指令既可完成安装:yum install git安装完成后检测版本:# git --versiongit version 1.8.3.1autoconf这是一个在 Bourne shell 下制作供编译、安装和打包软件的配置脚本的工具# yum install autoconf检查版本:# autoconf
2017-07-21 13:35:36 6349
原创 《Unity 3D游戏客户端基础框架》概述
框架概述:做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框架搭建,其中包括:UI框架(NGUI + MVC)消息管理(Advanced CSharp Messenger)网络层框架(Socket + Protobuf )表格数据(Protobuf)资源
2017-07-15 17:55:27 26664 11
原创 Skynet服务器框架(八) 任务和消息调度机制
引言:在我看来,消息和任务调度应该是skynet的核心,整个skynet框架的核心其实就是一个消息管理系统。在skynet中可以把每个功能都当做一个服务,整个skynet工程在执行过程中会创建很多个服务,每个服务相当于一个 ``Actor`` ,是互不依赖并行执行的,但同时也存在服务之间的通信和彼此的任务调用,接下来我们就来看一下skynet中服务之间进行通信的机制。
2017-07-15 17:50:19 7115 1
原创 Android调试工具adb的高逼格使用方式
引言:通常在使用Eclipse进行Android应用开发的时候,我们可以使用Eclipse自带的工具来完成调试和查看输出日志的操作,但是假如在当前电脑并没有配置适用于Android开发的Eclipse版本的情况下,想要查看Android设备运行应用或者游戏时的实时输出日志,可以直接借助Android调试工具 adb 来完成。
2017-06-23 15:20:50 21580 1
原创 Eclipse配置开发Go的插件——Goclipse
引言:上篇 《Golang快速入门(不用急,但要快)》 我们大致过了一遍Go语言的基本语法,但在开始正式的项目创建前,有必要选择一个比较顺手的 IDE (编辑器),由于之前一直都是做Java相关的开发,自然而然地想着能否用一样的编辑器来进行开发,毕竟 Eclipse 还是挺强大的,但是它并不具备跨平台特性,目前只支持Windows平台。不过,对于日常开发已经够用了,最后发布的时候再将项目部署到Lin
2017-06-19 20:02:20 21711 10
原创 Golang快速入门
Go语言简介:Golang 简称 Go,是一个开源的编程语言,Go是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。1.Go语言用途:Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似
2017-06-16 14:33:32 11303 3
原创 《从零开始搭建游戏服务器》 java与C#的protobuf序列化不兼容
引言:今天在联调Java服务器与Unity(C#编写)的客户端的网络协议数据,由于网络通信的核心数据是通过序列化之后的字节数组经过加密和压缩的结果,但是发现两者使用Protobuf协议序列化工具出来的结果是不同的(Java使用 Protostuff 工具,C#使用 Protobuf-net.dll 自带的 ProtoBuf 工具),现在Java序列化之后的字节数组长度要比C#序列化结果长得多。方案选
2017-06-15 15:01:09 2526 4
原创 Hexo个人免费博客(五) 使用自己的域名
使用了一段时间在github上搭建的hexo个人博客空间,使用markdown写博客既方便,展示出来的样式也还算满意,唯一的缺点就是域名 github.io 总觉得有点累赘,另外就是访问速度比较慢,今天就试着来解决其中的一个问题:把访问域名替换成自己的域名。域名修改:1.申请个人域名:首先得先拥有一个自己的域名,我用的是阿里云里买的一个以 .tech 为后缀的域名 linshuhe.tech,一年5
2017-06-11 10:00:37 15784 13
原创 《从零开始搭建游戏服务器》 序列化工具(最优版Protostuff)
前言:之前使用protobuf工具来解析表格数据和定制网络协议,但是为了网络安全和压缩数据大小,有时候需要对数据进行序列化,这就需要设计一个序列化工具类来完成序列化和反序列化的操作。
2017-06-10 12:50:06 6499 2
原创 《从零开始搭建游戏服务器》 网络数据压缩——Zlib算法
前言:关于压缩算法,其实有不少,例如:ZIP、RAR和bzip2等,这里我们举例使用的Zlib相较于前者都要简单一些,与ZIP、RAR等归档算法不同,它与bzip2更为接近。那么,下面我们就来尝试一下Zlip在C#和Java中的实现和数据交互:C#中加密Java中解密;又或者是Java中加密C#中解密,这也体现了Zlib的跨平台特性。C#方面:通常是指客户端,例如Unity中,可以使用此压缩方法来压
2017-06-08 15:46:15 3625
原创 CentOS 7.0最小安装及配置
引言:之前一直用Ubuntu来进行服务器的开发工作,但是听朋友推荐使用CentOS才是最后发布到生产环境的首选,因为它提供了一套工业化的标准,而且在资源开销上也更为突出一点(有种说法是说大牛就是完全脱离对UI界面的依赖,纯命令行来开发服务器),这也仅仅是部分人的观点,不过多评价,今天就安装一个来玩一下。
2017-06-07 15:55:13 24735 3
原创 Skynet服务器框架(七) Lua中调用自定义C库
引言:在skynet中,我们通常使用lua来写业务层的逻辑,并且每个功能模块基本上就是一个运行在沙盒中的lua服务。但是,当需要我们需要开发拓展的库或者进行高性能要求的模块开发时,还是需要考虑在C语言层面来开发一个动态库(.so),并提供可以在lua中调用的接口,然后再lua中调用此C库。
2017-05-26 15:32:12 5159 1
原创 Skynet服务器框架(六) Socket服务源码剖析和应用
引言:如何在skynet框架中使用socket+protobuf。上篇 Skynet服务器框架(五) 使用pbc(protobuf) 我们已经大致了解了如何在Skynet中通过pcb来使用Protobuf,接下来我们开始了解skynet中有关Socket的部分。API几个常用的skynet中的Socket接口:* 输出错误信息: skynet.er
2017-05-22 19:43:19 8070
原创 Markdown常识
图片格式设置:图片大小设置:<img src="" width="100" height="100" />width 是图片的宽度height 是图片的高度图片居中显示:<div align=center>![pic_desc](pic_url)</div>align 设置了图片的对齐方式,可以选择:left、center和right;pic_url 是图片的链接地址(必填),pic_u
2017-05-18 19:28:40 597
原创 Unity3D —— 手机设备震动接口
引言:在做应用或游戏开发的时候,有时候我们会需要让设备有明显的响应输出以增强交互效果,常见的有:音频输出、屏幕闪烁和手机震动,这里我们就来实现以下如何在Unity中调用安卓和苹果手机的震动接口。实现步骤:调用接口:Unity中提供了两个接口,分别对应于android和iPhone设备:安卓设备接口:Handheld.Vibrate()苹果设备接口:iPhoneUtils.Vibrate()然而
2017-05-17 11:42:43 20451
原创 《Node.js简记》包管理器npm的安装、加速和常用指令
前言:上篇 《Node.js简记》 安装Node.js并实现Helloworld 我们已经完成了node开发环境的安装配置,接下来我们先来了解一下node的一个重要的工具——包管理器npm。npm安装和常用指令:1.npm简介:npm 是node的包管理工具,常用于一下场景:用户可从npm服务器获取别人编写的第三方包或命令程序到本地使用;用户可上传自己编写的包或者命令程序到npm服务器给别人下载
2017-05-17 10:44:35 1452
原创 《Node.js简记》 安装Node.js并实现Helloworld
前言:之前利用Github的Pages功能开发我的个人博客的时候,使用了Hexo框架是基于Node.js开发的静态网页框架,然后最近在开发跨平台桌面应用的时候,使用了Electron框架的核心,也是基于Node.js(接下来都简称为:Node)的,想来有必要梳理一番。Node.js简介:什么是Node:Node.js是运行在服务端的JavaScript,其核心是与Google Chrome一样的V8
2017-05-15 19:17:31 1366
原创 Hexo个人免费博客(四) 部署到Coding.net
引言: 之前的博客我们已经完成了个人Hexo博客的搭建和配置,并且部署到Github上,具体过程可以参考我之前的博客《Hexo个人免费博客(一) 从零到发布Github》,但是国内访问速度有点慢,为了提高访问速度,我尝试把博客同时也部署到Coding.net上。部署步骤注册Coding.net账号: 打开Coding.net官网,注册一个个人账号新建项目: 注意项目名与注册用的账
2017-05-04 14:51:11 4593
原创 《Electron 开发》 环境配置和Helloworld
前言:最近因为要帮别人做一个Mac和Windows平台下都使用的桌面应用,功能很简单,就是一个文本编辑器,所以大致了解了一下跨平台桌面应用开发的框架,知乎上推荐多半是 Electron 和 NW.js,其中 Electron 比较成熟的产品有:Github开发的Atom代码编辑器(已经开源)、微软的Visual Studio Code、facebook的 nuclide 和 slack等。什么是 E
2017-05-03 10:47:41 14346
原创 Skynet服务器框架(五) 使用pbc(protobuf)
引言:假如我们要建立的skynet服务器与客户端的连接方式为长连接,且选择了Google的Protobuf来定制我们的网络协议,那么,接下来我们要解决的问题就是:如何在skynet框架中使用socket+protobuf。API几个常用的skynet接口:* 输出错误信息: skynet.error(...)* 获取本地服务句柄方式: sky...
2017-04-23 10:24:07 15699 6
原创 Skynet服务器框架(四) Lua服务创建和启动剖析
前言:之前从Skynet启动过程,解读了skynet的启动部分C语言编写的底层源码,最后成功启动了引导的lua服务bootstrap.lua,接下来我们要尝试自定义一个lua服务,并让它启动起来。bootstrap实现功能:bootstrap.lua源码:local skynet = require "skynet"local harbor = require "skynet.harbor"re
2017-04-17 14:13:58 10447
原创 Skynet服务器框架(三) Mac OS X环境安装
Mac os x下安装sky net:安装:相比于Linux系统,Mac系统下安装skynet显然要简单得多,打开Mac的终端,大致步骤如下:先检查本地是否已安装了git工具,假如已经安装:bogon:~ linshuhe$ git --versiongit version 2.8.1通过git将skynet源码克隆到本地:bogon:project linshuhe$ git clone h
2017-04-15 19:57:09 5785
原创 Skynet服务器框架(二) C源码剖析启动流程
前言:最近因为要帮别人做一个Mac和Windows平台下都使用的桌面应用,功能很简单,就是一个文本编辑器,所以大致了解了一下跨平台桌面应用开发的框架,知乎上推荐多半是 Electron 和 NW.js,其中 Electron 比较成熟的产品有:Github开发的Atom代码编辑器(已经开源)、微软的Visual Studio Code、facebook的 nuclide 和 slack等。什么是 E
2017-04-15 15:15:51 13987
原创 Skynet服务器框架(一) Linux下的安装和启动
简介:Skynet主要工作是管理注册服务,并开启多线程协调服务之间的调用和通讯。框架核心:根据作者的描述,Skynet的核心功能就是解决一个问题: 把一个符合规范的C模块,从动态库(so文件)中启动起来,绑定一个永不重复(即使模块退出)的数字id做为其 handle 。模块被称为服务(Service),服务间可以自由发送消息。每个模块可以向 Skynet 框架注册一个 callback 函数,用
2017-04-13 19:20:01 19173 2
原创 samba+Xshell连接Linux共享目录
引言:之前我们在Windows下建立共享目录,然后再Linux中去访问的步骤,那么反过来,假如此时Linux服务器处于远端(例如云服务器),那就需要在Linux系统下简历共享目录,然后再Windows下使用工具去访问了,通常使用Xshell来访问,接下来我们就来试一下这个操作过程。linux操作:需要安装一些必要的工具:ssh协议和sambalinsh@ubuntu:~$ sudo apt-get
2017-04-13 15:25:37 4758 1
原创 《从零开始搭建游戏服务器》Java与Lua互相调用
前言: Lua是一种小巧的脚本语言,如今常用于游戏开发,特别是客户端开发,基本上都是基于Lua来实现热更新,在Unity开发中更有uLua(最新版改名为toLua)这样成熟的热更框架。这里我设想用Lua+Java来实现服务器的热更,不成熟的想法,这里想尝试一下Lua和Java如何互相调用。插件选择:假如引入第三方库,可以找到比较常用的两个选择:LuaJava和LuaJ,简单做一下对比:
2017-04-07 17:58:35 12634
NPOI插件写的.xls表格数据序列化的导表工具
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人