我正在比较WCF的两个例子.Microsoft的示例http://msdn.microsoft.com/en-us/library/ms734712.aspx使用app.config文件,使用生成器svcutil.exe生成客户端,并且通常会生成更多代码.
另一个例子http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication简单得多 - 只有两个C#文件,没有自动生成的代码,没有app.config.
两个例子似乎都做同样的事情.
问题是:
似乎所有主要的投资银行都在Unix(Linux,Solaris)中使用C++来实现低延迟/高频服务器应用.人们如何在交易高频权益时实现低延迟?任何书都教会如何实现这一目标?
我需要一个线程来修改 Queue (添加和删除元素),另一个线程仅调用Queue.Count. 它安全吗还是我需要使用locksor ConcurrentQueue?
我的程序经常因某种原因崩溃。在这种情况下,我确实看到带有“关闭”按钮的 Windows 消息。每次发生这样的事情,我真的很想知道发生了什么。
感谢社区,我已经知道如何“处理”某些情况,我在程序的开头添加了这样的代码:
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
TaskScheduler.UnobservedTaskException +=
(object sender, UnobservedTaskExceptionEventArgs excArgs) =>
{
Log.Push(LogItemType.Error, "Exception occured. Task terminated! + " + excArgs.Exception);
excArgs.SetObserved();
};
.....
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Console.WriteLine("Error: CurrentDomain_UnhandledException entered.");
string message = (e.ExceptionObject as Exception).Message;
Console.WriteLine(message);
System.Diagnostics.Trace.WriteLine(message, "Unhandled UI Exception");
Log.Push(LogItemType.Error, message);
}
Run Code Online (Sandbox Code Playgroud)
有时这会有所帮助。但有时程序会崩溃而没有消息。我还可以做些什么?每次程序崩溃我都想知道为什么。
upd Windows 日志包含我需要的几乎所有东西,除了最重要的东西 - 堆栈跟踪
Faulting application name: MBClient.exe, version: 1.0.0.0, time stamp: 0x50a5da1d
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec4aa8e …Run Code Online (Sandbox Code Playgroud) 我的基类Car包含engine无法在基类中初始化的字段.我只能在子类中初始化它,例如ElectricCar我可以编写engine = new ElectricEngine.但是我在基类中使用了字段.所以我有一个使用但未初始化的字段:
public class Car {
protected Engine engine;
public void Start() {
engine.Start();
// do something else
}
public void Stop {
engine.Stop();
// do something else
}
public void Diagnose() {
engine.Diagnose();
// anotherField.Diagnose();
// oneAnotherField.Diagnose();
}
}
Run Code Online (Sandbox Code Playgroud)
如何更好地初始化引擎?
版本1.字段保证初始化但有许多字段构造函数看起来很难看.没有错误,但很难看.
public class Car {
protected Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
public void Start() {
engine.Start();
// do something else
}
public void Stop …Run Code Online (Sandbox Code Playgroud) UPD我已经找到答案,"格式化"的问题在这里,所以我删除了这部分的质询,请阅读最新的问题:
我需要在c ++上将xml写入文件系统.我已经学会了这个知识分子.在教程中使用了非常简单的xml.我的xml更复杂,我不知道如何修改代码来生成它.这就是我的代码:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
//<Root>
// <Set Name="1">
// <Field Name="Hello 1"/>
// <Field Name="World 1"/>
// </Set>
// <Set Name="2">
// <Field Name="Hello 2"/>
// <Field Name="World 2"/>
// </Set>
//</Root>
int main(int argc, char* argv[])
{
using boost::property_tree::ptree;
ptree pt;
pt.put("Root.Set.Field", "Hello");
pt.put("Root.Set.Field", "World");
boost::property_tree::xml_writer_settings<char> settings('\t', 1);
write_xml("testXml.xml", pt, std::locale(), settings);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Set>
<Field>World</Field>
</Set>
</Root>
Run Code Online (Sandbox Code Playgroud)
如何修改我的程序以生成所需的xml,特别是:
true像那样添加pt.put("Root.Set.Field", "Hello", true);编译时错误 …我的方法返回很多点.我在执行期间也在许多方面构造newData.无论我返回哪里,我都需要保存并存储构造结果.不要错过"返回"我只是用try-finally块包围代码,所以现在我确定将存储newData.
List<X> newData = new List<X>();
try
{
....
update newData
.....
return;
.....
....
update newData
....
update newData
return;
.....
return;
} finally
{
// copy newData to data
}
Run Code Online (Sandbox Code Playgroud)
但我没有发现任何异常,并且此代码不适用于异常.一般来说是否可以接受,或者你可以提出另一种更好的方法
我认为对于那些熟悉hft的人来说,这是一个更理论性的问题.我收到FAST的订单并处理它们.我每秒收到大约2-3千个订单.问题是我是否应该尝试同步或异步处理它们.
每次收到下一个订单时,我都需要做以下事情:
要做同步,我有大约200-300μs(能够每秒处理3000个订单).我认为这应该足够了.
只是计划异步任务我花了大约30μs
利弊:
同步:
异步:
同步示例:我们收到更新的MSFT订单,然后更新INTC订单并在不同的线程中处理它们.在这两种情况下,我们都会触发NASDAQ指数重新计算.因此纳斯达克指数的计算应该是同步的.然而,这个特殊问题可以解决以避免同步......这只是可能同步的一个例子.
所以问题是我应该处理同步或异步的订单更新.到目前为止,我处理它们异步,我有每个仪器的专用线程.因为我可以处理针对不同仪器更新的异步两个(MSFT和INTC),但是应该同步处理一个仪器(MSFT)的两个更新.
注意我倾向于编写无锁代码,所以我尽可能避免任何类型的锁.相反,我只是使用while(true)循环,因为我有很多CPU功率.
根据http://msdn.microsoft.com/en-us/library/aa691278%28VS.71%29.aspx double变量更新不是原子的.
我关心两个问题:
问题:
目前我在我的程序中使用了很多double和decimal变量/字段/属性,几乎每个都工作正常,所以我真的很困惑,因为我从不同的线程访问它们没有任何同步,这只是工作...但现在我在想可能最好用float"内置同步化"
我有恒定大小的数组(现实生活中的大小 = 20),允许重复例如:
1 2 2 3 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
现在只有一个元素更新:
1 5 2 3 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
我需要使用这个数组。我应该只使用冒泡排序吗?
更新我不知道如何称呼我写的东西。但我想不可能更快地排序。欢迎评论!
// array is already almost sorted and INCREASING, element at pos need to be inserted to the right place
private void SortQuotes(List<Quote> quoteList, int pos)
{
var quoteToMove = quoteList[pos];
if (pos == 0 || quoteList[pos - 1].Price < quoteToMove.Price)
{
MoveElementsDown(quoteList, pos);
} else if (pos == quoteList.Count - 1 …Run Code Online (Sandbox Code Playgroud)