小编use*_*112的帖子

为什么没有指针/引用时多态性不起作用?

我确实在SO上发现了一些类似标题的问题 - 但是当我读到答案时,他们关注的是问题的不同部分,这些部分是非常具体的(例如STL /容器).

有人可以告诉我为什么你必须使用指针/引用来实现多态?我可以理解指针可能会有所帮助 - 但肯定只能引用区分传值和传递参考?

当然,只要你在堆上分配内存 - 这样你就可以拥有动态绑定,那么这就足够了 - 显然不是.

c++ polymorphism virtual pointers

55
推荐指数
3
解决办法
2万
查看次数

堆栈/堆上的对象创建?

以下代码在堆栈上创建一个对象:

Object o;
Run Code Online (Sandbox Code Playgroud)

在堆上创建对象时,我们可以使用:

Object* o;

o = new Object();
Run Code Online (Sandbox Code Playgroud)

而不是:

Object* o = new Object();
Run Code Online (Sandbox Code Playgroud)

当我们将堆对象创建分成两行并在第二行(o = new object())上调用构造函数时,这是否意味着在第一行(Object* o)中指针是在堆栈上创建的?因此Object o将对象放在堆栈上,而Object* o将指针放在堆栈上的未来对象中?

我的第二个问题涉及两行代码是否在类之外调用.我最近读过(堆栈或堆中的C中的全局内存管理?)全局变量不包含在堆栈/堆中但实际上是内存的另一部分?如果是这种情况,会Object* o创建一个指针,它将位于内存的其他部分,并指向堆对象?

c++ heap stack initialization

50
推荐指数
4
解决办法
8万
查看次数

复合主键与附加"ID"列?

如果我们有这样一个表:

书籍(假装"ISBN"不存在)

  • 作者
  • 标题
  • 出版年份
  • 价钱

有人可能会说{Author,Title,Edition}可能是候选/主键.

是什么决定候选/主键应该是{Author,Title,Edition}还是应该使用ID列,{Author,Title,Edition}是唯一的索引/键约束?

也是

  • 作者(PK)
  • 标题(PK)
  • 版(PK)
  • 出版年份
  • 价钱

更好,或:

  • ID(PK)
  • 作者
  • 标题
  • 出版年份
  • 价钱

其中{Author,Title,Edition}是一个额外的唯一索引/约束?

sql database sql-server database-design

46
推荐指数
3
解决办法
2万
查看次数

"零复制网络"与"内核绕过"?

"零拷贝网络"和"内核旁路"有什么区别?它们是两个含义相同或不同的短语吗?内核绕过"零复制网络"中使用的技术,这是关系吗?

linux networking operating-system network-programming zero-copy

40
推荐指数
4
解决办法
2万
查看次数

什么时候需要x86 LFENCE,SFENCE和MFENCE指令?

好吧,我已经从SO关于x86处理器围栏阅读下列适量(LFENCE,SFENCEMFENCE):

和:

而且我必须说实话,我还不能确定何时需要围栏.我试图从删除完全锁定并尝试通过栅栏使用更细粒度的锁定的角度来理解,以最小化延迟延迟.

首先,这是我不明白的两个具体问题:

有时在进行存储时,CPU会写入其存储缓冲区而不是L1缓存.但是,我不了解CPU执行此操作的条款?

CPU2可能希望加载已写入CPU1的存储缓冲区的值.据我了解,问题是CPU2无法在CPU1的存储缓冲区中看到新值.为什么MESI协议不能将刷新存储缓冲区作为其协议的一部分?

更一般地,可以请人试图描述的总体方案,并帮助时解释LFENCE/ MFENCESFENCE被需要的指令?

NB阅读本主题的一个问题是,当我只对Intel x86-64架构感兴趣时,"通常"为多CPU架构编写的文章数量.

cpu x86 assembly multithreading memory-fences

40
推荐指数
1
解决办法
2万
查看次数

在不使用if的情况下插入/更新std :: unordered_map元素的最快方法是什么?

我目前有很多代码,如下所示:

std::unordered_map<int,int> my_dict;
.
.
.
// If the key does exist in the dictionary
if(my_dict.count(key) == 1){
    my_dict[key] = value;
}

// If its a new key
else{
    my_dict.insert(std::make_pair(key,value));
}
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以通过每次覆盖值来加快速度?

c++ performance unordered-map

37
推荐指数
3
解决办法
5万
查看次数

在Linux上进程之间传递消息的最快技术?

在Linux上,C++应用程序进程之间发送消息的最快技术是什么?我隐约知道桌面上有以下技巧:

  • TCP
  • UDP
  • 套接字
  • 管道
  • 命名管道
  • 内存映射文件

有没有更多的方法,最快的是什么?

c++ linux performance latency ipc

35
推荐指数
3
解决办法
5万
查看次数

Haskell中的类型和数据类型有什么区别?

我对Haskell中的类型数据类型之间的区别感到困惑.

从我遇到的文献中我得到的印象是他们是不同的概念.

haskell typeclass

32
推荐指数
2
解决办法
1万
查看次数

最近有关Java JVM的书籍?

我正在读一本书以了解Java JVM的内部结构.

我找到了这个帖子但现在已经两岁了:

/sf/ask/99872531/

有没有更新的JVM书籍反映最近的更新?这个链接上的任何书籍都可以阅读/应该避免,因为它们已经过时了吗?

你知道从那以后出版过的书吗?

java jvm

28
推荐指数
2
解决办法
2万
查看次数

获取CPU周期数?

我在SO上看到这篇文章,其中包含C代码以获取最新的CPU周期数:

基于CPU周期计算的C/C++ Linux x86_64中的分析

有没有办法在C++中使用这个代码(欢迎使用windows和linux解决方案)?虽然用C语言编写(而C是C++的一个子集)但我不太确定这段代码是否适用于C++项目,如果没有,如何翻译呢?

我使用的是x86-64

EDIT2:

找到此功能但无法让VS2010识别汇编程序.我需要包含任何内容吗?(我相信我必须换uint64_tlong long窗户......?)

static inline uint64_t get_cycles()
{
  uint64_t t;
  __asm volatile ("rdtsc" : "=A"(t));
  return t;
}
Run Code Online (Sandbox Code Playgroud)

EDIT3:

从上面的代码我得到错误:

"错误C2400:'操作码'中的内联汇编语法错误;找到'数据类型'"

有人可以帮忙吗?

c c++ performance x86 rdtsc

26
推荐指数
5
解决办法
4万
查看次数