自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 待解决疑问

如果调用 Wait 之前不加锁的话,就有可能 Unlock 一个未加锁的 Locker。如果read的穿透次数一直达不到dirty map的长度, 那么一直不会讲dirty的数据更新到read中,(如果不释放锁,其他 Wait 的调用者就没有机会加入到 notify 队列中 了),然后一直等待;cond.Wait 方法的实现是,把当前调用者加入到 notify 队列之中后会释放锁。既然队列中有一个UnLock解锁动作, 那么自己代码中的Unlock动作还有必要写吗?多线程并发读取的k1一直是旧的数据?

2023-11-16 11:48:25 28 1

原创 go并发编程相关

缺点:不适用于大量写的场景,这样会导致 read map 读不到数据而进一步加锁读取,同时dirty map也会一直晋升为read map,整体性能较差,甚至没有单纯的 map+metux 高。sync.Map底层使用了两个原生map,一个叫read,仅用于读;当一个或者多个 reader 持有锁的时候,竞争锁的 writer 会等待这些 reader 释放完,才可能持有这把锁。如果 Cond 等待队列中有一个或者多个等待的 goroutine,则清空所有等待的 goroutine,并全部唤醒。

2023-11-14 15:15:48 35

原创 golang面试题

map默认为非线程安全的, 并发读写会直接报 panic.原因: 多个 goroutine操作同一个 map的场景并不多, 设置为并发安全的会损失性能。

2023-11-01 08:07:57 70 1

原创 Channel相关

数组, 切片, map的并发读写问题go语言中数组和切片支持并发读写,但是如果在不加任何锁的情况下,读写后的结果是无法预期的go语言中map是不支持并发读写的,如果多个协程并发读写同一个map的话,会直接报错go语言原生的map不支持并发读写的, 但是 sync.Map是支持并发读写的上面的代码, 输出结果有多种情况:可能输出不确定个myvalue。

2023-10-21 21:01:51 35 1

原创 Leetcode 160.相交链表

#原题链接:https://leetcode.cn/problems/intersection-of-two-linked-lists/description/

2023-10-21 17:12:26 39 1

原创 Leetcode 152.乘积最大子数组

测试用例的答案是一个 32-位 整数。子数组 是数组的连续子序列。示例 1:输入: nums = [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: nums = [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。*/

2023-10-21 17:02:18 83 1

原创 剑指offer02 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入:输出:解释:--> 返回 -3.--> 返回 0.--> 返回 -2.

2023-10-19 01:03:32 45 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除