我很好奇cassandra如何在sstable中组织行的值.
每行都有存储列密钥吗?
例如
table
c1 int primary key,
c2 int,
c3 int,
insert into table(c1,c2,c3) values(1,2,3)
Run Code Online (Sandbox Code Playgroud)
cassandra如何储存呢?像这样:c1 - > 2,3
或者像这样:c1 - > c2:2,c3:3
我很困惑,下面的代码片段完美吗?
import "sync"
import "sync/atomic"
var initialized uint32
var instance *singleton
var instance *singleton
var once sync.Once
func GetInstance() *singleton {
once.Do(func() {
instance = &singleton{}
})
return instance
}
Run Code Online (Sandbox Code Playgroud)
atomic.StoreUint32(&initialized, 1)会将实例刷新到所有CPU吗?我想我需要添加一个原子存储并加载,例如下面的代码片段
var instance *singleton
var once sync.Once
func GetInstance() *singleton {
once.Do(func() {
atomic.StorePointer(&instance, &singleton{})
})
return atomic.LoadPointer(&instance)
}
Run Code Online (Sandbox Code Playgroud)
我认为 Once.Do 只能保证函数 f 执行一次。并且atomic.StoreUint32(&o.done, 1)只是 o.done 的内存障碍。它不能确保instance全局可见
func (o *Once) Do(f func()) {
if atomic.LoadUint32(&o.done) == 1 {
return
}
// Slow-path.
o.m.Lock()
defer …Run Code Online (Sandbox Code Playgroud)