自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

copymaster

stay hungry stay foolish

  • 博客(58)
  • 收藏
  • 关注

原创 grpc使用

使用grpc和protobuf实现rpc通信的例子创建工程mkdir grpc_testcd grpc_testgo mod init//使用github的grpc替换gp的grpc go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latestgo mod edit -replace=gola...

2019-11-05 12:20:35 610

原创 etcd服务发现

原理etcd实现服务发现和注册,使用的是kv存储、租约、watch.向etcd 注册 该服务(其实就是 存一个值)然后向etcd 发送心跳,当etcd 没有检测到心跳就会 把这个键值对 删了(这整个动作是etcd里的租约模式),网关那边 就只需要 watch 这个 key ,就能够知道 所有服务的所有动态了.注册的时候可以使用前缀这样在watch的时候可以watch所有的服务器.服务注册...

2019-11-01 17:23:31 2838 1

原创 pitaya框架中etcd实现服务发现源码注释

package clusterimport ( "context" "encoding/json" "fmt" "strings" "sync" "time" "github.com/coreos/etcd/clientv3" "github.com/coreos/etcd/clientv3/namespace" "github.com/topfreegames/pita...

2019-11-01 16:40:32 1088

原创 etcd API使用

连接客户端访问etcd首先要创建client,它需要传入一个Config配置.Endpoints:etcd的多个节点服务地址。DialTimeout:创建client的首次连接超时时间,这里传了5秒,如果5秒都没有连接成功就会返回err;一旦client创建成功,不用再关心后续底层连接的状态了,client内部会重连。 cli,err := clientv3.New(clientv3...

2019-11-01 16:30:49 1081

原创 etcd快速入门

安装下载地址:https://github.com/etcd-io/etcd/releases下载完成解压后,目录中有两个二进制文件, etcd以及 etcdctl。其中 etcd就是运行etcd服务的二进制文件, etcdctl是官方提供的命令行etcd客户端,使用 etcdctl可以在命令行中访问etcd服务。查看etcd版本 ./etcd --version运行单点启动查看启动帮...

2019-11-01 12:16:09 631

转载 golang中的坑

初级篇:1-34左大括号 { 一般不能单独放一行在其他大多数语言中,{ 的位置你自行决定。Go 比较特别,遵守分号注入规则(automatic semicolon injection):编译器会在每行代码尾部特定分隔符后加 ; 来分隔多条语句,比如会在 ) 后加分号:// 错误示例func main() { println("hello world")}// 等效于...

2019-10-31 16:41:41 1692

原创 go语言中的换行和分号

golang中为了在语言层面实现代码规范,会在一些地方自动添加分号当输入被断开为标记时,如果行末标记为:1. 一个标识符2. 一个整数、浮点数、虚数、字符或字符串文字3. 关键字break、continue、fallthrough或return中的一个4… 运算符和分隔符++、–、)、]或}中的一个则分号将被自动插入到标记流中非空白行的末尾.如下代码, add是正确的,参数换行因为a...

2019-10-31 15:02:46 2153

原创 go跨平台编译

Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goLinux 下编译 Mac 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=dar...

2019-10-31 14:54:16 654

原创 defer和return

多个defer的执行顺序为“后进先出”defer、return、返回值的执行逻辑:return最先执行,return负责将结果写入返回值中;接着defer开始执行一些收尾工作;最后函数携带当前返回值退出代码验证package main import "fmt" func main() { fmt.Println("func1 return: ", func1())...

2019-10-31 11:23:50 649

原创 etcd租约及监听key

package mainimport ( "context" "log" "time" "go.etcd.io/etcd/clientv3")func main() { var conf = clientv3.Config{ Endpoints: []string{"127.0.0.1:2380"}, DialTimeout: 5 * time.Second, ...

2019-10-30 17:27:47 1891

原创 etcd命令和API

命令启动./etcdctl使用etcd v3export ETCDCTL_API=3 set ETCDCTL_API=3查询集群成员./etcdctl member list查询节点状态./etcdctl --endpoints localhost:2379 endpoint status --write-out="table"监听一个key./etcdctl watch /k...

2019-10-30 16:44:46 744

原创 开源游戏服务器你中意哪款?

有哪些开源游戏服务器框架,值得学习呢。基于node.js 、java、C#、golang 、c++、python 等技术栈有各种各样的游戏框架。 本文收集一些比较常用的 github上star和fork有一定数量的较为完整的框架skynet云风大神的框架这个基本上使用很多的, c+lua的框架。skynet只能算是网络层的轮子但是因为其众多的用户还是很不错的https://github.co...

2019-10-22 12:52:51 4416

原创 Context解析

什么是ContextContext通常被译作上下文,它是一个比较抽象的概念。一般理解为程序单元的一个运行状态、现场,上下上下则是存在上下层的传递,上会把内容传递给下。在Go语言中,程序单元也就指的是Goroutine。每个Goroutine在执行之前,都要先知道程序当前的执行状态,通常将这些执行状态封装在一个Context变量中,传递给要执行的Goroutine中。上下文则几乎已经成为传递与请...

2019-10-18 18:48:53 315

原创 centos安装mysql

一, 创建用户:命令:CREATE USER ‘username’@‘host’ IDENTIFIED BY ‘password’;说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可...

2019-10-12 17:10:18 152

原创 GLSurfaceView

用户可以在GlSurfaceView上自定义渲染器(render)并在独立的线程中运行,内置一个surface(一块内存)能直接在android view上排版,它管理的egl display可以让opengl 把内容渲染在suerface上。GLSurfaceView是一个视图,继承至SurfaceView,它内嵌的surface专门负责OpenGL渲染。GLSurfaceView提供了下列...

2019-10-12 17:07:52 401

原创 apk内部存储路径

首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下。所有内部存储中保存的文件在用户卸载应用的时候会被删除。一、 filesContext.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象。Context.openFileInput()与Context....

2019-10-12 17:05:22 2326 1

原创 android数据存储

数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是:1 使用SharedPreferences存储数据2 文件存储数据3 SQLite数据库存储数据4 使用ContentProvider存储数据5 网络存储数据第一种: 使用SharedPreferences存储数据SharedPreferences是Android平台上一个轻量级的存储类...

2019-10-12 17:03:18 333

原创 如何获取android唯一识别码

DEVICE_IDAndroid系统为开发者提供的用于标识手机设备的串号,也是各种方法中普适性较高的,可以说几乎所有的设备都可以返回这个串号,并且唯一性良好。这个DEVICE_ID可以同通过下面的方法获取:TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);String DE...

2019-10-12 16:57:57 1457

原创 android横竖屏切换

切换横竖屏的方案在AndroidManifest.xml中配置在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,它有以下几个参数:“unspecified”:默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向.“landscape”:横屏显示(宽比高要长)“...

2019-10-12 16:56:18 340

原创 centos安装redis

安装redis下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz解压压缩包 tar -zxvf redis-4.0.6.tar.gz安装gcc依赖 yum install gcc -y编译安装 cd redis-4.0.6 make MALLOC=libc ...

2019-10-12 16:51:09 181

原创 chan详解

无缓冲chan进和出都会阻塞.有缓冲chan先进先出队列, 出会一直阻塞到有数据, 进时当队列未满不会阻塞, 队列已满则阻塞.selectselect 先遍历所有case, 所有channel表达式都会被求值、所有被发送的表达式都会被求值。求值顺序:自上而下、从左到右.当case没有阻塞则随机执行一个没有阻塞的case就退出select当所有case阻塞时, 则一直阻塞直到某个ca...

2019-10-12 16:14:54 2144

原创 golang中的TLS

HTTP和 HTTPShttps和http都属于应用层,基于TCP(以及UDP)协议。但是不同的是:HTTP 缺省工作在TCP协议80端口HTTPS缺省工作在TCP协议443端口HTTPS服务不同于HTTP服务,HTTPS是HTTP over SSL或HTTP over TLSSSL和TLSSSL是“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪...

2019-10-11 11:58:57 2554

原创 cocos2dx剪切板

本文是cocos2dx lua为例子, cocos creator js也是一样的只是桥接代码不同罢了android 平台剪切板主要考虑ui线程和gl线程的问题//设置剪切板内容 public static void setClipBoard(final String strName) { if(strName.trim().equals("")){ return; ...

2019-10-11 11:23:12 416

原创 cocos2dx中有几条线程

Android UI线程什么是UI线程当应用启动,系统会创建一个主线程(main thread),这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,你的应用和Android的UI组件发生交互。所以main thread也叫UI thread也即UI线程。系统不会为每个组件单独创建线程,在同一个进程里的UI组件都会在UI线程里实例化,系统对每一个组件的调用都从UI线程分发出...

2019-10-11 10:06:45 473

原创 cocos2dx自动批绘制的条件

title: cocos2dx自动批绘制的条件comments: truedate: 2019-01-07 18:56:49tags:cocos2dxcategories:cocos2dx为什么必须要相同纹理、相同混合函数、相同shader?要满足Auto-batching,就必须有这三个条件,这是为什么呢?我们回到之前的代码,在调用节点的draw函数时,调用了QuadC...

2019-10-11 09:38:18 322

原创 ecs框架

title: ecs框架comments: truedate: 2019-01-08 18:47:43tags:架构categories:架构ECS即Entity-Component-System,实体-组件系统的意思,是一套游戏层的架构,是基于属性的游戏架构.出现很早,随着《守望先锋》架构设计与网络同步 – GDC2017 而进入大众视野,unity2018版本直接内置了e...

2019-01-09 20:18:08 1202

原创 cocos2dx中毒冰冻shader

中毒效果#ifdef GL_ES precision mediump float; #endif uniform sampler2D u_texture; varying vec2 v_texCoord; varying vec4 v_fragmentColor; void main(void) { gl_FragColor = text...

2019-01-09 19:05:32 1357 5

原创 cocos2dx使用shader

着色器认识.vsh,.fsh 这两个文件在被编译和链接后就可以产生可执行程序与GPU交互。.vsh 是 vertex shader,用与顶点计算,可以理解为控制顶点的位置,在这个文件中我们通常会传入当前顶点的位置,和纹理的坐标。.fsh是片段shader,或者叫片元shader。在这里面我可以对于每一个像素点进行重新计算。.vsh和.fsh在opengl 渲染的流程着色器对象关联着色器...

2019-01-09 18:48:07 642

原创 cocos2dx描边shader

Cocos2d-x 3.x的label使用了freetype字体引擎(http://www.freetype.org/),可以很轻松的实现描边和阴影效果。所以本篇文章只针对于sprite来实现描边效果。varying vec4 v_fragmentColor; // vertex shader传入,setColor设置的颜色varying vec2 v_texCoord; // 纹理坐标un...

2019-01-09 18:33:43 730

原创 cocos2dx模糊shader

模糊效果在游戏中经常会用到,有的为了突出前景会把背景给模糊化,有的是因为一些技能需要模糊效果。模糊是shader中较为简单的一种应用。cocos2dx 3.x给的demo中,就有sprite的模糊的效果。先说下这个模糊算法的大致思路,我们在片段着色器中可以得到当前像素点的颜色值,要想让这个颜色变得模糊,就要让它与它周围的像素点的颜色稍微接近一点,那么我们就需要拿到这个像素点周围的像素点的颜色值,...

2019-01-09 18:26:59 821

原创 cocos2dx灰度shader

灰度shader最近在学习shader,就把cocos2d-x 3.x版本中的很简单也很常用的灰度shader拿出来学习一下。#ifdef GL_ESprecision mediump float; // ES版本的精度限定符,精度变低后可以提高效率#endifvarying vec4 v_fragmentColor;varying vec2 v_texCoord;void ma...

2019-01-09 18:18:39 320

原创 cocos2dx引用计数机制

title: cocos2dx 引用计数机制comments: truedate: 2019-01-07 18:49:23tags:cocos2dxcategories:cocos2dxautorelease和release的区别release是立即释放引用计数,如果到达0,对象被销毁。autorelease是延迟释放,是为了更好管理内存产生的。关于Ref一个Ref对...

2019-01-07 18:54:01 804

原创 cocos2dx Event机制

title: cocos2dx Event机制comments: truedate: 2019-01-07 18:34:51tags:cocos2dxcategories:cocos2dx基本机制事件机制类似观察者模式。EventListener 事件监听者,封装事件处理代码,包含事件会回调。事件包含时间信息。EventDispatcher 事件分发者,管理分发事件。...

2019-01-07 18:48:07 331

原创 cocos2dx Action机制

依赖scheduler更新机制。1.Action它通过在一段时间内对Node元素的某些属性进行插值计算。然后依赖时间更新去更新属性。依赖step()->update()2.Action的管理是放在ActionManager 的hash表中,通过target作为key action防止在hash 节点的数组中。ActionManager 添加到动作队列,并通过调用startWithTa...

2019-01-07 18:29:42 489

原创 cocos2dx schedule机制

是cocos2d-x核心的一块,负责调度执行,更新动作等。如何计时?Timer保存了调度任务的 时间线 重复次数 事件间隔 延迟等数据。每帧更新后Timer做事件累加,根据时间线去触发或者取消更新回调。Scheduler有两种添加更新的机制自定义更新根据target的不同Ref和void,分为两种。一种是TimerTargetCallback一种是TimerTargetSelect...

2019-01-07 18:23:43 652

原创 cocos2dx接入第三方so

title: cocos2dx接入第三方的socomments: truedate: 2019-01-07 17:58:40tags:cocos2dxcategories:cocos2dxAndroid平台添加第三方.so1.将.so放到prebuild目录下。2.修改mk.例如添加的库文件是:libfmod.so。LOCAL_PATH := $(call my-d...

2019-01-07 18:01:45 581

原创 cocos2dx接入sdk的通用方案

使用jni java反射机制 和callfuncjni:java c++相互调用。反射机制:主要使用Class Filed Constructor来动态的获取类的方法属性构造器进一步调用对象的方法属性以及构造对象。callfunc:函数调用。java->c++ :通过jni调用CPPNativeCallHandler 调用c++的 NDKHelper::handleMessage ...

2019-01-07 17:57:55 2491

原创 cocos2dx网络模块

title: cocos2dx网络模块comments: truedate: 2019-01-04 18:55:15tags:cocos2dxcategories:cocos2dxcocos2dx除了curllib和websocket其他的没有封装好用的网络库,尤其是使用socket的时候得自己分装网络层。网络层有哪些东西呢或者说我们要连接服务器收发数据需要怎样的流程?##...

2019-01-07 17:17:59 1260

原创 cocos2dx多分辨率支持

最好的对多分辨率支持的方案是不处理分辨率,应用程序按照一个预定义的分辨率进行设计,低阶游戏引擎统一处理分辨率的缩放,这个预设的分辨率就是设计分辨率.设计分辨率缩放策略setDesignResolutionSize可以设置设计分辨率和缩放策略,目前的缩放策略主要有EXACT_FIT: 充满屏幕设计分辨率直接缩放为屏幕分辨率,会变形NO_BORDER: 充满屏幕,较宽的部分被裁切,设计分辨率...

2019-01-07 16:49:49 286

原创 cocos2dx资源管理

资源管理其实主要涉及lua脚本和图片资源.由于lua资源的gc和lua对c++对象的绑定和cocos2dx的各种缓存加上cocos2dx的autoreleasepool机制,是资源管理工作和内存管理需要同步进行,本文就先说cache然后内存.cocos2dx在创建一个对象的时候是autorelease放入和当前的pool,帧渲染完成之后release一次,对于资源来说就是Sprite关联Text...

2019-01-07 16:01:03 1054

空空如也

空空如也

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

TA关注的人

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