Golang 推荐通过 channel 进行通信和同步,但在实际开发中 sync 包用得也非常的多,在以太坊的源码中也有很多这类应用的体现。 Go sync包提供了:sync.Mutex,sync.RMutex,sync.Once,sync.Cond,sync.Waitgroup,sync.atom ...
分类:
编程语言 时间:
2020-07-30 01:44:32
阅读次数:
86
Goroutine id 的获取方式 之前做的项目中,会使用 goroutine-id(以下简称 goid) 作为日志中的一个标识参数。而 goroutine 的相关信息是不对外暴露的。想要获取 goid,除了直接修改 Golang 源码的骚操作,通常会使用两种方式: 一种是通过堆栈获取。 func ...
分类:
其他好文 时间:
2020-07-21 21:36:28
阅读次数:
64
select语句让goroutine等待多个通信操作。 select会一直阻塞,直到其中一个case可以运行,然后执行那个case。如果有多个就绪,它就随机选择一个。 package main import "fmt" func fibonacci(c, quit chan int) { x, y ...
分类:
其他好文 时间:
2020-07-20 15:35:38
阅读次数:
64
没有Context时,如何在主线程中让一个死循环的子goroutine退出?1.设置全局变量,在循环里判断全局变量=1就退出,在main线程中修改全局变量。2.设置全局通道,在main中向通道里放值,在goroutine中判断通道中有没有值(用select多路复用),有值就退出循环有什么缺点?用全局 ...
分类:
其他好文 时间:
2020-07-09 19:14:41
阅读次数:
57
摘要:上次我们学习了 Golang 的 goroutine 调度策略,今天我们来学习 Golang 的内存管理策略。 思考内存管理如何设计 内存池 最直接的方式是调用 malloc函数,指定要分配的大小,直接向操作系统申请。问题是这种方式会涉及到用户态和内核态的切换过程,那么频繁的切换就会带来很大的 ...
分类:
其他好文 时间:
2020-07-08 12:58:36
阅读次数:
58
尽管 Golang 推荐通过 channel 进行通信和同步,但在实际开发中 sync 包用得也非常的多。另外 sync 下还有一个 atomic 包,提供了一些底层的原子操作(这里不做介绍)。本篇文章主要介绍该包下的锁的一些概念及使用方法。 整个包都围绕这 Locker 进行,这是一个 inter ...
分类:
其他好文 时间:
2020-07-02 13:44:18
阅读次数:
47
runtime 调度器是个非常有用的东西,关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行 NumCPU:返回当前系统的 CPU 核数量 GOMAXPROCS:设置最大的可同时使用的 CPU 核数 Goexi ...
分类:
其他好文 时间:
2020-06-29 18:27:15
阅读次数:
65
一、下载链接https://portal.influxdata.com/downloads,选windows版 二、解压到安装盘,目录如下 三、修改conf文件,代码如下,直接复制粘贴(1.4.2版本),注意修改路径,带D盘的改为你的安装路径就好,一共三个,注意网上有配置admin进行web管理,但 ...
分类:
数据库 时间:
2020-06-29 15:36:23
阅读次数:
96
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。 调优清单 好了,在这里先列出调优清单。请记住,这里只是笔者在内网进行TCP内核参数调优的 ...
分类:
系统相关 时间:
2020-06-26 18:17:15
阅读次数:
107
摘要:Go 能很好的支持并发模型,这也是 Go 如此火热的原因,那今天我们来学习 Go 的调度机制。 数据结构 G 结构体 G 是 goroutine 的缩写,相当于操作系统中的进程控制块,在这里就是 goroutine 的控制结构,是对 goroutine 的抽象,下面是 G 的结构(只列出了部分 ...
分类:
其他好文 时间:
2020-06-22 01:07:54
阅读次数:
104