问题标签 [heterogeneous]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
228 浏览

c++ - 可变类参数成员变量的异构存储

我有一个可变参数类模板,用于为可变数量的类创建顶级类。顶层类中的每个类都派生自一个基类,因为它们有共同的功能。我不知道将派生类存储在父类中的最佳方式,但仍然能够访问派生类的全部功能。

如果我将可变参数存储在向量中,它们将全部存储为基类,我无法访问派生功能。如果我将它们存储在一个元组中,我无法弄清楚如何通过派生类型访问这些函数。如果我尝试按照此处讨论的方式访问它们,则 make_unique 不可用(C++14?)。

所以,我想做以下事情:

有人对我如何实现这一点有任何建议吗?

0 投票
4 回答
341 浏览

c++ - 如何使用符合 STL 的分配器进行异构内存分配

我正在尝试实现一个类,该类在内存中跟随一个任意类型的数组:

这很容易operator new

但是现在,我如何使用一些符合标准的分配器 SomeAllocator来实现这一点?

是否保证SomeAllocator::rebind<char>::other::allocate将返回适合任何类型对象对齐的内存?如果是这样,我是否可以安全地使用某种 char 类型的分配器?如果没有,我是否有其他选择,或者一般分配器不可能完成这项任务?(在最坏的情况下,我想我可以将指针投射到uintptr_t并手动对齐它们,但我想知道是否有更好的方法。)

0 投票
1 回答
158 浏览

scala - 静态类型的异构列表构建器

我想要实现的是一种方法:

  1. 定义异构列表的类型列表
  2. 根据上面的定义,构建一个静态类型的值列表

理想情况下,我想在 IDE 中键入以下表达式:

具有addValue()受 IDE 类型推理引擎约束的参数类型。

以下是第1 点的工作实现:记录字段类型的规范:

这是由以下组成的记录的示例规范String, Int, Date

通过使用类型addValue中的方法FieldType,编译器可以识别任何深度的参数类型:

但....

我还没有找到一种在FieldValue类型上实现转发方法的方法,以实现一个流畅的接口,就像我的第一个示例一样:

这是给出这个想法的伪代码:

我认为这一定是可能的,因为下一个参数的类型信息通过成员addValue包含在. 但我无法找到一种方法让该信息可用于该方法,让编译器验证参数值的类型,并让 IDE 建议正确的类型。FieldValuetailVaddValue

0 投票
1 回答
1100 浏览

cuda - 使用 CUDA Profiler nvprof 进行内存访问

我正在使用 nvprof 来获取以下 CUDA 代码的全局内存访问次数。内核中加载次数为 36(访问 d_In 数组),内核中存储次数为 36+36(访问 d_Out 数组和 d_rows 数组)。因此,全局内存加载的总数为 36,全局内存存储的数量为 72。但是,当我使用 nvprof CUDA 分析器分析代码时,它会报告以下内容:(基本上我想计算全局内存访问的计算(CGMA) 比率)

有人能帮我吗?谢谢

0 投票
1 回答
1026 浏览

c# - 使用 Json.NET 反序列化异构 JSON 数组

我一直在寻找几天,一次几个小时,试图找到我问题的答案。我有以下 JSON 字符串:

这是我需要反序列化的各种消息的示例,但它是现在让我心痛的消息。对我来说有问题的部分是“状态”数组。我的类接受反序列化字符串的结果是:

进行反序列化的代码是:

其中 strResp 是包含 JSON 数据的字符串。

我最初尝试使用作为 .NET 框架一部分的 JSON 库,但被困在“状态”部分。这就是促使我尝试 Json.NET 的原因。

我得到的错误是:

任何帮助将不胜感激。当然,我很乐意根据需要提供更多信息。我尝试做一个自定义转换器,但我认为我的 C# 知识还没有达到那个水平。我一直在尝试破译为回答类似问题而提供的解决方案,但得出的结论是我一定遗漏了一些东西。

我衷心感谢社区花时间阅读我冗长的问题。你的慷慨继续让我惊讶!

0 投票
4 回答
1350 浏览

scala - 如何在 Scala 中实现异构容器

我需要一个异构的类型安全的容器来存储不相关的类型 A、B、C。

这是一种类型级别的规范:

哪种类型最适合支持此容器?

是否值得为 A、B、C 类型创建一个 Containerable[T] 类型类?

谢谢。

0 投票
1 回答
245 浏览

sql - 使用 Oracle 异构服务的 Left Join 错误转换

我有一个使用远程数据库的数据库链接连接的 Oracle 数据库。我的远程数据库与 OUTER JOIN 无关,这就是异构服务将我的查询转换为几个简单查询并连接结果的原因。

例如,我有 3 个表:

我想从 1 表中查询行,并通过 email_id 从第 2 和第 3 左连接行。我的查询看起来像:

问题是异构服务将此查询转换为以下两个查询:

第二个查询是错误的全扫描查询,它应该是 email_id 的 WHERE 子句。

我的问题是,如何告诉异构服务如何以正确的顺序转换我的查询?

0 投票
3 回答
5028 浏览

scala - 为什么在 Spark 中聚合和折叠两个不同的 API?

使用 Scala 标准库时,我可以这样做:

从许多 Int 中制作一个 Int。

我可以做这样的事情:

从许多 Int 中制作一个 String。

因此, foldLeft 可以是同质的或异构的,无论我们想要什么,它都在一个 API 中。

在 Spark 中,如果我想要许多 Int 中的一个 Int,我可以这样做:

fold API 类似于 foldLeft,但它只是同构的,一个 RDD[Int] 只能产生带有 fold 的 Int。

spark中也有一个聚合API:

它是异构的,一个 RDD[Int] 现在可以产生一个字符串。

那么,为什么在 Spark 中 fold 和 aggregate 实现为两个不同的 API?

为什么它们不像 foldLeft 那样设计,既可以是同质的又可以是异质的?

(我对 Spark 很陌生,如果这是一个愚蠢的问题,请原谅。)

0 投票
0 回答
279 浏览

scala - 具有多类型值的哈希映射的现有解决方案

我正在寻找异构地图的实现。异构映射是指HMap[KeyType, Any]具有定义方法的结构:

Stack Overflow 上有一些答案告诉如何使用 Manifests/ClassTags 来实现它,我有一个基本版本:

我想知道是否存在像标准集合 Map 中那样具有附加功能的更完整的实现。

用例正在从 csv/mongo/sql 读取未知数量的列(某些类型在编译时未知),转换一些列(它们的类型在编译时已知),添加新列并将结果映射传输到 R 数据.frame 通过 rJava。在我的特殊情况下,如果不太通用的解决方案更容易,我需要 Map[String, Double/Int/String/Boolean/Date]。

简短的 ClassTag 和 Manifest 解决方案如下所述:

如何绕过 Scala 上的类型擦除?或者,为什么我不能获取我的集合的类型参数?

Scala:什么是 TypeTag,我如何使用它?

我找到了几个小的 github 解决方案:

https://github.com/EnMAS/EnMAS-Framework/blob/master/enmas-core/src/main/scala/org/enmas/pomdp/State.scala

https://github.com/kennknowles/scala-heterogeneous-map

我不是在寻找什么:

  1. 编译器魔术在编译时推断编译时未知的返回类型 - 不可能

  2. Shapeless HMap – 我需要区分(String -> Int)(String -> String)

  3. 从 scala.collections.Map 继承——不可能,因为Map[A, B]get 是get[B]我的情况get[Any]

0 投票
1 回答
533 浏览

performance - 什么对性能、对象元胞数组或异构数组更好?

假设我有一些课程foo < handle, and bar < foo, baz < foo, and maybe qux < foo。有几种方法可以存储这些对象的数组:

  • 作为元胞数组:A = {foo bar baz qux} % A(1) would be a cell, A{1} gives me a foo object

  • 从 R2011a 开始,我可以 make foo <matlab.mixin.Heterogeneous,然后直接构建一个数组:A = [foo bar baz qux] % A(1) directly gives me a foo object

在我看来,从维护的角度来看,使用第二种方法而不是第一种方法会更好,这样可以消除关于如何访问的歧义A。即,当我们需要取消引用单元格数组的元素时(单元格A(1)foo对象A{1},位于内部A(1))。

但是,使用一种语法与另一种语法相比,是否存在任何类型的内存或性能损失(或好处)?