IT书架 本次搜索耗时 0.196 秒,为您找到 1106 个相关结果.
  • 4.Go GC实现原理?

    4.Go GC实现原理? 什么是GC? 主流GC算法 Go GC算法 三色标记法 root对象 插入写屏障 删除写屏障 混合写屏障 GC流程 GC触发时机 GC算法演进 4.Go GC实现原理? 什么是GC? 垃圾回收也称为GC(Garbage Collection),是一种自动内存管理机制 现代高级编程语言管理...
  • 单例模式

    单例模式 5.1 模式动机 5.2 模式定义 5.3 模式结构 5.4 时序图 5.5 模式分析 5.6 实例 5.7 优点 5.8 缺点 5.9 适用环境 5.10 模式应用 5.11 Go语言实现 singleton.go singleton_test.go 5.12 总结 单例模式 5.1 模式动机 对于系统中的...
  • 1.Go slice的底层实现原理?

    1.Go slice的底层实现原理? 1.Go slice的底层实现原理? 切片是基于数组实现的,它的底层是数组,可以理解为对 底层数组的抽象。 源码包中src/runtime/slice.go 定义了slice的数据结构: type slice struct { array unsafe . Pointer le...
  • 1.Go 常用的并发模型?

    1.Go 常用的并发模型? 线程间通信方式 共享内存 发送消息 共享内存并发模型 CSP并发模型 1.Go 常用的并发模型? 并发模型说的是系统中的线程如何协作完成并发任务,不同的并发模型,线程以不同的方式进行通信 和协作。 线程间通信方式 线程间通信方式有两种:共享内存和消息传递,无论是哪种通信模型,线程或者协程最终都会从内存中...
  • 3.Go map为什么是非线程安全的?

    3.Go map为什么是非线程安全的? 3.Go map为什么是非线程安全的? map默认是并发不安全的,同时对map进行并发读写时,程序会panic,原因如下: Go 官方在经过了长时间的讨论后,认为 Go map 更应适配典型使用场景(不需要从多个 goroutine 中进行安全访问),而不是为了小部分情况(并发访问),导致大部分程序付出加锁代...
  • 1.Go 内存分配机制?

    1.Go 内存分配机制? 设计思想 分配组件 内存管理单元:mspan 线程缓存:mcache 中心缓存:mcentral 页堆:mheap 分配对象 分配流程 1.Go 内存分配机制? Go语言内置运行时(就是runtime),抛弃了传统的内存分配方式,改为自主管理。这样可以自主地实现更好的内存使用模式,比如内存池、预分配等等。这样...
  • 1.Go channel的底层实现原理?

    1.Go channel的底层实现原理? 1.Go channel的底层实现原理? 概念: Go中的channel 是一个队列,遵循先进先出的原则,负责协程之间的通信(Go 语言提倡不要通过共享内存来通信,而要通过通信来实现内存共享,CSP(Communicating Sequential Process)并发模型,就是通过 goroutine ...
  • 9.Go 内置函数make和new的区别?

    9.Go 内置函数make和new的区别? 9.Go 内置函数make和new的区别? 首先纠正下make和new是内置函数,不是关键字 变量初始化,一般包括2步,变量声明 + 变量内存分配,var关键字就是用来声明变量的,new和make函数主要是用来分配内存的 var声明值类型 的变量时,系统会默认为他分配内存空间 ,并赋该类型的零值 比...
  • 7.Go 函数参数传递到底是值传递还是引用传递?

    7.Go 函数参数传递到底是值传递还是引用传递? 7.Go 函数参数传递到底是值传递还是引用传递? 【点击观看视频】Go 函数参数传递到底是值传递还是引用传递? 先说下结论: Go语言中所有的传参都是值传递(传值),都是一个副本,一个拷贝。 参数如果是非引用类型(int、string、struct等这些),这样就在函数中就无法修改原内容数据;...
  • 4.Go slice为什么不是线程安全的?

    4.Go slice为什么不是线程安全的? 4.Go slice为什么不是线程安全的? 先看下线程安全的定义 : 多个线程访问同一个对象时,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。 若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。 再看Go语言实现线程安全常用的几种方式 : 互斥锁...