小编Ale*_*ffe的帖子

使用Parallel Linq Extensions结合两个序列,如何才能首先产生最快的结果?

假设我有两个序列返回整数1到5.

第一个返回1,2和3非常快,但4和5每个需要200ms.

public static IEnumerable<int> FastFirst()
{
    for (int i = 1; i < 6; i++)
    {
        if (i > 3) Thread.Sleep(200);
        yield return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个返回1,2和3,延迟时间为200ms,但快速返回4和5.

public static IEnumerable<int> SlowFirst()
{
    for (int i = 1; i < 6; i++)
    {
        if (i < 4) Thread.Sleep(200);
        yield return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

联合这两个序列只给出数字1到5.

FastFirst().Union(SlowFirst());
Run Code Online (Sandbox Code Playgroud)

我不能保证两种方法中的哪一种在什么时候有延迟,所以执行的顺序不能保证为我提供解决方案.因此,我想将联盟并行化,以便最小化我的例子中的(人为的)延迟.

一个真实场景:我有一个返回一些实体的缓存,以及一个返回所有实体的数据源.我希望能够从一个方法返回一个迭代器,该方法将请求内部并行化到缓存和数据源,以便缓存的结果尽可能快地生成.

注1:我意识到这仍然在浪费CPU周期; 我不是问我怎么能阻止序列迭代它们的慢元素,我怎么能尽可能快地结合它们.

更新1:我已经定制了achitaka-san对接受多个生成器的响应,并使用ContinueWhenAll将BlockingCollection的CompleteAdding设置为一次.我只是把它放在这里,因为它会因缺少注释格式而丢失.任何进一步的反馈都会很棒!

public static IEnumerable<TResult> SelectAsync<TResult>(
    params IEnumerable<TResult>[] producer)
{
    var resultsQueue = new BlockingCollection<TResult>();

    var taskList …
Run Code Online (Sandbox Code Playgroud)

.net c# parallel-processing parallel-extensions plinq

9
推荐指数
1
解决办法
1012
查看次数

如何清除 NextJs GetStaticPaths 缓存/“取消发布”动态路由?

我认为这是一个非常普通的问题,但我在谷歌上找不到任何东西。

我正在学习 NextJs(使用 TypeScript)并且我有一个站点成功地使用动态路由、SSR 和增量再生,所有设置和部署到 Vercel。这是我的动态路由处理程序中的GetStaticPropsGetStaticPaths代码示例:

export const getStaticPaths: GetStaticPaths = async () => {
    const routes = new CmsHelper().GetRoutes();

    const paths = (await routes).items.map((item, index, items) => {
        return item.fields.urlPath;
    })

    return {
        paths: paths,
        fallback: 'blocking',
    };
}

export const getStaticProps: GetStaticProps = async (context) => {
    const urlParts = context.params?.url as string[] || [];
    const urlPath = `/${urlParts.join('/')}`;
    const article = await new CmsHelper().GetArticle(urlPath);
    return {
        props: {
            article
        },
        revalidate: 10,
    } …
Run Code Online (Sandbox Code Playgroud)

typescript contentful next.js

7
推荐指数
1
解决办法
5822
查看次数

是否可以在Autofac中解析某个类型的所有服务,即使它们是使用名称或密钥注册的?

在Autofac中,可以执行以下操作来获取所有已注册的服务:

IEnumerable<MyClass> all = Context.Resolve<IEnumerable<MyClass>>()
Run Code Online (Sandbox Code Playgroud)

但是,这不包括那些注册为命名服务的内容.

查看Autofac源代码似乎是因为基于TypedService或KeyedService查询服务的解析.

有没有办法解决IEnumerable的所有服务,无论他们是否注册了名称?

inversion-of-control autofac

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

是否可以让 TeamCity 为构建代理停止和重启 Amazon EC2 实例?

我让 TeamCity (7.0.2) 从自定义 AMI 成功启动了一个 EC2 VM,运行我们的构建,并发送回构建工件。

但是,即使我曾经使用较旧的 TeamCity 版本执行此操作,我也总是不满意这种想法,即它只是在完成后终止实例,然后在下次需要构建代理时使用配置的 AMI 创建新实例。

我可以让 TeamCity 发出“停止”命令,然后发出“开始”命令吗?这有很多优点——更快的启动时间、允许代理统计中的命名实例以及将 Mercurial 克隆保存到 EBS 以备下一次构建只有三个。

ps 我想我可以使用链式构建直接调用 EC2 API,而不是使用内置的云支持,但这听起来工作量很大,而且感觉很不稳定

teamcity amazon-ec2 amazon-web-services ec2-api-tools teamcity-7.0

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

是否可以在 RavenDb 5+ 中计算时间序列的移动平均线/EMA/窗口聚合?

RavenDb 5+ 添加了对文档时间序列存储的支持。此支持中包括索引,尽管为了创建存储和索引性能优势,索引是按批次 TimeSeriesSegments 完成的。

RavenDb 支持计算这些 TimeSeries 上的基本 Count/Avg/Sum 总计。但是,我找不到计算移动的方法窗口内

例如,我可能有 50 天的值,每天一个值。使用内置的 Avg,我可以轻松地对所有 50 天的平均值进行索引。但是,我想创建一个索引字段,其中包含 5 天窗口内的移动平均值。因此,前 X-1 天的值将为空/空白,从该点开始将计算之前 X 天的平均值。

我无法在 RavenDb 的 map/reduce 索引策略中找到一种简单的方法来完成此任务,但我希望我错过了一些巧妙的方法(例如)从 Map 操作中运行查询以查询以前的值,即使它们可能不属于当前的 TimeSeriesSegment。

如果可能的话,我还希望能够更进一步并计算其中几个移动平均线的复合 - 例如,随时间变化的值的指数移动平均线。

这是索引的理想操作,因为数据写入后不会改变,但我不知道定义 RavenDb 索引时是否有窗口/游标样式支持。

我可以在类似 SQL 的存储中使用触发器等而不是 RavenDb 来实现此目的,但如果可能的话,我不希望将一些代码存储在存储过程中,而将一些代码存储在我的 C# 代码库中。

蒂亚!

indexing mapreduce time-series moving-average ravendb

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

Ninject是否具有相当于Autofac的TypedParameter或ResolvedParameter?

在Autofac中,可以在注册服务时指定TypedParameter,该服务给出将传递给服务构造函数的特定值或委托.在解析/实例化期间,将通过类型发现构造函数上的实际参数.

在Ninject中,我只能找到对命名参数的支持(即,提前知道.ctor参数的实际名称).否则,Ninject将发现未指定的构造函数参数,并尝试通过检查容器来解析所需的任何类型.

但是,这对我的需求来说还不够具体,因为我需要传递给不同服务实例的构造函数的多个相同类型的实例.

我想给Ninject一个特定的工厂委托或值作为构造函数参数,只给出一个类型作为限定符,而不是参数名称.我也不希望通过使用任何属性修饰构造函数参数来依赖Ninject.

这可能吗?提前谢谢了!

ninject ioc-container autofac

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