nodejs thrift多路复用客户端
2018年2月8日 · 103 字 · 1 分钟
官网nodejs示例中只实现了服务端是单一service的情形,而对于服务端属于多个服务复用一个连接地址的例子却未实现。 查看thrift的nodejs库源码发现实际上还是支持的。以下来展示调用单一服务和多个服务的区别。 单一服务 var thrift = require('thrift'); var Calculator = require('.
2018年2月8日 · 103 字 · 1 分钟
官网nodejs示例中只实现了服务端是单一service的情形,而对于服务端属于多个服务复用一个连接地址的例子却未实现。 查看thrift的nodejs库源码发现实际上还是支持的。以下来展示调用单一服务和多个服务的区别。 单一服务 var thrift = require('thrift'); var Calculator = require('.
2018年2月1日 · 321 字 · 2 分钟
golang的channel除了goroutine通信之外还有很多其他的功能,本文将实现一种基于channel的通用连接池。 何为通用? 连接池的实现不依赖具体的实例,而依赖某个接口,本文的连接池选用的是io.Closer接口,只要是实现了该接口的对象都可以被池管理。 当然,你可以实现基于interface{}的连接池,这样任何对象都可以被管理。 实现原理 将连接句柄存入channel中,由于缓存channel的特性,获取连接时如果池中有连接,将直接返回,如果池中没有连接,将阻塞或者新建连接(没超过最大限制的情况下)。 由于面向接口编程,所有创建连接的逻辑是不清楚的,这里需要传入一个函数,该函数返回一个io.
2018年1月31日 · 113 字 · 1 分钟
为什么要限制协程数量 golang的go关键字并发实在是太简单,但是带来的问题是由于硬件和网络状况的限制,不受控制的增加协程是非常危险的做法,甚至有可能搞垮数据库之类的应用! 而并发控制在go中是非常常用的技巧,以此文来记录一下学习历程。 原理 由于channel的阻塞机制,通过设置缓冲channel的缓冲大小来控制同时执行的协程数量。
2018年1月30日 · 67 字 · 1 分钟
头脑王者 本项目仅作为学习anyproxy之用,请勿用于非法用途,否则后果自负 功能 题目爬取 答题匹配(如果题库不存在,请自行答题,系统会在答题后把正确答案自动录入数据库) 开始 安装mysql,新建数据库tnwz,建表语句 CREATE TABLE tnwz.
2018年1月20日 · 8 字 · 1 分钟
核心 golang能够GC是程序声明的变量,而一些外部资源是不可以GC掉的,比如os.OpenFile打开的文件句柄,sql.Open打开的数据库连接句柄等资源。 开发中常用场景 http请求时resp.Body,刚开始写golang的时候,如果会用ioutil.readAll去读取resp.Body时会加上defer resp.Body.Close(),后来有json.NewDecoder().decode()时没有加,以为会自动关闭,没想到还是太天真了。不管什么情况都需要defer resp.
2018年1月20日 · 13 字 · 1 分钟
众所周知,PHP不使用多线程扩展的情况下是不支持异步的(不算curl之类)。今天无意中看到一个函数fastcgi_finish_request; 这个方法是PHP5.3+开始提供。 注释写的很清楚,有耗时操作的时候使用该函数可以尽早结束fastcgi处理过程,提高页面响应速度。 代码说明 <?php echo 1; fastcgi_finish_request(); sleep(3); ?
2017年11月25日 · 26 字 · 1 分钟
背景 微信诱导关注接口在早两年已经被微信关停,但是一般的H5目的都是要关注公众号。 目前用的多的方法是用公众号发表一篇文章,文章里面一般是一个GIF的箭头图片指向公众号关注。 这种方法有点取巧。 今天要介绍的是另一种方法,感觉应该不会被微信封号。
2017年11月23日 · 450 字 · 3 分钟
目前笔者只知道ffmpeg命令行推流到RTMP服务器,是没有HTTP接口的,像iOS和Android这种Native应用应该有RTMP SDK封装推流逻辑。但是像微信小程序这种录制音频只有原始ArrayBuffer的数据,则必须在服务端提供接口来进行推流。 本文将基于golang标准库以及ffmpeg命令来实现。 服务端原理 客户端上传base64编码后的音频数据 服务端接收后解码为**[]byte** 将**[]byte**写入本地文件 golang调用ffmpeg命令将第3步写入的文件推流到RTMP服务端 golang输出JSON响应,如果出错则返回错误JSON响应 { "errmsg":"ok", "errcode":0 } 开始开发 由于采用了log4go日志库https://github.
2017年11月23日 · 225 字 · 2 分钟
直播行业火了很长一段时间了,抛开那些复杂的实现,本系列将从零开始实现一个直播服务器。 功能 RTMP拉流(基于HLS) RTMP推流(基于ffmpeg) RTMP推流(基于HTTP) 安装Nginx 本文使用docker的ubuntu镜像作为种子机,非常干净!
2017年11月21日 · 101 字 · 1 分钟
序言 日志系统对于软件是必不可少的,可以帮助我们记录关键信息,后期处理问题的时候会很方便。业界有很多出名的日志库,log4日志库相信每个人都不陌生,像log4j之于Java,log4php之于PHP等等。其实golang也有很多的log4实现,本文要使用的是alecthomas实现的版本。 项目地址 https://github.com/alecthomas/log4go 安装 go get github.