随笔分类 -  go

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

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 阅读(309) 评论(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 阅读(610) 评论(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 阅读(522) 评论(0) 推荐(0) 编辑

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

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

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

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

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

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

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

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

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

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

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

posted @ 2021-04-16 00:42 ExplorerMan 阅读(514) 评论(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 阅读(83) 评论(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 阅读(87) 评论(0) 推荐(0) 编辑

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

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

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

posted @ 2021-04-15 23:47 ExplorerMan 阅读(623) 评论(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 阅读(1040) 评论(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 阅读(919) 评论(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 阅读(85) 评论(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 阅读(4051) 评论(0) 推荐(0) 编辑

漫画Go语言中如何将数组切片复制/拷贝
摘要:赖思与甜甜,有趣有料有温度,技术学习有思路! Go中的Array数组,是用来存放相同类型元素的固定大小的集合。如何将数组复制到另一个数组呢?看看赖思有何妙招! func main() { arr := [3]int{1, 2, 3} arr2 := arr arr3 := &arr fmt.Prin 阅读全文

posted @ 2021-04-06 17:22 ExplorerMan 阅读(251) 评论(0) 推荐(0) 编辑

[go-rate] 速率限制器
摘要:go-rate是速率限制器库,基于 Token Bucket(令牌桶)算法实现。 go-rate被用在LangTrend的生产中 用于遵守GitHub API速率限制。 速率限制可以完成一些特殊的功能需求,包括但不限于服务器端垃圾邮件保护、防止api调用饱和等。 库使用说明 构造限流器 我们首先构造 阅读全文

posted @ 2021-04-06 17:17 ExplorerMan 阅读(340) 评论(0) 推荐(0) 编辑

使用fresh类库实现Go gin热重启
摘要:最近在学习Golang,每次修改代码之后都需要重新build,Go目前没有内置代码热更新的工具,找了一下找到了第三方类库fresh,在开发的时候使用起来炒鸡方便的。 安装 go get github.com/pilu/fresh 使用 进入项目根目录 cd $GOPATH/src/fresh_tes 阅读全文

posted @ 2021-04-06 16:01 ExplorerMan 阅读(804) 评论(0) 推荐(0) 编辑

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

导航