JAVA基础语法与Spring笔记

JAVA基础语法

JAVA参考教程文档(这里)。

是解释型的语言(.java文件 javac->.class文件 解释器->JVM虚拟机),GO是编译型的,PHP是解释型的。

JAVA变量有枚举类型,PHP8 才开始支持枚举类型。

重载(形参必须不同,方法名称可以一样)与重写(可不变,内部核心变) --- 多态性。多态存在的三个必要条件:继承,重写,父类引用指向子类对象:Parent p = new Child();

PHP是没有重载的,不能有同名函数。

多态的优点:

1. 消除类型之间的耦合关系

2. 可替换性

3. 可扩充性

4. 接口性

5. 灵活性

6. 简化性

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

JAVA的字符串是 类对象,这和PHP和GO是不一样的,PHP 字符串可以直接加号拼接,JAVA可以借助对象内函数来处理字符串拼接等操作(也可以直接加号拼)。

小马理解,JAVA的package名有点类似 GO的包,PHP的命名空间。

JAVA数据结构

Java 集合框架(https://m.runoob.com/java/java-collections.html)

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

集合框架体系如图所示(找一下图好理解)。

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。

// 创建集合

ArrayList<String> sites = new ArrayList<String>();

sites.add("Google");

sites.add("Runoob");

sites.add("Taobao");

sites.add("Zhihu");

// 获取迭代器

Iterator<String> it = sites.iterator();

// 输出集合中的第一个元素

System.out.println(it.next());

Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。

泛型,泛型类(泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分)。

--- 这里与UML的泛化 是两种概念,泛化有继承的意思。

泛型类例子:

public class Box<T> {

private T t;

public void add(T t) {

this.t = t;

}

public T get() {

return t;

}

public static void main(String[] args) {

Box<Integer> integerBox = new Box<Integer>();

Box<String> stringBox = new Box<String>();

integerBox.add(new Integer(10));

stringBox.add(new String("菜鸟教程"));

System.out.printf("整型值为 :%d\n\n", integerBox.get());

System.out.printf("字符串为 :%s\n", stringBox.get());

}

}

GO和PHP的泛型话题:Golang团队认为在类型系统和运行时的复杂性花费太大,还没找到可以和这个复杂性相抵的良好设计。内置的map和slice其实都有泛型的味道,加上可以用interface{}来构造容器,可以达到泛型的效果。所以目前为止还没有直接的支持泛型。至于PHP,目前还没必要支持泛型。

JAVA类型通配符

1、类型通配符一般是使用 ? 代替具体的类型参数。例如 List<?> 在逻辑上是 List<String>,List<Integer> 等所有 List<具体类型实参> 的父类。

2、类型通配符上限通过形如List来定义,如此定义就是通配符泛型值接受Number及其下层子类类型。

3、类型通配符下限通过形如 List<? super Number> 来定义,表示类型只能接受 Number 及其上层父类类型,如 Object 类型的实例。

对象的序列化和反序列化

类 ObjectInputStream 和 ObjectOutputStream 是高层次的数据流,它们包含反序列化和序列化对象的方法。

请注意,一个类的对象要想序列化成功,必须满足两个条件:该类必须实现 java.io.Serializable 接口。该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的。如果你想知道一个 Java 标准类是否是可序列化的,请查看该类的文档。检验一个类的实例是否能序列化十分简单, 只需要查看该类有没有实现 java.io.Serializable接口。

Java 网络编程

java.net 包中提供了两种常见的网络协议的支持:TCP UDP

Socket 编程

套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。

当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。

java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。

socket是一般的app用的(服务端之间的通信?),客户端是任何的socket client, websocket 是web上用,客户端一般是浏览器上的js或其他web客户端 SDK ?

Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API 支持,所以 Applet 是一个全功能的 Java 应用程序。

<applet> 标签是在HTML文件中嵌入 Applet 的基础。

<applet code="HelloWorldApplet.class" width="320" height="120">

好多java实例demo(这里)。

Java 8 新特性

Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。

Java 9 新特性

注解的理解

JAVA注解是 jdk 5新特性,注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方式。拥有如下优势:简单易读的代码,编译器类型检查,使用 annotation API 为自己的注解构造处理工具。即使 Java 定义了一些类型的元数据,但是一般来说注解类型的添加和如何使用完全取决于你。

注解基本语法

注解的语法十分简单,主要是在现有语法中添加 @ 符号。比如常用的:

@Override:检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。

@Deprecated:标记过时方法。如果使用该方法,会报编译警告。

@SuppressWarnings:每当创建涉及重复工作的类或接口时,你通常可以使用注解来自动化和简化流程。

在这个例子中,注解可以和任何修饰符共同用于方法,诸如 public、static 或 void。从语法的角度上看,注解的使用方式和修饰符的使用方式一致。

自定义注解:

注意啊,interface前边有个@,@interface 这是自定义注解,不是接口。

public @interface Student{

String name(); //属性没有默认值,使用时必须指定值。

int age() default 0 ; //有默认值,使用时,可以不给,也可以给。

String[] hobbies(); //数组格式,按照数组格式赋值,只有一个时,可以省略大括号。

}

//这样使用。

@Student(name="小老犇",hobbies={"放牛","吃草"})

public void abc(){

sout("注解使用");

}

注解中属性的数据类型一共有三种:

八种基本数据类型(byte short int long float double boolean char)

Class, String, 枚举, 注解

以上所有类型的类型数组。

元注解

【用于定义注解】的注解,通常用于注解的定义上:

@Target:目标,描述自定义注解的使用范围,比如:类、接口、枚举、方法等等。 ---- 自定义一个注解类型(有字典列表),然后用来约束检查被 自定义注解注解的 元素:

我们定义了一个适用于类的注解,代码如下所示:

@Target({ElementType.TYPE})

public @interface AnnotationTest {//注意啊,interface前边有个@,这是自定义注解,不是接口。

}

@AnnotationTest

public class Test {

//@AnnotationTest Erro:'@AnnotationTest' not applicable to method

public void method(){

}

}

@Retention:保留,表示注解信息保存的时长。

值 说明

SOURCE 注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的class文件里)

CLASS 注解在class文件中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中),请注意,当注解未定义Retention值时,默认值是CLASS,如Java内置注解,@Override、@Deprecated、@SuppressWarnning等

RUNTIME VM 将在运行期也保留注解,因此可以通过反射机制读取注解的信息。

@Documented:生成的JavaDoc文档。

@Inherited:允许子类继承父类的注解,一般情况下获取不到父类注解。

@Repeatable:允许一个注解可以被使用一次或者多次(Java 8)。

不包含任何元素的注解称为标记注解(marker annotation),例如上例中的 @AnnotationTest 就是标记注解。

注解元素

注解元素可用的类型如下所示:

所有基本类型(int、float、boolean等)

String

Class

enum

Annotation

以上类型的数组

不允许使用任何包装类型,但是由于自动装箱的存在,这不算是什么限制。注解也可以作为元素的类型。

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

@Inherited

@Documented

public @interface AnnotationTest {

int id();

String value() default "value";

double[] number();

}

public class Test {

@AnnotationTest(id=1,value = "123",number = {1,2,3})

public void method(){

}

@AnnotationTest(id=1,number = {1,2,3})

public void method2(){

}

}

编译器会进行类型检查,如果在注解某个方法时没有给出指定值时,会编译错误;使用default 关键字,则该注解的处理器会使用此元素的默认值。

使用反射操作注解

方法 说明

getAnnotations() 获取元素上所有的注解

getDeclaredAnnotations() 获取元素上所有的注解,不包括从父类(inherited)继承

getAnnotation() 获取元素上指定注解

getDeclaredAnnotation() 获取元素上指定注解,不包括从父类(inherited)继承

isAnnotationPresent() 指定类型的注解存在于此元素上,则返回 true,否则返回 false。

注解不支持继承


Spring

笔者要提醒的是,千万不要把Spring和Spring Framework搞混淆了,很多文章都错误的定义了spring:spring是一个一站式的轻量级的java开发框架,核心是控制反转(IoC)和面向切面(AOP),针对于开发的WEB层(springMVC)、业务层(IoC)、持久层(jdbcTemplate)等都提供了多种配置解决方案。这是Spring Framework的定义,至于Spring,是整个生态。

Spring framework

即Spring,是其他Spring全家桶的基础和核心:包括SpringMVC(业务开发)、SpringBoot(在MVC基础上简化了XML配置,自动装配)、SpringCloud(一整套基于Spring Boot的微服务解决方案)、SpringData、SpringSecurity。

Spring由Rod Johnson创立,2004年发布了Spring框架的第一版,其目的是用户简化企业级开发的难度和周期。

所以,我们学习的时候不要避重就轻,应该以Spring Framework和Spring Boot为主,而不是Spring Cloud。

spring文档:https://www.w3cschool.cn/wkspring/dcu91icn.html

spring视频教程:https://www.imooc.com/video/3662

IOC

接口A a = new 接口A实现类A1()

a.echoA1name();

接口cache

cache = new redis()

XML或注解方式 (实现IOC bean对象容器)

一个beanid 一个对象

xml <bean id='' 配置对应具体的类class="接口实现类"></bean>

.java 载入xml文件,然后 某接口A a =super.getBean('bean_id')

a.hello();//接口函数(得到接口实现类中的具体实现)

初始化bean容器

spring注入(bean对象互相注入):设值注入,构造注入 (配置xml文件bean完成实现)(https://www.imooc.com/video/3668)。 ----- 写完代码后(含注入代码),然后依赖还需要通过 配置XML bean来实现注入后的最终对象

bean配置项

bean作用域: 单例,每次请求新建,每个http请求有效(像session),session(每个session内有效),global session

Spring 基于注解的配置

序号 注解 & 描述

1 @Required

@Required 注解应用于 bean 属性的 setter 方法。 -----必须要在xml配置文件定义属性

2 @Autowired

@Autowired 注解可以应用到 bean 属性的 setter 方法,非 setter 方法,构造函数和属性。---- 自动装载(自定实例化 注入对象,不用在xml配置注入)

3 @Qualifier

通过指定确切的将被连线的 bean,@Autowired 和 @Qualifier 注解可以用来删除混乱。

4 JSR-250 Annotations

Spring 支持 JSR-250 的基础的注解,其中包括了 @Resource,@PostConstruct 和 @PreDestroy 注解。

AOP:面向切面编程 (适用于功能是垂直的)。实现方式:预编译 aspectJ 和 运行期动态代理spring-aop 。(https://www.w3cschool.cn/wkspring/izae1h9w.html)(https://www.jianshu.com/p/38e2ba053ed7)

日志,事务,安全控制

thinkphp AOP(面向切面编程)钩子和行为

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

AOP大概意思指:在程序需要扩展时,不该动原本的代码

在thinkphp中实现类似java的AOP可以使用“行为”。

首先需要知道“切面”,在thinkphp 中称为标签位(钩子,行为)。即在代码的某个位子加入一个标签,这个标签代表执行一个或多个操作,thinkphp也提供了几个标签.

AI大模型学习福利

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。


因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【保姆级教程】从“陪聊“到“打工“,Google教你构建自己的AI智能体,代码示例全在这!

GOOGLE TECHNICAL GUIDE 从“陪聊”到“打工”&#xff1a; 读懂 AI Agent 的 进化与构建。 如果说 ChatGPT 是 2023 年的惊雷&#xff0c;那么 AI Agent (智能体) 就是 2026 年的电力网。本文将基于 Google Cloud 最新发布的 60 页技术白皮书&#xff0c;为你拆解这场技术革…

PPO过时了?GRPO/DAPO/GSPO/SAPO四大算法全面对比,揭秘最新强化学习技术趋势!

本文面向已了解强化学习中策略梯度&#xff08;policy gradient&#xff09;、优势函数&#xff08;advantage&#xff09;、重要性采样&#xff08;importance sampling&#xff09;等概念的读者&#xff0c;重点对大模型强化学习主流算法做一条线的梳理与比较。 强化学习&…

楼宇设备运维标准规范:以标准化体系提升物业运维能力

设备运维标准的核心框架楼宇设备运维是物业运营的核心支撑&#xff0c;其标准化体系直接决定了物业对设施的管控精度与服务输出质量。设备运维标准体系需覆盖全生命周期管理要求&#xff0c;包括设备分类编码、日常巡检流程、故障处置规范、维护记录管理等核心模块。分类编码是…

全网最全专科生AI论文网站TOP9:开题报告文献综述必备

全网最全专科生AI论文网站TOP9&#xff1a;开题报告文献综述必备 2026年专科生AI论文写作工具测评&#xff1a;为何值得一看&#xff1f; 随着人工智能技术的不断发展&#xff0c;越来越多的专科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的平台&a…

强脑科技的核心硬件模组为何选择蓝思量产?

&#x1f4cc; 目录&#x1f527; 98%良品率碾压同行&#xff01;蓝思科技拿下强脑科技核心订单&#xff1a;十年磨一剑的精密制造“变态级”秘籍一、碾压级优势&#xff1a;98%良品率背后&#xff0c;是“灰尘都要登记身份证”的严苛标准&#xff08;一&#xff09;十年合作沉…

Claude Code之父Boris提出的 9 条 Claude Code 实战技巧

Boris 的 9 条 Claude Code 实战技巧&#xff1a;原来高手的配置这么“朴素” Boris Cherny 在 Anthropic 内部有个绰号&#xff1a;Claude Code 之父。他最近在 X 上很活跃&#xff0c;于是很多人问 Boris&#xff1a;你自己到底怎么用 Claude Code&#xff1f;他刚在 X 上分…

懒人福音!2025年Agent工具大盘点,小白程序员也能秒变AI大神!

有没有发现2025这一年&#xff0c;身边越来越多人在聊“Agent”&#xff1f;去年也被业内称为“Agent元年”。 那么Agent到底是什么呢&#xff1f;Agent能干嘛呢&#xff1f; 什么是Agent? 把它想象成你的“全能数字化员工”。你可以给它一个复杂的目标(例如:“帮我规划一下…

震惊!AI已悄悄内化为你的编程伙伴,小白开发者必知的5大生存法则

主要内容 LLM的渗透已进入“内化期”。市场关注点正从单纯的流量规模转向量化的价值创造&#xff08;推理深度、职场渗透率、生态协同&#xff09;。厂商竞争的关键点将在于如何通过提升“逻辑深度”来优化“信息质量”&#xff0c;并在职场及全球化增量市场中实现差异化价值捕…

CSDN资源等级如何提升?综合贡献分如何提高?

长话短说&#xff0c;只有三种方式可以提升综合贡献分。方式一&#xff1a;完成成长任务完成此处的成长任务&#xff0c;通过审核即可增加综合贡献分&#xff0c;这个每天不限量&#xff0c;完成多少都可以&#xff0c;但是每个任务只能完成一次。方式二&#xff1a;完成热点任…

楼宇运维线路管理标准:保障ICT设施与服务稳定性的核心支撑

线路管理标准的底层逻辑楼宇ICT设施的稳定运行&#xff0c;依赖于线路系统的规范管理&#xff1b;而线路管理的有效性&#xff0c;必须以明确、可执行的标准为支撑。线路是ICT系统的物理载体&#xff0c;其状态直接影响数据传输的可靠性与服务连续性。楼宇中的线路覆盖电力、网…

电子器件烧毁的底层逻辑与避坑指南

电子器件的 “烧毁”&#xff0c;是电路设计与实际应用中最常见的故障之一。从小小的 LDO 稳压芯片到驱动电机的电调&#xff0c;看似不同的器件&#xff0c;烧毁的核心逻辑却高度相通 —— 本质都是器件的实际工作参数突破了自身的物理与热极限&#xff0c;且缺乏有效的保护机…

卷不动了?2025年AI编程工具大盘点:DeepSeek-Coder V3夺冠,代码生成效率提升300%,小白秒变大神!

年度大模型&#xff08;Foundation Models&#xff09;:专精 1.1 年度写作大模型 入围: GPT-4o Ultra、文心一言5.0、通义千问3.5、Claude 3.5 Sonnet、DeepSeek-R1-Write获奖者: GPT-4o Ultra获奖理由: 依托2025年ACL顶会EssayJudge多粒度写作测评与Lak 2025自动化写作评估&…

2026上海留学中介实力大比拼,十大靠谱机构引领留学新程 - 留学机构评审官

2026上海留学中介实力大比拼,十大靠谱机构引领留学新程一、上海学子如何甄别留学中介?关键痛点与清晰路径2026年伊始,计划出国深造的上海学子与家庭普遍面临几大核心关切:如何在信息过载的环境中高效筛选出真正专业…

【必学】AI智能体是什么?5大平台使用教程+实战案例,建议收藏

本文详细介绍了AI智能体的概念、功能及主流平台。AI智能体能自主理解、规划和执行复杂任务&#xff0c;区别于仅回答问题的普通AI助手。文章列举了其在生活、工作和专业领域的应用&#xff0c;并介绍了字节跳动Coze、Kimi的OK Computer、纳米AI和智谱清言等平台。智能体通过理解…

Cache写机制Write-through与Write-back

本文分享自天翼云开发者社区《Cache写机制Write-through与Write-back》,作者:LeonHao cache写机制中的write through 和 write back https://en.wikipedia.org/wiki/Cache#Writing_Policies Write-through- Write is…

从人工智障到真香!LLM三重觉醒:Tool+Plan+Memory让大模型开窍,小白程序员也能秒变大神

引言&#xff1a;困在琥珀中的智慧 想象一位学者&#xff0c;他读过人类历史上几乎所有的书籍&#xff0c;精通数学、物理、文学、哲学&#xff0c;能用一百种语言交流&#xff0c;对任何问题都能给出深刻的见解。 但他被困在一间没有门窗的房间里。 他不知道今天是几月几号…

DeepSeek R1引爆开源狂潮!国产大模型“十强混战“,小白程序员如何上车?

导 读 2025 年&#xff0c;DeepSeek R1 引爆全民开源热潮&#xff0c;国产 LLM 从“一家独大”跃入“十强混战”。智谱、MiniMax 冲刺 IPO&#xff0c;Qwen3、Kimi K2、GLM-4.5 轮番刷新性能榜&#xff0c;开源与闭源差距史上最小。多模态、端侧、Agent 成 2026 新赛点&#x…

开源的包管理和环境管理工具conda详解、应用场景及案例分析

Conda核心功能与应用指南 Conda是一款跨平台的包管理和环境管理工具,主要解决软件包依赖和环境隔离两大问题。其核心功能包括:1)支持Python/R/C++等多语言包管理,自动处理依赖;2)创建独立运行环境,避免版本冲突…

年底 Claude 官方直连 Key 缺货?官转 poloai.top 成开发者首选方案 - poloapi-ai大模型

临近年底,AI 编程工具的使用需求迎来爆发式增长,不少开发者却陷入了同一个困境 ——Claude 官方直连 API Key “一 key 难求”。打开 Anthropic 官方控制台,常见 “配额已售罄”“新密钥申请需排队 1-2 周” 的提示…

2025衬氟球阀厂家权威推荐榜单:焊接球阀/不锈钢球阀/电动球阀/V型球阀/螺纹球阀/保温球阀及气动球阀源头厂家精选。 - 品牌推荐官

在现代化工、制药、冶金、电力及环保等高腐蚀性流体控制的关键领域,衬氟球阀作为守护管道安全与工艺稳定的“特种兵”,其重要性不言而喻。凭借在阀体内壁及关键部件衬覆聚四氟乙烯(PTFE)、聚全氟乙丙烯(FEP/F46)…