小编jav*_*red的帖子

为什么微软的WCF例子如此复杂?

我正在比较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.

两个例子似乎都做同样的事情.

问题是:

  1. 我应该在我的程序中使用app.config还是这个文件是多余的?
  2. 我应该尝试使用微软的"自动生成客户端"程序,还是最好避免使用它?
  3. 在实现自己的WCF程序时,我应该遵循这两个例子中的哪一个?

.net c# wcf

6
推荐指数
1
解决办法
1328
查看次数

交易申请中低延迟的原则是什么?

似乎所有主要的投资银行都在Unix(Linux,Solaris)中使用C++来实现低延迟/高频服务器应用.人们如何在交易高频权益时实现低延迟?任何书都教会如何实现这一目标?

c trading low-latency

6
推荐指数
1
解决办法
3230
查看次数

Queue.Count 线程安全吗?

我需要一个线程来修改 Queue (添加和删除元素),另一个线程仅调用Queue.Count. 它安全吗还是我需要使用locksor ConcurrentQueue

c#

6
推荐指数
1
解决办法
4663
查看次数

当c#程序崩溃时怎么知道为什么?

我的程序经常因某种原因崩溃。在这种情况下,我确实看到带有“关闭”按钮的 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)

c#

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

如何初始化基类中应该在子类中初始化的字段?

我的基类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)

c# oop

6
推荐指数
1
解决办法
1895
查看次数

用boost属性树编写比普通xml更复杂的东西

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);编译时错误 …

c++ boost boost-propertytree

6
推荐指数
1
解决办法
9987
查看次数

使用try-finally只是为了确保在方法完成时执行某些操作?

我的方法返回很多点.我在执行期间也在许多方面构造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)

但我没有发现任何异常,并且此代码不适用于异常.一般来说是否可以接受,或者你可以提出另一种更好的方法

c#

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

在HFT中尝试并行订单处理是否有意义?

我认为对于那些熟悉hft的人来说,这是一个更理论性的问题.我收到FAST的订单并处理它们.我每秒收到大约2-3千个订单.问题是我是否应该尝试同步或异步处理它们.

每次收到下一个订单时,我都需要做以下事情:

  • 更新相应仪器的订单
  • 更新依赖于该订单的索引和指标
  • 更新策略并根据需要安排一些操作(买/卖东西等)

要做同步,我有大约200-300μs(能够每秒处理3000个订单).我认为这应该足够了.

只是计划异步任务我花了大约30μs

利弊:

同步:

  • ++不需要同步事物!
  • "收到订单"和"采取行动"之间的延迟较少,因为不需要安排任务或将数据/工作传递给另一个进程(在hft中非常重要!).
  • - 但是"接收到订单"操作可能会延迟,因为我们可以在套接字缓冲区中等待等待先前的订单处理

异步:

  • ++使用现代服务器的能力(例如我的服务器有24个核心)
  • ++在某些情况下更快,因为在处理上一条消息时不要等待.
  • ++可以处理更多消息,或者可以为每条消息执行更复杂的操作
  • - 需要同步很多可以减慢程序的东西

同步示例:我们收到更新的MSFT订单,然后更新INTC订单并在不同的线程中处理它们.在这两种情况下,我们都会触发NASDAQ指数重新计算.因此纳斯达克指数的计算应该是同步的.然而,这个特殊问题可以解决以避免同步......这只是可能同步的一个例子.

所以问题是我应该处理同步或异步的订单更新.到目前为止,我处理它们异步,我有每个仪器的专用线程.因为我可以处理针对不同仪器更新的异步两个(MSFT和INTC),但是应该同步处理一个仪器(MSFT)的两个更新.

c# fix-protocol hft

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

我应该*始终*同步访问从多个线程使用的所有双字段/属性/变量?

注意我倾向于编写无锁代码,所以我尽可能避免任何类型的锁.相反,我只是使用while(true)循环,因为我有很多CPU功率.

根据http://msdn.microsoft.com/en-us/library/aa691278%28VS.71%29.aspx double变量更新不是原子的.

我关心两个问题:

  • 如果一个线程修改字段或属性的变量,而另一个线程读取它在同一时间,我想要么以前的或新的价值,但我不希望收到一些奇怪的事情.即如果一个线程从5.5更改为15.15我希望在另一个线程中有这两个数字中的一个,但不是5.15或15.5或其他任何东西.
  • 如果一个线程已经更新了值,另一个线程在此之后读取它我想要接收最新的,最新的值.我认为volatile关键字可以帮助解决这个问题,但似乎不能,因为"Volatile不能保证值的新鲜度.它会阻止一些优化,但不能保证线程同步." 如上所述是c#原始数组volatile?

问题:

  • 我是否正确,如果没有同步,可能会出现这两个问题?
  • 如果你能给我一些简短的例子,证明没有同步它就行不通 - 那会很好
  • 我应该如何访问双字段或变量或属性以始终具有真正的最新值?"同步"会保证"新鲜度"吗?最快的方法是什么?什么螺旋锁?

目前我在我的程序中使用了很多doubledecimal变量/字段/属性,几乎每个都工作正常,所以我真的很困惑,因为我从不同的线程访问它们没有任何同步,这只是工作...但现在我在想可能最好用float"内置同步化"

c# synchronization

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

如何重新排序已排序的数组,其中一个元素更新

我有恒定大小的数组(现实生活中的大小 = 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)

java sorting algorithm

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