Golang汇编快速指南

本文翻译自Golang官方文档,原文地址: https://golang.org/doc/asm 这篇文档是对于Go编译器套件(6g, 8g, etc.)中不常用的汇编语言的快速预览,涵盖面不是很广泛。 Go的汇编语言基于Plan 9的汇编,Plan 9网站的页面上有详细描述。如果你想编写汇编语言,你应该读这篇文档,虽然它是Plan 9相关的。这边文档总结了汇编的语法,并且描述了使用汇编语言和Go程序交互时的特殊之处。 有一点是很重要的是,Go的汇编中没有直接体现出底层的机器。有些汇编细节能直接...阅读全文

2015-04-23 15:40:07 华子
阅读:18592 评论:0

golang simplejson 使用笔记

第一步,得到json的内容 contents, _ := ioutil.ReadAll(res.Body) js, js_err := simplejson.NewJson(contents) 第二部,根据json的格式,选择使用array或者map储存数据 var nodes = make(map[string]interface{}) nodes, _ = js.Map() 第三步,将nodes当作map处理即可,如果map的value仍是一个json机构,回到第二步。 for key,_ ...阅读全文

2015-03-17 22:00 iluckyning
阅读:15361 评论:0

golang中开启gctrace

如何开启打印gc信息 只要在程序执行之前加上环境变量GODEBUG gctrace =1 ,如: GODEBUG gctrace =1 ./xxxx.exe or GODEBUG gctrace =1 go run main.go 程序将会显示gc信息,如下 gc 1 @2.104s 0%: 0.018+1.3+0.076 ms clock, 0.054+0.35/1.0/3.0+0.23 ms cpu, 4->4->3 MB, 5 MB goal, 4 P gc 2 @2.241s 0%: 0...阅读全文

阅读:5137 评论:6

使用 pprof 和火焰图调试 golang 应用

什么是 Profiling? Profiling 这个词比较难翻译,一般译成画像。比如在案件侦破的时候会对嫌疑人做画像,从犯罪现场的种种证据,找到嫌疑人的各种特征,方便对嫌疑人进行排查;还有就是互联网公司会对用户信息做画像,通过了解用户各个属性(年龄、性别、消费能力等),方便为用户推荐内容或者广告。 在计算机性能调试领域里,profiling 就是对应用的画像,这里画像就是应用使用 CPU 和内存的情况。也就是说应用使用了多少 CPU 资源?都是哪些部分在使用?每个函数使用的比例是多少?有哪些函...阅读全文

2017-09-12 12:02 CIZIXS
阅读:4046 评论:0

Go 调优技术

## 内存管理 在开始探索 Go 调优技术和工具之前,我们需要先了解一下 Go 内存模型,它可以帮助我们理解内存是如何使用的。 Go 实现的是 _并行的_ [标记-清除垃圾回收器](http://wiki.c2.com/?MarkAndSweep)。在 _传统的_ 标记-清除模型中,垃圾回收器会先让程序停下来(也就是,“stop the world”),然后查找已经失效的对象,并把这些对象清理掉(也就是,释放内存)。因为程序在运行中会移动引用(references),导致垃圾的识别和...阅读全文

2017-12-20 23:38:13 polaris
阅读:9660 评论:2

后端篇

概述 前端作为和用户直接交互相关的开发人员,后端开发则涉及到更多用户看不到的领域,如对数据的存储、加工,平台稳定性、安全性等各个方面,因为涉及到的开发面广,几乎各种语言都运用到了后台开发,比如阿里巴巴的Java生态,百度PHP,Golang。语言并不是后端的限制,作为一名好的后端,学习的是后端的思想:如何搭建更高效的系统?也因此一部分后端的发展规划是“架构师”。 MVC模式 在十几年前MVC模式就已经存在了,可以说是一个非常经典的入门开发模式。但几十年前的代码规模及理念和如今也大不一样。过去的开...阅读全文

2018.08.12 23:52 又木先生
阅读:10099 评论:0

golang实现RPC的几种方式

什么是RPC 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。维基百科:远程过程调用 用通俗易懂的语言描述就是:RPC允许跨机器、跨语言调用计算机程序方法。打个比方,我用go语言写了个获取用户信息的方法getUserInfo,并把go程序部署在阿里云服务器上面,现在我有一...阅读全文

2018.08.20 23:00 豆瓣奶茶
阅读:60893 评论:3

golang垃圾回收

GC算法简介 查看: Golang 垃圾回收剖析中GC算法简介 GC性能的评价标准 摘自: https://studygolang.com/artic... 吞吐量:是指单位时间内是有多少时间是用来运行user application的。GC占用的时间过多,就会导致吞吐量较低。 最大暂停时间:基本上所有的垃圾回收算法,都会在执行GC的过程中,暂停user application。如果暂停时间过长,必然会影响用户体验,尤其是那些交互性较强的应用。 堆使用效率:影响堆使用效率的主要有两个因素,一个是...阅读全文

阅读:1950 评论:0

实战Go内存泄露

最近解决了我们项目中的一个内存泄露问题,事实再次证明pprof是一个好工具,但掌握好工具的正确用法,才能发挥好工具的威力,不然就算你手里有屠龙刀,也成不了天下第一,本文就是带你用pprof定位内存泄露问题。关于Go的内存泄露有这么一句话不知道你听过没有:10次内存泄露,有9次是goroutine泄露。我所解决的问题,也是goroutine泄露导致的内存泄露,所以这篇文章主要介绍Go程序的goroutine泄露,掌握了如何定位和解决goroutine泄露,就掌握了内存泄露的大部分场景。借鉴饶全成的...阅读全文

2019-05-18 11:09:22 一起学Golang
阅读:12180 评论:1

译文:Go 内存分配器可视化指南

译文:Go 内存分配器可视化指南 Sat 23 February 2019 当我第一次开始尝试理解 Go 语言的内存分配器时,整个过程让我抓狂。一切看起来都像一个神秘的黑盒子。因为几乎所有技术魔法(technical wizardry)都隐藏在抽象之下,所以你需要一层一层的剥离才能去理解它。 我们将通过这篇文章来一层层的剥离这些细节。如果你想学习所有关于 Go 内存分配器的知识,那么这篇文章正适合你。 物理内存和虚拟内存 每一个内存分配器都需要运行在由底层操作系统管理的虚拟内存空间(Virtua...阅读全文

2019-06-10 15:49 www.linuxzen.co 等
阅读:1497 评论:0

大话图解golang map

前言 网上分析golang中map的源码的博客已经非常多了,随便一搜就有,而且也非常详细,所以如果我再来写就有点画蛇添足了(而且我也写不好,手动滑稽)。但是我还是要写,略略略,这篇博客的意义在于能从几张图片,然后用我最通俗的文字,让没看过源码的人最快程度上了解golang中map是怎么样的。 当然,因为简单,所以不完美。有很多地方省略了细节问题,如果你觉得没看够,或者本来就想了解详细情况的话在文末给出了一些非常不错的博客,当然有能力还是自己去阅读源码比较靠谱。 那么下面我将从这几个方面来说明,你...阅读全文

2019.06.10 17:00* LinkinStar
阅读:2517 评论:0

深度解密Go语言之context

目录 什么是 context 为什么有 context context 底层实现原理 整体概览 接口 Context canceler 结构体 emptyCtx cancelCtx timerCtx valueCtx 如何使用 context 传递共享的数据 取消 goroutine 防止 goroutine 泄漏 context 真的这么好吗 总结 参考资料 Go 语言的 context 包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、...阅读全文

2019-06-12 08:46 qcrao-2018
阅读:1538 评论:0