我没有看到使用以下代码处理速度的任何改进:
IEnumerable<Quote> sortedQuotes = (from x in unsortedQuotes.AsParallel()
orderby (x.DateTimeTicks)
select x);
Run Code Online (Sandbox Code Playgroud)
顺序版本:
IEnumerable<Quote> sortedQuotes = (from x in unsortedQuotes
orderby (x.DateTimeTicks)
select x);
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?我将源集合中的项目数量从数千个变为数千万个,并且没有大小显示并行版本即将发布.
任何提示赞赏.顺便说一句,如果有人知道更快速的排序方式(给定我指示的项目变量类型(包含项目在集合中排序的长DateTimeTicks),这也是值得欣赏的.
编辑:"有效排序" - >尽快.
谢谢
我使用嵌入式数据库,并想知道对数据进行操作的唯一方法是使用系统数据库吗?我查看了管理工作室,看到我的所有数据都被转储到系统数据库中.即使我在管理工作室内创建了一个新的数据库,这个新的数据库仍未受到影响.使用代码方法我没有进一步深入,因为在嵌入式实例中似乎不支持多租户.那么唯一的方法是存储和访问SYSTEM DATABASE的数据?
谢谢
我想知道使用BookSleeve发布和订阅频道的最佳方式是什么.我目前实现了几种静态方法(见下文),这些方法允许我将内容发布到特定通道,并将新创建的通道存储在其中private static Dictionary<string, RedisSubscriberConnection> subscribedChannels;.
这是正确的方法,因为我想发布到通道并订阅同一个应用程序中的通道(注意:我的包装器是一个静态类).即使我想发布和订阅,是否足以创建一个频道?显然,我不会发布到在同一个应用程序中订阅的相同频道.但我测试了它并且它有效:
RedisClient.SubscribeToChannel("Test").Wait();
RedisClient.Publish("Test", "Test Message");
Run Code Online (Sandbox Code Playgroud)
它起作用了.
在这里我的问题:
1)设置专用发布频道和专用订阅频道而不是为两者使用一个频道是否更有效?
2)语义上"channel"和"PatternSubscription"有什么区别?我的理解是,我可以PatternSubscription()在同一个频道上订阅几个"主题",对吗?但是如果我想为每个"主题"调用不同的回调,我必须为每个主题设置一个正确的通道吗?这样有效吗?或者你会建议反对吗?
这里是代码片段.
谢谢!!!
public static Task<long> Publish(string channel, byte[] message)
{
return connection.Publish(channel, message);
}
public static Task SubscribeToChannel(string channelName)
{
string subscriptionString = ChannelSubscriptionString(channelName);
RedisSubscriberConnection channel = connection.GetOpenSubscriberChannel();
subscribedChannels[subscriptionString] = channel;
return channel.PatternSubscribe(subscriptionString, OnSubscribedChannelMessage);
}
public static Task UnsubscribeFromChannel(string channelName)
{
string subscriptionString = ChannelSubscriptionString(channelName);
if (subscribedChannels.Keys.Contains(subscriptionString))
{
RedisSubscriberConnection channel = subscribedChannels[subscriptionString];
Task task = channel.PatternUnsubscribe(subscriptionString);
//remove channel subscription
channel.Close(true);
subscribedChannels.Remove(subscriptionString);
return …Run Code Online (Sandbox Code Playgroud) 如何确定DoSomething()调用该方法的底层接口?其他问题:我可以在MyClass构造函数中确定底层接口吗?我假设不是因为在实例化时不知道,对吗?
编辑:我不是在寻找显式接口实现,而是以不同的方式来确定底层接口.
public interface ITest
{
void DoSomething();
//....more methods
}
public interface IDecoy
{
void DoSomething();
//...more methods
}
public class MyClass : ITest, IDecoy
{
public void DoSomething()
{
//Question: How can I determine the underlying interface that called this method?
//at one time it is ITest, at another IDecoy. How can I figure out which one at each time?
}
}
public class Test
{
public Test()
{
ITest myClassInstance1 = new MyClass();
IDecoy …Run Code Online (Sandbox Code Playgroud) 我在一台机器上做基本的pub/sub,我的客户端是StackExchange-Redis的C#客户端,我在同一台机器上运行基于Windows的Redis服务器(服务器版本2.8.4)
当我发布大量数据(略大于32mb)时,我收到以下错误消息.我不确定错误是源自客户端还是由服务器引发.显然超出了"输出缓冲区限制".我怎样才能增加限额?我需要偶尔发送这种有效载荷的数据(虽然这是例外而不是常态).
我不确定这是否相关,但每次启动我的服务器时,打开/生成的文件大小约为32gb(???),文件名为"RedisQFork_3564.dat".这个文件用的是什么?这一切都与我的问题有关吗?
服务器上的错误消息
[10144] 23 May 17:37:29.293 # Client addr=127.0.0.1:47943 fd=9 name=DESKTOP-PC a
ge=20 idle=13 flags=N db=0 sub=7 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=88 oll=1
omem=108527608 events=rw cmd=subscribe scheduled to be closed ASAP for overcomi
ng of output buffer limits.
[10144] 23 May 17:37:38.802 # Client addr=127.0.0.1:47948 fd=10 name=DESKTOP-PC
age=9 idle=9 flags=N db=0 sub=7 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=88 oll=1
omem=109314040 events=rw cmd=subscribe scheduled to be closed ASAP for overcomin
g of output buffer limits.
客户端上的错误消息
Message: Connection to Redis …
我钻研了C#,但遇到了一个我似乎无法解决的问题:
我设计了一个财务回溯测试和交易引擎,作为其中的一部分,我想实现一个"策略容器".此策略容器应有两个用途.(1)保存执行数学计算的不同策略的实例,以及(2)提供访问器以便将新的tick数据传递到策略实例并从策略实例接收某些信息.
我上面提到的不同策略应该是唯一的类,但是它们来自基类.我想在这些策略中执行完全不同的操作,因此我认为将它们设计为从一个基类派生的单独类是可行的.一个复杂因素是我需要策略容器中包含的每个策略类的多个实例.每个策略类还包含一个股票代码列表,每个符号应该在策略实例上获得.
Strategy容器的另一个重点是它可以创建,实例化,然后还可以调用每个策略实例.
我想问一下你们有什么样的想法我可以如何设计和实现这个:
我不是要求完整的源代码,而是为了想法你认为我应该如何设计这个东西,以及我如何能够完成上述每一点.这对我自己来说并不会变成任何商业产品.我很乐意编写实现数学比特的代码,但我对设计模式和系统架构不太熟悉.
编辑:Graymatter,我玩了一下,似乎你提供了我正在寻找的东西.非常感谢.
class Program
{
static void Main(string[] args)
{
List<IStrategy> container = new List<IStrategy>();
container.Add(new StrategyOne());
container[0].AddValue(50);
Console.ReadLine();
}
}
public interface IStrategy
{
void AddValue(int value);
}
public class StrategyOne : StrategyBase
{
public override void Calculates()
{
Console.WriteLine("This is my value: " + myValue);
}
}
public class StrategyBase : IStrategy
{
protected int myValue;
public void AddValue(int value)
{
Console.WriteLine("Run Strategy in Base");
myValue = value; …Run Code Online (Sandbox Code Playgroud) 我有一个TransformManyBlock<Tin, Tout>和在运行时添加消费者(ActionBlocks)通过LinkTo(...).
TransformManyBlock是正确的数据流块,消耗元素,转换它们,然后输出(输入相同的数字元素作为输入)给几个消费者(每个链接到消费者消费相同的元素,如广播)?我故意不选择BroadCastBlock,因为它似乎无法像BufferBlock一样转换元素.
我想知道在运行时如何取消消费者链接(ActionBlocks)?就我所见,LinkTo()似乎没有提供这样的功能.
我成功序列化了以下类的实例,但是当我在收到以下错误消息后尝试反序列化时:" Invalid field in source data: 0".
我不知道它是指什么,因为我发现下面的课程直截了当.我刚刚将protobuf-net版本更新为2.00.614(运行时版本:2.0.50727).
知道我是否可能忽视一些微不足道的事情?
[ProtoContract]
public class TimeSeriesProperties
{
[ProtoMember(1)]
public string TimeSeriesName { get; private set; }
[ProtoMember(2)]
public string FileName { get; private set; }
[ProtoMember(3)]
public string TemplateName { get; private set; }
[ProtoMember(4)]
public int PacketLength { get; private set; }
[ProtoMember(5)]
public long FileSizeBytes { get; set; }
[ProtoMember(6)]
public long NumberRecords { get; set; }
[ProtoMember(7)]
public DateTime DateTimeStart { get; set; }
[ProtoMember(8)]
public DateTime DateTimeEnd …Run Code Online (Sandbox Code Playgroud) 我有以下构造,我不能使用该Where子句作为linq查询的一部分,我想知道为什么:
public abstract class Foo : IFoo
{
public Foo(List<int> testCollection)
{
var result = testCollection.Where(.......).Select(.....);
}
}
Run Code Online (Sandbox Code Playgroud)
Intellisense不识别该Where子句,我也得到编译错误.这与我试图在抽象类中使用它有关吗?我使用.Net 4.5,我可以在常规类中构建Linq查询.
如何将类型转换Dictionary<DateTime, double>为Tuple<List<DateTime>, List<double>>?
谢谢
编辑:以下是否保证两个列表中的项目顺序相同? var abc = new Tuple<List<DateTime>, List<double>>(_data.Keys.ToList(), _data.Values.ToList());
c# ×10
dictionary ×2
linq ×2
list ×2
redis ×2
reflection ×2
base ×1
booksleeve ×1
class ×1
concurrency ×1
containers ×1
database ×1
dataflow ×1
ienumerable ×1
interface ×1
plinq ×1
protobuf-net ×1
ravendb ×1
servicestack ×1
sorting ×1
tpl-dataflow ×1
where ×1