全部文章

Go 系统监控
很多系统中都有守护进程,它们能够在后台监控系统的运行状态,在出现意外情况时及时响应。系统监控是 Go 语言运行时的重要组成部分,它会每隔一段时间检查 Go 语言运行时,确保程序没有进入异常状态。
阅读(747) 2023-05-11 09:41
Go 网络轮询器
网络轮询器并不是由运行时中的某一个线程独立运行的,运行时的调度器和系统调用都会通过 runtime.netpoll 与网络轮询器交换消息,获取待执行的 Goroutine 列表,并将待执行的 Goroutine 加入运行队列等待处理。所有的文件 I/O、网络 I/O 和计时器都是由网络轮询器管理的,它是 Go 语言运行时重要的组成部分。
阅读(769) 2023-05-11 08:52
Go 定时器
准确的时间对于任何一个正在运行的应用非常重要,但是在分布式系统中我们很难保证各个节点的绝对时间一致,哪怕通过 NTP 这种标准的对时协议也只能把各个节点上时间的误差控制在毫秒级,所以准确的相对时间在分布式系统中显得更为重要。
阅读(755) 2023-05-11 07:11
Go 同步原语与锁
Go 语言作为一个原生支持用户态进程(Goroutine)的语言,当提到并发编程、多线程编程时,往往都离不开锁这一概念。锁是一种并发编程中的同步原语(Synchronization Primitives),它能保证多个 Goroutine 在访问同一片内存时不会出现竞争条件(Race condition)等问题。
阅读(715) 2023-05-11 06:23
Go 上下文 Context
上下文 context.Context 它是 Go 语言中用来设置截止日期、同步信号、传递请求相关值得结构体。它一个在 Go1.17 版本中引入标准库得接口
阅读(750) 2023-05-09 08:32
Go 调度器
Go 的并发编程之所以能力强大,离不开语言层面对并发编程的支持。并发离不开操作系统、进程与线程这些概念,线程 是操作系统调度时的最基本单元,Linux 调度器并不区分进程和线程的调度,不同的操作系统上也有不同的实现,而大多数的实现中都是线程属于进程:
阅读(1025) 2023-05-09 06:25
Go 语言 Channel
Channel 是 Go 核心的数据结构和 Goroutine 之间的通信方式,是支撑 Go 语言高性能并发编程模型的重要结构。Go 语言提倡通过通信的方式共享内存,而不是通过通信的方式共享内存。
阅读(811) 2023-04-28 08:17
Go 语言 make 和 new
make 的作用是初始化内置数据结构的,例如切片、哈希表和 Channel。new 的作用是根据传入的类型分配一片内存空间,并返回指向该内存空间的指针。
阅读(726) 2023-04-27 08:33
Go defer
Go 语言中 defer 会在当前函数返回前执行传入的函数,经常用于关闭文件描述符、关闭数据库连接以及解锁资源。
阅读(783) 2023-04-27 08:22
Go 语言中的 select
select 是操作系统中的系统调用,经常使用 select、poll、epoll 等函数构建 I/O 多路复用模型提升程序的性能。Go 语言中的 select 与操作系统中的 select 比较类似,select 能够让 Goroutine 阻塞的等待多个 Channel 可读可写。
阅读(827) 2023-04-27 07:32
Go 反射 reflect
relect 包实现了运行时的反射能力,程序可以操作不同的对象,其中最重要的两个函数:reflect.TypeOf 和 reflect.ValueOf,两个类型是 reflect.Type 和 reflect.Value,它们与函数是一一对应的关系
阅读(696) 2023-04-26 07:26
Go 接口 interface
Go 语言中的接口是一组方法的签名,它是 Go 语言的重要组成部分。接口的本质是引入一个新的中间层,调用方可以通过接口与具体实现分离,解除上下游的耦合,上层的模块不再需要依赖下层的具体模块,只需要依赖一个约定好的接口。 即我们只需要关注怎么使用,而不需要关注具体实现。 计算机科学中的接口是
阅读(838) 2023-04-13 09:17
Go 函数调用
函数参数传递分为值传递和引用传递,下面是两者的区别:传值:函数调用时会多参数进行拷贝,调用方和被调用方持有不相关的两份数据。引用传递:函数调用时会传递参数的指针,被调用方和调用方两者持有相同的数据,任意一方做出的修改都会影响另一方。
阅读(695) 2023-04-13 03:19
Go 基本数据结构学习笔记总结
数组、切片、哈希表、字符串是Go中常用的数据
阅读(739) 2023-04-13 02:29
Go 语言中的正常模式和饥饿模式
在正常模式下,锁的等待会按照先进先出的顺序获的,但是刚刚被唤起的 Goroutine 会与新创建的 Goroutine 竞争,此时大概率会获取不到锁,为了减少这种情况的出现,一旦 Goroutine 超过 1ms 没有获取到锁,此时就会切换到饥饿模式。
阅读(835) 2023-04-09 01:57

不拘一格

职业:后端开发工程师
学校:重庆师范大学
城市:重庆
文章:165
一个喜欢学习的人,快来和我成为朋友吧....

登录逐梦笔记

注册逐梦笔记

已有账号?