for (let i = 0; i < 10; i++) {
const promise = new Promise((resolve, reject) => {
const timeout = Math.random() * 1000;
setTimeout(() => {
console.log(i);
}, timeout);
});
// TODO: Chain this promise to the previous one (maybe without having it running?)
}
Run Code Online (Sandbox Code Playgroud)
以上将给出以下随机输出:
6
9
4
8
5
1
7
2
3
0
Run Code Online (Sandbox Code Playgroud)
任务很简单:确保每个promise只在另一个(.then())之后运行.
出于某种原因,我找不到办法.
我尝试了生成函数(yield),尝试了返回promise的简单函数,但在一天结束时它总是归结为同样的问题:循环是同步的.
使用异步我只是使用async.series().
你是如何解决的?
在程序优化期间,尝试优化迭代遍历向量的循环,我发现以下事实::: std :: vector :: at()比operator []快得多!
在发布和调试版本(VS2008 x86)中,operator []比at()快5到10倍.
在网上读了一下让我意识到at()有边界检查.好的,但是,将操作放慢了10倍?!
有什么理由吗?我的意思是,边界检查是一个简单的数字比较,还是我错过了什么?
问题是这种性能受损的真正原因是什么?
更进一步,有没有办法让它更快?
我肯定会在其他代码部分(我已经有自定义边界检查!)中将所有at()调用与[]交换.
概念证明:
#define _WIN32_WINNT 0x0400
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <conio.h>
#include <vector>
#define ELEMENTS_IN_VECTOR 1000000
int main()
{
__int64 freq, start, end, diff_Result;
if(!::QueryPerformanceFrequency((LARGE_INTEGER*)&freq))
throw "Not supported!";
freq /= 1000000; // microseconds!
::std::vector<int> vec;
vec.reserve(ELEMENTS_IN_VECTOR);
for(int i = 0; i < ELEMENTS_IN_VECTOR; i++)
vec.push_back(i);
int xyz = 0;
printf("Press any key to start!");
_getch();
printf(" Running speed test..\n");
{ // at() …Run Code Online (Sandbox Code Playgroud) class Person
{
public string m_name;
private int m_age; // << how do I serialize the darn little rat?
}
Run Code Online (Sandbox Code Playgroud)
简单的问题,但在尝试回答它时似乎是一个很大的混乱.
每个人都建议使用公共getter/setter,但我的应用程序太大,为每个成员制作一个getter/setter只会导致可维护性问题.
我是否被迫在这里创建自定义序列化,或者这些成员是否有魔术属性?
如何序列化私有类成员?
编辑#1:
大家好,对不起来感到抱歉,当我写这个问题时,我有点不高兴,试图找到解决方案几个小时后.
无论如何,这里有更多的事实:
1.我正在尝试XML序列化这个类.目前我正在使用System.Xml.Serialization.XmlSerializer.
2.我正在序列化为XML以获得版本兼容性,据我所知,二进制文件不能提供给我.
我希望有一个属性,如:
class Person
{
public string m_name;
[SerializeThat(ElementName="Age")]
private int m_age; // << how do I serialize the darn little rat?
}
Run Code Online (Sandbox Code Playgroud)
或者(继续事实#3)一个属于该类的属性,如下所示:
[Serializable(DoPrivate = true, DoProtected = true)]
class Person
{
public string m_name;
private int m_age; …Run Code Online (Sandbox Code Playgroud) describe('some test', function(){
// Could put here a shared variable
it('should pass a value', function(done){
done(null, 1);
});
it('and then double it', function(value, done){
console.log(value * 2);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
以上目前不适用于摩卡.
解决方案是在测试之间共享变量,如上所示.
随着async.waterfall()这是非常有可能的,我真的很喜欢它.有没有办法让它在摩卡中发生?
谢谢!
纠正我我错了,但是std :: map是一个有序的映射,因此每次插入一个值时,map都会使用算法在内部对其项进行排序,这需要一些时间.
我的应用程序以恒定间隔获取有关某些项目的信息.
这个应用程序保留一个定义如下的地图:
::std::map<DWORD, myItem*>
Run Code Online (Sandbox Code Playgroud)
首先,所有项目都被视为应用程序的"新"项.正在分配"Item"对象并将其添加到此映射,将其id和指向它的指针相关联.
如果它不是"新"项(只是对象的更新),我的应用程序应该使用给定的id在地图上找到对象并更新.
大多数时候我都会得到更新.
我的问题是:
是否有更快的地图实施或我应该继续使用这个?
我最好使用unordered_map吗?
阅读一些关于在PHP中锁定的文章.
它们主要指向http://php.net/manual/en/function.flock.php.
这个页面讨论了在硬盘上打开文件!!
真的是这样吗?我的意思是,这使得锁定非常昂贵 - 这意味着每次我想要锁定我都必须访问硬盘)=
可以用一个令人愉快的消息来安慰我吗?
编辑:
由于我有一些回复,我想问这个;
我的脚本只能运行一个或几个线程?因为如果它是一个然后我显然不需要互斥量.有简明的答案吗?
究竟我想要做什么
由ircmaxell提问.
这是故事:
我有两个ftp服务器.我希望能够在我的网站上显示有多少在线用户在线.
所以,我认为这些ftp服务器会将他们的统计信息"POST"到某个PHP脚本页面.我们假设此页面的URL是" http://mydomain.com/update.php ".
在网站的主页(" http://mydomain.com/index.php ")上,我将显示累积统计信息(在线用户).
而已.
我的问题是,我不确定当一个ftp服务器更新他的统计数据而另一个ftp服务器也是如此时,信息会变得混杂.
就像多线程时一样; 两个线程同时增加一些"int"变量.除非您在它们之间进行同步,否则它不会按预期发生.
那么,我有问题吗?是的,不,也许吧?
可能解决方案
一整天都在努力思考,我在这里有一个想法,我想让你发表意见.
正如所说的这些ftp服务器将发布他们的统计数据,每60秒一次.
我正在考虑将此文件设为"stats.php".
它将包含在ftp服务器转到的更新脚本("update.php")和"index.php"页面中,访问者可以看到有多少用户在线.
现在,当ftp服务器更新时,"update.php"中的脚本将使用新的累积统计信息修改"stats.php".
首先,它将读取"stats.php"中包含的统计信息,然后累积,然后重写该文件.
如果我没弄错,PHP将检测到文件("stats.php")已更改并加载新文件.正确?
制作了一个新项目,添加了main.cpp并在此URL处编写了代码:
http://www.boost.org/doc/libs/1_43_0/doc/html/boost_asio/example/echo/async_tcp_echo_server.cpp
此外,添加了适当的包含路径.
下一步是什么?!?!!构建升级代码似乎是一个神秘的事!
正在挖掘它超过10个小时.
任何人都可以直截了当地回答如何从Windows,VC9下的代码构建boost库?
在Ant中,我有一个名为' some_property' 的属性,让我们说它的值是" hello".
我正在尝试使用此属性的值(" hello ")替换文本文件中的占位符作为大写.
所以,我有这个任务:
<replaceregexp match="SOME_PLACE_HOLDER" replace="${some_property}" byline="true">
Run Code Online (Sandbox Code Playgroud)
我希望它能像我有这个任务一样工作:
<replaceregexp match="SOME_PLACE_HOLDER" replace="HELLO" byline="true">
Run Code Online (Sandbox Code Playgroud)
我希望避免使用外部Ant任务(例如Ant-Contrib),因此解决方案需要是一个纯正的正则表达式 - 它必须是可能的!
大写,小写和大写.
谁知道正确的正则表达式?
在HTML 5网站中,通过移动设备浏览的用户单击链接.
浏览器绘制一个框(矩形)作为反馈(除了声音).
浏览器可能意味着Android 2.3的股票浏览器或Opera Mobile.
对它进行了一些研究,但实际上没有(明确的)解决方案.
我想避开这个(蓝色)盒子.至少对于基于iPhone和Android的设备.任何的想法?
PS我也在使用jQuery
我想在编辑器选项卡之间前后移动,使用我有的两个额外的("虚拟")鼠标按钮(RAZER DEATHADDER BLACK).
在Eclipse中,默认情况下是可能的.
在IDEA中,我转到File- > Settings- > Keymap- > Main menu- > Window- > Editor Tabs.
我有Select Next Tabdeault Alt+Right快捷方式.
然后我打开了Add Mouse Shortcut.
在该对话框中,我尝试分配back鼠标按钮但没有成功.它根本没有反应.
无论如何,谷歌搜索我发现这个线程.我引用Alexey Gopachenko似乎是IntelliJ的员工:
如上所述 - 如果您平台上的JDK不支持按钮,我们就无法支持按钮 - 显然它不支持.
无论如何,这是完全错误的.我的平台确实支持这些密钥 - 我实际上是在同一个平台上,在Eclipse和任何其他应用程序上使用它们,所以IDEA会忽略它们.
我想要一个解决方案 - 如何分配这些后退/前进鼠标按钮?
更新#1
我发现IDEA使用自己的JAVA发行版(C:\Program Files (x86)\JetBrains\IntelliJ IDEA 11.1.4\jre在Windows 7上),而不是系统的发行版 - 为什么?!
我几乎可以肯定这是我无法使用扩展鼠标按钮的原因.
我试图通过创建自定义Windows快捷方式来欺骗IDEA.没工作.我还尝试在Windows中创建一个SYMLINK到我的其他系统范围的JRE发行版.没有工作.
如果有人想出如何让它与系统的JRE一起工作而不是自己的JRE - 我认为这样可以解决问题.
更新#2 以上更新#1不是问题.
c++ ×3
javascript ×2
performance ×2
ant ×1
boost ×1
c# ×1
es6-promise ×1
html ×1
html5 ×1
map ×1
mobile ×1
mocha.js ×1
mutex ×1
php ×1
regex ×1
testing ×1
vector ×1
visual-c++ ×1