随笔- 454
文章- 302
评论- 28
阅读-
65万
随笔分类 - golang
golang并发编程:通道
摘要:通道 通道是Go中的一种一等公民类型。它是Go的招牌特性之一。 和另一个招牌特性协程一起,这两个招牌特性使得使用Go进行并发编程(concurrent programming)变得十分方便和有趣,并且大大降低了并发编程的难度。 通道的主要作用是用来实现并发同步。 本篇文章将列出所有的和通道相关的概念
阅读全文
golang并发编程:并发同步概述
摘要:并发同步概述 本文将解释什么是并发同步,并列出Go支持的几种并发同步技术。 什么是并发同步? 并发同步是指如何控制若干并发计算(在Go中,即协程),从而 避免在它们之间产生数据竞争的现象; 避免在它们无所事事的时候消耗CPU资源。 并发同步有时候也称为数据同步。 Go支持哪些并发同步技术? 通道一文
阅读全文
网络代理之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粘包和拆包
阅读全文
golang接口值 (Go程序员的陷阱)
摘要:概念上讲一个接口的值,接口值,由两个部分组成,一个具体的类型和那个类型的值。它们被称为接口的动态类型和动态值。对于像Go语言这种静态类型的语言,类型是编译期的概念;因此一个类型不是一个值。在我们的概念模型中,一些提供每个类型信息的值被称为类型描述符,比如类型的名称和方法。在一个接口值中,类型部分代表与之相关类型的描述符。
阅读全文
golang的mgo库带账号密码连接mongodb
摘要:// mongodbAuth project main.go package main import ( "fmt" "os" "gopkg.in/mgo.v2" ) func main() { fmt.Println("Hello World!") session := InitMongoSess
阅读全文
golang替换字符串区分大小写
摘要:test := "a,b,c,d,e" aaa := test keywordSlice := strings.Split(test,",") for _,v := range keywordSlice{ reg := regexp.MustCompile("(?i)"+v) aaa = reg.R
阅读全文