IT书架 本次搜索耗时 0.114 秒,为您找到 1023 个相关结果.
  • 1.Go goroutine的底层实现原理?

    1.Go goroutine的底层实现原理? 概念 底层数据结构 状态流转 创建 阻塞 唤醒 退出 1.Go goroutine的底层实现原理? 概念 Goroutine可以理解为一种Go语言的协程(轻量级线程),是Go支持高并发的基础,属于用户态的线程,由Go runtime管理而不是操作系统。 底层数据结构 type g ...
  • 抽象工厂模式

    抽象工厂模式 3.1 模式动机 3.2. 模式定义 3.3 模式结构 3.4. 时序图 3.5 优点 3.6 缺点 3.7 适用环境 3.8 模式应用 3.9 模式扩展 “开闭原则”的倾斜性 工厂模式的退化 3.10 Go语言实现 abstractfactory.go abstractfactory_test.go 3.11 总结...
  • 看懂UML类图和时序图

    看懂UML类图和时序图 看懂UML类图和时序图 从一个示例开始 类之间的关系 泛化关系(generalization) 实现关系(realize) 聚合关系(aggregation) 组合关系(composition) 关联关系(association) 依赖关系(dependency) 时序图 看懂UML类图和时序图 看懂U...
  • 6. Go 如何排查数据竞争问题?

    6. Go 如何排查数据竞争问题? 概念 排查方式 6. Go 如何排查数据竞争问题? 概念 只要有两个以上的goroutine并发访问同一变量,且至少其中的一个是写操作的时候就会发生数据竞争;全是读的情况下是不存在数据竞争的。 排查方式 package main import "fmt" func main ()...
  • 4. Go Cond实现原理?

    4. Go Cond实现原理? 概念 底层数据结构 使用方法 4. Go Cond实现原理? 概念 Go 标准库提供了Cond 原语,可以让 Goroutine 在满足特定条件时被阻塞和唤醒 底层数据结构 type Cond struct { noCopy noCopy // L is held...
  • 2.Go goroutine和线程的区别?

    2.Go goroutine和线程的区别? 2.Go goroutine和线程的区别? goroutine 线程 内存占用 创建一个 goroutine 的栈内存消耗为 2 KB,实际运行过程中,如果栈空间不够用,会自动进行扩容 创建一个 线程 的栈内存消耗为 1 MB 创建和销毀 goroutine 因为是由 Go...
  • 1.Go 互斥锁的实现原理?

    1.Go 互斥锁的实现原理? 概念 使用场景 底层实现结构 操作 加锁 解锁 注意点: 1.Go 互斥锁的实现原理? Go sync包提供了两种锁类型:互斥锁sync.Mutex 和 读写互斥锁sync.RWMutex,都属于悲观锁。 概念 Mutex是互斥锁,当一个 goroutine 获得了锁后,其他 goroutine...
  • 3.Go 内存对齐机制?

    3.Go 内存对齐机制? 什么是内存对齐 对齐系数 优点 缺点 结构体对齐 3.Go 内存对齐机制? 什么是内存对齐 为了能让CPU可以更快的存取到各个字段,Go编译器会帮你把struct结构体做数据的对齐。所谓的数据对齐,是指内存地址是所存储数据大小(按字节为单位)的整数倍,以便CPU可以一次将该数据从内存中读取出来。 编译器通过在...
  • 567.Golang调度器GPM原理与调度全分析

    49 2024-04-29 《Golang面试题》
    一、Golang“调度器”的由来? (1) 单进程时代不需要调度器 (2)多进程/线程时代有了调度器需求 (3)协程来提高CPU利用率 (4)Go语言的协程goroutine (5)被废弃的goroutine调度器 二、Goroutine调度器的GMP模型的设计思想 (1)GMP模型 (2)调度器的设计策略 (3) go func() 调度流...
  • 5.Go channel如何控制goroutine并发执行顺序?

    5.Go channel如何控制goroutine并发执行顺序? 5.Go channel如何控制goroutine并发执行顺序? 多个goroutine并发执行时,每一个goroutine抢到处理器的时间点不一致,gorouine的执行本身不能保证顺序 。即代码中先写的gorouine并不能保证先执行 思路:使用channel进行通信通知,用ch...