Go 1.10 的pprof的工具将直接支持火焰图

google/pprof是一个性能可视化和分析工具,由Google的工程师开发。虽然自称不是Google官方的工具,但是项目挂在google的team下,而且还在Google其它项目中得到应用,是非常好的一个性能剖析工具。 go tool pprof 复制了一份google/pprof的代码, 封装了一个golang的工具,用来分析Go pprof包产生的剖析数据,也就是最终数据的处理和分析还是通过gogole/pprof来实现的。 这样,你至少就用两种方式来分析Go程序的 pprof数据: g...阅读全文

鸟窝 2017年11月22日 smallnest

Go 语言核心文件调试

程序调试对于检查和理解程序运行过程和状态是非常有用的。 一个核心转储文件( core dump file )中包含程序进程运行时的内存信息和进程状态。它主要用于程序的问题调试,以及在运行过程中理解程序的状态。这些对于我们诊断程序问题原因和分析生产环境中的服务问题有非常大的帮助。 在本文中,我会用一个非常简单的 hello world 网页应用服务举例,实际情况,我们的程序会更加复杂。对核心转储文件的分析意义在于可以帮助我们查看程序当时的运行情况,并可能让我们有机会重现当时的程序问题。...阅读全文

Go语言中文网 2017-11-23 10:04:40 jzhongming

Golang反射

为了验证go语言的反射机制,特谢了以下demo,基本涵盖了go反射的各种用法,由于代码都有注释,我就不分开解说了。 package main import ( "fmt" "reflect" ) type person struct { Name string `json:name` Age int `json:age` } func (this person)GetName() string{ fmt.Println("Call GetPerson") return this.Name } f...阅读全文

开源中国博客 2017-11-23 10:03:08 黑客画家

使用 Ansible Container 构建和测试应用程序

容器是一个日益流行的开发环境。作为一名开发人员,你可以选择多种工具来管理你的容器。本文将向你介绍 Ansible Container,并展示如何在类似生产环境中运行和测试你的应用程序。 入门 这个例子使用了一个简单的 Flask Hello World 程序。这个程序就像在生产环境中一样由 Apache HTTP 服务器提供服务。首先,安装必要的 docker 包: sudo dnf install docker Ansible Container 需要通过本地套接字与 Docker 服务进行通...阅读全文

Linux 中国 2017-11-19 06:11 geekpi

使用 LXD 容器运行 Ubuntu Core

Ubuntu Core 是什么? Ubuntu Core 是完全基于 snap 包构建,并且完全事务化的 Ubuntu 版本。 该系统大部分是只读的,所有已安装的应用全部来自 snap 包,完全使用事务化更新。这意味着不管在系统更新还是安装软件的时候遇到问题,整个系统都可以回退到之前的状态并且记录这个错误。 最新版是在 2016 年 11 月发布的 Ubuntu Core 16。 注意,Ubuntu Core 限制只能够安装 snap 包(而非 “传统” 软件包),并且有相当数量的 snap 包...阅读全文

Linux 中国 2017-11-23 00:42 aiwhj

MongoDB 上市后,带你认识这款非同一般的文档数据库

本文地址:https://linux.cn/article-9006-1.html 2017-10-28 20:18 收藏: 1 10 月 20 日,位于纽约的 MongoDB 在纳斯达克上市,当日收于 32.07 美元,比 24 美元的 IPO 价格高出 34%。MongoDB 首席财务官 Michael Gordon 放言:MongoDB 在数据库系统这个市场大有机会取代 IBM 和 Oracle!如此的霸气,底气哪里来? 大数据和云计算的风被谷歌吹起来的时候,被...阅读全文

Go语言中文网 2017-11-23 09:55:14 meission

软件开发

本文作者肯特·贝克Kent Beck,是最早研究软件开发的模式和重构的人之一,是敏捷开发的开创者之一,更是极限编程和测试驱动开发的创始人,同时还是 Smalltalk 和 JUnit 的作者,对当今世界的软件开发影响深远。现在 Facebook 工作。 本周我一直在整理 Facebook 代码,而且我喜欢这个工作。我的职业生涯中已经整理了数千小时的代码,我有一套使这种整理更加安全、有趣和高效的规则。 整理工作是通过一系列短小而安全的步骤进行的。事实上,规则一就是如果这很难,那就不要去做。我以前在...阅读全文

肯特·贝克:改变人生的代码整理魔法 2017-11-22 15:24 肯特·贝克:改变人生的代码整理 等

Jaeger源码分析——窥视分布式系统实现

原文地址:Jaeger源码分析——窥视分布式系统实现 前言 分析Jaeger源码主要有以下原因: 公司正在使用Jaeger,通过了解其源码,可以更好的把控这套系统。 了解分布式系统的设计 提升对golang的理解 提升个人英语 分析的版本为最新版本0.10.0,时间2017-11-23 Agent ——3部曲  agnet处于jaeger-client和collector之间,属于代理的作用,主要是把client发送过来的数据从thrift转为Batch,并通过RPC批量提交到collector...阅读全文

Segmentfault 2017-11-23 01:04:44 小卜邪

golang的goroutine调度机制

golang的goroutine调度机制 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] 一直对goroutine的调度机制很好奇最近在看雨痕的golang源码分析基于go14 这篇文章是去年整理的记录公司内部wiki上 一直对goroutine的调度机制很好奇,最近在看雨痕的golang源码分析,(基于go1.4) 感觉豁然开朗,受益匪浅; 去繁就简,再加上自己的一些理解,整理了一下 ~~ 调度器 主要基于三个基本对象上,G,M,P(定义在源码的src/runtime/...阅读全文

博客园 2017-11-21 19:27 xuyuan77

zip文件上传解析问题

现在有个需求,服务端需要对上传的的文件进行解析,对于没有包含指定文件夹的zip,需要报错!符合规范的就保存简单的说,如何在不保存上传过来的zip文件的同时,分析文件结构func (p *FileStruct) ValidFile() error {    contentType := p.File.Header.Get("Content-Type")    if contentType != "application/zip" {        return fmt.Errorf("请上传zip...阅读全文

Go语言中文网 2017-11-22 18:48:43 playboy307

Golang性能调优(go-torch, go tool pprof)

Go语言已经为开发者内置配套了很多性能调优监控的好工具和方法,这大大提升了我们profile分析的效率。此外本文还将重点介绍和推荐uber开源的go-torch,其生成的火焰图更方便更直观的帮我们进行性能调优。我也是在实际一次的性能调优中,接触到go-torch,非常棒。 go tool pprof简介 Golang内置cpu, mem, block profiler Go强大之处是它已经在语言层面集成了profile采样工具,并且允许我们在程序的运行时使用它们,使用Go的profiler我们能...阅读全文

CSDN博客 2017年01月04日 15:27:58 WaltonWang

Go使用grpc+http打造高性能微服务

大家可以发现,Go越来越流行,其一是目前云计算领域基本是使用Go作为底层开发语言;其二是随着区块链的火爆,引申出了其背后很多开源项目,很多都是使用Go语言进行开发;其三就是在微服务方面,Go也展示很大的优势性。那么微服务是什么,如何将其与Go做一个整合,来提升整体开发生产效率,下面会进行详细讲解。什么是微服务微服务的概念最早由 Martin Fowler 提出,在他的理论当中,微服务是一整套小的服务,其中每一个服务互相之间都是独立的,它们之间通过 lightweight 机制进行交互。图 1图 ...阅读全文

微信公众平台 2017-11-22 astaxie

基于Golang的IP地址信息查询服务

工作中经常会有通过IP匹配用户信息的需求,如确定用户所在的地区(国家/省份/城市)、运营商、时区、经纬度等等。前一阵有个Golang开发的项目也有这样的需求,于是简单实现了一个包,最近忙里偷闲又包了一个支持HTTP和GRPC方式调用的服务,并开源在GitHub上了。本文主要介绍IP地址信息查询的实现细节和使用方式。 首先交代一下GitHub地址: IpQuery Golang Package:https://github.com/tabalt/ipquery IP地址信息查询服务:https:/...阅读全文

开源中国博客 2017-11-22 17:03:24 mickelfeng

Go 系列教程 —— 1. 介绍与安装

这是我们 Golang 系列教程的第一个教程。 ## Golang 是什么 Go 亦称为 Golang (译注:按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易。(译注:Go 的定位是系统编程语言,只是对 Web 开发支持较好) ## 为何选择 Golang 既然有很多其他编程语言可以做同样的工作,如 Python...阅读全文

Go语言中文网 2017-11-22 14:18:25 heyulong

Go 中锁的使用

> > 本文对Go中锁机制的进行简单介绍 Go中锁分为两种: * 互斥锁 * 读写锁 --- 互斥锁 --- 并发程序对公共资源访问的限制最常见的就是使用互斥锁的方式。在Go中,sync.Mutex 提供了互斥锁的实现。 简单使用示例: func main () { var mutex sync . Mutex count := 0 for r := 0 ; r < 50 ; r ++ { go func () { mutex . Lock () count += 1 mutex ...阅读全文

知乎专栏 2017-11-18 18:47:03 薛锦

Go 原子操作

> > 本文讲解 golang 中 sync.atomic 的常见操作 atomic 提供的原子操作能够确保任一时刻只有一个goroutine对变量进行操作,善用 atomic 能够避免程序中出现大量的锁操作。 atomic常见操作有: * 增减 * 载入 * 比较并交换 * 交换 * 存储 下面将分别介绍这些操作。 ---- 增减操作 ---- atomic 包中提供了如下以Add为前缀的增减操作: - func AddInt32(addr *int32, delta int3...阅读全文

知乎专栏 2017-11-16 21:34:49 薛锦

Go设计模式实例:简单工厂

> > 该系列文章将用简单的例子来介绍Go语言设计模式的实现。 -------- 简单工厂模式定义 -------- * 工厂模式提供创建具体实例的功能,使用者无需关心其具体实现。 ---- 适用场景 ---- * 避免客户端知道内部的具体实现,只有工厂才能接触实现细节。返回的实例可以是接口、具体类型等。 ---- 简单实例 ---- * 利用工厂模式求几何图形的边长和面积。 package main import ( "fmt" "math" ) type GeometryTy...阅读全文

知乎专栏 2017-11-10 11:42:56 薛锦

Golang并发模式下数据一致性问题

-- 前言 -- 在Golang中,并发编程变得容易实现,仅需要起一个goroutine即可开启并发模式: go f ( "goroutine" ) 但是,在并发编程中存在不少需要注意的地方。这篇文章简单讨论下,在多个goroutine对MongoDB数据库进行操作时,保证操作一致性的方法。 ---- 问题描述 ---- 假设我们起了多个goroutine,如下: go func () { //step1: 获取所有 status==true 的记录 records , _ := m...阅读全文

知乎专栏 2017-11-09 15:29:38 薛锦

分布式弹幕服务架构

今天简单记录一下弹幕服务器的设计思路,希望对大家有所帮助。 业务特点 弹幕典型的进少出多场景,一个房间如果有10W观众,每秒提交的弹幕也许只有1000次,但是广播弹幕给所有观众需要1000 * 10W次。 单机模型 为了推送消息,长连接几乎是必然的选择。 每个房间有若干观众,所有房间的观众都连接在1个服务进程上。 当弹幕提交上来,根据房间找出所有房间内的在线用户,循环将弹幕推送给他们。 假设1个服务进程的消息网络吞吐能力是50万次/秒,那么一个10万观众的房间,每秒提交5次弹幕就会达到服务端极限...阅读全文

鱼儿的博客 2017-11-07 00:00 鱼儿的博客

封装golang websocket

websocket出来好久了,一直没有动手去玩玩,今天抽了点时间写了一个golang的例子,下面简单记录一下。 协议 websocket是个二进制协议,需要先通过Http协议进行握手,从而协商完成从Http协议向websocket协议的转换。一旦握手结束,当前的TCP连接后续将采用二进制websocket协议进行双向双工交互,自此与Http协议无关。 可以通过这篇知乎了解一下websocket协议的基本原理:《WebSocket 是什么原理?为什么可以实现持久连接?》。 粘包 我们开发过TCP服...阅读全文

鱼儿的博客 2017-11-07 00:00 鱼儿的博客