所以,我看到一个谈话叫兰特()是有害的,它提倡使用随机数生成的发动机分布模式与简单的std::rand()加模模式.
但是,我想看到std::rand()第一手的失败,所以我做了一个快速的实验:
getRandNum_Old(),getRandNum_New()它们分别使用std::rand()和std::mt19937+ 生成0到5之间的随机数std::uniform_int_distribution.结果如下:
[OLD WAY]
Spread
mean: 346.554406
std dev: 110.318361
Time Taken (ms)
mean: 6.662910
std dev: 0.366301
[NEW WAY]
Spread
mean: 350.346792
std dev: 110.449190
Time Taken (ms)
mean: 28.053907
std dev: 0.654964
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,两种方法的卷的总扩散是相同的.也就是说,std::mt19937+ std::uniform_int_distribution并不比简单std::rand()+ 更"统一" %.我做的另一个观察是新的比旧的方式慢了大约4倍.总的来说,似乎我付出了巨大的速度成本,几乎没有质量上的提升.
我的实验在某种程度上有缺陷吗?或者std::rand()真的不是那么糟糕,甚至可能更好?
作为参考,这是我完整使用的代码:
#include <cstdio>
#include <random>
#include <algorithm>
#include <chrono>
int …Run Code Online (Sandbox Code Playgroud) 我原本以为Electron中的渲染器进程是在类似chrome的环境中进行沙盒化,这意味着你所能做的就是搞乱DOM了.但是,我最近了解到您可以访问文件系统,运行子进程并获取其输出,并导入所需的任何其他节点模块.
如果是这种情况,主进程和渲染器进程之间的区别究竟是什么?这不是一个艰难的分离?主进程中有哪些代码以及渲染器进程中的代码类型?
如果有人对Electron app架构进行了深入的阅读/演示,我也很乐意看到它; 可能有助于消除一些混乱
我决定查看是否为成员分配引用会使成员成为引用.我编写了以下代码片段来测试它.有一个Wrapper带有std::string成员变量的简单类.我const string&在构造函数中取一个并将其分配给public成员变量.后来在main()方法中我修改了成员变量但是string我传给构造函数的方法保持不变,怎么样?我认为在Java中变量会发生变化,为什么不在这段代码中呢?在这种情况下,引用究竟是如何工作的?
#include <iostream>
#include <string>
using namespace std;
class Wrapper
{
public:
string str;
Wrapper(const string& newStr)
{
str = newStr;
}
};
int main (int argc, char * const argv[])
{
string str = "hello";
cout << str << endl;
Wrapper wrapper(str);
wrapper.str[0] = 'j'; // should change 'hello' to 'jello'
cout << str << endl;
}
Run Code Online (Sandbox Code Playgroud) 如果我有一个foo.cpp包含以下代码的文件:
class Foo {
};
class Foo {
};
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我自然而然error: redefinition of 'Foo'.但是,如果我有foo.cpp带
class Foo {
};
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并bar.cpp用
class Foo {
};
Run Code Online (Sandbox Code Playgroud)
尽管class Foo在整个程序中被定义了两次,但整个事情编译得很好.
如果我int something;在全局命名空间中放入了两个文件,那么我会得到一个链接器错误(特别是duplicate symbol),但是对于类定义,这种情况永远不会发生.
我知道函数声明,例如int doIt();可以在两个cpp文件中复制,但是一个定义,例如int doIt() {} 不能.现在,在第一个编译器错误(class Foo{};在一个cpp文件中有两次),它说redefinition of foo,class Foo{};定义也是如此.那么为什么,与功能不同,它可以在一个程序中定义两次?
编辑:根据这个网站,命名类有外部链接.那么为什么class Foo …
我熟悉虚拟内存以及虚拟地址与物理地址的概念。我也熟悉多级页面翻译方案。我新遇到的一件事是“有效”地址的想法。仔细一看,它用于索引分段地址空间,需要将其转换为线性化地址空间中的虚拟地址。表面上这对我来说很有意义,但后来我发现了一个这样的图表:
我真的不明白从 64 位 EAddr 到 80 位 VAddr 的意义是什么。由于 ESID 是 36 位,因此您可以拥有 2^36 个唯一的 VSID。与 2^16 个不同的页面索引值相结合意味着您实际上只能访问 2^52 个不同的虚拟页码,而不是像您期望的 80 位 VAddr 那样的 2^68 个。
那么为什么这个系统要费心去做这些事情呢?当您只使用 60 位时,移动大约 80 位听起来像是浪费布线。我有什么遗漏的吗?我是否误解了分段的工作原理?
所以我处于一个棘手的情况:我有div一个包含内部div和ul类似的外部包装器:
<div id="wrapper">
<div id="box"></div>
<ul id="list">...</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
在#list具有绝对定位是正确的下面#box,因为它出现和消失但不动它和其他元素的网页内容。
由于它是绝对定位的,如果我在 周围添加边框#wrapper,它只会围绕#box。box-shadow当然行为相同。问题是,我需要一个可以无缝地围绕这两个元素的阴影。
我在搜索 google/stackoverflow 时遇到的三个解决方案是:
给这两个元素自己的阴影,然后使用它-webkit-clip-path来消除 上的顶部阴影#list,使其看起来像一个阴影围绕着该组。虽然这有效,但阴影相遇的部分有一种奇怪的剪贴画效果。所以这个方法有效,但看起来不太好。链接到描述解决方案的答案。
使用等于模糊负值的散布,然后使用 3 个阴影,一个用于 的每一侧#list。理论上很好,但在实践中,侧面的阴影现在不会沿着整个长度。链接到描述解决方案的答案。这是我尝试的jsfiddle。
使用一个:before或:after伪元素来掩盖重叠的阴影。这对于类似颜色的盒子非常有效,但我的ul和其中的div内容无法覆盖!链接到描述解决方案的答案
我有点陷入困境,因为我真的很喜欢周围#box和#list一起的阴影,但似乎无法找到适合我的特定情况的解决方案。任何建议都会非常有帮助!
注意:我实际上使用的是 Electron 框架,所以该解决方案必须在 Chrome 上运行,但它只需要在 Chrome 上运行!
我正在尝试将一些小的 PNG 图像从 32 位颜色模式转换为索引颜色模式。
对于彩色图像,我运行了命令convert IMGS/FLAME.png INDEXED_IMGS/FLAME.png并且它转换得很好。对于只有灰度颜色的图像,我运行了相同的命令(文件名明显更改),但收到警告:
convert: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG 'INDEXED_IMGS/SHADOW.png' @ warning/png.c/MagickPNGWarningHandler/1748.
Run Code Online (Sandbox Code Playgroud)
我跑了file IMGS/*.png,得到
IMGS/FLAME.png: PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced
IMGS/SHADOW.png: PNG image data, 8 x 8, 8-bit/color RGBA, non-interlaced
Run Code Online (Sandbox Code Playgroud)
这是预期的;两个图像都处于 8 位 RGBA 模式(因为这是我在 Photoshop 中创建它们的模式)。但是,当我跑步时,file INDEXED_IMGS/*.png我得到
INDEXED_IMGS/FLAME.png: PNG image data, 16 x 16, 4-bit colormap, non-interlaced
INDEXED_IMGS/SHADOW.png: PNG image data, 8 x 8, 8-bit grayscale, non-interlaced …Run Code Online (Sandbox Code Playgroud) c++ ×3
c++11 ×2
box-shadow ×1
class ×1
constructor ×1
css ×1
electron ×1
html ×1
imagemagick ×1
linker ×1
powerpc ×1
random ×1
shadow ×1