我很头疼 - 我的服务器应用程序在负载下超过了最大的打开数据库连接.所以,我想我需要一个任务队列(也就是服务总线)来进行写数据库访问.一个队列,db写请求可以发布到它,专用线程将读取并执行.
我想知道是否有现成的组件可以做到这一点.我的要求是:
有任何想法吗?
谢谢.
PS
我们已经从sqlite切换到FireBird嵌入式服务器,因为FB似乎支持数据库的并发更新,但我们有时会遇到这些异常:
2010-10-28 15:49:31,242 [56] ERROR NetworkCatcher.Entities.Agent.Server.RunResultManager - Failed to send result to server 32W2K3SP2VM-DEV. NHibernate.Exceptions.GenericADOException: could not update: ExecutionEntry#89_19_32W2K3SP2VM-DEV][SQL: UPDATE Run SET ExecutionId = ?, Source = ?, Destination = ?, ProtocolId = ?, Duration = ?, SampleCount = ?, StartTime = ?, ServerHostName = ?, SamplesSentToServer = ?, SampleInterval = ?, Parameters = ? WHERE Id = ?] ---> FirebirdSql.Data.FirebirdClient.FbException: deadlock
update conflicts with concurrent update
concurrent transaction number is 31632 --->
FirebirdSql.Data.Common.IscException: deadlock
update conflicts with concurrent update …
Run Code Online (Sandbox Code Playgroud) 我有两种可能的流程:
ConsoleClient -(1)-> ApplicationServer
Run Code Online (Sandbox Code Playgroud)
要么
SilverlightClient -(2)-> WebServer -(3)-> ApplicationServer
Run Code Online (Sandbox Code Playgroud)
Fiddler成功捕获(1)和(2)上的HTTP流量,但不捕获(3)上的HTTP流量.这是(1)上的示例捕获:
POST /WcfDemo/ws HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Host: il-mark-lt
Content-Length: 521
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IWcfDemoService/Add</a:Action><a:MessageID>urn:uuid:d7fde351-12fd-4872-bc26-52ff97f126e9</a:MessageID><a:ReplyTo><a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address></a:ReplyTo><a:To s:mustUnderstand="1">http://il-mark-lt/WcfDemo/ws</a:To></s:Header><s:Body><Add xmlns="http://tempuri.org/"><x>4</x><y>5</y></Add></s:Body></s:Envelope>
HTTP/1.1 200 OK
Content-Length: 399
Content-Type: application/soap+xml; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Sat, 17 Sep 2011 20:57:16 GMT
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://tempuri.org/IWcfDemoService/AddResponse</a:Action><a:RelatesTo>urn:uuid:d7fde351-12fd-4872-bc26-52ff97f126e9</a:RelatesTo></s:Header><s:Body><AddResponse xmlns="http://tempuri.org/"><AddResult>9</AddResult></AddResponse></s:Body></s:Envelope>
Run Code Online (Sandbox Code Playgroud)
这是(2)的一个例子:
POST /WcfDemoService.svc/ws HTTP/1.1
Host: localhost:56970
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.6,he-IL;q=0.5,he;q=0.4,ru-RU;q=0.3,ru;q=0.1
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 …
Run Code Online (Sandbox Code Playgroud) 我有一个修订哈希键.我想获得包含任何内容的最接近的修订版,但是.hgtags.
例如,考虑Mercurial历史的以下片段:
D:\CI\NC\8.0>hg log -l3 -b 8.0 -v
changeset: 1768:633cf1f61665
branch: 8.0
tag: tip
user: ci
date: Wed Nov 16 21:06:20 2011 +0200
files: .hgtags
description:
Replaced tag 'good.NC.16' with 'rejected.NC.16' for changeset 9451e8f187b1
changeset: 1767:6cad328c622c
branch: 8.0
parent: 1765:9451e8f187b1
user: ci
date: Wed Nov 16 21:04:26 2011 +0200
files: .hgtags
description:
Added tag 'good.NC.16' for changeset 9451e8f187b1
changeset: 1765:9451e8f187b1
branch: 8.0
tag: rejected.NC.16
user: gilad
date: Tue Nov 15 18:26:09 2011 +0200
files: .hgignore
description:
update
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果给定的修订版本是633cf1f61665
,那么我正在寻找修订版本 …
在restlet中寻找guice支持我遇到了这篇文章 - http://wiki.restlet.org/developers/172-restlet/257-restlet/284-restlet.html
但是 2.0(稳定版)和 2.1(候选发布版)都不包含 org.restlet.ext.guice.jar
所以,我的问题是它的状态是什么?我在哪里可以下载它?我正在使用restlet 2.0
谢谢。
我想将数据库查询视为标准C++输入迭代器.另一方面,可以将数据库查询视为查询结果项的输入流.您认为db查询的更好模型是什么 - 输入迭代器还是输入流?
就个人而言,我的印象是C++ IO流应该只对字符进行操作,在那里我从未见过任何一个流的例子,其中字符不是char
或者wchar_t
.我理解,流的模板化本质允许我将任何东西作为一个字符传递,所以从理论上讲,似乎我可以将查询结果项作为一个字符来处理流媒体,但我不确定它是否是一个好主意.
建议是受欢迎的.
谢谢.
我有以下宏:
#define FOREACH(decl, c) BOOST_FOREACH(decl, std::make_pair((c).begin(), (c).end()))
Run Code Online (Sandbox Code Playgroud)
(我正在使用这个宏,因为我的容器没有实现可变迭代API.)
它的问题是,它c
被评估两次.
我的问题是这个宏可以修复,以便:
c
最多评估一次在java中是否有静态jar链接?
我看到它的方式是对jar的静态链接从jar中提取相关的类文件并将它们插入到最终的产品jar中.当然,它应该将库jar中的任何相关许可文件复制到产品jar中.
动机.
我想使用ExpandProperties
ant.jar中的类.该功能本身可能只占1.8M的一小部分,这是ant.jar的大小.
这个问题与使用Powershell删除文本文件顶行之间的区别在于我的文件很大(超过300M).
我现在使用的技术是基于该问题的答案之一,但对于大型文件来说似乎效率低下.是否有更快(更不漂亮)的方式呢?
if (!Number.prototype.toZeroPaddedString) {
Number.prototype.toZeroPaddedString = function (count) {
"use strict";
var str = this.toString();
return (new Array(count + 1 - str.length)).join('0') + str;
};
}
Run Code Online (Sandbox Code Playgroud)
我希望我的代码能够通过jsLint标准清理,但是,我无法想象如何根据我想做的事情摆脱这个错误.
有什么建议?
谢谢.
c++ ×2
.net ×1
boost ×1
database ×1
dvcs ×1
fiddler ×1
file-io ×1
guice ×1
iterator ×1
jar ×1
java ×1
javascript ×1
jslint ×1
mercurial ×1
nhibernate ×1
powershell ×1
restlet ×1
restlet-2.0 ×1
stream ×1