Go
Pixel_Pig
坚持,博客地址http://blog.csdn.net/dh626995617
展开
-
聊一聊Go的Context上下文
Context前言前面在“聊一聊http框架httprouter”的时候,有提到上下文的概念,上一个demo用来列举web框架中全局变量的传值和设置,类比了Java Spring框架中的ApplicationContext。这一次我们就来聊一聊Go中的标准库的context,梳理上下文概念在go中的常用情景。问题引入在列举上下文的用法之前,我们来看一个简单的示例:协程泄露func main() { //打印已有协程数量 fmt.Println("Start with goroutines原创 2020-05-16 23:37:42 · 596 阅读 · 0 评论 -
聊一聊Gin Web框架之前,看一眼httprouter
httprouter前言: Gin的词源是金酒, 又称琴酒, 是来自荷兰的一种烈性酒。在Go中,有一个经常提及的web框架,就是gin web,具备高性能,可灵活定制化的特点,既然它是如此被看好,在深入了解它之前,不妨先看下他是基于什么实现的。饮酒思源:httprouter根据Git作者描述,Gin的高性能得益于一个叫httprouter的框架生成的,顺着源头看,我们先针对httprout...原创 2020-04-05 11:13:25 · 3086 阅读 · 1 评论 -
聊一聊Go编写的命令行工具类
命令行工具原生flag包Go原生在flag包提供了一个命令行工具类,它可以让我们执行类似命令行的赋参操作,经常被运用于工具类,特别是数据处理过程,可以方便我们进行参数可视化注解。flag包提供了多个常用类型的赋值方法,如String, Int, Bool, Float64, Duration等。通过flag.XXXType()函数可以对参数名称,默认值,描述进行定义flag.parse...原创 2020-03-18 17:40:08 · 667 阅读 · 0 评论 -
聊一聊Go语言的error处理
前言Go语言的错误处理是一个常见的操作,经常可以见到一个函数返回错误类型(error),后续通过if err != nil来判断错误以及错误类型。这一次尝试通过Go内置的error接口,聊一聊Go语言的错误处理以及Error的惯例用法。Error接口接口签名type error interface { Error() string}我们先看Go的src/builtin内置error...原创 2020-02-03 00:58:45 · 736 阅读 · 0 评论 -
聊一聊操作系统线程调度与Go协程
前言我们计算机上面跑的每个任务,都是操作系统层面的资源分配,从启动进程到创建线程,在核数固定的情况下,多线程并发地执行。Go协程是一个比系统线程更细粒度的资源,轻量级和易切换。这几天看了一些相关的文章,这次尝试从操作系统到Go协程,简单聊聊它们是如何关联上的以及我个人的理解。基本概念操作系统(OS)操作系统负责着底层硬件的调度,它分配CPU,内存,磁盘的资源,并且替我们分配不同线程在不同...原创 2020-01-23 01:41:52 · 779 阅读 · 0 评论 -
聊一聊堆、栈与Go语言的指针
堆、栈与指针前言堆、栈在计算机领域是亘古不变的热门话题,归根结底它们和编程语言无关,都是操作系统层面的内存划分,后面尝试简单地拆开这几个概念,谈谈我对它们的理解。栈每个函数中每个值在栈中都是独占的,不能在其他栈中被访问。每个方法片(function frame)都有一个自己的独享栈,这个栈的生命周期随着方法开始结束诞生与消逝,在方法结束时候会被释放掉,较之于堆,栈的优势是比较轻量级,随用随...原创 2020-01-14 16:23:32 · 788 阅读 · 0 评论 -
Go协程间通信 # 生产者-消费者模型
Go协程间通信之 生产者-消费者模型通信原则Go开发有一个经常提及的原则:不要通过共享内存来通信(互斥锁同步),而要用通信来共享内存。前言在其他模式的开发语言中,比如Java有个常见的生产者-消费者模式,通过多个线程池与多个BlockingQueue进行交互,如LinkBlockedQueue, ArrayBlockedQueue等 ,由于队列内部通过锁机制帮我们集成了同步的功能,程...原创 2020-01-09 12:04:20 · 444 阅读 · 0 评论