Go
文章平均质量分 89
Listen-Y
学无止境
展开
-
Go~并发之GMP原理与调度
文章目录前言routine与线程的关系N:1关系1:1关系M:N关系Go 语言的协程 goroutineGo中的调度器被废弃的 goroutine 调度器Goroutine 调度器的 GMP 模型的设计思想GMP 模型P 和 M 的个数问题P 和 M 何时会被创建调度器的设计策略go func () 调度流程调度器的生命周期代码示例分析可视化 GMP 编程Go 调度器调度场景过程全解析前言看这篇文章,请确保你已经熟悉进程、线程、协程等相关概念。并熟悉了操作系统常用的线程调度方式。并对并发和并行有一定原创 2022-04-10 16:29:17 · 1605 阅读 · 0 评论 -
Go~并发编程runtime、workerPool、timer、ticker、sync、atomic
文章目录前言并发的一些概念进程和线程并发和并行协程和线程runtime包runtime.Gosched()runtime.Goexit()runtime.GOMAXPROCSGoroutine池(Pool)worker pool(goroutine池)定时器Timer(只执行一次)Ticker(时间到了多次执行)并发安全和锁(Sync)sync.WaitGroup互斥锁(sync.Mutex)读写互斥锁(sync.RWMutex)惰性初始化(sync.Once)加载配置文件示例闭包下的惰性加载sync.Ma原创 2022-03-27 22:39:01 · 843 阅读 · 0 评论 -
Go~实现自定义Error返回体
error接口假设你就已经创建和使用过神秘的预定义error类型,但是没有解释它究竟是什么。实际上它就是interface类型,这个类型有一个返回错误信息的单一方法:// The error built-in interface type is the conventional interface for// representing an error condition, with the nil value representing no error.type error interface {原创 2022-03-27 10:51:48 · 1285 阅读 · 0 评论 -
Go~从基础快速入门到代码案例分析
文章目录GO一 前言1.1 为什么是Go1.2 Go有缺点吗Go执行流程二 基础类型1.1 数据类型1.2 特殊占位符1.3 常量1.3.1 使用和注意事项1.4 指针1.5 值类型和引用类型三 Go分支结构3.1 for循环3.2 range遍历3.3 switch四 函数4.1 函数内存分布4.2 不定参数函数4.3 多返回值函数4.4 可命名返回值函数4.4.1 defer函数修改命名返回值4.5 函数参数为指针4.6 函数类型4.7 函数调用机制4.8 函数作为参数4.9 init函数4.9 匿名函原创 2022-01-06 16:50:37 · 1280 阅读 · 0 评论 -
Go~Golong容器大集合, 包括Slice、Map、Heap、List、Ring
文章目录前言Slice1.1 创建切片1.2 理解数组指针1.3 自动扩容1.4 字节切片1.5 copy()函数1.6 sort.slice()排序1.7 切片的坑Map2.1 声明&初始化2.2 常用操作2.2.1 长度和容量2.2.2 添加2.2.3 修改2..2.4 删除2.2.5 查看2.2.6 嵌套2.2.7 变量赋值2.3 Map底层原理剖析2.3.1 初始化2.3.2 写入数据2.3.3 读取数据2.3.5 修改数据2.3.6 扩容2.3.5 迁移翻倍扩容等量扩容2.4 Map的坑H原创 2021-12-11 23:34:45 · 1459 阅读 · 2 评论 -
Golong~最新Windows下Go环境+Go mod搭建, 介绍GOROOT、GOPATH、GOPROXY之间关系
文章目录前言搭建Go环境Goland下载Golong的SDK下载环境变量配置搭建GO mod环境初始化Go mod项目GOROOT、GOPATH、GOPROXY之间关系GOROOT介绍GOPATH介绍Go Modules的诞生GOPROXY介绍前言本人环境是windows10+Goland2020.3.4+Go版本是1.17.3大家如果只是单纯学习Go语言,只需要搭建Go环境就可以, 如果是想开发一个项目的话,目前主流公司都是使用Go mod的形式, 如果你学过java的话,这个Go mod和jav原创 2021-11-14 00:15:38 · 3493 阅读 · 1 评论 -
Go~复合数据类型,数组、Slice、Map、结构体
文章目录数组Sliceappend函数copy函数Slice内存技巧Map结构体结构体字面值结构体比较结构体嵌入和匿名成员数组数组的长度是固定的,因此在Go语言中很少直接使用数组。和数组对应的类型是Slice(切片),它是可以增长和收缩的动态序列,slice功能也更灵活,但是要理解slice工作原理的话需要先理解数组。数组的每个元素可以通过索引下标来访问,索引下标的范围是从0开始到数组长度减1的位置。内置的len函数将返回数组中元素的个数。var a [3]int // ar原创 2021-05-05 21:34:26 · 1369 阅读 · 0 评论 -
Go~基本数据类型,整型、浮点型、复数、布尔型、字符串、常量
文章目录整型浮点数复数布尔型字符串常量整型Go语言同时提供了有符号和无符号类型的整数运算。这里有int8、int16、int32和int64四种截然不同大小的有符号整数类型,分别对应8、16、32、64bit大小的有符号整数,与此对应的是uint8、uint16、uint32和uint64四种无符号整数类型。还有两种一般对应特定CPU平台机器字大小的有符号和无符号整数int和uint;其中int是应用最广泛的数值类型。这两种类型都有同样的大小,32或64bit,但是我们不能对此做任何的假设;因为不同的原创 2021-05-05 21:03:34 · 633 阅读 · 0 评论 -
Go~简介与特性
文章目录Go语言简介Go 是编译型语言Go的特点语法简单并发模型内存分配垃圾回收静态链接标准库工具链为并发而生的Go语言Go语言简介Go语言不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。可以进行网络编程、系统编程、并发编程、分布式编程。具有“部署简单、并发性好、语言设计良好、执行性能好”等优势。Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想。因为Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过原创 2021-05-05 20:05:03 · 370 阅读 · 0 评论