小编Aff*_*Owl的帖子

如何强制JavaScript深度复制字符串?

我有一些javascript代码,如下所示:

var myClass = {
  ids: {}
  myFunc: function(huge_string) {
     var id = huge_string.substr(0,2);
     ids[id] = true;
  }
}
Run Code Online (Sandbox Code Playgroud)

稍后,使用一些大字符串(100 MB +)调用该函数.我只想保存我在每个字符串中找到的短ID.但是,Google Chrome的子字符串函数(在我的代码中实际为正则表达式)只返回一个"切片字符串"对象,该对象引用原始对象.因此,在一系列调用之后myFunc,我的chrome选项卡内存不足,因为临时huge_string对象无法进行垃圾回收.

如何制作字符串的副本,id以便huge_string不维护对该字符串的引用,并且huge_string可以对其进行垃圾回收?

在此输入图像描述

javascript garbage-collection memory-management google-chrome

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

C++使用纯虚方法覆盖纯虚方法

用另一个纯虚方法覆盖纯虚方法是否有意义?是否有任何功能差异或代码风格的原因,而不是选择以下选项之一?

class Interface {
 public:
  virtual int method() = 0;
};

class Abstract : public Interface {
 public:
  int method() override = 0;
};

class Implementation : public Abstract {
 public:
  int method() override { return 42; }
};
Run Code Online (Sandbox Code Playgroud)

与:

class Interface {
 public:
  virtual int method() = 0;
};

class Abstract : public Interface {};

class Implementation : public Abstract {
 public:
  int method() override { return 42; }
};
Run Code Online (Sandbox Code Playgroud)

c++ abstract-class coding-style interface pure-virtual

17
推荐指数
2
解决办法
8198
查看次数

Amazon Web Services的个人服务器价格合理吗?

我目前有一个Linux,Apache,MySQL,PHP,Postfix网络服务器,我在家里的备用计算机上安装,我正在探索转移到亚马逊网络服务.这就像个人网络服务器一样简单,我主要用它来进行PHP开发的个人实验,我有一个博客,它托管我的电子邮件,还有我在服务器上做一些C++开发并运行一些小的可执行文件和网络个人应用程序.

服务器真正看到的唯一流量是我(每天),加上一些网络抓取工具,偶尔也会受到Google搜索的影响.

将我的服务器转移到Amazon Web Services是否合理?或者亚马逊网络服务专门针对更大规模的服务器?我能期望为这个托管支付最便宜的费用是什么?

我尝试使用AWS简单月度计算器,但很难估计数字.也许某人正在做与我的计划类似的事情,并可以告诉我他们付出的代价.

我对AWS感兴趣的原因之一是,我正在考虑将我的网站用作我正在处理的移动应用程序的云存储,如果该应用程序快速启动,我希望能够快速扩展到流量.

amazon-web-services

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

if语句和命令行中的一行python脚本

为什么我收到以下一个线性python代码的语法错误?

python -c 'import re; if True: print "HELLO";'
  File "<string>", line 1
    import re; if True: print "HELLO";
                ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

以下代码工作得很好

python -c 'if True: print "HELLO";'
Run Code Online (Sandbox Code Playgroud)

如何从命令行更改我的一行以在一行上执行我的预期脚本?

python bash shell command-line

7
推荐指数
2
解决办法
7191
查看次数

如何将整数结构初始化为零?

确保以下大型结构的整数初始化为0的最佳方法是什么?

struct Statistics {
    int num_queries;
    int num_respones;
    // ... 97 more counters here
    int num_queries_filtered;
}
Run Code Online (Sandbox Code Playgroud)

我想避免必须检查每个地方这个结构初始化,以确保它是初始化值Statistics s();而不是默认初始化Statistics s;.

Statistics s;     // Default initialized by accident here
s.num_queries++;  // Oh no, this is a bug because it wasn't initialized to zero
Statistics s2{};  // Correctly value initialized
s2.num_queries++; // Successful
Run Code Online (Sandbox Code Playgroud)

建议1 - 使用memset,但这感觉就像一个黑客,我们利用值初始化发生相当于0填充数据结构:

struct Statistics {
    Statistics() { memset(this, 0, sizeof(*this)); }
    // ... counters here
}
Run Code Online (Sandbox Code Playgroud)

建议2 - 使用构造函数初始化列表,但这很麻烦,当人们将来添加新计数器时,他们可能忘记在构造函数中对它们进行零初始化:

struct Statistics { …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

5
推荐指数
2
解决办法
452
查看次数

迭代它时从集合中擦除的最有效方法

迭代它时从集合中删除的最有效方法是什么?以下是我想到的两种方法,它们之间最好的方法是什么?还有另一种更好的方法吗?

void WaitForFiles(std::set<string> files) {
  while (files.size() > 0) {
    std::set<string> found_files;
    for (const auto& file : files) {
      if (Exists(file)) {
        found_files.insert(file);
      }
    }
    for (const auto& found_file : found_files) {
      files.erase(file);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

使用set_difference:

void WaitForFiles(std::set<string> files) {
  while (files.size() > 0) {
    std::set<string> found_files;
    for (const auto& file : files) {
      if (Exists(file)) {
        found_files.insert(file);
      }
    }
    std::set<string> difference;
    std::set_difference(files.begin(), files.end(),
                        found_files.begin(), found_files.end(),
                        std::inserter(difference, difference.end()));
    files = difference;
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意以下崩溃:

void WaitForFiles(std::set<string> files) {
  while …
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
1
解决办法
3046
查看次数