首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
Golang
订阅
生活如此多娇
更多收藏集
微信扫码分享
微信
新浪微博
QQ
15篇文章 · 0订阅
Go语言大厂编程 context 上下文管理
context 有什么作用 context 主要用来在goroutine 之间传递上下文信息,包括:取消信号、超时时间、截止时间、k-v 等。 Go 常用来写后台服务,通常只需要几行代码,就可以搭建一
不得不知道的Golang之sync.Map源码分析
众所周知,go普通的map是不支持并发的,换而言之,不是线程(goroutine)安全的。博主是从golang 1.4开始使用的,那时候map的并发读是没有支持,但是并发写会出现脏数据。golang 1.6之后,并发地读写会直接panic: 第三方类库 concurrent-m…
图解Golang的channel底层原理
废话不多说,直奔主题。 buf是有缓冲的channel所特有的结构,用来存储缓存数据。是个循环链表 lock是个互斥锁。 recvq和sendq分别是接收(<-channel)或者发送(channel <- xxx)的goroutine抽象出来的结构体(sudog)的队列。是个…
Go 内存逃逸详细分析
诡异的现象:如果有行 14 的代码,则行 15 打印的结果为 a b, 否则打印的结果为b b ,本文分析的go版本: 首先我们分析在没有行14的情况下,为什么打印的结果是 b b,这个问题相对比较简单,只要熟悉 slice 的实现原理,简单分析一下 append 的实现原理即…
Go 并发编程、同步原语与锁
当提到并发编程、多线程编程时,我们往往都离不开『锁』这一概念,Go 语言作为一个原生支持用户态进程 Goroutine 的语言,也一定会为开发者提供这一功能,锁的主要作用就是保证多个线程或者 Goroutine 在访问同一片内存时不会出现混乱的问题,锁其实是一种并发编程中的同步…
Go 语言内存分配器的实现原理
程序中的数据和变量都会被分配到程序所在的虚拟内存中,内存空间包含两个重要区域 — 栈区(Stack)和堆区(Heap)。函数调用的参数、返回值以及局部变量大都会被分配到栈上,这部分内存会由编译器进行管理;不同编程语言使用不同的方法管理堆区的内存,C++ 等编程语言会由工程师主动…
深入理解 Go 语言的垃圾回收
我们在上一节中详细介绍了 Go 语言内存分配器的设计与实现原理,分析了运行时内存管理组件之间的关系以及不同类型对象的分配原理,然而编程语言的内存管理系统除了负责堆内存的分配之外,它还需要负责回收不再使用的对象和内存空间,这部分职责就是由本节即将介绍的垃圾收集器完成的。 在几乎所…
Go语言基础(五)—— 并发编程
相信大家肯定都知道 “线程” 与 “进程” 的概念。 而在Go语言中,“协程”可以理解为更轻量级的线程。 通过调度“协程”就可以把系统Kernel的效率发挥到极致。 通过一张表格,我们来对比一下协程与线程的区别。 Thread vs. Groutine: 线程之间的切换会牵扯到…
Gin 源码学习(四)丨Gin 对请求的处理流程
在这一篇文章中,将讲解 Gin 对一个 HTTP 请求的具体处理流程是怎样的。 下面,将对一个请求进入 Gin 的处理范围后的内容,进行一步步展开,讲解 Gin 对请求的处理流程。
Gin 源码学习(一)丨请求中 URL 的参数是如何解析的?
正如 Gin 官方文档中所说,Gin 是一个注重性能和生产的 web 框架,并且号称其性能要比 httprouter 快近40倍,这是选择 Gin 作为源码学习的理由之一,因为其注重性能;其次是 Go 自带函数库中的 net 库和 context 库,如果要说为什么 Go 能在…