当传递一个大的毫秒值时,我遇到了一些意想不到的行为setTimeout().例如,
setTimeout(some_callback, Number.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)
和
setTimeout(some_callback, Infinity);
Run Code Online (Sandbox Code Playgroud)
两者都导致some_callback几乎立即运行,好像我已经通过0而不是大量的延迟.
为什么会这样?
让我们A和B两套.我正在寻找真正快速或优雅的方法来计算它们之间的集合差异(A - B或者A \B,取决于您的偏好).正如标题所说,这两个集合作为Javascript数组进行存储和操作.
笔记:
编辑:我注意到有关包含重复元素的集合的注释.当我说"集合"时,我指的是数学定义,这意味着(除其他外)它们不包含重复元素.
我正在HSQLDB服务器上执行一些测试,其中包含一个包含500 000个条目的表.该表没有索引.有5000个不同的业务键.我需要一份清单.当然,我开始DISTINCT查询:
SELECT DISTINCT business_key FROM memory WHERE
concept <> 'case' or
attrib <> 'status' or
value <> 'closed'
Run Code Online (Sandbox Code Playgroud)
大约需要90秒!
然后我尝试使用GROUP BY:
SELECT business_key FROM memory WHERE
concept <> 'case' or
attrib <> 'status' or
value <> 'closed'
GROUP BY business_key
Run Code Online (Sandbox Code Playgroud)
它需要1秒!!!
试图找出我运行的差异,EXLAIN PLAN FOR但它似乎为两个查询提供相同的信息.
EXLAIN PLAN FOR DISTINCT ...
isAggregated=[false]
columns=[
COLUMN: PUBLIC.MEMORY.BUSINESS_KEY
]
[range variable 1
join type=INNER
table=MEMORY
alias=M
access=FULL SCAN
condition = [ index=SYS_IDX_SYS_PK_10057_10058
other condition=[
OR arg_left=[ …Run Code Online (Sandbox Code Playgroud) 当使用Google Maps API在jQuery UI选项卡中呈现地图时,有许多问题似乎都是众所周知的.我已经看到关于类似问题发布的SO问题(例如这里和这里),但那里的解决方案似乎只适用于Maps API的v2.我检查过的其他参考文献在这里和这里,以及我可以通过谷歌搜索挖掘的几乎所有内容.
我一直在尝试将地图(使用API的v3)填充到具有混合结果的jQuery选项卡中.我正在使用最新版本的一切(目前jQuery 1.3.2,jQuery UI 1.7.2,不了解Maps).
这是标记和javascript:
<body>
<div id="dashtabs">
<span class="logout">
<a href="go away">Log out</a>
</span>
<!-- tabs -->
<ul class="dashtabNavigation">
<li><a href="#first_tab" >First</a></li>
<li><a href="#second_tab" >Second</a></li>
<li><a href="#map_tab" >Map</a></li>
</ul>
<!-- tab containers -->
<div id="first_tab">This is my first tab</div>
<div id="second_tab">This is my second tab</div>
<div id="map_tab">
<div id="map_canvas"></div>
</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
和
$(document).ready(function() {
var map = null;
$('#dashtabs').tabs();
$('#dashtabs').bind('tabsshow', function(event, ui) { …Run Code Online (Sandbox Code Playgroud) 是否有通过node.js获取特定地址标头的内置方法?
就像是,
var headers = getUrlHeaders("http://stackoverflow.com");
Run Code Online (Sandbox Code Playgroud)
会回来的
HTTP/1.1 200 OK.
Cache-Control: public, max-age=60.
Content-Type: text/html; charset=utf-8.
Content-Encoding: gzip.
Expires: Sat, 07 May 2011 17:32:38 GMT.
Last-Modified: Sat, 07 May 2011 17:31:38 GMT.
Vary: *.
Date: Sat, 07 May 2011 17:31:37 GMT.
Content-Length: 32516.
Run Code Online (Sandbox Code Playgroud) 我<script>在我的HTML中嵌入了一个大型数组,就像这样(没什么好惊讶的):
<script>
var largeArray = [/* lots of stuff in here */];
</script>
Run Code Online (Sandbox Code Playgroud)
在此特定示例中,阵列具有210,000个元素.这远远低于理论最大值2 31 - 4个数量级.这是有趣的部分:如果我将数组的JS源保存到文件中,那么该文件大于44兆字节(确切地说是46,573,399字节).
如果您想亲眼看看,可以从GitHub下载.(那里的所有数据都是罐装的,所以很多都是重复的.生产中不会这样.)
现在,我真的不担心提供那么多数据.我的服务器gzips它的响应,所以它真的不需要花费很长时间才能通过网络获取数据.但是,一旦加载,页面就会出现令人讨厌的趋势,导致浏览器崩溃.我在IE中根本没有测试(这是一个内部工具).我的主要目标是Chrome 8和Firefox 3.6.
在Firefox中,我可以在控制台中看到一个相当有用的错误:
Error: script stack space quota is exhausted
在Chrome中,我只是得到了悲伤标签页:

顺便说一句,我能够在Chrome中启用此功能(阅读:不会崩溃选项卡).我真的认为Chrome至少是由更强硬的东西制成的,但显然我错了......
@Crayon:我不想证明我为什么要立即将这么多数据转储到浏览器中.简短版本:要么解决这个问题(当然不是那么容易),要么我必须解决一大堆其他问题.我现在选择更简单的方法.
@various:现在,我并不是特别想找到减少数组中元素数量的方法.我知道我可以实现Ajax分页或者你有什么,但是在其他方面它会为我引入一系列问题.
@Phrogz:每个元素看起来像这样:
{dateTime:new Date(1296176400000),
terminalId:'terminal999',
'General___BuildVersion':'10.05a_V110119_Beta',
'SSM___ExtId':26680,
'MD_CDMA_NETLOADER_NO_BCAST___Valid':'false',
'MD_CDMA_NETLOADER_NO_BCAST___PngAttempt':0}
Run Code Online (Sandbox Code Playgroud)
@Will:但是我的计算机配备了4核处理器,6 GB RAM,超过半TB的磁盘空间......我甚至都没有要求浏览器快速完成这项工作 - 我只想问因为它可以工作!☹
任务完成!
通过Juan和Guffa的现场建议,我能够让这个工作!似乎问题只是解析源代码,而不是在内存中实际使用它.
总结胡安答案的评论泥潭:我不得不将我的大阵列分成一系列较小的阵列,然后是Array#concat()它们,但这还不够.我还 …
我想在YAML中重用哈希:
Defaults: &defaults
Company: Foo
Item: 123
Computer: *defaults
Price: 3000
Run Code Online (Sandbox Code Playgroud)
但是,这会产生错误.
是分别定位每个字段值的唯一途径是这样?
Defaults:
Company: &company Foo
Item: &item 123
Computer:
Company: *company
Item: *item
Price: 3000
Run Code Online (Sandbox Code Playgroud) 我正在尝试最小化许多JAX-RS资源处理程序的重复代码,所有这些都需要一些相同的路径和查询参数.每个资源的基本URL模板如下所示:
/{id}/resourceName
Run Code Online (Sandbox Code Playgroud)
每个资源都有多个子资源:
/{id}/resourceName/subresourceName
Run Code Online (Sandbox Code Playgroud)
因此,资源/子资源路径(包括查询参数)可能看起来像
/12345/foo/bar?xyz=0
/12345/foo/baz?xyz=0
/12345/quux/abc?xyz=0
/12345/quux/def?xyz=0
Run Code Online (Sandbox Code Playgroud)
跨资源的共用部位foo和quux是@PathParam("id")和@QueryParam("xyz").我可以像这样实现资源类:
// FooService.java
@Path("/{id}/foo")
public class FooService
{
@PathParam("id") String id;
@QueryParam("xyz") String xyz;
@GET @Path("bar")
public Response getBar() { /* snip */ }
@GET @Path("baz")
public Response getBaz() { /* snip */ }
}
Run Code Online (Sandbox Code Playgroud)
// QuuxService.java
@Path("/{id}/quux")
public class QuxxService
{
@PathParam("id") String id;
@QueryParam("xyz") String xyz;
@GET @Path("abc")
public Response getAbc() { /* snip */ }
@GET @Path("def")
public …Run Code Online (Sandbox Code Playgroud) 我在Mac 10.7.4上使用Eclipse Indigo.工作时,我会得到这些定期的,烦人的对话框
'Periodic workspace save.' has encountered a problem.
Could not write metadata for '/.org.eclipse.jdt.core.external.folders'.
/Users/davea/Dropbox/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.jdt.core.external.folders/.markers.snap (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
我似乎能够像往常一样继续,但我想知道如何消除这些错误.
我试图弄清楚这种事情的调用方式,以及最终我如何在网络浏览器中创建一个.它看起来像这样(想到第一个应用程序的屏幕截图):

我正在寻找的特定组件/模式是两个列表框("Included Gear"和"Excluded Gear"),它们表示从集合中包含/排除项目.我不是真的在寻找WPF名称(如果有的话),但它可能会有所帮助.
我正在寻找这个东西的名称,如果有的话,如果你真的想要我的一天,你可以指向我jQuery或YUI的方式在浏览器中制作这些交易之一.
javascript ×3
arrays ×2
jquery ×2
distinct ×1
eclipse ×1
google-maps ×1
group-by ×1
hsqldb ×1
java ×1
jax-rs ×1
jersey ×1
memory ×1
node.js ×1
performance ×1
settimeout ×1
sql ×1
terminology ×1
yaml ×1
yui ×1