我正在编写一个用户手动提供连接字符串的应用程序,我想知道是否有任何方法可以验证连接字符串 - 我的意思是检查它是否正确以及数据库是否存在.
我遇到了一个常见的问题.当我有一个可能由几个不同的类订阅的事件时,这些类之一抛出的异常将终止回调链; 因为我不知道回调执行顺序的先验,这可能导致某些类的不可预测的状态更改而不是其他类.
在圣经中(CLR通过C#,我使用的是C#2.0)有一个关于使用MulticastDelegate.GetInvocationList来解决这个问题的简短段落,但仅此而已.所以我的问题是:处理这个问题的最佳方法是什么?我MulticastDelegate.GetInvocationList每次举办活动都必须使用吗?或者我是否需要在某种回滚机制中包含可能作为委托链的一部分调用的所有方法?与简单的事件/委托模型相比,为什么所有这些选项都如此复杂?在C#中如此易于使用?我怎样才能使用简单的方法而不会以损坏的状态结束?
谢谢!
C#中的字符串是不可变的和线程安全的.但是当你有一个公共吸气剂属性时呢?像这样:
public String SampleProperty{
get;
private set;
}
Run Code Online (Sandbox Code Playgroud)
如果我们有两个线程,第一个是调用'get'而第二个是在"相同"时调用'set',会发生什么?
恕我直言,该集必须锁定为线程安全,如下所示:
private string sampleField;
private object threadSafer = new object();
public String SampleProperty{
get{ return this.sampleField; }
private set{
lock(threadSafer){
sampleField = value;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我试图将一个数字传递给我的JavaScript函数,但实际上传递了一个错误的值.我在这里给出了完整的代码:
<html>
<head>
<script type="text/javascript">
function test(num)
{
/*It should alert as 01004 or 1004 but to my surprise it's alerting as 516!*/
alert(num);
}
</script>
</head>
<body>
<a href="javascript:test(01004);">Test it!</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如果我将其作为10040传递,而不是01004,我将在警告框中获取正确的值.
对这个奇怪的案子有什么看法?
提前致谢.
我正在使用CruiseControl .NET和Subversion源代码控制插件来自动构建我们的项目.
有些项目会自动检查修改,但偶尔检查失败,CruiseControl .NET会以"异常"标记项目:
ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation failed: svn: Working copy 'xxFilename' locked svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
Run Code Online (Sandbox Code Playgroud)
在此之后,我必须手动登录服务器并在项目再次构建之前对文件夹执行svn清理.这有解决方法吗?
我想通过共享linux服务器上的ruby访问MySQL.我想我需要使用DBI模块,但我似乎无法访问它.我安装如下:
gem install -r dbi
Run Code Online (Sandbox Code Playgroud)
它无法在正常位置安装它,因为我在共享服务器上并且没有权限:
WARNING: Installing to ~/.gem since /usr/lib/ruby/gems/1.8 and
/usr/bin aren't both writable.
WARNING: You don't have ~/.gem/ruby/1.8/bin in your PATH,
gem executables will not run.
Run Code Online (Sandbox Code Playgroud)
它似乎确实安装成功.
但是,现在当我尝试要求它时,我只是得到一个错误.所以我的代码只是:
require 'dbi'
Run Code Online (Sandbox Code Playgroud)
这会给出以下错误:
dbi_test.rb:1:in `require': no such file to load -- dbi (LoadError)
from dbi_test.rb:1
Run Code Online (Sandbox Code Playgroud)
我已经尝试将LOAD_PATH环境变量设置为dbi.rb所在的目录,但这没有任何区别.
如何从Web应用程序生成纸质打印?
具体来说,我正在考虑更复杂的纸质文件,如文凭,发票和合同.包含框架,表格,徽标和页眉/页脚的可变页数.
今天我使用自定义表单和CSS用于某些事情,iTextSharp用于其他人(我使用asp.net和MS-SQL),但我认为这两种方法都非常耗时且很难在不同文档中保持一致.
还有更好的方法吗?
给出从会话bean调用两个Web服务方法的示例,如果在对两个方法的调用之间抛出异常,该怎么办?在不调用Web服务的情况下,事务将回滚并且不会造成任何损害.但是,Web服务不会回滚.当然,即使使用单一的Web服务也存在问题.虽然这是一个通用问题,但我对与EJB会话bean有关的解决方案感兴趣.
一个简单而定制的答案是为Web服务为每个"真实功能"方法添加一个特殊的"回滚方法".我要求的是一些标准化的方法.
我有一个C代码库,需要以编程方式识别所有使用的全局变量.我认为gcc可以用来生成一个内存映射文件,但不知道怎么样,这可以让我看到哪些变量是全局的?任何帮助,将不胜感激.
干杯
我有一个XSLT用于在浏览器中查看XML文件.XSLT是天真的编写,目前需要很长时间才能执行(几分钟).
我的XML文件大小适中(~1 MiB),而执行不同处理的同一文档的其他XSLT执行速度要快得多.所以我知道问题不在于XML的大小,而是我的XSLT.
如何进行性能分析和优化我的XSLT?
(在浏览器中执行复杂的XSLT是一个坏主意吗?我应该改为应用XSLT应用程序吗?)
c# ×3
asp.net ×1
c ×1
dbi ×1
delegates ×1
ejb ×1
exception ×1
function ×1
itext ×1
itextsharp ×1
java ×1
javascript ×1
linker ×1
optimization ×1
parameters ×1
printing ×1
profiling ×1
rollback ×1
ruby ×1
rubygems ×1
svn ×1
transactions ×1
types ×1
web-services ×1
xslt ×1