小编mbu*_*nik的帖子

async-await threading internals

我很好奇异步等待线程内部.

每个人都声明async在性能方面要好得多,因为它释放了等待长异步调用响应的线程.好的我明白了.

但让我们考虑一下这种情况.

我有一个异步方法在数据库上执行异步操作.数据库的api公开函数BeginQuery和事件QueryCompleted.我用任务包装了那些(使用TaskCompletionSource).

我的问题是调用BeginQuery和触发事件QueryCompleted之间的内幕.

我的意思是 - 它不需要产生某种工人来解雇事件吗?在非常低的级别,它必须是一些阻止来自db的线程读取结果的同步循环.

我认为任何异步调用都必须生成一个线程来实际处理响应(可能在驱动程序代码中的低级c ++循环中等待它).

所以我们唯一的"收获"是当一些其他线程正在执行其工作时,可以释放调用者线程.

调用异步方法总是创建一个新的工作线程吗?

有人可以证实我的理解吗?

.net c# asynchronous async-await

22
推荐指数
3
解决办法
4387
查看次数

如何获取ASP.NET Core中的中间件列表

如何获取活动中间件列表?如何获取特定URL的中间件列表(每个URL可能有一组不同的中间件添加到管道中)?

我想知道这是正在使用一些常见的建设者扩展的像添加中间件UseMvc()app.UseIdentity();

我知道我可以检查每个扩展的源代码.是否有运行时方法来获取此信息?

asp.net-core

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

根据总文档过滤掉top_hits子聚合

我正在使用Elasticsearch GeoHash网格聚合进行地图聚类.查询平均返回100-200个桶.每个存储桶都使用top_hits聚合,我用它为每个聚合集群返回3个文档.

问题是我只想在父聚合(GeoHash)聚合不超过3个文档时才返回top_hits .

如果一个集群聚合超过3个文档,我不希望ES返回该集群的任何文档(因为我不会使用它们).

我试图使用Bucket Selector Aggregation,但没有设法构造一个正确的bucket_path.我在与top_hits聚合相同的级别上使用桶选择器聚合.可以使用存储桶的总文档数量,top_hits.hits.total但我得到的是reason=path not supported for [top_hits]: [hits.total].

这在弹性搜索中是否可行?这对我来说很重要,因为在大多数查询中,只有一小部分桶的文档少于3个.但是,对于1000个文档的集群,顶级命中子分段总是返回前3个文档.如果查询结果返回200个桶,并且只有5个正在聚合<= 3个文档,那么我只想返回5*3个文档,而不是200*3(在这种情况下Te响应为10MB).

这是我的查询的aggs部分:

"clusters": {
  "geohash_grid": {
    "field": "coordinates",
    "precision": 3
  },
  "aggs": {
    "top_hits": {
      "top_hits": {
        "size": 3
      }
    },
    "top_hits_filter": {
      "bucket_selector": {
        "buckets_path": {
          "total_hits": "top_hits._count" // tried top_hits.hits.total
        },
        "script": {
          "inline": "total_hits <= 3"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

elasticsearch elasticsearch-aggregation elasticsearch-5

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

使用 MediatR/CQRS 进行嵌套查询

我只是想知道我将尝试实现的设计是否有效 CQRS。

我将有一个查询处理程序,它本身会向其他子处理程序发送更多查询。它的主要任务是聚合多个服务的结果。从处理程序内部发送查询可以吗?我已经可以在我的应用程序中想到这些的 3 级深度层次结构。

cqrs mediatr

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

初始化后更改窗口小部件的项模板

有没有办法在初始化后更改小部件(特别是组合框)模板?

我试过了

var combo = $("#combo").data("kendoComboBox");
var template = kendo.template($("#itemTemplate").html());
combo.template = template;
combo.refresh();
Run Code Online (Sandbox Code Playgroud)

但没有运气.项目被重新渲染(模板被应用),但组合框架正在失去核心功能

kendo-ui

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

如何使sql join实现所需的结果?

我有2个选择正在返回:

SELECT_A (COLUMN_A,COLUMN_B, SELECT_A_JOIN_COLUMN)

SELECT_B (COLUMN_A,COLUMN_B, SELECT_B_JOIN_COLUMN)
Run Code Online (Sandbox Code Playgroud)

期望的结果:

Result  (COLUMN_A,COLUMN_B,SELECT_A_JOIN_COLUMN,SELECT_B_JOIN_COLUMN)
Run Code Online (Sandbox Code Playgroud)

例:

SELECT_A 结果:

A B zxc
A B rty
Run Code Online (Sandbox Code Playgroud)

SELECT_B 结果:

A B yui
A B hjk
Run Code Online (Sandbox Code Playgroud)

期望的结果:

A B zxc null
A B rty null
A B null yui
A B null hjk
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

这几乎就像工会一样,但我可以通过加入来做到这一点吗?

编辑:

好.所以让我说明我的目标.我想让查询返回一个分层树.这是因为LINQ2Entities正在为查询生成额外的缓慢且低效的sql,其中包含很多导航属性.

所以我想要首先实现的是以不知何故获得树.

例:

我希望达到以下结果:

ObjectId | ChildType1Id | ChildType1Field | ChildType2Id | ChildType2Field

    1          34          asd          null        null
    1          12          xcv          null        null
    1          5           klk          null        null
    1          null        null         6 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql join

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