小编Chr*_*ris的帖子

使用ES6的Promise.all()时限制并发性的最佳方法是什么?

我有一些代码在一个列表中进行迭代,该列表从数据库中查询并为该列表中的每个元素发出HTTP请求.该列表有时可能是一个相当大的数字(成千上万),我想确保我没有遇到数千个并发HTTP请求的Web服务器.

此代码的缩写版本目前看起来像这样......

function getCounts() {
  return users.map(user => {
    return new Promise(resolve => {
      remoteServer.getCount(user) // makes an HTTP request
      .then(() => {
        /* snip */
        resolve();
      });
    });
  });
}

Promise.all(getCounts()).then(() => { /* snip */});
Run Code Online (Sandbox Code Playgroud)

此代码在Node 4.3.2上运行.重申Promise.all一下,可以进行管理,以便在任何给定时间只有一定数量的Promise正在进行中?

javascript node.js es6-promise

67
推荐指数
7
解决办法
3万
查看次数

C#VS2010项目中的"PDB与图像不匹配"错误

我已经在我的代码库中使用了一段时间了,我想调试到库级别.为此,我下载了源代码,并将项目作为现有项目包含在我的C#解决方案中.然后我让我的其他项目引用该项目而不是下载的.DLL.

一旦项目被引用而不是DLL,我通过调试器运行我的解决方案并尝试进入一个函数调用,该调用将调用外部项目,但它正好在它上面.在调试时,我打开了"模块"窗口,发现DLL的符号状态读取"PDB与图像不匹配",这可能是无法调试此项目的原因.

我的问题很简单,如果我的项目直接引用.csproj文件作为参考,为什么PDB与图像不匹配?对于要运行的版本,不应该有任何歧义.

.net c# visual-studio-2010 visual-studio pdb-files

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

拆分字符串,在字符串之间切换数字和字母字符

我正在解析一些标准格式类似的数据10 pizzas.有时,数据输入正确,我们最终可能会结束5pizzas而不是5 pizzas.在这种情况下,我想解析比萨饼的数量.

这种天真的做法是逐字符检查,构建一个字符串,直到我们达到非数字,然后将该字符串作为整数转换.

num_pizzas = ""
for character in data_input:
   if character.isdigit():
      num_pizzas += character
   else:
      break
num_pizzas = int(num_pizzas)
Run Code Online (Sandbox Code Playgroud)

不过,这非常笨重.是否有更简单的方法将字符串从数字切换为字母字符?

python

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

表示输入参数是Apiary中的日期/时间的正确格式是什么?

我正在编辑我正在处理的项目的一些Apiary文档,并且需要表示我的一个API调用的参数是一个日期时间字符串.蜂房似乎在扼杀这个参数的格式,所以我想知道在Apiary中记录这个参数的建议方法是什么.

为了演示,我从Apiary获取了标准的默认文档并修改了Choice文档以获取类似的datetime对象:

## Choice [/questions/{question_id}/choices/{choice_id}/{datetime}]

+ Parameters
    + question_id: 1 (required, number) - ID of the Question in form of an integer
    + choice_id: 1 (required, number) - ID of the Choice in form of an integer
    + datetime: 2015-05-05T12:30:00 (optional, date) - The date/time (ISO8601 format) associated with this choice
Run Code Online (Sandbox Code Playgroud)

最终结果如下:

datetime
05-05T12:30:00 (optional, date) - The date/time (ISO8601 format) that all returned events should be greater than or equal to Example: 2015.
Run Code Online (Sandbox Code Playgroud)

这显然是错误的,甚至写下示例值.破折号(-)是一个特殊的角色,在这里引起悲伤.这样做的推荐方法是什么?

apiary.io apiblueprint apiary

9
推荐指数
1
解决办法
3524
查看次数

自动变量及其类型

我在一篇文章中发现了如何使用迭代器从容器中删除元素.在迭代时:

for(auto it = translationEvents.begin(); it != translationEvents.end();)
    {
        auto next = it;
        ++next; // get the next element
        it->second(this); // process (and maybe delete) the current element
        it = next; // skip to the next element
    }
Run Code Online (Sandbox Code Playgroud)

为什么auto没有使用类型auto next = it;

我使用的是VS10,而不是C++ 11!

c++ auto c++11

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

我们如何加快从MSMQ接收消息?

我的应用程序的瓶颈已经变成通过MassTransit通过MSMQ发送和接收消息.发送和接收都发生在同一个应用程序中,但是通常有太多消息要使用内存中队列.

这是我的简单队列设置:

messageBus = ServiceBusFactory.New(sbc =>
                {
                    sbc.UseMsmq();
                    sbc.VerifyMsmqConfiguration();
                    sbc.UseMulticastSubscriptionClient();
                    sbc.ReceiveFrom("msmq://localhost/msg_queue");
                    sbc.Subscribe(subs =>
                    {
                        subs.Handler<EventMessage>(msg => Enqueue(msg));
                    });
                });
Run Code Online (Sandbox Code Playgroud)

对于我的实验,MSMQ目前有大约100万条消息,我们没有向它推送任何新消息.Enqueue()除了时间消息的发送速度之外,我们没有做任何工作.

有了这些信息,我们每秒只能从MSMQ中获取150到200条消息,当我希望在没有网络延迟时每秒至少有1000条消息.每条消息<2kb.

我们如何加快MSMQ通过MassTransit将消息传递给应用程序的速度,同时保持队列强制执行的消息排序?

.net c# msmq masstransit message-queue

7
推荐指数
1
解决办法
1236
查看次数

是否可以在Python中处理任意大的字符串?(通过*运算符创建)

我们可以使用*运算符构建固定结构但任意长度的字符串,具体如下:

length = 10
print "0" * length
Run Code Online (Sandbox Code Playgroud)

这会返回预期的结果0000000000.当长度过大时会出现问题,导致溢出错误:

length = 10000000000000000000000000000000000000000000000
print "0" * length
Run Code Online (Sandbox Code Playgroud)

这导致了OverflowError: cannot fit 'long' into an index-sized integer.

我很好奇,这种配方能不能用于任意长度的尺寸?或者处理length未知情况并且可能具有如此大值的方案的正确方法是什么?

python string

6
推荐指数
1
解决办法
1774
查看次数

如何在fluent-migrator中重命名表的主键?

我需要通过fluent-migrator重命名现有表的主键,以便automapper可以自动检测列.

对于大多数列,只需FluentMigrator删除该列的任何外键约束,1)删除该列的索引2)并重命名该列.我历史上这样做是通过:

Delete.ForeignKey("foreignkeyconstraint").OnTable("mytable");
Delete.Index("UserId").OnTable("mytable");
Rename.Column("UserId").OnTable("mytable").To("UserInfo_id");
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于主键,因为我无法删除该列上自动创建的索引.使用fluent-migrator重命名主键列的正确方法是什么?

c# mysql fluent-migrator

6
推荐指数
2
解决办法
3988
查看次数

无法修改Material UI的&lt;Dialog&gt;组件的某些内部样式

我正在尝试将一些合理的简单样式应用于我的<Dialog>组件。在这种情况下,我试图用边界半径将角圆化。以下是一些我想用来替代默认<Dialog>样式的简单内联样式:

let overrideStyles = {
  padding: 0,
  margin: 0,
  borderRadiusTopLeft: '4px',
  borderRadiusTopRight: '4px',
};
Run Code Online (Sandbox Code Playgroud)

<Dialog>为覆盖内部样式提供了多种可能性。这些措施包括bodyStylecontentStylestyletitleStyleoverlayStyle,和actionsContainerStyle。我决定尝试将这些样式应用于每种样式。

<Dialog
  bodyStyle={overrideStyles}
  contentStyle={overrideStyles}
  style={overrideStyles}
  titleStyle={overrideStyles}
  overlayStyle={overrideStyles}
  actionsContainerStyle={overrideStyles}
  modal={overrideStyles}
>
  <TestPanel/>
</Dialog>
Run Code Online (Sandbox Code Playgroud)

当渲染我的时TestPanel,它最终看起来像这样:

测试面板

注意那些尚未应用边框半径的角落...我打开了检查器,并注意到以下div:

没有风格的Div

如果将边框半径样式应用于突出显示的div,则对话框的角将按预期的方式变圆。这引出我的问题...

如何<Dialog>在我的CSS尝试时覆盖Material UI 组件的样式以应用圆角?

css dialog reactjs material-ui

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

为什么cv :: circle()只在某个RGB值的3D矩阵上显示?

我看到一些我没想到的奇怪行为.在纯白色矩阵类型CV_64FC3(3个通道,浮点值)上,我画了一个彩色圆圈.意外的行为是圆圈实际上只显示某些RGB值.以下是我的程序的两种不同颜色的示例输出:

打印一个红色圆圈

打印一个灰色圆圈

很明显,灰色圆圈丢失了.我的问题:为什么?我怎样才能让它出现?下面是我可以运行的小程序中的示例代码.

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

void main()
{
    const unsigned int diam = 200;
    cv::namedWindow("test_window");
    cv::Mat mat(diam, diam, CV_64FC3);

    // force assignment of each pixel to white.
    for (unsigned row = 0; row < diam; ++row)
    {
        for (unsigned col = 0; col < diam; ++col)
        {
            mat.at<cv::Vec3d>(row, col)[0] = 255;
            mat.at<cv::Vec3d>(row, col)[1] = 255;
            mat.at<cv::Vec3d>(row, col)[2] = 255;
        }
    }

    // big gray circle.
    cv::circle(mat, cv::Point(diam/2, diam/2), (diam/2) - 5, CV_RGB(169, 169, 169), -1, CV_AA);

    cv::imshow("test_window", …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

4
推荐指数
1
解决办法
2568
查看次数

调用析构函数.并输入输出重载

因此,如果我的对象没有被引用传递,则析构函数被调用两次.但是当我通过引用传递它时一切都很好.

<!-- language: lang-cpp -->

ostream& operator<<(ostream& os,Counter_naslednik_1 &object){
 cout<<endl<<object.date<<endl;
 return os;
 }

//-----------------
void main(){
Counter_naslednik_1 new_object;
cout<<new_object;
}
Run Code Online (Sandbox Code Playgroud)

为什么析构函数被调用两次?当将它作为参数传递给重载运算符时,为什么要通过引用传递我的对象?

c++

0
推荐指数
1
解决办法
129
查看次数

在循环中打破循环外?

当我在if语句中break时,我的脚本返回一个错误,说它在循环之外break.为什么?我该如何解决?从书中写出一个剧本,

if hook_address:
    hooks.add(dbg,hook_address,2,ssl_sniff,None)
    print "[*] nspr4.PR_Write hooked at: 0x%o8x" %hook_address
    break
else:
    print "[!] Error: Couldn't resolve hook address!"
    sys.exit(-1)
Run Code Online (Sandbox Code Playgroud)

c:\ 0xic-zex\Python> sniffer.py文件"C:\ 0xic-zex\Python\sniffer.py",第32行break语法错误:'break'外循环

怎么了?我breakif循环中.

python

-1
推荐指数
1
解决办法
1072
查看次数