武昌做网站哪家好,好创意设计大赛官网,网站域名是什么,做网站需要什么配置的电脑一、注解简介
1、注解是什么
Java 的注解#xff08;Annotation#xff09;是一种特殊的语法#xff0c;用于在代码中添加元数据#xff08;Metadata#xff09;。
2、注解有什么用
注解本身并不是代码的一部分#xff0c;它们不会直接影响代码的执行#xff0c;但可…一、注解简介1、注解是什么Java 的注解Annotation是一种特殊的语法用于在代码中添加元数据Metadata。2、注解有什么用注解本身并不是代码的一部分它们不会直接影响代码的执行但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段。二、注解的定义与使用1、注解的定义1基本语法注解是使用 interface 关键字定义的并且默认继承自Annotation接口。基本的语法如下public interface MyAnnotation { String value() default ; int count(); }2注解的属性String value() default ; int count();这两个都是注解的属性它们是以这种抽象方法的格式定义的这样可以支持更多类型因为方法的返回类型比字段可以定义的类型多public interface MyAnnotation { // 方法返回Class类型 Class? classType() default Object.class; // 方法返回注解类型 MyAnnotation nestedAnnotation() default MyAnnotation; }3默认值可以使用 default 关键字为注解的属性添加默认值这样在使用注解时可以不为这一项传入属性值。如果一个属性没有默认值则在使用时必须传入属性值。2、注解的使用1基本语法注解可以用在类、方法、字段、参数等多种地方。例如class SuperClass { public void foo() { System.out.println(SuperClass~); } } class SubClass extends SuperClass { Override public void foo() { System.out.println(SubClass~); } }2有属性的注解的使用如果一个注解有属性而且这个属性有默认值则可以不传入属性值这时属性值为默认值interface MyAnnotation { int attribute() default 0; } MyAnnotation() class Sample { }如果这个属性没有默认值则在使用注解时就需要传入属性值interface MyAnnotation { int attribute(); } MyAnnotation(attribute 0) class Sample { }而且这里必须使用属性名 属性值的格式传值。如果有多个属性传值也是类似的interface MyAnnotation { int attribute1(); int attribute2(); } MyAnnotation(attribute1 1, attribute2 2) class Sample { }3属性名为 value当一个注解中只有一个属性时如果这个属性被命名为 value则在使用该注解时可以省略属性名称。这是为了提高代码的简洁性和易读性。interface MyAnnotation { int value(); } MyAnnotation(1) class Sample { }如果只有一个属性属性名不是 value 的话这样写就会报错interface MyAnnotation { int attribute(); } MyAnnotation(1) // 这里会报错必须写成 MyAnnotation(attribute 1) class Sample { }如果有多个属性属性中有 value 这个属性的话也需要按属性名 属性值的格式指明每一个属性的属性值interface MyAnnotation { int value(); int attribute(); } MyAnnotation(value 1, attribute 1) class Sample { }三、元注解元注解是用来修饰注解的注解。1、RetentionRetention 注解定义了一个注解的生命周期即该注解在哪个阶段可用。1属性可取值RetentionPolicy.SOURCE注解仅在源代码中存在编译器使用后就会丢弃它在编译后不会保留。RetentionPolicy.CLASS注解在编译后仍然存在于类文件中但在运行时虚拟机不保留注解。RetentionPolicy.RUNTIME注解在运行时仍然可用运行时虚拟机会保留注解可以通过反射读取。对于 Retention 的元素的默认值是 RetentionPolicy.CLASS。2源代码我们可以查看 Retention 的源代码Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.ANNOTATION_TYPE) public interface Retention { RetentionPolicy value(); }对于Documented表明 Retention 元注解会保留在 Javadoc 中。对于Retention(RetentionPolicy.RUNTIME)表示 Retention 会在运行时保留。对于Target(ElementType.ANNOTATION_TYPE)表示 Retention 只能修饰注解类型。可以看到 Retention 的唯一一个属性的类型是 RetentionPolicy 类型这个类型也是一个枚举类型它的源码是public enum RetentionPolicy { SOURCE, CLASS, RUNTIME }3示例Target(ElementType.METHOD) Retention(RetentionPolicy.SOURCE) public interface Override { }可以看到对于 Override 是只在源码中保留的。Documented Retention(RetentionPolicy.RUNTIME) Target(value{CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public interface Deprecated { }对于 Deprecated 是运行时也会保留的。2、TargetTarget注解定义了一个注解可以应用于哪些 Java 元素。1属性可取值ElementType.TYPE可以应用于类、接口、枚举或注解。ElementType.FIELD可以应用于字段。ElementType.METHOD可以应用于方法。ElementType.PARAMETER可以应用于方法参数。ElementType.CONSTRUCTOR可以应用于构造函数。ElementType.LOCAL_VARIABLE可以应用于局部变量。ElementType.ANNOTATION_TYPE可以应用于注解类型。ElementType.PACKAGE可以应用于包声明。2源代码Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.ANNOTATION_TYPE) public interface Target { ElementType[] value(); }对于Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.ANNOTATION_TYPE)第一行表示 Target 元注解会保留在 Javadoc 中。第二行表示 Target 注解会在运行时依然保留最后一行表示 Target 只能修饰注解类型。对于 Target 的属性是一个 ElementType 类型的数组对于 ElementType 类型也是一个枚举类型public enum ElementType { TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE, TYPE_PARAMETER, TYPE_USE }3示例Target(ElementType.METHOD) Retention(RetentionPolicy.SOURCE) public interface Override { }可以看到Override 只能修饰方法类型。3、DocumentedDocumented表明被它修饰的注解应该被包含在Java文档中如Javadoc中。1源代码Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.ANNOTATION_TYPE) public interface Documented { }Documented 元注解没有属性会在运行时保留只能修饰注解类型会被包含在 Javadoc 中。2示例Documented Retention(RetentionPolicy.RUNTIME) Target(value{CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public interface Deprecated { }这里的代码就说明 Deprecated 注解会被包含在 Javadoc 中。4、InheritedInherited注解表明一个注解是可继承的。这意味着如果一个类被标记为使用某个注解那么它的子类可以自动获得这个注解。1源代码Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.ANNOTATION_TYPE) public interface Inherited { }Inherited 元注解没有属性会在运行时保留只能修饰注解类型会被包含在 Javadoc 中。四、Java 内置注解这里介绍三个基本的注解。1、Override1介绍用于标识一个方法是重写父类的方法。该注解只能用于方法。例如class SuperClass { public void foo() { System.out.println(SuperClasss foo.); } } class SubClass extends SuperClass { Override public void foo() { System.out.println(SubClasss foo); } }2源代码我们可以查看 Override 的源码Target(ElementType.METHOD) Retention(RetentionPolicy.SOURCE) public interface Override { }可以看到在定义了 Override 注解时Override 的定义前面还加了两个元注解Target(ElementType.METHOD)这个元注解限制了 Override 只能修饰方法。Retention(RetentionPolicy.SOURCE)这个元注解限制了 Override 只会在源代码中存在编译后不再保留。2、Deprecated1介绍表示某个元素类、方法、字段等已经过时不建议使用。仍然可以使用但是不建议使用通常是因为这个元素已经被替换为较新的功能。例如Deprecated class Sample { }在使用这个类时会显示可以看到这个类被线划掉了说明这个类已经过时。2源代码Documented Retention(RetentionPolicy.RUNTIME) Target(value{CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public interface Deprecated { }这里的源代码说明Deprecated 注解会包含在 Javadoc 中会在运行时保留可以修饰构造器、字段、局部变量等类型3、SuppressWarnings1介绍用于抑制编译器发出的警告。例如public class Example { public static void main(String[] args) { int i; } }当我们声明了一个整型变量而没有使用它时就会出现警告这时我们就可以使用 SuppressWarnings 抑制这个警告public class Example { SuppressWarnings({all}) // 这个注解有属性所以需要传入属性值all 代表忽略所有类型警告 public static void main(String[] args) { int i; } }这样上面的警告就消失了。2源代码Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) Retention(RetentionPolicy.SOURCE) public interface SuppressWarnings { String[] value(); }这里的源代码说明SuppressWarnings 注解能修饰类、接口、注解、枚举、字段等类型只会在源代码中保留。3属性可取值unchecked:抑制与未检查的操作相关的警告通常与泛型类型的使用有关。例如在将原始类型赋值给泛型参数时可能会出现此警告。deprecation:抑制关于使用已弃用deprecatedAPI的警告。当使用的类或方法标记为过时时编译器会发出警告。rawtypes:抑制与使用原始类型raw types相关的警告。当使用未指定类型参数的集合如List而不是ListString时会出现此警告。unused:抑制未使用的变量、方法或类的警告。这在开发过程中可能会使用以避免对未使用代码的警告。fallthrough:抑制在switch语句中缺少break语句导致的警告。对于 SuppressWarning 的 value 属性可取值比较多上面只是一部分。说真的这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis稳稳当当过日子。结果GPT、DeepSeek火了之后整条线上的人都开始有点慌了大家都在想“我是不是要学大模型不然这饭碗还能保多久”先给出最直接的答案一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇Java与大模型结合的技术优势推理环节的核心地位大模型训练依赖Python生态的高性能计算资源而Java在推理阶段模型部署、性能优化、系统集成具有独特优势。其“编写一次处处运行”的特性使其能无缝集成到微服务、分布式系统等企业级架构中高效处理高并发请求。例如某电商平台通过Java构建的大模型API网关支撑每日千万级请求的稳定运行响应时间缩短50%。生态成熟与性能稳定Java拥有Spring Boot、Spring Cloud等成熟框架可快速实现服务注册、负载均衡、熔断降级等生产级能力。JVM的垃圾回收机制和即时编译技术使其在长连接、高并发场景下表现优于脚本语言。例如某金融系统采用Java实现大模型推理服务系统可用率长期保持99.99%以上。兼容性与工程化能力Java与现有业务系统的兼容性极强可降低大模型落地的集成成本。例如某制造企业通过Java将大模型与ERP系统对接实现生产流程的智能优化故障率降低30%。同时Java在代码规范、测试流程、版本管理等方面的积累能大幅降低大模型项目的研发成本和维护难度。因此捕获AI掌握技术是关键让AI成为我们最便利的工具.一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇如何学习AGI大模型作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享