问题标签 [indirection]

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 回答
3027 浏览

arrays - 通过动态构造的变量名间接分配给 bash 数组变量

用于从 csv 创建具有未知列的多个数组的 Bash 脚本。

我正在尝试编写一个脚本来比较两个具有相似列的 csv 文件。我需要它从其他 csv 中找到匹配列并比较任何差异。踢球者是我希望脚本是动态的,以允许输入任意数量的列并且它仍然能够运行。我以为我有一个很好的计划来解决这个问题,但结果我遇到了语法错误。这是我需要比较的 csv 样本。

当我阅读 csv 文件时,我正计划查找“IF 列 == 打开;然后;使用 IP 地址填充此列的数组”在这种情况下,这将给我 4 个列表,其中包含正在侦听所述端口的 IP。然后,我可以将其与我的安全设备配置进行比较,以确保其配置正确。最后是肉,这是我认为可以完成创建数组供我稍后搜索的内容。但是,当我尝试在数组名称中使用变量时遇到了障碍。可以纠正我的语法还是有更好的方法来做这种事情?

更新

我还尝试使用 eval 命令,因为所有数据都将由其他脚本填充。

但我收到此错误消息:

./compare.sh:第 41 行:arr8[83]=10.0.0.83:找不到命令

这是此示例的新代码:

0 投票
1 回答
1180 浏览

jpa - JPA 透明间接和容器策略

假设我有以下简单的客户/订单实现:

由 Customer 类定义的客户记录。每个客户可以有多个由 Order 类定义的订单。

借鉴here的Transparent Indirection和here的Container Policies的解释,EclipseLink这些概念的理解如下:

透明间接允许我说

需要注意的两点是:

  1. 间接允许延迟加载属性,因此客户的订单仅在第 2 行而不是第 1 行从数据库中获取。
  2. 我可以将客户的订单视为 Order 类型对象的 Set(或 Collection、List 或 Map)。

Container Policy 告诉 EclipseLink 应该为 Set 使用哪个实际类,因此它应该Set在上面的示例中实现。

这就是我对 EclipseLink 中的透明间接和容器策略的理解。

当我尝试访问数据库时看到以下错误:

异常 [EclipseLink-148] (Eclipse Persistence Services - 2.3.0.v20110604-r9504):org.eclipse.persistence.exceptions.DescriptorException 异常描述:容器策略 [CollectionContainerPolicy(class org.eclipse.persistence.indirection.IndirectSet)]与透明间接不兼容。映射:org.eclipse.persistence.mappings.OneToManyMapping[orders] 描述符:RelationalDescriptor(my.model.Customer --> [DatabaseTable(Customer)])

我确定我在尝试调试的代码中存在错误,但我没有指定错误中提到的 CollectionContainerPolicy,所以我认为org.eclipse.persistence.indirection.IndirectSet是默认值。但是,如果我使用的是默认策略,那么我不确定导致此错误的原因可能是什么,或者我应该使用哪个策略。

现在,我只想知道我对上面提到的透明间接和容器策略的理解是否正确。

如果它是正确的,我可能在我的代码中遗漏了一些相对较小的东西(调用或配置选项等),但如果我不理解这些概念,那么显然我需要先做更多的研究。

客户模型

订购型号

0 投票
2 回答
64 浏览

arrays - 解释本地 -a 'xkeys=("${!'"$1"'[@]}")'

此代码在bash-hackers.org wiki 页面上作为数组间接的解决方法给出,作为间接获取数组长度和索引的示例。

这个Stackoverflow 问题中也提到了这一点。

我想具体了解为什么local -a 'xkeys=("${!'"$1"'[@]}")'有效。这里发生了什么。我知道等号右侧有三个不同的字符串:

  1. 'xkeys=("${!'
  2. “1美元”
  3. '[@]}")'

为什么这行得通?

这是代码:

谢谢

0 投票
1 回答
157 浏览

macros - ALET 宏和间接使用

在“Let Over Lambda”的第 6 章alet中,我发现了称为. 它的工作方式类似于let,但当alet正文的最后一种形式是 lambda 表达式时特别有用,因为它允许在 lambda 表达式实际出现在文本中之前使用它。

这是宏的第一个版本,alet%

到现在为止还挺好。但接下来作者决定使用以下推理来增强宏:

alet%可以使它不返回其主体中的最后一个形式——我们预计它是一个 lambda 形式——而是一个在 let 形式的词法范围内查找另一个函数的函数,然后调用该函数。这有时被称为间接,因为我们不是返回一个函数来做某事,而是返回一个使用指针解引用查找函数的函数,然后使用该函数。间接是一个在整个编程语言中普遍存在的概念,这是有充分理由的。它允许我们在运行时更改那些在编译时固定的东西,而无需间接。

alet定义为:

有什么不同?这个最终版本能做哪些不能做的事情alet%alet返回将调用另一个 lambda 的 lambda。它有什么好处?如果有人可以举一个间接使用的例子,那将不胜感激。

0 投票
1 回答
1119 浏览

c++ - OPNET 中的 C 编程

我正在着手对 OPNET 中的节点进行手动编程,但是遇到了一些麻烦。我从数据包中获取一些信息并将它们存储在变量中,并希望将其输出到模拟控制台。当我添加行 puts(bcast_info) 时,出现以下错误。

在添加上述行之前,模拟运行良好,我得到了基本的文本输出。到目前为止,这是我的代码。

我很欣赏 OPNET 是 C 语言的一种变体,它有一些自己的方法等,但对于错误的实际含义和潜在修复的任何帮助将不胜感激。请注意,我以前从未使用过 C/C++ 或这种 OPNET 语言。

0 投票
2 回答
297 浏览

c - 更多级别的间接是否会对 C 中的性能产生影响

如果我有一个包含结构数组的结构......等等

访问更好吗

或者这只是一样

或者效率损失的级别数量是否有限制,编译器优化是否有任何效果?

非常感谢您提供的任何见解。

0 投票
2 回答
8466 浏览

c - 如何将双空指针取消引用到 int 指针

我有一个看起来有点像这样的代码:

为什么我不能取消引用指向 int 指针的 void 双指针?以下两个示例有效。

片段:1

片段 2:

0 投票
0 回答
134 浏览

linux - 是否可以在没有 lbr 的情况下从 linux perf 获取间接调用路径?

我试图从 perf 记录中获取间接调用路径,这是我遇到问题的地方: lbr 仅支持 x86 in perf(使用 -b 选项),而我使用的设备是 ARM。所以我的问题是:如果没有 lbr,是否可以从 perf 中获取间接调用路径?实际上,我不需要每个间接调用函数的分支计数/权重,我需要的只是调用路径。

为了让问题更清楚,假设函数 foo 中有一个间接调用站点。在这个调用点,两个函数 bar1 和 bar2 被调用。那么在 perf 中,如果没有 lrb(-b 选项),是否可以从调用链中获取调用路径 foo->bar1 和 foo->bar2?

如果有人可以帮助我,我真的很感激。谢谢!

0 投票
2 回答
70 浏览

bash - 如何编写一个与用户确认现有变量值的 Bash 函数

我有大量配置变量,我希望用户对其值进行确认。因此,可能存在一些指定运行号的变量,我希望脚本询问用户该变量的当前值是否正常。如果用户响应该值不正确,则脚本会请求一个新值并将其分配给变量。

我已经对执行此操作的功能进行了初步尝试,但它的运行存在一些困难;它停滞不前。我会重视解决问题的一些帮助,以及对我正在使用的方法的任何批评。代码如下:

0 投票
1 回答
3032 浏览

arrays - 如何在 Bash 中间接获取关联数组的键和值?

在 Bash 中,只给定一个包含关联数组名称的变量,

我们如何检索关联数组的键和值?