- 博客(4)
- 收藏
- 关注
原创 优化单例里的懒汉模式并发性能
这样的逻辑就变成,访问单例时,第一步判断是否需要初始化实例对象,不需要的话立刻返回,如果需要则加互斥锁,第一个拿到互斥锁的初始化实例对象并返回,被锁阻塞住的对象一一进入创建锁的流程中,此处第二判断实例对象是否需要初始化,不是第一个拿到互斥锁的对象在这一次判断中直接返回实例对象,不需要初始化。先考虑单线程的情况。后面再次访问这个单例,由于第一次已经初始化过了,所以会直接返回已经生成的实例对象。单例模式的懒汉模式与饿汉模式的区别在于单例的生成时间,在系统启动时就生成的是饿汉模式,在运行时生成的是懒汉模式。
2023-08-09 10:21:44
79
1
原创 ETCD lease的 grantedTTL 无法修改,只能先撤销再申请
在更新 k-v操作前去更新lease,就算把相关的 key都删除了(最好一个 key 对应一个lease,不存在误删其他key的问题),也可以将 k-v 补回来,其他场景需考虑在更新 lease的时候是否需要撤销,该操作会导致该 lease 相关的 k-v 被删除。lease 一旦申请,只能执行自动过期、延期和撤销三类操作。该操作有个副作用,撤销 lease 后,绑定在该 lease 上的 key 都会被删除。要实现修改 grantedTTL的能力只能先撤销,再申请。
2023-08-07 12:14:42
77
1
原创 Python 交换元素顺序a,b=b,a存在的坑
交换两元素时a, b= b, a,左边的接收的a, b不是并行赋值的,是从左到右串行赋值的。a = [2, 3, 1, 0, 2, 5, 3]# 场景: 交换下标为0和a[0]的两个元素, 即交换下标为0和2的两个元素print("下标")print(0, a[0])print("取值")print(a[0], a[a[0]])a[0], a[a[0]] = a[a[0]], a[0]print(a)# 预期结果为 [1, 3, 2, 0, 2, 5, 3]# 实际结果为 [1, 2,
2022-05-12 10:20:59
578
1
转载 python的locals()和globals()函数
python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。可以用print (locals())来查看该函数体内的所有变量名和变量值。...
2018-10-17 20:02:56
149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人