array_map vs循环和操作

使用: for($i=1; $i<= 10000; ++$i) { $arrayOfNumbers[] = rand(1, 99999); } 有人可以解释为什么有这样的速度差异: array_map(array($maxHeap, 'insert'), $arrayOfNumbers); # Avg Time: 0.92856907844543s # against foreach($arrayOfNumbers as $number) { $maxHeap->insert($number); } # Avg Time: 1.3148670101166 $maxHeap是一个对象class MaxHeap extends SplMaxHeap

在Windows 7上启动Java应用程序的最佳方法是什么?

要求 我想在Windows 7上发布Java GUI应用程序。此应用程序使用Swing Toolkit,不需要任何本机代码。 该应用程序使用NSIS安装程序进行安装。 我想尽可能将这个应用程序集成到Windows 7中。 意即: 应用程序运行时,必须可以将应用程序固定到任务栏。 必须能够将数据文件与应用程序相关联,以便Windows使用我的应用程序打开这些文件。 必须自动使用32位Java运行时和64位Java运行时。 所以,当用户卸载一个32位的Java,并安装一个64位的Java(反之亦然),那么我的应用程序必须仍然工作。 必须支持Windows的大字体设置。 我不太了解这个function。 我只是知道一些应用程序完全忽略它,其他人(像谷歌浏览器)是像素缩放(看起来很丑),而其他人通过简单地使用更大的字体支持它(这是我想要的,通常它的工作原理只有WinRun4J解决scheme以下提到不起作用)。 testing的解决scheme WinRun4J WinRun4j是启动Java应用程序的EXE文件。 因为应用程序不分叉新的Java进程Windows认为EXE文件是应用程序。 所以任务栏没有问题。 文件关联工作,因为文件可以简单地与EXE文件相关联。 问题: 不支持大字体。 应用程序窗口像素缩放,而不是像谷歌浏览器。 根据安装的JRE,必须使用两个不同的EXE文件。 所以当安装64位JRE时,应用程序必须以64位EXE文件启动。 安装32位JRE时,必须使用其他EXE。 这不是用户友好的,因为用户不明白为什么只安装32位JRE时,他必须使用64位操作系统上的32位EXE。 Launch4J Launch4J创build一个32位EXE,启动一个外部Java进程来启动Java应用程序。 所以不像WinRun4J,它也可以启动一个64位的Java。 问题: 无法将应用程序固定到任务栏。 如果headerType="gui" , System.out.println将不会打印到控制台,无论应用程序是否从控制台启动。 jar 在Windows上,您只需双击JAR文件即可启动应用程序。 安装的JRE无所谓,简单的工作。 但… 问题: 应用程序不能被固定到任务栏。 无法在开始菜单中创build快捷方式。 无法将文件与JAR文件相关联。 BAT / CMD 像这样一个简单的batch file可以用来启动应用程序: @echo off start c:\windows\system32\javaw.exe -jar […]

从AWS Lambda函数连接到ElastiCache群集

是否可以从AWS Lambda函数连接到Redis ElastiCache群集? 我不知道这是一个configuration问题还是根本不可能。 PS:我从一个EC2实例做了testing,我可以连接到Redis节点。 此外,Lambda函数和Redis节点在相同的区域中。 更新(2015年10月9日): 亚马逊宣布VPC为AWS Lambdafunction。 详情在这里 这意味着我们现在可以访问VPC安全组后面的AWS资源,包括ElastiCache和RDS机器。 更新(2016年2月11日):亚马逊推出VPC for AWS Lambda。 https://aws.amazon.com/about-aws/whats-new/2016/02/access-resources-within-a-vpc-using-aws-lambda/

使用Android Studio 2.0启动Android应用程序时安装重新启动补丁程序时出错

目前我正在使用Android Studio 2.0并将我的APK安装到我的三星设备(S6)中。 但是,重build我的代码并再次运行时收到以下错误: Error installing cold swap patches: com.android.tools.fd.client.InstantRunPushFailedException: Error creating folder with: run-as com.appcustomer mkdir -p /data/data/com.appcustomer/files/instant-run/inbox Error while Installing restart patches 有谁知道这个问题是什么?

如何使用强名称签署.NET程序集DLL文件?

我有一个没有名字的集会。 我没有它的源代码。 我现在需要签署。 有没有办法做到这一点?

Android:OutofMemoryError:位图大小超过虚拟机预算,没有任何理由,我可以看到

我有一个超过600×800像素JPEG的画廊OutOfMemoryexception。 环境 我一直在用600×800像素的JPG图片来使用Gallery。 由于我的内容可能比图片稍微复杂一些,因此我将每个视图都设置为一个将ImageView换成JPG的RelativeLayout。 为了“加快”用户体验,我有一个简单的4槽高速caching(在循环中),左边1个图像和右边1个图像预取到显示的图像,并保留在4槽HashMap中。 该平台 我正在使用256 RAM和128堆大小的AVD,以及600×800的屏幕。 它也发生在Entourage Edge目标上,除了使用设备更难debugging。 问题 我已经得到一个例外: OutofMemoryError: bitmap size exceeds VM budget 当获取第五张图片时会发生这种情况。 我试图改变我的图像caching的大小,它仍然是一样的。 奇怪的事情:不应该有一个记忆问题 为了确保堆的限制与我所需要的距离相去甚远,我在开始时定义了一个虚拟的8MB数组,并将其保留为未引用状态,以便立即派发。 它是活动线程的成员,定义如下 static { @SuppressWarnings("unused") byte dummy[] = new byte[ 8*1024*1024 ]; } 结果是堆大小接近11MB,而且全部是免费的。 注意我开始崩溃后添加了这个技巧。 这使得OutOfMemory不那么频繁。 现在,我正在使用DDMS。 就在崩溃之前(在崩溃之后变化不大),DDMS显示: ID Heap Size Allocated Free %Used #Objects 1 11.195 MB 2.428 MB 8.767 MB 21.69% 47,156 […]

调用event.preventDefault()之后是否有方式来调用默认操作?

这个问题是为了开发jQuery插件和其他自包含的JavaScript代码片段,不需要修改其他脚本文件的兼容性。 我们都知道event.preventDefault()会阻止默认事件,所以我们可以运行一个自定义函数。 但是如果我们只想在调用它之前延迟默认事件呢? 我已经看到了各种各样的,特定于个案的忍者技巧和解决方法来重新调用默认的动作,但正如我所说的,我的兴趣在于重新触发默认的通用方式,而不是处理默认的触发器,以个案为基础。 $(submitButton).click(function (e) { e.preventDefault(); // Do custom code here. e.invokeDefault(); // Imaginary… 🙁 }); 即使是表格提交这样简单的事情,似乎也没有普遍的答案。 $(selector).closest("form").submit()解决方法假定默认操作是一个标准的表单提交,而不是像ASP.NET中的__doPostBack()函数那样古怪。 在调用ASP.NETcallback函数的最后,这是我最接近的一个通用的,一劳永逸的解决scheme: $(submitButton).click(function (e) { e.preventDefault(); // Do custom code here. var javascriptCommand = e.currentTarget.attributes.href.nodeValue; evalLinkJs(javascriptCommand); }); function evalLinkJs(link) { // Eat it, Crockford. 🙂 eval(link.replace(/^javascript:/g, "")); } 我想我可以开始编写特殊情况来处理与window.locationredirect的正常链接,但是随后我们打开了一个全新的蠕虫jar – 在越来越多的情况下为默认事件调用堆积创build比解决scheme更多的问题。 那么怎么样? 谁有我一直在寻找的魔力?

Rails资产pipe道解决scheme适用于IE 4096select器/样式表限制

问题 微软的IE支持文档解释说,在Internet Explorer 6-9中: 没有应用前31个样式标签之后的所有样式标签。 前4095条规则之后的所有样式规则都不适用。 在使用@import规则连续导入导入其他样式表的外部样式表的页面上,会忽略深度超过三级的样式表。 脚本演示有很多这个问题的证据。 另见保佑 。 需要解决scheme 我们需要一种方法来分割由资产pipe道中的Sprockets生成的编译样式表,以保持最大select器数量低于4096,并在部署的Rails应用程序的HTML中链接到它们。 我们怎样才能把经过处理的资产(特别是样式表)的编译输出作为parameter passing给一个方法,然后才能修改这些文件呢? 看到下面的尝试开始的地方。 如果有人能够帮助我find一种方法来实现(或者全新的解决scheme),那太棒了! 现有的解决scheme尝试 祝福是为了解决这个问题而创build的,通过分割样式表来保持每张表的最大select器数在极限以下。 祝福在node.js服务器上运行 我还没有看到一个Ruby的等价物呢。 埃里克·菲尔兹(Eric Fields)试图将用罗盘编译的资产提供给Bless (在节点中运行),但该解决scheme依赖于Compass处理资产编译,因此似乎不适用于资产pipe道。 请注意,不是链接到多个样式表,Bless向第一个表添加了@include语句,这可能是避免触及标记的方法。 当Christian Peters(@crispy) 发现这个问题时 ,他实现了一个像Bless一样的分割器 ,它也将Compass的输出传递给了一个自定义模块,在Rails 3.1之前,这个模块运行良好。 后来,他用SprocketsEngine改编了他的分离器,以便与Rails Assetpipe道集成 。 我尝试过实现新的代码,但它似乎并没有自动工作(虽然分配器工作正常,当在控制台手动调用)。 相关信息 有关IE 6-9中CSS限制的更多信息,请参阅以下相关问题: IE 8对每页样式表的数量是否有限制? Internet Explorer的CSS规则限制

如何在Medium Trust中写入Web.Config?

上传我的第一个体面大小的networking应用程序到我的共享主机为我提供了一个新的挑战,我的意思是,不眠之夜。 问题是,我当然没有开发我的中等信任申请(或者有什么线索)。 我减轻了所有的问题,除了一个。 我已经写了一个pipe理员的安装程序能够指定他们的连接string和其他首选项,但我找不到一个方法来写入中等信任的web.config。 有没有人有一个解决scheme,或者我应该只是在其他文件的偏好?

了解iPhone上的内存消耗

我正在使用OpenGL ES开发2D iPhone游戏,并且一直保持24 MB的内存限制 – 我的应用程序不断崩溃,出现错误代码101.我试图很难find内存的位置,但乐器中的数字仍然很多比我所期望的要大 我用Memory Monitor,Object Alloc,Leaks和OpenGL ES仪器运行了这个应用程序。 当应用程序被加载时,空闲的物理内存从37 MB降低到23 MB,Object Alloc约为7 MB,泄漏显示两个或三个泄漏几个字节,Gart对象大小约为5 MB,内存监视器显示应用程序占用大约14 MB的实际内存。 我感到困惑的是记忆力在哪里 – 当我深入研究Object Allocations时,大部分的记忆都在纹理中,完全如我所料。 但是我自己的纹理分配计数器和Gart对象大小都认为纹理应该占用5MB左右的空间。 我不知道分配任何值得一提的东西,而对象Alloc也同意。 记忆在哪里? (如果这还不够,我很乐意提供更多细节。) 更新:我真的试图find我可以分配这么多的内存,但没有结果。 什么驱使我疯狂是对象分配(〜7 MB)和实际内存使用情况(如内存监视器(〜14 MB)所示)之间的差异。 即使存在大量的泄漏或者大量的记忆,我仍然忘记了,这个应该仍然出现在对象分配中 ,不是吗? 我已经尝试了通常的 嫌疑犯 ,即。 UIImage的caching,但没有帮助。 有没有一种方法可以逐行跟踪内存使用“debugging器风格”,观察每条语句对内存使用情况的影响? 到目前为止我发现的是: 我真的正在使用那么多的记忆。 测量真正的内存消耗并不容易,但经过大量计算,我认为内存消耗真的很高。 我的错。 我发现没有简单的方法来衡量使用的内存。 内存监视器的号码是准确的(这些是真正重要的数字),但内存监视器不能告诉你内存到底在哪里。 Object Alloc工具几乎无用于跟踪真实的内存使用情况。 当我创build一个纹理时,分配的内存计数器会上升一段时间(将纹理读入内存),然后下降(将纹理数据传递给OpenGL,释放)。 这是可以的,但并不总是会发生 – 即使将纹理传递给OpenGL并从“我的”内存中释放,有时内存使用率仍然很高。 这意味着Object Alloc工具分配的内存总量小于实际的内存总消耗量,但是大于实际的消耗减去纹理( real – textures < object […]