根据hyperpolyglot.org上的参考表,可以使用以下语法来设置数组.
i=(1 2 3)
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误的破折号是/bin/shUbuntu 的默认值,应该符合POSIX标准.
# Trying the syntax with dash in my terminal
> dash -i
$ i=(1 2 3)
dash: 1: Syntax error: "(" unexpected
$ exit
# Working fine with bash
> bash -i
$ i=(1 2 3)
$ echo ${i[@]}
1 2 3
$ exit
Run Code Online (Sandbox Code Playgroud)
参考表是误导性的还是错误的?
如果是,那么定义数组或列表并且符合POSIX的正确方法是什么?
首先,我做了一个快速的jsperf测试用例来显示明显的:
Object.create(null)比使用{}语法创建对象慢.
http://jsperf.com/js-object-creation-null-proto
但鉴于这一事实,前一种情况有时可能是优化和性能的一个很好的选择吗?换句话说,操纵最轻量级的js对象可以提高性能,因此在某些情况下使用它成为一个合理的选择.
我指的是你要大量访问对象属性的情况,或者大量使用for in循环.
这种方法是否有太大的风险,无法在库中使用,人们可能会导致这些对象不具备标准Object原型所带来的标准属性?
另外,你知道另一种(更快)的方法来创建最轻量级的js对象吗?
PS:我做了一个简短的测试用例来说明使用Object.create(null)和访问属性比使用更快一些的情况{}.
http://jsperf.com/js-object-creation-and-accessing-properties
在kafka流中定义拓扑时,可以添加全局状态存储。它将需要一个源主题以及一个ProcessorSupplier。处理器接收记录,并可以在理论上对其进行转换,然后再将其添加到存储中。但是,在还原的情况下,记录会直接从源主题(更改日志)插入到全局状态存储中,而跳过最终在处理器中完成的转换。
+-------------+ +-------------+ +---------------+
| | | | | global |
|source topic -------------> processor +--------------> state |
|(changelog) | | | | store |
+-------------+ +-------------+ +---------------+
| ^
| |
+---------------------------------------------------------+
record directly inserted during restoration
Run Code Online (Sandbox Code Playgroud)
StreamsBuilder#addGlobalStore(StoreBuilder storeBuilder,字符串主题,已消耗的消耗,ProcessorSupplier stateUpdateSupplier)将全局StateStore添加到拓扑。
根据文档
注意:您不应使用处理器将转换后的记录插入全局状态存储。该存储使用源主题作为changelog,并且在还原期间将直接从源中插入记录。应该使用此ProcessorNode来保持StateStore的最新状态。
同时,由于当前在kafka错误跟踪器上打开了主要错误:从主题还原状态时,不会使用addGlobalStore上提供的KAFKA-7663自定义处理器,该状态可以准确解释文档中所述的内容,但似乎是可以接受的错误。
我想知道KAFKA-7663是否确实是个错误。根据文档,它似乎是这样设计的,在这种情况下,我很难理解用例。
有人可以解释这个底层API的主要用例吗?我唯一能想到的就是处理副作用,例如在处理器中执行一些日志操作。
额外的问题:如果源主题充当全局存储的变更日志,则由于保留已过期而从该主题删除记录时,是否会将其从全局状态存储中删除?还是仅在从更改日志中对整个商店进行还原之后,才会在商店中进行删除。
apache-kafka ×1
arrays ×1
bash ×1
dash-shell ×1
java ×1
javascript ×1
jsperf ×1
object ×1
performance ×1
posix ×1