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.html

clickhouse 中的“宏”是啥,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是啥,有啥用的主要内容,如果未能解决你的问题,请参考以下文章

java里的自定义注解类型 有啥用?

java applet是啥?有啥用 ?现在还在用吗?

java中的enum有啥用呢?

JAVA中.class文件是啥意思?有啥用吗?

java eclipse中library是啥意思,怎麽用,添加有啥用

java 中byte数组存的是啥类型的数据,byte数组有啥用