![](https://img-blog.csdnimg.cn/20200602101433854.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Gopher
主要分享Golang相关的技术
Lucus小秋
擅长LAMP,PHP, Golang,爬虫,推送,服务端开发
展开
-
Golang & Beego入门学习笔记
前言 近几年golang越发流行,beego是利用golang开发web项目的框架。开始项目前推荐下载Goland编辑器(土豪可以买正版),或者用vim也是极好的。然后再就是安装golang,beego,并配置环境。 安装go mac上安装golang很简单: brew install go 安装成功。 配置 首先,创建工作空间gopath/。分别有bin/, pkg/, src/ 三个目录。分别用来放置编译生成的二进制程序,工程依赖的安装包,工程源代码。且,src目录下可以包含多个项..原创 2020-06-16 12:11:05 · 607 阅读 · 0 评论 -
记一次Golang内存泄露问题分析
背景 最近开发了一个推送项目,使用Golang作为开发语言。作为Golang的入门小白,本着拿来主义改造了别人的代码,按照自己的逻辑开发完,测试通过后就上线了。 上线后一天通过falcon发现内存一直在缓慢的增长,知道了有内存泄露后但是无从下手。单机内存从4G增加到8G后并没有缓解问题,因为还是有OOM的隐患。 为了彻底查清楚OOM的原因,在网络上看了很多文档,很多都是推荐golang pprof工具。其中《实战Go内存泄露》写的很好,非常详细。 10次内存泄露,有9次是gorout...原创 2020-06-16 11:41:18 · 2924 阅读 · 0 评论 -
记一次Golang程序崩溃问题分析思路
问题描述 问题是这样的,线上一个推送服务以http接口方式支持内部其他服务的推送需求。众所周知,对于大多数APP来说push都是保证DAU的重要途径。所以,推送服务的稳定性至关重要。 昨天开始,我负责的推送接口接连报了很多次502状态码,对应的推送请求也失败了。所以我用了半天的时间都在分析接口失败的原因。 分析日志 查看线上问题的最好方式就是分析日志,线上服务都会打很多trace日志。我的推送服务通过全局trace_id把请求串联起来,所以可以快速跟踪请求是否正常执行。 分析日志我发现几个现象:原创 2020-06-14 15:56:57 · 1646 阅读 · 0 评论 -
高性能推送服务架构设计
在上一篇文章『聊一聊APP消息推送那些事』中,我讲了手机APP消息推送的基本原理,这篇文章主要是从技术的角度,介绍一个高性能推送平台的架构设计。目的是分享一些我自己在推送上的经验,以及做推送平台中遇到的一些问题和解决办法,为那些遇到类似问题的朋友提供一些参考。 # 01 背景 由于本人目前就职的公司对于推送有很强的依赖,尤其是每天都会有很多时效性很强的内容需要通知到用户。和竞争对手比拼的就是速度,相同的消息到达用户手机上的时间决定了产品的竞争力,也体现了一个公司的技术实力。因此,公司非常重视推送的性..原创 2020-06-05 10:13:19 · 1071 阅读 · 0 评论 -
【译】在BigCache缓存中存储空接口
前言 终于结束了两个月的找工作战役,前前后后面试了几十场,结果不是很理想,但是也还不错。经过这次换工作,我的感慨颇多,深刻感到自己最近2年多过于懈怠,成长缓慢。痛定思痛,今后一定要在一个领域深耕下去,提升自己的专业能力。Golang是我目前和接下来一段时间内的主要工作语言,遂决定在Golang的领域做深,做强,成为Golang专家,矢志不渝。 今天在Go中文社区看到翻译小组,个人一直对翻译英文文档颇感兴趣,因此决定翻译一篇文章。 原文地址: StoringEmptyInterfacesi...原创 2020-06-05 09:51:33 · 416 阅读 · 0 评论 -
Golang map range遍历结果不稳定问题
闲言少叙,本文主要是想介绍一个Golang开发常见的一个问题。然而,此问题对于初学者来说却经常容易陷入坑中。 问题 我在写一段代码时,使用了Golang的map数据结构,目的是想用map缓存计数结果。简单来说map的键也是整型的,且以递增顺序存储。我的最初想法是,在统计结束后,按照map中存储的键有序输出值。可是,当我运行程序时,结果并不是我想要的,而且有一定概率运行结果不同。 问题代码 func sortByBits(arr []int) []int { var bitmap = mak原创 2020-06-04 10:07:40 · 1036 阅读 · 0 评论