我知道这是可以通过提升实现的:
使用boost :: accumulators,如何重置滚动窗口大小,是否保留了额外的历史记录?
但我真的想避免使用提升.我用谷歌搜索,没有找到任何合适或可读的例子.
基本上我想使用最新的1000个数字作为数据样本来跟踪正在进行的浮点数流的移动平均值.
实现这一目标的最简单方法是什么?
我尝试使用圆形阵列,指数移动平均线和更简单的移动平均线,发现圆形阵列的结果最适合我的需要.
我想知道是否有一种编程语言可编译为机器代码/二进制文件(不是字节码然后由VM执行,在考虑打字时完全不同),它具有动态和/或弱类型,例如:
想一下编译语言,其中:
问题:
我认为一种动态但强大的类型化编译语言真的能感觉到,但它有可能吗?
当在CRTP中使用模板模板参数时,尝试在派生初始化列表中调用基类构造函数时,我遇到编译错误.
可以使用以下代码片段复制问题:
template <template<class> class Derived, class T>
struct base
{
};
template <class T>
struct derived : public base<derived, T>
{
derived()
: base<derived, T>()
{ }
};
Run Code Online (Sandbox Code Playgroud)
违规错误消息:
bug.cpp:10:16: error: template argument for template template parameter must be a class template or type alias template
: base<derived, T>()
^
bug.cpp:10:11: error: expected class member or base class name
: base<derived, T>()
^
bug.cpp:10:11: error: expected '{' or ','
3 errors generated.
Run Code Online (Sandbox Code Playgroud)
这个问题似乎只出现在clang(3.4)上,而不是g ++(4.8,4.7,4.6).我正在使用-std = c ++ 11进行编译.
这是我第一次使用CRTP和模板模板参数.我这样做是否正确,这是clang …
我最近将我的c ++项目中的一些非常大的文件拆分为许多较小的文件(基本上每个类一个文件).这使编译时间增加了一倍,并将生成的可执行文件从1.6mb扩大到2.4mb.为什么这会产生如此巨大的差异?
这是否必须在很多文件中包含几个标题而不是少数文件的直接结果?
漫画选项:
g ++ -Wall -Wextra -g -ggdb -std = c ++ 0x
我所指的可执行文件大小是在运行strip -s可执行文件之后.
尺寸:
之前使用调试符号:16MB
使用调试符号后:26MB
之前没有调试符号:1.5MB
没有调试符号后:2.4MB
附加问题:
我已经使用预编译头文件了,将头文件放在pch.hpp中,然后在我的g ++标志中使用-include pch.hpp选项.这是使用gcc执行此操作的最佳方式吗?它似乎对编译时间的影响非常小.目前尚未预编译的唯一标题是项目的一部分,并且随着项目的大量开发而变化.
我想创建并行运行的n个进程,让它们锁定互斥锁,递增计数器,然后解锁并退出.
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <unistd.h>
#include <pthread.h>
pthread_mutex_t mutex;
int main(int argc, char **argv) {
if (argc != 2)
return 0;
int n = atoi(argv[1]);
int i = 0;
int status = 0;
pthread_mutex_init(&mutex, NULL);
pid_t pid = 1;
static int *x;
x = mmap(NULL, sizeof *x, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
*x = 0;
printf("Creating %d children\n", n);
for(i = 0; i < n; i++) {
if …Run Code Online (Sandbox Code Playgroud) 很难在nginx配置中找出位置块.这就是我所拥有的:
server {
listen 80;
server_name _;
access_log /var/log/nginx/example.com.access_log;
error_log /var/log/nginx/example.com.error_log warn;
root /var/www/root;
index index.php index.htm index.html;
fastcgi_index index.php;
location /wp/ {
root /var/www/wordpress;
index index.php index.htm index.html;
fastcgi_index index.php;
}
location ~* \.php$ {
try_files $uri =404;
keepalive_timeout 0;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
Run Code Online (Sandbox Code Playgroud)
浏览/按预期工作并在/ var/www/root中显示网站,但如果位置正常,我认为他们应该浏览/ wp应该带我到/ var/www/wordpress中的wordpress安装.我得到的只是:
404未找到
nginx的/ 0.7.67
如果我将/ var/www/wordpress目录重新定位到/ var/www/root/wordpress并浏览到/ wordpress,则完美无缺.
我在位置块做错了什么?
我以前从未配置过nginx,而且还是一个完整的web newb.
我希望能够为其他应用程序提供更多的位置块.这实际上只是在这里发布的一个基本示例.
在Debian Squeeze backports中将nginx更新为版本.没有得到改善:
404未找到
nginx的/ 1.1.19
我目前正在开发一个跨平台应用程序,它使用扩展文件属性来存储正常文件系统所有权之外的自己的文件所有权信息(uid,gid).此信息是特定于应用程序的,与正常的文件系统所有权无关.
出于性能原因,我刚刚使用存储在每个文件夹中的小型数据库来存储此信息,但这使得我的解决方案在Windows平台上缺乏.
根据维基百科,NTFS可能具有一些有限的功能,只要能够存储扩展文件属性,但我当然找不到有关如何获取和设置这些属性的任何进一步信息.
有没有人这样做过,可以告诉我该怎么做?或者这是不可能的?
理想情况下,我不想在Windows上恢复数据库解决方案.
我做了一些谷歌,似乎无法为此发现GCC选项或libstdc ++宏.是否可以在所有std::atomic模板特化上强制使用内部锁定.在某些平台上,一些专业化无论如何都是锁定的,因此它看起来似乎是一个可行的选择.
在过去,我发现在使用Valgrind(Helgrind或DRD)std::atomic等工具调试数据竞争时,由于大量的误报,使用起来非常痛苦.如果使用atomics足够普遍,抑制文件似乎不是一个非常可扩展的解决方案.
在C++中,使用string[x]在特定位置获取char 是不是很糟糕?大多数人使用,string.at(x)但有什么原因string[x]是坏的?
我已经默认了我的复制构造函数和复制赋值运算符,如下所示:
Config(const Config& config) = default;
Config& operator=(const Config& rhs) = default;
Run Code Online (Sandbox Code Playgroud)
然后通过友谊获得了对这些功能的访问权限.在创建配置对象的副本后,我收到以下警告并注意(?):
./cfg/config.hpp:129:3:警告:未使用的参数'config'[-Wunused-parameter] cfg/get.cpp:在函数'const cfg :: Config&cfg :: Get(bool)'中:cfg/get.cpp:34:30:注意:这里首先需要合成方法'cfg :: Config :: Config(const cfg :: Config&)'
看起来复制构造函数甚至没有被实例化.尽管如此,代码似乎运行.
gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)