加载中
go http 框架性能大幅下降原因分析

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

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

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

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

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

07/31 21:09
810
redis 在业务层面的应用之定时器

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

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

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

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

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

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

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

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

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

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

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

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

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

06/13 16:59
534
golang 内存分析之字节对齐规则

c 的字节对齐很重要,因为c 支持指针运算。在golang 里面一般是慎用指针运算的,所以,这部分很少用,但是有些场景为了性能不得不用到指针运算,这个时候,知道golang 的内存分配就很重要了。...

06/12 22:40
90
golang sync.Pool 使用和源码分析

golang 在写高频服务的时候,如何解决gc问题,对象池是一个很有效果的方式,本文阐述下对象池的两种使用方式,和对对象池的源码分析,以及使用pool 的要点。golang 的对象池源码在避免锁竞争...

06/12 10:26
532
kubeadm1.7 搭建 Kubernetes 集群实操

使用kubernetes 搭建集群,因为网络等原因,对于那些初识k8s 的人,是一件很困难的事情,这里记录下整个集群搭建的过程和一些坑。 该文章后续仍在不断的更新修改中, 请移步到原文地址http:...

06/11 10:47
11
golang 高性能定时器之最小堆实现

业务中有很多定时任务,在规定时间内,不管是否完成都需要回调,明显,这种需要实现定时器,比较好的是时间轮和最小堆。这里介绍最小堆实现,这里就是个变相的topN 问题。 该文章后续仍在不断...

06/01 14:24
75
golang 最小堆排序实现

项目中有个模块要大量任务需要控制超时,内部实现了个定时器组件,底层就是基于最小堆算法和时间轮。最小堆算法挺简单的,一个完全二叉树,每个非叶子节点比其两个子节点都小,这就是个最小堆...

05/31 14:23
53
mysql 解决超卖问题的锁分析

解决超卖问题,常见的方式,利用redis 的原子性去递减;利用队列,队列入队计数。或者直接打到mysql 层。由mysql 保证不超卖,有几个玩法。利用属性不一样,挺有意思,记录下。 该文章后续仍...

05/25 13:33
95
nsq 源码分析之tcp协议部分

最近刚好看到其他几个项目有socket 编程,然后,想了下,在golang 中还没用过socket tcp 编程,于是看了一些im 的协议解析过程,都不是太满意,不是太通用,刚好看到nsq,发现nsq 这部分真是...

05/22 23:03
111
流媒体平台建设

流媒体系统主要向外提供的是离线转码,切片和缩略图服务,这些服务的特点是极度耗费资源的,所以平台的考量并不是在并发性,而是在资源的分配上,和流媒体本身的特性。 该文章后续仍在不断的...

05/19 11:35
21
线上状态码引发 bug 后的一些总结

公司最近出了个很严重的事故,不是bug,网关层返回给用户一些502 错误,导致被客户投诉。于是总结下。 该文章后续仍在不断的更新修改中, 请移步到原文地址http://dmwan.cc。 公司有个业务网...

05/10 20:35
26
实现支持批量 ping 的golang 库包

一个监控项目有个需求,会对一批域名进行探测,这里包括,丢包率,http 响应时间,探测频率大概时间是2min 一个周期。这里的域名大概有几百个,后期可能上千。由于是golang 写的调度和agent...

05/02 10:50
93

没有更多内容

加载失败,请刷新页面

返回顶部
顶部