专题:golang
共60篇相关文章

Go runtime 调度器案例分析,如何深入理解其工作原理?
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 前面用了六讲介绍 Go runtime 调度器,这一讲我们看一个关于调度 goroutine 的程序案例分析下调度器做了什么。需要说明的是,这个程序和抢占有关,抢占目前为止还没有介绍到...

Go运行时调度器中,如何运行时间过长被抢占的情况?
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 在 Go runtime 调度器精讲(七):案例分析 一文我们介绍了一个抢占的案例。从案例分析抢占的实现,并未涉及到源码层面。本文将继续从源码入手,看 Go runtime 调度器是如...

Go runtime 调度器中系统调用引发的抢占机制是如何的?
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 第八讲介绍了当 goroutine 运行时间过长会被抢占的情况。这一讲继续看 goroutine 执行系统调用时间过长的抢占。 1. 系统调用时间过长的抢占 看下面的示例: func...

Go runtime 调度器异步抢占是啥?
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占。本讲会介绍基于信号的真抢占式调度。 在介绍真抢占式调度之前看下 Go 的两种抢占式调度器: 抢占式调度器 - Go 1...

Go runtime 调度器精讲(十一):总览全局为,可以这样表达:Go runtime 调度器精讲(十一):总览全局是啥?
原创文章,欢迎转载,转载请注明出处,谢谢。 【目录】 Go runtime 调度器精讲(一):Go 程序初始化 Go runtime 调度器精讲(二):调度器初始化 Go runtime 调度器精讲(三):main goroutine 创建...

如何将Go源码编译流程描述成一个?
Go 源码编译流程 Go 编译源代码需要经过编译,链接过程。通过以下示例看 Go (Go 版本为 v1.24.1)语言是如何编译源码的。 首先,代码目录结构如下: ➜ demo1 git:(main) ✗ tree . . ├── cm...

如何避免在Go语言编程中常见的那些容易忽略的细节问题?
可读性 Go 中 if else 应遵循快乐路径,即先考虑(退出返回跳过)错误情况,否则代码层级嵌套过重,可读性会变差。 作用域 Go 中的作用域分为显式作用域和隐式作用域。显示作用域是花括号包裹的代码块,隐式作用域定义如下: 宇宙(U...

Go sync.pool的学习笔记中,有哪些或专业术语需要特别注意?
概述 sync.pool 对象池可以用来复用临时对象,减少内存压力,降低 GC 压力。 示例 基本用法 type Worker struct{} func (w *Worker) Name() string { return &am...

同步异步与阻塞非阻塞,哪种方式更适合我的应用场景?
概述 看了几篇同步,异步,阻塞和非阻塞的文章,感觉还是云里雾里的。本文结合自己的理解写几个例子加深印象,可能理解有误。大佬们可以帮忙批评指正。 个人理解同步异步,阻塞非阻塞是站在不同角度看的概念。 同步异步:站在被调用方视角看,同步会...

Go nethttp 学习笔记中,如何高效构建SEO策略?
概述 在使用 Go 开发时几乎都会用到 nethttp 标准库。但是,对库的内部实现不了解,仅限于会用。遇到问题容易懵,比如: 长连接和短连接有什么区别?具体什么实现原理? nethttp 如何处理并发请求? nethttp 有用到缓...

如何将Golang的条件编译转化为?
写cc++或者rust的开发者应该对条件编译不陌生,条件编译顾名思义就是在编译时让代码中的一部分生效或者失效,从而控制编译时的代码执行路径,进而影响编译出来的程序的行为。 这有啥用呢?通常在编写跨平台代...

Golang unsafe字符串拼接优化,bug如何规避?
最近料理老项目的时候被unsafe坑惨了,这里挑一个最不易察觉的错误记录一下。 这个问题几乎影响近几年来所有的go版本,为了方便讨论我就用最新版的1.24.3做例子了。 线上BUG 我们有一个收集集群信息的线上系统,这个系统有好几个数据源而...

在Golang遍历map时,如何避免陷入性能陷阱?
最近一直在重构优化老系统,所以性能优化相关的文章会比较多。 这次的是有关循环处理map时的性能优化。预分配内存之类的大家都知道的就不多说了,今天来讲点大伙不知道的。 要讲的一共有三点,而且都和循环处理map有关。 不要用for-range循...

如何使用uint64_t批量比较短字符串为?
记录一下从开源代码里学来的短字符串比较优化。 这个优化只适用于长度在八字节以下的字符串,且只适用于优化相等比较。 原理 想要判断字符串相等,常见的有利用strcmp、利用字符串的hash或者利用正则表达式等。 就速度而言strcmp &am...

atomic不是免费午餐,难道就没有免费的好选择吗?
很多初级甚至中级开发会滥用atomic,因为在他们的世界观里atomic比mutex轻量,性能总是优于锁的。 这话不能算错,但有个很重要的前提,那就是原子操作竞争不激烈的时候。 “竞争激烈”是指什么呢,指的是有很多线程在同一个资源上大量执行...
