问题列表 - 第3652页

以100%正常运行时间更新应用程序

在过去的一次采访中,我被问到如何编写一个关键任务Windows服务,它必须保持100%的正常运行时间,响应速度快,并且可以更新.该服务被描述为基于远程处理的应用程序,它接收请求,执行计算并发回响应.

我的解决方案是拥有一个非常通用的服务,它只是一个网关.这项服务永远不会停止.它会将请求排队并将它们转发到另一个应用程序域中的另一个服务,该服务域实际上会处理请求.需要至少有两个这样的处理服务,因此可以降低一个处理服务,而另一个处理服务可以响应传入的请求.服务之间的接口将包括握手能力以查看服务是否正在运行.将存在非常小的超时,因此如果服务完全停止,则不会保持请求.我还强调了这个解决方案可以很好地扩展,因为你可以在不同的盒子上添加更多这些服务.

由于跨应用领域甚至整个网络进行通信之间的延迟问题,采访者对这个想法并不太疯狂.我说过一个关键任务应用程序你应该建立一个坚如磐石的基础设施,因为软件本身不能解决问题.他还说他们目前有一个使用relfection的系统.我想过将程序集加载到app域并观察目录以进行程序集更改,但这似乎太容易出错了.

有没有人建造有类似要求的东西?你用了什么解决方案?什么不起作用?反射是一种可用的选择吗?

.net architecture

10
推荐指数
2
解决办法
890
查看次数

使用javascript确定ASP.NET页面是否为回发

是否可以确定ASP.NET页面是否是来自javascript的回发?所以基本上是一个javascript等价的C#Page.IsPostBack.

谢谢.

javascript asp.net

5
推荐指数
1
解决办法
7835
查看次数

ReaderWriterLockSlim与Monitor

我有一个IDictionary<TKey,TValue>内部持有另一个的实现,Dictionary<TKey, TValue>并通过密钥的HashCode将插入分发到invidual子字典.有16个子词典,4核机器上的冲突数量相当低.

对于并行插入,我使用a锁定Add-method ReaderWriterLockSlim,仅锁定单个子字典:

  public void Add(TKey key, TValue value)
        {
            int poolIndex = GetPoolIndex(key);
            this.locks[poolIndex].EnterWriteLock();
            try
            {
                this.pools[poolIndex].Add(key, value);
            }
            finally
            {
                this.locks[poolIndex].ExitWriteLock();
            }
        }
Run Code Online (Sandbox Code Playgroud)

插入四个线程的项目时,我只有大约32%的CPU使用率和糟糕的性能.所以我用Monitor(即lock关键字)替换了ReaderWriterLockSlim .CPU使用率现在接近100%,性能提高了一倍多.

我的问题是:为什么CPU使用率会增加?碰撞次数不应该改变.是什么让ReaderWriterLock.EnterWriteLock等了这么多次?

c# multithreading locking readerwriterlock

5
推荐指数
1
解决办法
6317
查看次数

在循环之前或循环中声明变量之间的区别?

我一直想知道,一般来说,在循环之前声明一个抛弃变量,而不是在循环内部重复,是否会产生任何(性能)​​差异?Java中的一个(毫无意义的)示例:

a)循环前的声明:

double intermediateResult;
for(int i=0; i < 1000; i++){
    intermediateResult = i;
    System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)

b)声明(重复)内循环:

for(int i=0; i < 1000; i++){
    double intermediateResult = i;
    System.out.println(intermediateResult);
}
Run Code Online (Sandbox Code Playgroud)

哪一个更好,一个还是b

我怀疑重复变量声明(例子b)在理论上会产生更多的开销,但是编译器足够聪明,所以它并不重要.实施例b具有更紧凑的优点,并且将变量的范围限制在其使用的位置.尽管如此,我倾向于根据示例来编码一个.

编辑:我对Java案件特别感兴趣.

java variables performance loops initialization

307
推荐指数
14
解决办法
13万
查看次数

JavaScript相当于PHP的preg_replace

我使用一个简单的正则表达式替换断行标记与换行符:

br_regex = /<br>/;
input_content = input_content.replace(br_regex, "\n");
Run Code Online (Sandbox Code Playgroud)

这只替换了break标记的第一个实例,但我需要替换所有.preg_match_all()会在PHP中做到这一点,但我想知道JavaScript的等价物.

javascript php regex

71
推荐指数
2
解决办法
9万
查看次数

如何为"其他 - 请指定?"制作单选按钮.

我正在创建一个带有一些单选按钮选项的HTML表单.我想有一个选项为"其他 - 请指定"并允许用户输入内容.

两个问题:

1)如何制作"混合"输入类型radio/text

2)在PHP后端,如果输入具有与name无线电输入相同的属性,用户的输入是否会成为同一阵列的一部分?

html php forms radio-button

6
推荐指数
3
解决办法
7918
查看次数

在单个传递中填充文件中的占位符

我有一个带有占位符字符串的骨架文本文件:

blah blah blah
blah $PLACEHOLDER_1$
blah
$PLACEHOLDER_2$
Run Code Online (Sandbox Code Playgroud)

等等.占位符的特定"形式"并不重要 - 我可以将它们更改为最适合特定实现的任何内容.

我有一个bash脚本,我知道占位符的值,我需要生成一个新文件,占位符替换为值.

#! /bin/sh
PLACEHOLDER_1 = 'string 1'
PLACEHOLDER_2 = 'multiline 
string 
2'
# TODO: Generate file output.txt from file output.template 
#       using placeholders above.
Run Code Online (Sandbox Code Playgroud)

我可以用sed多次通过,但这并不好玩.我希望使用Perl.我想只使用textutils和bash本身.

在一次传球中做我想做的最好的方法是什么?

bash awk replace sed textutils

6
推荐指数
3
解决办法
9727
查看次数

在计算机上运行.net的许多版本

我对各种版本的.net感到好奇.我们有一个环境,我们开发了各种版本的应用程序(1.1和2.0).现在,我正试图在3.5中开发"继续".最大的问题是这些版本是否能够在同一个IIS安装上很好地协同工作.另一个需要注意的是,我正在使用Visual Studio 2005和IIS 5.0在Windows XP上进行开发.应用程序将在Windows Server 2003上运行并使用IIS 6.0.从我所看到的,看起来每个IIS虚拟目录都可以设置自己特定的.net版本.这不足以使使用各种.Net版本的各种应用程序不会相互影响吗?

我会得到任何我能得到的答案,但是如果你可以直接从微软那些文档中引用你的答案,这将是非常有用的(我的公司非常注意'直接从小时口听到'可以这么说).那就是说,我真的会在这里得到任何答案.沟渠的故事也很受欢迎.

谢谢!

.net asp.net iis

3
推荐指数
1
解决办法
312
查看次数

奇怪的SQL2005问题."SqlConnection不支持并行事务"

我有一个问题似乎是死锁情况的结果.我们现在正在寻找问题的根源,但同时我们想重新启动服务器并让客户继续前进.

现在,每当我们启动程序时,它只是说"SqlConnection不支持并行事务".我们没有改变程序,它的编译和客户服务器上的任何东西,但在"可能的死锁" - 情况后,它想要再次上线.

我们有7个运行程序的客户端(计算机),每个客户端正在与本地服务器上的Web服务进行通信,并且Web服务正在与sql-server(与Web服务器相同的机器)进行通信.

我们已经重新启动了sql-server和iis-server,但由于服务器上运行的其他重要服务而没有重启服务器所以我们做的最后一件事.我们可以在管理选项卡中找不到锁或任何东西.

所以我的问题是,为什么"SqlConnection不支持并行事务"错误从一次传递到另一次而不改变程序中的任何内容,它仍然存在于sql-restart之间.

它似乎发生在程序启动时的第一个db-request处.

如果您需要更多信息,请询问.我很困惑......

更多信息: 我不认为我有"长期"运行交易.方案通常是我有一个20-100行(ContractRows)的数据集,其中Ill在tableAdapter上执行.Update.我还循环了那些20-100行,对于其中一些我生成ad-hook-sql-querys(例如,如果租用的产品被标记为已返回,我创建一个sql-query来标记产品在数据库中返回)

所以我这样做非常简单:

Create objTransactionObject
Create objtableadapter (objTransactionObject)
for each row in contractDS.contractrows
  if row.isreturned then
    strSQL &= "update product set instock=1 where prodid=" & row.productid & vbcrlf
 End if
next
objtableadapter.update(contractDS)
objData.ExecuteQuery(strSQL, objTransactionObject)    
if succsesfull 
  objtransactionobject.commit
else
  objtransactionobject.rollback
end if
objTran.Dispose()
Run Code Online (Sandbox Code Playgroud)

然后我做提交或回滚取决于它是否进展顺利.

编辑:没有一个答案解决了问题,但我会感谢你拍摄指针的好麻烦.

"SqlConnection不支持并行事务"突然消失了,现在sql-server只是"每天下降"4-5次,我想这是一个僵局,但是我没有正确的知识发现并且很短现在可以为我监控这个的SQL专家.我只是重新启动sql-server,一切都恢复正常.10次​​中的1次我还必须重新启动计算机.它真的很烦我(当然还有我的客户).

任何人都知道一个人良好的知识在瑞典分析与死锁或其他SQL问题烦恼(或在世界各地,讲英语)可以自由地与我联系.我知道这不是一个联系网站,但我带我的问题,因为我已经用完选项,我花了3天几天优化客户,以确保我们关闭连接,不要做太多愚蠢的事情那里.没有运气.

sql transactions

3
推荐指数
1
解决办法
2万
查看次数

.NET - 获取反映的PropertyInfo的默认值

今天这真的让我很难过.我确定它不是那么难,但我有一个System.Reflection.PropertyInfo对象.我想根据数据库查找的结果设置其值(想想ORM,将列映射回属性).

我的问题是如果DB返回的值是DBNull,我只想将属性值设置为默认值,与调用相同:

value = default(T);  // where T is the type of the property.
Run Code Online (Sandbox Code Playgroud)

但是,如果你给它一个Type,那么default()方法将无法编译,这就是我所拥有的:

object myObj = ???; // doesn't really matter. some arbitrary class.
PropertyInfo myPropInf = ???; // the reflection data for a property on the myObj object.
myPropInf.SetValue(myObj, default(myPropInf.PropertyType), null);
Run Code Online (Sandbox Code Playgroud)

以上不编译.默认(类型)无效.我还想过:

object myObj = ???;
PropertyInfo myPropInf = ???;
myPropInf.SetValue(myObj, Activator.CreateInstance(myPropInf.PropertyType), null);
Run Code Online (Sandbox Code Playgroud)

但是,如果Type是字符串,那将赋值"new String()",但我真的想要"null",这就是"default(string)"将返回的内容.

那我在这里错过了什么?我想一个非常hacky的方法是创建myObj的Type的新实例并复制属性,但这看起来很愚蠢......

object myObj = ???;
PropertyInfo  myPropInf = ???;
var blank = Activator.CreateInstance(myObj.GetType());
object defaultValue = myPropInf.GetValue(blank, null);
myPropInf.SetValue(myObj, defaultValue, null);
Run Code Online (Sandbox Code Playgroud)

我宁愿不浪费内存来创建一个全新的实例,只是为了获得属性的默认值.似乎非常浪费. …

.net c# reflection

58
推荐指数
5
解决办法
3万
查看次数