go runtime

零 前置知识 操作系统的每个进程都认为自己可以访问计算机的所有物理内存,但由于计算机必定运行着多个程序,每个进程都不能拥有全部内存。 为了避免了进程直接访问实际的物理地址,操作系统会将物理内存虚拟为一个数组,每个元素都有一个唯一的物理地址(PA)。 物理存储其器中存储着一个页表(page table),该表即虚拟地址与物理地址的映射表,读取该也表,即可完成地址翻译。 假设一个程序访问地址为0x1001的内存,实际上,该数据并不一定是存储在0x1001的物理地址中,甚至也不在物理内存中(如果物理内...阅读全文

2020-11-19 22:45:24 voidFan
阅读:842 评论:0

给大家丢脸了,用了三年golang,我还是没答对这道resp.Body.Close() 引发的内存泄漏题

给大家丢脸了,用了三年golang,我还是没答对这道内存泄漏题。问题package main import ( "fmt" "io/ioutil" "net/http" "runtime" ) func main() { num := 6 for index := 0; index < num; index++ { resp, _ := http.Get("https://www.baidu.com") _, _ = ioutil.ReadAll(resp.Body) } fmt.Printf(...阅读全文

2020-11-27 23:32:31 ilini
阅读:2210 评论:0

大话后端开发的奇淫技巧(二)

从事服务端工作,已经有大几年了,从懵懂的小菜鸡,成长为可以自由飞翔的秃鹰,那些逝去青春和的头发见证了自己的成长 或许,这就是高手的应该有样子吧 头秃图 这里将会把类似的问题/业务场景的解决方案中,提炼出相对通用的部分,作为经验进行梳理罗列出来,共勉 幂等 业务场景: 用户多次点击按钮,或者因为设备的性能问题,连接的网络问题,点击按钮没反应,用户就会继续尝试点击,导致触发多次请求提交 解决方案: 客户端防重点击: 防重点击,只允许点击一次,通过记录按钮的状态值,控制按钮不可点击,等响应结果回来才能...阅读全文

2020-12-23 10:32:47 SFLYQ
阅读:1215 评论:0

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停...

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停止运行,如何实现? 福哥答案2021-03-11: 1.外部协程和内部协程没关系。 2.如果程序不奔溃,不会影响内部协程继续执行。如果没做特殊处理,整个程序会奔溃。 3.三种方式:共享变量作为标志位,通道,上下文context。这三种方式均是协作式中断,不是抢占式。对于程序员,是无法实现抢占式中断的。 如...阅读全文

2021-03-11 23:32:46 福大大架构师每日一题
阅读:1065 评论:0