随笔分类 -  go

上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页

golang goroutine实现_golang中的Mutex设计原理详解(一)
摘要:Mutex系列是根据我对晁岳攀老师的《Go 并发编程实战课》的吸收和理解整理而成,如有偏差,欢迎指正~ 目标本系列除了希望彻底学习和了解 golang 中 sync.Mutex 的原理和使用,更希望借 golang 中 Mutex 的发展和演变,了解并发场景下锁的设计与实现方法以及不同业务场景下的一 阅读全文

posted @ 2021-04-21 10:09 ExplorerMan 阅读(182) 评论(0) 推荐(0)

Sentinel Go 核心统计结构滑动窗口的深度解析
摘要:Sentinel Go 核心模块分析之滑动窗口统计结构设计什么是滑动时间窗口滑动窗口基本运行模式滑动窗口的周期和格子长度怎么设置?滑动窗口长度一致,格子长度不一致格子长度一致,滑动窗口长度不一致总结Sentinel Go时间滑动窗口实现长度可设置的原子数组基于时间的滑动窗口实现 本文主要分析 Sen 阅读全文

posted @ 2021-04-21 10:08 ExplorerMan 阅读(322) 评论(0) 推荐(0)

golang sync.Mutex互斥锁的实现原理
摘要:golang sync.Mutex互斥锁的实现原理数据结构与状态机Lock(1)正常模式(2) 饥饿模式Unlocksync.Mutex是一个不可重入的排他锁。 这点和Java不同,golang里面的排它锁是不可重入的。 当一个 goroutine 获得了这个锁的拥有权后, 其它请求锁的 gorou 阅读全文

posted @ 2021-04-21 10:07 ExplorerMan 阅读(475) 评论(0) 推荐(0)

Golang-Scheduler原理解析
摘要:Golang Scheduler原理解析Section1 Scheduler原理1.基础知识2.调度模型3.调度核心问题Section2 主要模型的源码分析2.1 实体M2.2 实体P(processor)2.3 实体G(goroutine)Section3 主要调度流程的源码分析3.1 预备知识3 阅读全文

posted @ 2021-04-21 10:06 ExplorerMan 阅读(380) 评论(0) 推荐(0)

Golang-Channel原理解析
摘要:本文主要分析golang实现并发基础组件channel的实现原理;主要内容分为几个部分Section1:channel使用实例分析Section2:源码分析 Golang-Channel原理解析Section1 channel使用实例1.1 make channel1.2 sends and rec 阅读全文

posted @ 2021-04-21 10:04 ExplorerMan 阅读(666) 评论(0) 推荐(0)

golang里channel的实现原理
摘要:channel是消息传递的机制,用于多线程环境下lock free synchronization. 它同时具备2个特性: 1. 消息传递 2. 同步 golang里的channel的性能,可以参考前一篇:http://blog.sina.com.cn/s/blog_630c58cb01016xur 阅读全文

posted @ 2021-04-21 09:52 ExplorerMan 阅读(542) 评论(0) 推荐(0)

GO语言的goroutine并发原理和调度机制
摘要:1. 线程(Thread)和协程(Coroutine)的定义 Go语言最大的特色就是从语言层面支持并发(Goroutine),Goroutine是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Goroutine。当程序启动时,它会自动创建。 为了更好理解Goroutin 阅读全文

posted @ 2021-04-19 18:31 ExplorerMan 阅读(627) 评论(0) 推荐(0)

golang 常见问题
摘要:1、go的调度 2、go struct能不能比较 因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型 3、go defer(for defer),先进后出,后进先出 4、select可以用于什么,常用语gorotine的完美退出 gola 阅读全文

posted @ 2021-04-19 18:06 ExplorerMan 阅读(352) 评论(0) 推荐(0)

Go语言---strings包(字符串操作)
摘要:strings标准库包主要涉及字符串的基本操作。 常见字符串的操作有: 字符串求长度 求子串 是否存在某个字符或者子串 子串出现的次数(字符串匹配) 字符串分割(切分)成[]string 字符串是否存在某个前缀或后缀 字符或者子串在字符串中首次出现的位置或最后一次出现的位置 通过某个字符串将[]st 阅读全文

posted @ 2021-04-16 11:43 ExplorerMan 阅读(1124) 评论(0) 推荐(0)

gRPC为什么用HTTP2作为传输协议
摘要:HTTP / 2: 多路复用 TCP连接 二进制代替文本 标题压缩 服务器推送 基于HTTP/2 的缺点 rpc的元数据的传输不够高效 尽管HPAC可以压缩HTTP Header,但是对于rpc来说,确定一个函数调用,可以简化为一个int,只要两端去协商过一次,后面直接查表就可以了,不需要像HPAC 阅读全文

posted @ 2021-04-16 10:38 ExplorerMan 阅读(545) 评论(0) 推荐(0)

Golang 服务优雅重启
摘要:很多时候对于服务升级的做法简单粗暴, 就简单的杀进程启动新的进程. 还有的好一点就是多个相同的服务依次升级, 保证有服务可用. 但是公平的说这两种都会丢失请求中的连接. 鉴于这种情况, 在现实中我们可以使用优雅重启来搞定这个问题. Golang 实现优雅重启的原理也很简单: 监听 USR2 信号; 阅读全文

posted @ 2021-04-16 10:21 ExplorerMan 阅读(312) 评论(0) 推荐(0)

go优雅重启或停止
摘要:想要优雅地重启或停止你的Web服务器,使用下面的方法 我们可以使用fvbock/endless来替换默认的ListenAndServe,有关详细信息,请参阅问题#296 router := gin.Default() router.GET("/", handler) // [...] endless 阅读全文

posted @ 2021-04-16 00:42 ExplorerMan 阅读(557) 评论(0) 推荐(0)

go语言sync包的学习(Mutex、WaitGroup、Cond)
摘要:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 阅读全文

posted @ 2021-04-16 00:25 ExplorerMan 阅读(92) 评论(0) 推荐(0)

go语言中container容器数据结构heap、list、ring
摘要:heap堆的使用: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 阅读全文

posted @ 2021-04-16 00:22 ExplorerMan 阅读(97) 评论(0) 推荐(0)

分析golang内存占用情况
摘要:性能优化是个永恒的话题,而很多时候我们在作性能优化的时候,往往基于代码上面的直觉,把所有能想到的优化都优化了一遍,不错过任何小的优化点,结果整个代码的逻辑变得极其复杂,而性能上面并没有太大的提升。事实上,性能问题往往集中在某些小点,有时候很小的改动就能有巨大的提升,所以问题的关键是是怎么去找出这些优 阅读全文

posted @ 2021-04-15 23:49 ExplorerMan 阅读(1293) 评论(0) 推荐(0)

Golang中sync.Map的实现原理
摘要:前言前面,我们讲了map的用法以及原理Golang中map的实现原理,但我们知道,map在并发读写的情况下是不安全。需要并发读写时,一般的做法是加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,今天,我们就来讲讲 sync.Map的用法以及原理 使用 阅读全文

posted @ 2021-04-15 23:47 ExplorerMan 阅读(661) 评论(0) 推荐(0)

golang实现控制cpu使用率
摘要:package main import ( "runtime")func main() { runtime.GOMAXPROCS(3) go task() go task() select{}}func task(){ a := 100 for { a += 1 }}上面代码正常情况下会使cpu使用 阅读全文

posted @ 2021-04-15 11:09 ExplorerMan 阅读(1172) 评论(0) 推荐(0)

golang下Map的使用和性能分析(勿滥用锁)
摘要:golang 中 map 性能优化[低阶] 简单介绍 golang 中的 build-in 的 map 这个 map 是非线程安全的,但是也是最常用的一个家伙。 为了测试多个 map 的性能我写了个接口 Map type Map interface { Set(key string, val int 阅读全文

posted @ 2021-04-15 00:32 ExplorerMan 阅读(1039) 评论(0) 推荐(0)

golang结构体方法指针
摘要:结构体方法指针 package main import "fmt" type SA struct { name string} func (o *SA) SetName(n string) { o.name = n} func (o SA) SetNameA(n string) { o.name = 阅读全文

posted @ 2021-04-15 00:20 ExplorerMan 阅读(131) 评论(0) 推荐(0)

golang面试题整理
摘要:golang面试题整理 1、go的调度2、go struct能不能比较 因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型 3、go defer(for defer),先进后出,后进先出 func b() { for i := 0; i 阅读全文

posted @ 2021-04-06 17:25 ExplorerMan 阅读(4104) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 ··· 16 下一页

导航