加载中
golang 高频服务延时抖动追因

一,背景 策略组同学反馈有个服务上线后 redis 写超时非常严重,严重到什么地步呢,写redis 毛刺超过100ms! 而且不是随机出现,非常多,而且均匀,导致整个接口超时严重。因为用的redis 库是...

高性能异步批量ping的golang实现

一个监控项目有个需求,会对一批域名全国的边缘节点进行探测,这里包括,丢包率,http 响应时间,探测频率大概时间是2min 一个周期。这里的域名大概有几百个甚至上千。由于是golang 写的调度...

2019/09/30 22:42
5.3K
golang struct to map

最近写业务,有些很恶心的需求,涉及php,go 的类型转换,因为php是弱类型,所以会涉及入参不定的情况。这里介绍下struct to map 的实现,具体例子参考: package main import ( "fmt" "ref...

2019/09/26 20:31
1.6K
grpc&thrift对比

grpc thrift 都是常用的rpc 框架,这里对grpc 和 thrift 从几个方面对两者进行对比 一,语言支持度不同 grpc 和thrift 对不同语言支持度不一样,相比而言 thrift 比grpc 支持度更广,到底如何...

2019/09/09 01:14
1.1W
redis 在业务层面的应用之订单系统分库分表的索引表

分库分表的时候,仍然有多维度查询的需求,这个时候,常见方式是做索引表,索引表有多种实现方式,可以用redis, 可以用mysql binlog 实现等等,当用redis 实现索引表,我们怎么去设计?我们...

2019/09/09 01:10
1.3K
开发平台加解密&鉴权原理

一个网站要保证安全,加密、防篡改、身份识别等是起码的要求。 有几个问题: https 为什么公网一定要用https ? https 什么原理? https 为什么要用对称加密+非对称加密? https 会让请求变慢...

2019/09/08 02:22
826
如何线上变更表结构

常见线上变更表结构的方法有两种,第一种是online ddl ,alter, 第二种是用类似工具percona。本文主要用实例描述下第二种方式的基本原理。 原理 percona 等工具的原理比较简单。1,copy 一个...

2019/08/29 20:07
134
nginx 常见状态码源码分析

最近生产环境出现502 报警较多,通过排查问题,有些问题还挺有意思。通过分析nginx 源码,对查nginx 状态码来源可能会带来一定启发。本文基于1.6.2(主要是和生成环境对齐)。 首先常见的错误...

2019/07/23 21:04
613
如何维护一个自己的 golang doc 服务

本文内容是如何维护一个golang 在线的doc 服务。 1 什么是godoc ? godoc 是 golang 官方提供的文档生成工具, 2 为什么要有godoc ? 我们经常遇到一个问题,就是代码和文档不一致,线上代码版...

2019/01/16 00:02
2.1K
一个go1.9.x 编译器内联引起的栈信息错乱的问题分析

背景是在写个日志库,日志库有个很重要的功能就是要打印出调用栈,知道具体是哪个文件,哪个函数调用的Info 等。 然后在测试中发现了一种写法,我自己本机测试一直ok, 但是业务使用的时候调...

2019/01/01 11:57
136
go http 框架性能大幅下降原因分析

最近在开发一个web 框架,然后业务方使用过程中,跟我们说,压测qps 上不去,我就很纳闷,httprouter + net/http.httpserver , 性能不可能这么差啊,网上的压测结果都是10w qps 以上,几个m...

2018/10/16 17:11
9.3K
golang 使用gorequest 遇到的序列化的坑

golang 序列化的库没其他语言那么好用,然后就掉坑里了。 是用gorequest 库发现的,这个高start 的库,还是有些问题。我使用场景是这样的: package main import ( "fmt" "github.com/parnur...

2018/10/15 14:18
3K
redis 在业务层的使用之分布式限频

限频一般反向代理都会有自带的一些设置参数,但是入口复杂的情况下,想做分布式限频,仅仅使用分布式反向代理的参数是完全不够用的,这里使用redis 比较好实现,为啥呢?还不是基于redis 的原...

2018/07/31 21:09
1.7K
redis 在业务层面的应用之定时器&延时队列

前几天出去面试,大家都喜欢聊redis,一个是底层数据结构的实现,一个是在业务层的使用,这里就结合一些简单的python代码,讲下怎样用redis 做应用层面的定时器。 首先,当大批量任务做超时管...

2018/07/30 09:59
2.2K
使用 liavformat 和 libavcodec 实现编码器

使用ffmpeg 的liavformat 封装,使用libavcodec encodec,实现个编码器,封装yuv 文件为flv/mp4等格式文件。 视频编码的过程是解码的逆过程,编码的流程,从数据结构上看就是AVFrame-> AVPac...

2018/07/13 17:52
401
如何最快地批量执行音视频转码

为什么要有这个需求?我们知道,单纯的转format ,不转codec ,其实仅仅是io 操作,这个操作是很快的,但是一旦需要decodec & encodec ,这个操作是非常耗时,耗cpu的,因为这个地方有解压缩...

2018/07/10 16:13
2.4K
使用 liavformat 和 libavcodec 实现解码器

使用ffmpeg 的liavformat 解封装,使用libavcodec 解codec,实现一个简单的解码器。 解码的流程,从数据结构上看就是AVFormatContext ->AVCodecContext -> AVPacket -> AVFrame。 生成AVPac...

2018/07/09 17:53
1.6K
从golang函数栈空间分布看defer,你就不会再错了

defer 是golang 面试常会面的一个点,但是实在话, 这玩意没多大用,特别是高频下,很多厂的优化点之一就是defer。但是这玩意复杂起来,你确实不一定能都答对,到底怎么分析defer ,才能保证...

2018/06/18 17:29
1.1K
golang Mutex 实现上的几个巧妙的点

golang 的metux 的实现有几个点做法是非常有意思的,一个是底层数据结构上,用了平时很少用的位运算,第二个,用到了自旋,并做了自旋策略控制,最后是用了信号量控制协程。 首先是golang mu...

2018/06/18 17:21
1.3K
redis sds 实现的几个巧妙的想法

翻redis 源码的时候,发现有些用法真是很巧妙的,一个是指针变换,一个是内存管理策略,当然后者是有利弊的。 sds.h 就这两个数据类型,这里,能够sds 和 sdshdr 相互转化。对外的接口,参数...

2018/06/13 16:59
991

没有更多内容

加载失败,请刷新页面

返回顶部
顶部