我正在使用ExternalInterface调用嵌入在html页面中的flash应用程序.以下代码工作正常(我正在使用按钮进行测试):
$(document).ready(function(){
$("#button").click(function(){
var app = document.getElementById('ApplicationID')
console.debug(app)
app.pageUnloading()
})
})
Run Code Online (Sandbox Code Playgroud)
所以这调用flash应用程序并打印:
<embed id="ApplicationID" width="600" height="400" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" allowscriptaccess="sameDomain" name="FlexMoeders" bgcolor="#cccccc" quality="high" src="ApplicationID.swf">
Run Code Online (Sandbox Code Playgroud)
但是当我使用jquery $#方法获取id的元素时,我会收到一个不同的对象:
$(document).ready(function(){
$("#button").click(function(){
var app = $("#ApplicationID")
console.debug(app)
app.pageUnloading()
})
})
Run Code Online (Sandbox Code Playgroud)
当我使用它时,我被告知:
app.pageUnloaded is not a function
Run Code Online (Sandbox Code Playgroud)
并打印以下内容:
[embed#ApplicationID]
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
var app = $("#ApplicationID").val()
var app = $("#ApplicationID").get(0)
Run Code Online (Sandbox Code Playgroud)
但仍然没有成功.有人有任何想法吗?
很多次我读/听到由于应用程序进行模式切换(即从用户模式进入内核模式)并且在执行系统调用之后开始在用户模式下执行,因此进行大量系统调用等会产生效率低下.模式再次切换.
我的问题是模式切换的开销是多少?是否cpu缓存失效或tlb条目被刷新或导致开销的情况?
请注意,我问的是模式切换所涉及的开销而不是上下文切换.我知道模式切换和上下文切换是两个不同的事情,我完全了解与上下文切换相关的开销,但我无法理解的是模式切换引起的开销是多少?
如果可能,请提供有关特定*nix平台的一些信息,如Linux,FreeBSD,Solaris等.
问候
拉利
经典正则表达式等价于有限自动机.大多数当前的"正则表达式"实现并不严格地说正则表达式,但更强大.有些人开始使用术语"模式"而不是"正则表达式"来更准确.
什么是可以用现代"正则表达式"描述的形式语言分类,例如Perl 5中支持的模式?
更新:"Perl 5"我的意思是在Perl 5中实现的模式匹配功能,并被许多其他语言(C#,JavaScript等)采用,而不是Perl特有的任何东西.例如,我不想考虑在模式中嵌入Perl代码的技巧.
我在我的应用程序中有本地化(英语,西班牙语,意大利语).客户端发给我字符串文件,但有些字符很奇怪我如何纠正它们?我已经发现客户端使用Mac OS罗马编码如何将其转换为utf-8.例如纽伦堡被转换为N√ºrnberg,当客户现在发送给我时我想要重新转换它.
我正在使用maven 2.2和nexus 1.4.0
假设我有一个像这样的pom结构(带有相应的版本)
parentproj, v1.0.1
- childproj1, v1.0.2
- childproj2, v1.0.7
Run Code Online (Sandbox Code Playgroud)
childproj1和childproj2代表应用程序的不同部分(例如gui和backend),我希望能够将它们的版本分开,这样我就可以发布新版本的后端而无需发布新版本的gui.
现在,要将此结构部署到Nexus,可以方便地转到parentproj并说
mvn deploy -DperformRelease = true
这会将所有工件部署到Nexus realease存储库.我第一次部署它时工作正常,但第二次遇到问题:让我说我对childproj1进行了更新,以便我们现在有以下版本:
parentproj, v1.0.1
- childproj1, v1.0.3
- childproj2, v1.0.7
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Nexus不会让我从parentproj进行mvn部署,因为它已经在1.0.7版本中有了一个childproj2的副本.Nexus会说"资源,非法请求:ID ='版本'的存储库不允许更新工件." 这很好,我不想错误地更新现有版本.
但我想我想要做的就是能够告诉maven类似于"仅部署那些版本尚未存在于版本库中的工件".
有没有办法做到这一点,还是我必须自己部署每个项目?
我想应用DebuggerDisplayAttribute包括内存地址值.有没有办法让它以十六进制显示?
[DebuggerDisplay("Foo: Address value is {Address}")]
class Foo
{
System.IntPtr m_Address = new System.IntPtr(43981); // Sample value
System.IntPtr Address
{
get { return m_Address; }
}
}
Run Code Online (Sandbox Code Playgroud)
这将显示: Foo: Address value is 43981
相反,我希望值以十六进制显示,如下所示:Foo: Address value is 0xABCD.
我知道我可以通过覆盖来应用各种格式ToString(),但我很好奇是否可以使用DebuggerDisplayAttributes.
提前致谢!
在某些库代码中,我有一个可以包含50,000个或更多项的List.
库的调用者可以调用导致字符串添加到列表的方法.如何有效地检查要添加的字符串的唯一性?
目前,在添加字符串之前,我扫描整个列表并将每个字符串与要添加的字符串进行比较.这开始显示超过10,000个项目的规模问题.
我将对此进行基准测试,但对洞察力感兴趣.
编辑
一些基本的基准结果.我创建了一个抽象类,它暴露了两种方法:Fill和Scan.填充只用n个项目填充集合(我用了50,000).扫描扫描列表m次(我使用5000)以查看是否存在给定值.然后我为List构建了该类的实现,为HashSet构建了另一个实现.
使用的字符串长度统一为11个字符,并通过抽象类中的方法随机生成.
一个非常基本的微观基准.
Hello from Cheeso.Tests.ListTester
filling 50000 items...
scanning 5000 items...
Time to fill: 00:00:00.4428266
Time to scan: 00:00:13.0291180
Hello from Cheeso.Tests.HashSetTester
filling 50000 items...
scanning 5000 items...
Time to fill: 00:00:00.3797751
Time to scan: 00:00:00.4364431
Run Code Online (Sandbox Code Playgroud)
因此,对于该长度的字符串,当扫描唯一性时,HashSet比List快大约25倍.此外,对于此大小的集合,在向集合添加项目时,HashSet对List没有任何惩罚.
结果很有趣,无效.为了获得有效的结果,我需要进行预热间隔,多次试验,随机选择实施.但我相信这只会略微改变这一点.
感谢大家.
EDIT2
在添加随机化和多重试验之后,HashSet在这种情况下始终优于List,大约20倍.
这些结果不一定适用于可变长度,更复杂对象或不同集合大小的字符串.
我知道scons实现了它的功能ccache,但我坚持使用另一个构建系统.
我也知道gocachesourceforge上有一个项目旨在ccache为其他编译器实现类似功能,但似乎并不完整.
我想写填充多维矩形数组的扩展方法.我知道如何为具有固定数量测量的阵列做到这一点:
public static void Fill<T>(this T[] source, T value)
{
for (int i = 0; i < source.Length; i++)
source[i] = value;
}
public static void Fill<T>(this T[,] source, T value)
{
for (int i = 0; i < source.GetLength(0); i++)
for (int j = 0; j < source.GetLength(1); j++)
source[i, j] = value;
}
public static void Fill<T>(this T[,,] source, T value)
{
for (int i = 0; i < source.GetLength(0); i++)
for (int j = 0; j < …Run Code Online (Sandbox Code Playgroud)