以下摘录自此处
Run Code Online (Sandbox Code Playgroud)pw = (widget *)malloc(sizeof(widget));分配原始存储.实际上,malloc调用分配的存储空间足够大并且适当地对齐以容纳类型为widget 的对象
他还说,从草本植物中看到快速的pImpl,他说:
对齐.任何内存对齐.保证通过new或malloc动态分配的任何内存都可以正确地对齐任何类型的对象,但是没有动态分配的缓冲区没有这样的保证
我对此感到好奇,malloc如何知道自定义类型的对齐方式?
我是git的新手,我通常使用具有中央存储库的P4,而git是分布式VCS.
我感兴趣的是当两个对等体同时将更改推送到同一个远程时git如何工作.假设每个对等体在推送之前解决了所有冲突.我想如果git报告冲突,后者将被拒绝!
但是,根据我的理解,git在内部是一个键/值存储,就像当前流行的NOSQL数据库,尤其是支持p2p复制的Couch-DB.
其实我想问一下,在客户端将更改推送到远程git存储库的情况下,git进程如何冲突?推被拒绝了吗?
从马克的答案来看,我认为推动应该被拒绝.
我知道如何在内存中实现btree,但不清楚如何在光盘中存储btree.我认为有两个主要区别:
谢谢
使用不相交集数据结构可以轻松获得Graph的连通组件.而且,它只支持增量连接组件.
但是,在我的情况下,删除边缘非常常见,因此我正在寻找算法或新结构可以完全动态地维护连接组件(包括添加和删除边缘)
谢谢
最近,我正在阅读一些Linux内核空间代码,我看到了这一点
uint64_t used;
uint64_t blocked;
used = atomic64_read(&g_variable->used); //#1
barrier(); //#2
blocked = atomic64_read(&g_variable->blocked); //#3
Run Code Online (Sandbox Code Playgroud)
这段代码片段的语义是什么?是否确保#1在#3之前执行#1.但是,我有点困惑,因为
#A在64位平台中,atomic64_read宏被扩展为
used = (&g_variable->used)->counter // where counter is volatile.
Run Code Online (Sandbox Code Playgroud)
在32位平台中,它被转换为使用锁cmpxchg8b.我假设这两个语义具有相同的语义,对于64位版本,我认为这意味着:
atomic64_read没有保留读取顺序的语义!看到这个
#B的屏障宏定义为
/* Optimization barrier */
/* The "volatile" is due to gcc bugs */
#define barrier() __asm__ __volatile__("": : :"memory")
Run Code Online (Sandbox Code Playgroud)
从wiki中可以防止gcc编译器重新排序读写.
我感到困惑的是它如何禁用CPU的重新排序优化?另外,我认为屏障宏是完全围栏吗?
我试图理解这里描述的simipiled cache oblivious lookahead lookahead array ,以及本演示文稿的第35页
插入简化分形树的分析:
- 合并2个大小为X的数组的成本是O(X = B)块I/O. 合并非常有效I/O.
- 要合并的每个元素的成本是O(1/B),因为合并了O(X)元素.
- 每个元素合并的最大次数是O(logN).
- 平均插入成本为O(logN/B)
我可以看到#1,#2和#3,但我无法理解#4,从论文中,合并可以被认为是二进制加法进位,例如,(31)B可以呈现:11111
当插入新的时item(加1),应该有5 = log(32)merge(5进位).但是,在这种情况下,我们必须合并32个元素!另外,如果每次我们加1,那么将从0到2 ^ k执行多少次携带?anwser应该是2 ^ k - 1.换句话说,每次插入一次合并!
那么如何计算#4?
CouchDB很棒,我喜欢它的p2p复制功能,但是它有点大(因为我们必须安装Erlang)并且在桌面应用程序中使用时速度较慢.
正如我在intel duo core cpu中测试的那样,
是否有任何没有SQL实现具有相同的p2p复制功能,但大小非常小,如sqlite,速度非常好(1秒加载10000文档).
我是erlang的新手,而erlang是面向并发的编程,它没有可变的数据结构,这就是为什么它很容易并行化.
但无论如何,共享资源仍然存在,例如,写入同一文件.在这种情况下,erlang如何同步访问两个进程之间的共享资源?
我正在尝试valgrind来检测内存泄漏.它适用于堆泄漏(即来自malloc或new的内存分配).但是,它是否支持在Linux中检查mmap泄漏?
谢谢张
我正在寻找可以支持面部检测,识别和集群的SDK.我们尝试过Pittpatt,它运作得很好,但它被谷歌收购,因此冻结了新的合同.因此我们必须决定使用OpenCV,这对业务来说风险很低,而技术风险很高.
我们希望找到提供OpenCV人脸检测服务的公司或个人.
如果有人对它感兴趣,请告诉我.
谢谢
algorithm ×4
c++ ×3
database ×3
c ×2
atomic ×1
b-tree ×1
barrier ×1
boost ×1
c# ×1
caching ×1
concurrency ×1
couchdb ×1
erlang ×1
git ×1
graph-theory ×1
java ×1
linux ×1
memory-leaks ×1
mmap ×1
nosql ×1
performance ×1
replication ×1
valgrind ×1