![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
而鱼儿and-fish
这个作者很懒,什么都没留下…
展开
-
关于Go协程的一些理解
Goroutine的调度这段代码执行后的输出是什么?代码逻辑猜猜会发生什么GMP模型总结如何创建协程回到问题当goroutine数量超过256会怎么样呢?总结这段代码执行后的输出是什么?package mainimport ( "fmt" "runtime" "sync")var wp sync.WaitGroupfunc m(n int) { fmt.Printf("%v "n) wp.Done()}func main() { runtime.GOMAXPROCS(1)原创 2022-05-23 13:42:09 · 279 阅读 · 0 评论 -
Golang源码学习(二)----Go源码学习基础
### 本文源码版本为 GO 1.17.8 Windows/amd64;### 可能参与对比的版本:GO 1.16.2 Linux/amd64一、Golang的编译器究竟是如何工作的? (学习源码有什么意义) 1. 能修改go语言程序源码 (从某种意义上来说你可以定制一个属于你的语言) 2. 以语言开发者的角度去学习语言本身 (直接感受顶尖的设计思路,实用性算法和数据结构的学习) 3. 理解go语言语法糖以及原生性的实现原理 (拒.原创 2022-05-22 06:08:32 · 858 阅读 · 0 评论 -
Golang源码学习(一)----从0开始学编程
一、Go源码学习的环境搭建 (CentOS_8) 选择的是CentOS8中最小化安装 前往家目录 cd 创建go工作空间 mkdir go cd go mkdir repos 获取安装包 wget https://dl.google.com/go/go1.16.2.linux-amd64.tar.gz 解压安装包 tar zxf go1.16.2.linux-amd64.原创 2022-05-22 01:49:21 · 663 阅读 · 1 评论 -
Golang数据结构----从字符串到map
简单介绍了Golang中string、slice、array、map四种数据结构,以及Golang内存对齐的策略。一、string 变长字节存储,根据不同的前缀来判断字节长度。 Golang中的字符串结构: string [data][lenght] lenght是实际字节byte长度 data为起始地址 所以string的内存是 指针8+长度8=16 Golang中不允许通过下标修改字符,字符串被分配到只读内存段; 字符串是原创 2022-05-11 05:02:22 · 1634 阅读 · 0 评论 -
Golang源码学习----gin框架简单阅读
一、热加载 go get github.com/pilu/fresh 快速编译,省去了每次手动go run二、gin特点 轻量级、运行速度快,性能、高效 擅长API接口的高并发,项目规模不大,业务简单三、Engine启动器 Engine是框架的实例,使用NEW()或着Default()来创建。 使用gin实际上就是使用engine的方法。 其中 engine.trees !!!负责存储路由和handle方法的映射,采.原创 2022-05-09 01:50:03 · 1324 阅读 · 0 评论 -
Golang内存分布--从源码到分析
一、内存分配器 程序中的数据和变量都会被分配到程序所在的虚拟内存中,内存才能空间包含两个重要区域: 栈区(Stack)和堆区(Heap)。 函数调用的参数、返回值以及局部变量大都会被分配到栈上、这部分内存会有编译器进行管理。 不同编程语言使用不同方法管理堆区的内存,c++、等编程语言会由使用者主动申请和释放内存; Go和Java等编程语言会由使用者和编译器共同管理。 堆中的对象有内存分配器分配并由垃圾收集器回收。 栈区速度>>堆区速度,.原创 2022-05-05 22:47:16 · 754 阅读 · 0 评论