#Go

Go语言开发的顶级项目

发布于:2019-11-20

前言 自从10年前Google正式发布第一个版本的Go语言以来,Go语言的发展风风火火的走过10个年头,虽然现在仍然不能算是编程开发的王牌(于java、C、Pyhton相比),但是谁也不能忽视Go语言在如今编程领域的存在。 一个开发语言要想获得成功当然离不开自身的不带完善和优化,但是出色的顶级项目的出现也是激发更多人开始关注并且使用Go语言的重要原因,下面就来简单的盘点一下Go语言问世10周年以来那些由Go语言开发出来的赫赫有名的顶级项目,前半部分主要是国外友人的项目,最后几个是国人开发的项目。 Docker 官网地址:https://www.docker.com/ 官方文 …...

进入阅读

流量复制技术

发布于:2019-09-20

为什么需要流量复制 对于一些有并发要求的业务,特别是对接外部流量时,产品上线前一定要做的就是压力测试,但是常规的压力测试并不能覆盖所有情况。以gemeter、ab,、webbench、http_load为例,这些通过模拟请求的压测工具,只能发送特定的参数,对于一些参数异常导致的程序处理异常是无法考虑到的,所以就需要一款能复制真实流量,并且不影响线上业务的工具。 流量复制工具有很多,例如Gor、tcpreplay、tcpcopy等,这些工具贴合真实场景,能模拟真实流量,并支持流量的放大或缩小,更容易测试出程序的瓶颈和潜在问题。 常见的流量复制工具有如下几种: …...

进入阅读

go modules使用

发布于:2019-08-26

go modules机制 go modules是golang在1.11版本中作为实验性功能加入,并在1.12版本中将go modules纳入正式支持。go modules是一个新型的go包管理工具,用于解决go程序的包依赖问题。 在go modules出现之前,go程序的第三方包依赖管理一直是个头疼的问题,曾经出现过的包管理工具有govendor、dep、glide、godep等,这些包管理工具都是基于GOPATH或者vendor目录,并不能很好的解决不同版本依赖问题。go modules是在GOPATH之外一套新的包管理方式。 模块是相关Go包的集合。modules是源代码交换和版本控制的单 …...

进入阅读

常见排序算法原理——Go语言实现

发布于:2019-06-17

冒泡排序——Bubble Sort 算法原理 它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。 package main import "fmt" func main() { arr := []int{1, 3, 45, 32, …...

进入阅读

Go常用标准命令简介

发布于:2018-12-03

Go标准命令概述 Go 语言自带了一套完整的命令操作工具,我们可以在命令行中执行go来查看相关帮助 Usage: go <command> [arguments] The commands are: bug start a bug report build compile packages and dependencies clean remove object files and cached files doc show documentation for package or symbol env print Go environment information fix …...

进入阅读

GO程序性能调试工具——pprof

发布于:2018-10-13

pprof pprof是Golang的runtime内建的用于可视化和分析性能分析数据的工具,能帮助我们对程序运行时的 CPU、内存进行分析。 pprof 以 profile.proto 读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告) pprof能做的分析包括: CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置 Memory Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏 Block …...

进入阅读

Goroutine间的通信——channel机制

发布于:2018-06-25

并发与并行 关于并发和并行的区别,引用一个经典的描述: 并发是同一时间应对(dealing with)多件事情的能力。 并行是同一时间动手(doing)做多件事情的能力。 雨痕老师《Go 语言学习笔记》上的解释: 并发是指逻辑上具备同时处理多个任务的能力;并行则是物理上同时执行多个任务。 并发是代码的特性,并行是正在运行的程序的特性。随着抽象层次的降低,并发模型实际上变得更难也更重要,而越低层次的并发模型对我们也越重要。要想并发程序正确地执行,就要深入研究并发模型。 要想一段并发的代码没有任何bug,是非常困难的。有些并发bug是在系统上线数年后才发现的,原因常常是很诡异的,比如用户数 …...

进入阅读

Goroutine的调度机制——MPG模型

发布于:2018-06-23

goroutine goroutine是Go语言原生支持并发的具体实现,Go代码都无一例外地跑在goroutine中。 可以启动许多甚至成千上万的goroutine,但它们并不是被操作系统所调度执行,Go的runtime负责对goroutine进行调度执行。 除了被系统调用阻塞的线程外,Go运行库最多会启动$GOMAXPROCS个线程来运行goroutine。 和所有其他并发框架里的协程一样,goroutine里所谓“无锁”的优点只在单线程下有效,如果$GOMAXPROCS > 1并且协程间需要通信,Go运行库会负责加锁保护数据 goroutine调度 goroutine调度就是决定何时 …...

进入阅读

Go的异常处理-panic,defer,recover

发布于:2017-12-14

Go的异常处理 Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。 在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的Exception处理:defer, panic, recover。 Go的异常处理可以这么简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理 panic Golang里比较常见的错误 …...

进入阅读

Go语言并发编程

发布于:2017-03-12

并发编程 Go语言是在多核和网络化的时代背景下诞生的原生支持并发的编程语言。毫不夸张的说Go语言的这一特性是吸引很多编程玩家痴迷于Go语言开发的重要原因。 在早期,CPU都是以单核的形式顺序执行机器指令,Go语言的祖先C语言正是这种顺序编程语言的代表。所有的指令都是以串行的方式执行,在相同的时刻有且仅有一个CPU在顺序执行程序的指令。 随着处理器技术的发展,单核时代以提升处理器频率来提高运行效率的方式遇到了瓶颈,目前各种主流的CPU频率基本被锁定在了3GHZ附近。单核CPU的发展的停滞,给多核CPU的发展带来了机遇。相应地,编程语言也开始逐步向并行化的方向发展。 常见的并发编程主要是基于多线程 …...

进入阅读

Go语言中的数据类型

发布于:2017-01-21

Go语言类型分类分类 Go语言将数据类型分为四类: 基础类型:数值、字符串、布尔型 复合类型:数组、结构体 引用类型:指针、切片、字典、函数、通道 接口类型:接口、错误 数值类型 Go语言的数值类型包括几种不同大小的整数、浮点数和复数,每种数值类型都决定了对应的大小范围和是否支持正负符号。 有符号整数类型包括:int8、int16、int32和int64 无符号整数类型包括:uint8、uint16、uint32和uint64 浮点数类型包括:float32、float64 复数类型包括:complex64、complex128 还有两种一般对应特定CPU平台机器字大小的有符号和无符号整 …...

进入阅读

分类

开发
    --go (9)
    --java (5)
    --php (11)
    --mysql (9)
    --javascript (3)
    --html (1)
    --算法 (6)
架构
    --理论 (9)
    --网络 (3)
    --服务器 (2)
    --消息队列 (3)
    --容器 (5)
    --监控 (1)
    --搜索引擎 (3)
    --大数据 (0)
    --测试 (1)
系统
    --linux (10)
    --mac (2)
    --windows (1)
足球
    --世界杯 (60)
    --欧洲杯 (28)
    --文迷 (3)
大学时光
    --校园生活 (96)
    --假期生活 (17)
    --广院杯那些事 (14)
    --北京奥运 (6)
    --胡思乱写 (17)


最近发布

零拷贝技术介绍

服务网格技术简介

C语言标准和标准库简介

Kubernetes简介及环境搭建

Go语言开发的顶级项目


归档

2006 (109)
2007 (40)
2008 (47)
2009 (10)
2010 (6)
2012 (10)
2013 (14)
2014 (27)
2015 (15)
2016 (6)
2017 (8)
2018 (11)
2019 (17)
2020 (5)