我正在研究Java 7中新的Fork-Join框架(作为课程要求的一部分),并分析与传统线程机制相比的性能改进.使用新的fork join框架可以保证更快运行的分而治之算法有哪些.你能否提出我可以用来分析性能差异的任何非平凡算法?
我正在尝试编写一段代码来解析IE和Firefox中的javascript.
以下适用于IE,并且功能无需在firefox中抱怨
function XmlDom(sXml){
var oXml;
if (window.ActiveXObject) {
// ie
oXml = new ActiveXObject("Microsoft.XMLDOM");
oXml.resolveExternals = false;
oXml.async = false;
oXml.loadXML(sXml);
}
else if (window.DOMParser){
var parser = new DOMParser();
oXml = parser.parseFromString(sXml, "text/xml");
}
return oXml
}
Run Code Online (Sandbox Code Playgroud)
以下适用于IE,但在Firefox下会出现错误(因为childNodes不存在)
var oXml = XmlDom(sourceXML);
var listHtml = "";
if (oXml.firstChild != null) {
var childNodes = null;
try {
childNodes = oXml.lastChild.lastChild.firstChild.childNodes;
}
if (childNodes != null && childNodes.length > 0) {
for (var i = 0; i < childNodes.length; …Run Code Online (Sandbox Code Playgroud) 我有一个PHP脚本,它从数据库中抓取一大块数据,对其进行处理,然后查看是否有更多数据.这个进程无限期地运行,我在一台服务器上一次运行其中几个.
它看起来像:
<?php
while($shouldStillRun)
{
// do stuff
}
logThatWeExitedLoop();
?>
Run Code Online (Sandbox Code Playgroud)
问题是,经过一段时间后,某些事情导致进程停止运行,我无法调试它并确定原因.
以下是我到目前为止获取信息的方法:
你会找到什么其他的调试方法来找到罪魁祸首?
注意:我应该补充一点,这不是max_execution_time的问题,对于这些脚本禁用了max_execution_time.被杀之前的时间是不一致的.它可能会在它死亡之前运行10秒或12小时.
更新/解决方案:谢谢大家的建议.通过记录输出,我发现当MySql查询失败时,脚本被设置为die().D'哦.更新它以记录mysql错误然后终止.现在就像魅力一样工作!
如果我故意创建了一个在遭受内存泄漏的情况下处理数据的应用程序,我会注意到报告的内存,例如:
Runtime.getRuntime().freeMemory()
Run Code Online (Sandbox Code Playgroud)
开始在1到2 MB的可用内存之间振荡.
然后应用程序进入如下循环:GC,处理一些数据,GC等,但由于GC经常发生,应用程序基本上不再做太多其他事情了.甚至GUI也需要年龄才能做出响应(而且,不,我不是在谈论EDT问题,它实际上是VM基本上停留在一些无休止的GC'模式).
我想知道:有没有办法以编程方式检测到JVM没有足够的内存?
请注意,我不是在谈论内存错误,也不是在检测内存泄漏本身.
我正在谈论检测到应用程序运行的内存如此之低,以至于它基本上都在调用GC,几乎没有时间做其他事情(在我的假设示例中:处理数据).
例如,它是否可以重复读取在一分钟内可用的内存量,并且看到如果数字在不同值之间"振荡",例如4 MB,则得出结论是存在一些泄漏并且该应用程序已无法使用?
是否可以使用实体框架从模型生成SQLite数据库?我创建了一个SQLite连接并创建了一个模型,但是当我单击"从模型生成数据库"时,我得到以下内容,它看起来像MS SQL,如果使用SQLite执行会产生错误(只是文件的开头):
-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005, 2008, and Azure
-- --------------------------------------------------
-- Date Created: 11/25/2010 00:26:41
-- Generated from EDMX file: G:\Foo\Bar\Model1.edmx
-- --------------------------------------------------
SET QUOTED_IDENTIFIER OFF;
GO
USE [foobar.sqlite];
GO
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
GO
...
Run Code Online (Sandbox Code Playgroud)
我的连接字符串如下所示,所以我肯定选择了正确的数据库类型:
'metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SQLite;provider connection string="data source=G:\foo\bar\baz"'
Run Code Online (Sandbox Code Playgroud)
不应该这样工作吗?
编辑:
由于似乎没有人知道答案我会更容易:是否可以为除MICROSOFT SQL SERVER之外的任何数据库生成带有EF的SQL代码?
我目前正在使用imap流来从收件箱中获取电子邮件.
一切都工作正常,但我不确定如何获取电子邮件的正文和标题.如果我这样做imap_body($connection,$message),基本64相当于电子邮件附件包含在文本中.
我目前正在使用此功能来获取附件.
http://www.electrictoolbox.com/function-extract-email-attachments-php-imap/
我正在使用NSIS脚本为我的Java项目生成Windows安装程序.在此安装程序中,我想在继续之前检查计算机是否具有正确的JRE版本.
这是我获取JRE版本的代码片段: -
ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion"
# display $1 value for testing purpose
MessageBox MB_OK "Version: $1"
Run Code Online (Sandbox Code Playgroud)
此代码在Windows XP中运行良好,但我无法在Windows 7 64位中运行...版本号始终为空.我检查注册表,我很确定路径是正确的,"CurrentVersion"有一个值.
谁能告诉我这里做错了什么?
非常感谢!
我最近收到了一些求职者测试结果,其中一个人声称他们给出的解决方案更有效率(我不会说哪个,因为我不想影响答案).毋庸置疑,我对此表示怀疑,但我对RE编译器的内部工作原理并不了解,以便进行智能评论.
问题是:给出正则表达式来识别0到99之间的数字.
答案是:
[0-9]{1,2}
[0-9]?[0-9]
[0-9]|([0-9][0-9])
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是为什么其中任何一个更快(或以其他任何方式更好).提供证据而不是猜想的奖励点,但如果你说得足够令人信服,我仍然会猜测:-)
例如,在一个地方......
//---------------a
try
{
// some network call
}
catch(WebException we)
{
throw new MyCustomException("some message ....", we);
}
Run Code Online (Sandbox Code Playgroud)
......在另一个地方......
//--------------b
try
{
// invoke code above
}
catch(MyCustomException we)
{
Debug.Writeline(we.stacktrace); // <----------------
}
Run Code Online (Sandbox Code Playgroud)
我打印的堆栈跟踪,它只从a到b开始,它不包含WebException的内部堆栈跟踪.
如何打印所有堆栈跟踪???
所以我有一个网格需要根据VM中的标志来改变它的边距.看起来像datatriggers是处理这个问题的正确方法.
所以我设置了这个:
<Grid x:Name="myGrid" Grid.Row="1" Margin="30,0">
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding UI_Preferences.RightPanelPinned}" Value="true" >
<Setter Property="Margin" value="200" />
</DataTrigger>
<DataTrigger Binding="{Binding UI_Preferences.LeftPanelPinned}" Value="true" >
<Setter Property="Margin" value="200" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我无法弄清楚如何单独修改左边距或右边距.
java ×2
php ×2
.net ×1
apache ×1
c# ×1
concurrency ×1
debugging ×1
fork-join ×1
imap ×1
javascript ×1
memory-leaks ×1
nsis ×1
orm ×1
performance ×1
regex ×1
registry ×1
sql-server ×1
sqlite ×1
stack-trace ×1
wpf ×1
xaml ×1
xml ×1