Lei Xia

Sr. Software Engineer | Solution Architect

抒写代码,尽享生活,筑就未来。

订阅 · 赞赏

avatar

golang可能导致内存泄漏的地方

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.

PHP实现“异步”

2018年1月20日 · 13 字 · 1 分钟

众所周知,PHP不使用多线程扩展的情况下是不支持异步的(不算curl之类)。今天无意中看到一个函数fastcgi_finish_request; 这个方法是PHP5.3+开始提供。 注释写的很清楚,有耗时操作的时候使用该函数可以尽早结束fastcgi处理过程,提高页面响应速度。 代码说明 <?php echo 1; fastcgi_finish_request(); sleep(3); ?

微信H5点击跳转到关注页

2017年11月25日 · 26 字 · 1 分钟

背景 微信诱导关注接口在早两年已经被微信关停,但是一般的H5目的都是要关注公众号。 目前用的多的方法是用公众号发表一篇文章,文章里面一般是一个GIF的箭头图片指向公众号关注。 这种方法有点取巧。 今天要介绍的是另一种方法,感觉应该不会被微信封号。

从零开始打造自己的直播服务器-golang开发HTTP推流服务

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.

从零开始打造自己的直播服务器-Nginx安装

2017年11月23日 · 225 字 · 2 分钟

直播行业火了很长一段时间了,抛开那些复杂的实现,本系列将从零开始实现一个直播服务器。 功能 RTMP拉流(基于HLS) RTMP推流(基于ffmpeg) RTMP推流(基于HTTP) 安装Nginx 本文使用docker的ubuntu镜像作为种子机,非常干净!

log4go尝鲜

2017年11月21日 · 101 字 · 1 分钟

序言 日志系统对于软件是必不可少的,可以帮助我们记录关键信息,后期处理问题的时候会很方便。业界有很多出名的日志库,log4日志库相信每个人都不陌生,像log4j之于Java,log4php之于PHP等等。其实golang也有很多的log4实现,本文要使用的是alecthomas实现的版本。 项目地址 https://github.com/alecthomas/log4go 安装 go get github.

golang实现TLV编码

2017年11月17日 · 146 字 · 1 分钟

TLV编码基础 golang实现 主要使用bytes和binary包中的相关函数 编码 func Encode(tag int32, data string) ([]byte, error) { buf := new(bytes.

Tlv编码在NodeJs中的应用

2017年11月17日 · 254 字 · 2 分钟

最近在接入腾讯云的天御业务安全系统时接触到了TLV编码协议,好在TLV协议理解起来比较简单。故简要介绍一下该编码。 TLV编码是什么? TLV是一种编码格式,编码如下: [1-4字节] TYPE [5-8字节] Value的Length [9字节+] Value数据 本文只探讨无嵌套数据的情况。NodeJs操作二进制数据主要依赖于Buffer

使用docker-composer部署nodejs应用

2017年11月1日 · 50 字 · 1 分钟

新建Dockerfile 在应用目录下新建Dockerfile FROM node:8 WORKDIR /usr/src/app ADD zh /usr/src/app RUN npm install --registry=https://registry.

php-imagick-字符间距问题

2017年10月17日 · 4 字 · 1 分钟

在用php-imagick扩展做图像合成的时候,有个地方需要改下文本间距,百度一下发现setTextInterWordSpacing有这个方法,但是测试发现不管传多少 值都毫无作用。 后面google查了一下,发现setTextKerning才是设置文本字符间距的函数。 此外,还发现一个bug,mac下roundCorners函数不存在的问题,找了个把小时才发现这是imagick在mac上面的bug,先写在这里,等有空在研究下。