IT书架 本次搜索耗时 0.065 秒,为您找到 752 个相关结果.
  • 369.给定n个并发量,并发处理数组

    给定n个并发量,并发处理数组 给定n个并发量,并发处理数组 参考解析 题目来源:华为 解析: n 个并发量,并发处理数组,处理完后放回数组内,使用到sync 包中的 WaitGroup 与 mutex 进行控制,假设 n 为 10,处理 长度为 20 的 int[] 类型数组,代码如下 package main import ...
  • 114.go中的互斥锁:正常、饥饿状态,读写锁中写操作如何阻止读操作?

    go中的互斥锁:正常、饥饿状态,读写锁中写操作如何阻止读操作? go中的互斥锁:正常、饥饿状态,读写锁中写操作如何阻止读操作? 题目来源:字节跳动 答案1: 正常模式: 在正常模式下,锁的等待者会按照先进先出的顺序获取锁。但是刚被唤起的 Goroutine 与新创建的 Goroutine 竞争时,大概率会获取不到锁,在这种情况下,这个...
  • 快速开始

    Orm 快速开始 调试查询日志 Orm ORM 的例子在这里(opens new window) Beego 的 ORM 被设计成为两种: 普通的 Orm 实例:这种实例是无状态的,因此你应该尽可能保持一个数据库只有一个实例。当然,即便每次你都创建新的实例,问题也不大,只是没有必要而已; TxOrm :这是启动事务之后得到的Orm 对象...
  • 32.如何实现一个线程安全的 map?

    如何实现一个线程安全的 map? 如何实现一个线程安全的 map? **题目来源:**学而思 答案1: 三种方式实现: 加读写锁 分片加锁 sync.Map 加读写锁、分片加锁,这两种方案都比较常用,后者的性能更好,因为它可以降低锁的粒度,提高访问此 map 对象的吞吐。前者并发性能虽然不如后者, 但是加锁的方式更加简单。syn...
  • 67.服务器能开多少个P由什么决定

    服务器能开多少个P由什么决定 服务器能开多少个P由什么决定 **题目来源:**跟谁学 答案1: P的个数在程序启动时决定,默认情况下等同于CPU的核数 程序中可以使用 runtime.GOMAXPROCS() 设置P的个数,在某些IO密集型的场景下可以在一定程度上提高性能。 一般来讲,程序运行时就将GOMAXPROCS大小设置为CPU核...
  • 250.Map是线程安全的吗?怎么解决并发安全问题?

    Map是线程安全的吗?怎么解决并发安全问题? 答案: Map是线程安全的吗?怎么解决并发安全问题? 参考解析 题目来源:腾讯 答案: Map不是线程安全的 若想实现map线程安全 方法一:使用读写锁,即map + sync.RWMutex 方法二:使用Go提供的sync.Map
  • 167.go 内存分配,和 tcmalloc 的区别?

    go 内存分配,和 tcmalloc 的区别? 答案: go 内存分配,和 tcmalloc 的区别? 参考解析 题目来源:映客 答案: 1、针对简单类型 使用 new 分配后的不管是数组还是非数组形式内存空间用两种方式均可 如: int * a = new int [ 10 ]; delete a ;...
  • 98.分布式锁知道哪些?用channel如何实现?

    分布式锁知道哪些?用channel如何实现? 分布式锁知道哪些?用channel如何实现? 题目来源:网易 答案1: 分布式锁定义-控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。通过数据库,redis,zookeeper都可以实现分布式锁。其中,最常见的是用redis的setnx实现。通过channel实现: pa...
  • 500.写屏障

    写屏障 写屏障 参考解析 Go 在进行三色标记的时候并没有 STW,也就是说,此时的对象还是可以进行修 改。 那么我们考虑一下,下面的情况。 我们在进行三色标记中扫描灰色集合中,扫描到了对象 A,并标记了对象 A 的 所有引用,这时候,开始扫描对象 D 的引用,而此时,另一个 goroutine 修改 了 D->E 的引用,变成了如下图所示...
  • 471.Golang Map 查找

    Golang Map 查找 Golang Map 查找 参考解析 Go 语言中 map 采用的是哈希查找表,由一个 key 通过哈希函数得到哈希值,64 位系统中就生成一个 64bit 的哈希值,由这个哈希值将 key 对应存到不同的桶 (bucket)中,当有多个哈希映射到相同的的桶中时,使用链表解决哈希冲 突。 细节:key 经过 hash...