随笔- 452
文章- 302
评论- 28
阅读-
64万
08 2020 档案
golang如何优雅地关闭通道
摘要:在本文发表数日前,我曾写了一篇文章来解释通道的规则。 那篇文章在reddit和HN上获得了很多点赞,但也有很多人对Go通道的细节设计提出了一些批评意见。 这些批评主要针对于通道设计中的下列细节: 没有一个简单和通用的方法用来在不改变一个通道的状态的情况下检查这个通道是否已经关闭。 关闭一个已经关闭的
阅读全文
golang设计模式之选项模式
摘要:type Options struct { StrOption1 string StrOption2 string StrOption3 string IntOption1 int IntOption2 int IntOption3 int} type Option func(opts *Optio
阅读全文
golang 并发编程 通道用例大全
摘要:在阅读本文之前,请先阅读通道一文。 那篇文章详细地解释了通道类型和通道值,以及各种通道操作的规则细节。 一个Go新手程序员可能需要反复多次阅读那篇文章和当前这篇文章来精通Go通道编程。 本文余下的内容将展示很多通道用例。 希望这篇文章能够说服你接收下面的观点: 使用通道进行异步和并发编程是简单和惬意
阅读全文
golang通道 channel详解
摘要:通道(channel)介绍 通道是Go中的一种一等公民类型。它是Go的招牌特性之一。 和另一个招牌特性协程一起,这两个招牌特性使得使用Go进行并发编程(concurrent programming)变得十分方便和有趣,并且大大降低了并发编程的难度。 通道的主要作用是用来实现并发同步 Go提供了一种独
阅读全文
golang并发编程:通道
摘要:通道 通道是Go中的一种一等公民类型。它是Go的招牌特性之一。 和另一个招牌特性协程一起,这两个招牌特性使得使用Go进行并发编程(concurrent programming)变得十分方便和有趣,并且大大降低了并发编程的难度。 通道的主要作用是用来实现并发同步。 本篇文章将列出所有的和通道相关的概念
阅读全文
golang并发编程:并发同步概述
摘要:并发同步概述 本文将解释什么是并发同步,并列出Go支持的几种并发同步技术。 什么是并发同步? 并发同步是指如何控制若干并发计算(在Go中,即协程),从而 避免在它们之间产生数据竞争的现象; 避免在它们无所事事的时候消耗CPU资源。 并发同步有时候也称为数据同步。 Go支持哪些并发同步技术? 通道一文
阅读全文
/var/spool/postfix/maildrop 出现大量文件原因和解决办法
摘要:今天发现服务器硬盘报警,出现空间不足的情况,后经查看发现是 /var/spool/postfix/maildrop 有大量文件,但服务器本身没有启动 postfix服务。 继续上网查资料,发现是crontab 每次执行任务后会发送邮件,接受者是在他的配置文件 “/etc/crontab” 通过 MA
阅读全文
网络代理之HTTP代理(golang反向代理、负载均衡算法实现)
摘要:网络代理与网络转发的区别 golang实现发现代理 ReverseProxy ReverseProxy功能
4中负载轮训类型实现以及接口封装
拓展中间件支持:限流、熔断实现、权限、数据统计
用ReverseProxy实现一个http代理
负载均衡算法
阅读全文
Golang标准库深入 - 锁、信号量(sync)
摘要:概述 sync包提供了基本的同步基元,如互斥锁。除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些。 本包的类型的值不应被拷贝。 虽然文档解释可能不够深入,或者浅显易懂,但是我觉得还是贴出来,对比了解可能会更好。 Go语言中实现并发或者是
阅读全文
Go语言(container介绍)
摘要:天,Mayuyu来介绍Go语言中一个重要的东西,叫做container。具体源码可以参考Go语言的源代码,如下 路径:/usr/local/go/src/pkg/container Github上的路径为:https://github.com/astaxie/gopkg/tree/master/co
阅读全文
数据结构——Golang实现堆栈
摘要:1. 栈(stack) 栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后
阅读全文
Go 堆栈的理解
摘要:在讲Go的堆栈之前,先温习一下堆栈基础知识。 什么是堆栈?在计算机中堆栈的概念分为:数据结构的堆栈和内存分配中堆栈。 数据结构的堆栈: 堆:堆可以被看成是一棵树,如:堆排序。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具
阅读全文
Go语言的序列化与反序列化(binary) BigEndian LittleEndian
摘要:encoding/binary包实现了简单的数字(固定长度的数字类型或者只包含定长值的结构体或数组)与字节系列的转换以及变长值的编解码。 func Write(w io.Writer, order ByteOrder, data interface{}) error序列化,将数据转换成byte字节流
阅读全文
golang中encoding/binary包
摘要:1、golang包中的binary包是什么? 2、binary为我们开发者提供了哪些内容?以及怎么使用? 3、编解码有哪几种方法? 转化成二进制格式与原本数据转字符串相比会更节省空间 一、golang包中的binary包是什么? 此包实现了对数据与byte之间的转换,以及varint的编解码。 二、
阅读全文
golang微服务网关一:网络基础知识扫盲(温故而知新)
摘要:golang微服务网关,tcp udp 三次握手 四次挥手 tcp流量控制 tcp拥塞控制 CLOSE_WAIT FIN_WAIT tcp粘包和拆包
阅读全文