IT书架 本次搜索耗时 0.075 秒,为您找到 752 个相关结果.
  • 53.Go语言Slice是否线程安全

    Go语言Slice是否线程安全 Go语言Slice是否线程安全 题目来源 :字节 答案: Go语言实现线程安全常用的几种方式: 1.互斥锁; 2.读写锁; 3.原子操作; 4.sync.once; 5.sync.atomic; 6.channel slice底层结构并没有使用加锁等方式,不支持并发读写,所以并不是线程安全的,使用...
  • 120.interface 的底层实现

    interface 的底层实现 interface 的底层实现 题目来源:字节跳动 答案1: Go 语言根据接口类型是否包含一组方法将接口类型分成了两类: 使用 runtime.iface 结构体表示包含方法的接口 使用 runtime.eface 结构体表示不包含任何方法的 interface{} 类型; 空接口定义 r...
  • Web 注册路由最佳实践

    优先使用函数式风格的路由注册 优先使用函数式风格的路由注册 最核心的理由就是这种注册风格最为便捷,并且贴近 Go 语言本身特性。目前的主流 Web 框架基本上都是支持这种注册风格。
  • 337.如何实现只开100个协程

    如何实现只开100个协程 如何实现只开100个协程 题目来源: 答案:sunrise // 利用 channel 的缓存区实现 func main () { var wg sync . WaitGroup ch := make ( chan struct {}, 3 ) for ...
  • 534.Go channel发送和接收什么情况下会死锁?

    Go channel发送和接收什么情况下会死锁? Go channel发送和接收什么情况下会死锁? 参考解析 死锁: 单个协程永久阻塞 两个或两个以上的协程的执行过程中,由于竞争资源或由于彼此通信而造成的一种阻塞的现象。 channel死锁场景: 非缓存channel只写不读 非缓存channel读在写后面 缓存channel写入超...
  • 236.goroutine 和 kernel thread 之间是什么关系?

    goroutine 和 kernel thread 之间是什么关系? 答案: goroutine 和 kernel thread 之间是什么关系? 参考解析 题目来源:pingCAP 答案: 在进程被划分为更小的线程后,线程成为了最小的调度单元 ,也是在 CPU 上执行的最小单元 操作系统将内存空间划分为内核空间 和用户空间 , ...
  • 562.Go 有哪些并发同步原语?

    Go 有哪些并发同步原语? 原子操作 Channel 基本并发原语 sync.Mutex sync.RWMutex sync.WaitGroup sync.Cond sync.Once sync.Pool sync.Map sync.Context 扩展并发原语 ErrGroup Semaphore Single...
  • 399.怎么理解“不要用共享内存来通信,而是用通信来共享内存”

    怎么理解“不要用共享内存来通信,而是用通信来共享内存” 怎么理解“不要用共享内存来通信,而是用通信来共享内存” 题目来源 :滴滴 答案: 共享内存会涉及到多个线程同时访问修改数据的情况,为了保证数据的安全性,那就会加锁,加锁会让并行变为串行,cpu此时也会忙于线程抢锁。另外使用过多的锁,容易使得程序的代码逻辑坚涩难懂,并且容易使程序死锁,死...
  • 437.使用 database/sql 和 使用 gorm 的区别

    使用 database/sql 和 使用 gorm 的区别 答案: 使用 database/sql 和 使用 gorm 的区别 参考解析 题目来源:360 答案: Go操作Mysql数据库,一般有两种方式: 通过 database/sql 接口 通过 GORM 对象关系映射 使用 database/sql 接口 Go没有内置...
  • 425.协程间通信

    协程间通信 协程间通信 参考解析 题目来源:一点资讯 答案: 协程通信机制——Future,Channel与Pub/Sub 在许多的现代异步 IO 框架中,调度的基本单位是协程( Coroutine )。与多线程不同,协程使用程序自定义的调度器进行调度,因此更容易控制协程之间的执行顺序,要想充分利用协程的调度模型,有一个趁手的...