JAVA中Annotation是啥,有啥用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中Annotation是啥,有啥用相关的知识,希望对你有一定的参考价值。
参考技术A 请输入你Annotation提供了一条与程序元素关联任何或者任何元数据(metadata)的途径。从某些方面看,annotation就像修饰符一样被使用,并应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中。这些被存储在annotation的“name=value”结构对中。annotation类型是一种接口,能够通过反射API的方式提供对其的访问。annotation能被用来为某个程序元素(类、方法、成员变量等)关联任何的。需要注意的是,这里存在着一个基本的潜规则:annotaion不能影响程序代码的执行,无论增加、删除annotation,代码都始终如一的执行。另外,尽管一些annotation通过java的反射api方法在运行时被访问,而java语言解释器在工作时忽略了这些annotation。正是由于忽略了annotation,导致了annotation类型在代码中是“不起作用”的;只有通过某种配套的工具才会对annotation类型中的进行访问和处理。本文中将涵盖标准的annotation和meta-annotation类型,陪伴这些annotation类型的工具是java编译器(当然要以某种特殊的方式处理它们)。由于上述原因,annotation在使用时十分简便。一个本地变量可以被一个以NonNull命名的annotation类型所标注,来作为对这个本地变量不能被赋予null值的断言。而我们可以编写与之配套的一个annotation代码,使用它来对具有前面变量的代码进行解析,并且尝试验证这个断言。当然这些代码并不必自己编写。在JDK安装后,在JDK/bin目录中可以找到名为“apt”的工具,它提供了处理annotation的框架:它启动后扫描源代码中的annotation,并调用我们定义好的annotation处理器完成我们所要完成的工作(比如验证前面例子中的断言)。说到这里,annotation的强大功能似乎可以替代XDoclet这类的工具了,随着我们的深入,大家会更加坚信这一点的答案... 拿别人的,希望可以帮到你~ 参考技术B http://wenku.baidu.com/view/e6e34a42a8956bec0975e31e.htmlclickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?
【中文标题】clickhouse 中的“宏”是啥,clickhouse 中的“宏”有啥用?【英文标题】:What is `macros` in clickhouse and what is use of `macros` in clickhouse?clickhouse 中的“宏”是什么,clickhouse 中的“宏”有什么用? 【发布时间】:2021-07-06 14:48:32 【问题描述】:Clickhouse 中的macros
是什么?
macros
在 Clickhouse 中的用例是什么?
<macros>
<cluster>MyFirstCluster</cluster>
<replica>chdw1-5</replica>
<shard>5</shard>
</macros>
config中各个属性的含义是什么?
在配置中分配每个属性的最佳做法是什么?
【问题讨论】:
【参考方案1】:它们用于复制引擎 ZK 路径。
https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/#creating-replicated-tables
CREATE TABLE table_name
(
EventDate DateTime,
CounterID UInt32,
UserID UInt32,
ver UInt16
) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/layer-shard/table_name', 'replica', ver)
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)
每个 CH 节点都是独立的,不知道集群/分片/复制。
但 Replicated* 引擎使用 ZK 路径进行复制(将自己标识为副本)。这个 ZK 路径是从宏中渲染出来的。
所以在你的情况下,而不是
ReplicatedReplacingMergeTree('/clickhouse/cluster/tables/shard/table_name', 'replica', ver)
实际上宏会被替换。
【讨论】:
我知道 Zookeeper 是为了协调 Clickhouse 集群,但我没有得到macros
变量(尤其是 layer
)定义 macros
变量 e 的最佳实践是什么, g 如果我们想拥有一个带有X
分片和“Y”复制的 Clickhouse 集群,我们应该如何定义“宏变量”
您可以定义自己的宏。我认为您需要两个不同的分片宏 myshard1 , myshard2。在每个节点上设置两者。然后用不同的宏创建表。
如果我发现集群中的每台机器都正确,我们需要定义不同的macro.xml
来显示该机器在集群中的角色。我说的对吗?以上是关于JAVA中Annotation是啥,有啥用的主要内容,如果未能解决你的问题,请参考以下文章