秋招Java后端开发冲刺——基础篇3

一、Java泛型

  1. Java 1.5中引入的一个新特性,其本质是参数化类型,可以增强代码的可读性以及稳定性。
  2. 分类
  • 泛型类:在类定义时类名后加,其中T表示泛型
  • 泛型接口:与泛型类相似
  • 泛型方法:静态泛型方法是没有办法使用类上声明的泛型的,必须声明自己的泛型

二、Java值传递

  1. 值传递和引用传递
  • 值传递:方法接收的是实参值的拷贝,会创建副本,方法内部的改变是否影响实参值需要根据参数是基本数据类型还是对象引用等来确定
  • 引用传递:方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。

三、反射

  1. 定义:程序运行时动态地获取任意一个类的所有属性和方法,包括私有属性和方法的机制。
  2. 反射获取Class对象
  • 具体类.class
  • 通过全类名:Class.forName(全类名)
  • 对象实例:对象变量.getClass()
  • 类加载器:xxxClassLoader.loadClass(全类名)
  1. 反射获取类的方法
  • 该类及其父类的public方法:getMethods()
  • 该类所有方法(包括private & protected & default & public,但不包括其父类中方法):getDeclaredMethods()
  • 获取指定方法并调用:(1)getDeclaredMethod(方法名,参数的Class对象); (2)setAccessible(true)(私有方法需要)(3)invoke(实例对象,实参)
  1. 反射获取类的属性
  • 该类及其父类的public属性:getFields()
  • 该类的所有属性(包括private & protected & default & public,但不包括其父类中属性)getDeclaredFields()
  • 属性的使用:与方法使用类似
  1. 应用场景:动态代理、注解、序列化和反序列化、依赖注入和控制反转等

四、注解

  1. 定义:Annotation (注解) 是 Java 1.5 开始引入的新特性,可以看作是一种特殊的注释,主要用于修饰类、方法或者变量,提供某些信息供程序在编译或者运行时使用。
  2. 作用:编译检查、代码分析、编译时动态处理等
  3. Java常见注解
分类注解描述
Spring Framework@Component标记一个类为Spring组件,Spring会自动检测并注册这个bean。
@Service特殊类型的`@Component`,用于服务层。
@Repository特殊类型的`@Component`,用于DAO层,并添加数据访问异常转换功能。
@Controller标记一个类为Spring MVC控制器。
@Autowired自动注入依赖对象。
@Qualifier与`@Autowired`结合使用,以区分具有相同类型的多个bean。
@Value注入属性值,支持SpEL表达式。
@Scope配置bean的作用域。
@Configuration标记一个类为配置类,用于定义bean。
@Bean声明一个bean的定义。
@Primary标记一个bean为首选bean,当有多个相同类型的bean时优先选择。
@Lazy懒加载bean,只有在需要时才初始化。
@PostConstruct在bean初始化完成后执行方法。
@PreDestroy在bean销毁之前执行方法。
Spring Boot@SpringBootApplication组合注解,包括`@Configuration`、`@EnableAutoConfiguration`和`@ComponentScan`。
@EnableAutoConfiguration启用Spring Boot的自动配置功能。
@RestController组合注解,标记一个类为Spring MVC控制器,并且每个方法默认返回JSON响应。
@RequestMapping映射HTTP请求到控制器的方法上。
@GetMapping映射HTTP GET请求到控制器的方法上。
@PostMapping映射HTTP POST请求到控制器的方法上。
@PutMapping映射HTTP PUT请求到控制器的方法上。
@DeleteMapping映射HTTP DELETE请求到控制器的方法上。
@PatchMapping映射HTTP PATCH请求到控制器的方法上。
@PathVariable将URL路径变量绑定到方法参数上。
@RequestParam将请求参数绑定到方法参数上。
@RequestBody将请求体绑定到方法参数上。
@ResponseBody将方法的返回值作为HTTP响应体。
@CrossOrigin允许跨域请求。

五、序列化和反序列化

  1. 定义
  • 序列化:将数据结构或对象实例转换为二进制数据流
  • 反序列化:将二进制数据流还原为数据结构或对象实例
  1. 应用场景:RPC远程调用、对象的文件存储等
  2. transient 关键字:修饰对象中的变量可以保证该变量不被序列化
  3. 常见的序列化协议:Hessian、Kryo、Protobuf、ProtoStuff
  4. JDK 自带的序列化,只需实现 java.io.Serializable接口
  5. 序列化号:serialVersionUID(变量类型为static final long ),用于保证对象反序列化时原类没有改变,否则不能成功反序列化。虽然该变量是static final类型,但做了特殊处理,因此是可以被序列化的。

六、语法糖

  1. 定义:是编程语言为了方便程序员开发程序而设计的一种特殊语法
  2. 常见应用
  • 泛型
  • 自动拆装箱(引用类型和基本数据类型)
  • 变长参数
  • 枚举
  • 内部类
  • 增强 for 循环(for each)
  • try-with-resources 语法(用于关闭资源,如IO资源)
  • lambda 表达式

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

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

相关文章

使用 frida hook Android app

Frida: 一种基于动态插装(dynamic instrumentation)技术的工具包,它主要是为测试人员、开发人员和逆向工程爱好者创建,在目标程序运行时,允许用户将 JavaScript代码注入其中,实现动态修改和调试…

ONLYOFFICE8.1版本桌面编辑器的测评

首先我们先出示一下我们所测评官网的链接: ONLYOFFICE官网链接:ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 我们这款ONLYOFFICE8.1版本有这一下优点 1.解决PDF痛点 ONLYOFFICE在PDF编辑方面支持高亮显示、下划线和删除线、添加批注等功能&#…

【2024最新版】Eclipse安装配置全攻略:图文详解

目录 1. Eclipse介绍1.1 背景1.2 主要特点和功能1.3 版本发布1.4 优势与劣势 2. 下载Eclipse3. 安装Eclipse4. 启动Eclipse 1. Eclipse介绍 Eclipse是一个开源的、基于Java的可扩展开发平台,主要用于Java开发者,但也支持其他语言如C/C、PHP、Python等。…

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持 一、题目 二、思路 存在UAF,libc版本2.31,经典菜单题 1.通过unsorted-bin-attack来leak-libc 2.通过uaf打tcache-bin-attack劫持__free_hook实现getshell 三、EXP from pwn import * context(archamd64,log_leveldebug)ioproce…

ansible自动化运维,(2)ansible-playbook

三种常见的数据格式: XML:可扩展标记语言,用于数据交换和配置 JSON:对象标记法,主要用来数据交换或配置,不支持注释 YAML:不是一种标记语言,主要用来配置,大小写敏感&…

Unity太空避障Demo总结

太空避障:主要是实现飞机躲避子弹 面板基类、音乐类、排行榜类、json等等都和上一篇Unity坦克迷宫Demo总结一样,太空避障主要是对四元数的练习和使用 1.选择飞机面板 (1)通过左右按钮对显示的模型进行切换 (2&#xff…

科技未来·无限可能“2024世亚智博会”

随着科技的飞速发展,人类社会正以前所未有的速度迈向一个全新的时代。科学技术作为第一生产力,不仅极大地推动了经济和社会的发展,更在不断地改变着我们的生活方式和思维方式。特别是在人工智能、物联网等前沿科技领域,其创新和应…

【ZYNQ】VDMA 的介绍

AXI VDMA 是 Xilinx 官方提供的高带宽视频 DMA IP,用于实现 AXI4-Stream 视频数据流与 AXI4 接口数据的转换,同时提供帧缓存与帧同步控制功能。本文主要介绍 AXI VDMA 的基本结构与原理,并简要介绍 VDMA 的配置与使用方法。 目录 1 VDMA 简介…

egg代码生成器

今天给大家分享一下egg的代码生成器,这个其实原理很简单,说白了就是用到了nodejs的一个文件io的操作,通过一系列配置参数解析然后生成一个很长的字符串,写入到文件中,最后导出到我们指定的文件夹。 前提概要 为什么我…

web前端——VUE

1.什么是框架? ①概述 框架结构就是基本功能,把很多基础功能已经实现了、封装了。在基础语言之上,对各种基础功能进行封装,方便开发者,提高开发效率 ②前端框架 javaScript是原生的 vue.js: 是一个js框架&…

【Java核心技术16】Java异常处理机制:深入探索与实践

Java异常处理机制:深入探索与实践 所有文章均为原创验证,您随手的 关注、点赞、收藏 是我创作最大的动力。 在软件开发中,异常处理是一个不可或缺的部分,它允许程序在遇到错误时能够优雅地处理,而不是直接崩溃。在Java…

最新解决docker镜像无法下载问题

1.增加或修改daemon.json文件 ​ cd /etc/dockervi daemon.json{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }2.重启docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 3.验证 下载https://txodoo.cn/blog/11/d…

双指针dd d df f

像二分这样的算法,我们甚至可以不用管,直接在问题空间之内搜索,但是双指针也非常好用,帮助我们来减少枚举对象,我们来总结一下这经典的三个题目: 最长上升不重复子序列活动 - AcWings 首先一定要写…

LabVIEW电路板故障诊断系统

基于LabVIEW软件开发的电路板故障诊断系统,涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备,包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等,通过模块化设计实现了对电路板的…

AVL许可证适用范围

在当今数字化时代,软件已经成为企业运营不可或缺的组成部分。然而,不同的软件应用需要相应的许可证才能正常使用。AVL许可证作为其中一种常见的软件许可证,其适用范围广泛,能够帮助企业充分释放软件的潜能。本文将深入探讨AVL许可…

shell中的函数

统计家目录下.c文件的个数 终端输入一个.sh文件,判断文件是否由可执行权限,如果有可执行权限运行脚本,没有可执行权限添加可执行权限后,再运行脚本 写一个函数,输出当前用户uid和gid,并使用变量接收结果 终…

【LLM Transparency Tool】用于深入分析和理解大型语言模型(LLM)工作原理的工具

背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型(LLM)工作原理的工具,旨在增加这些复杂系统的透明度。它提供了一个交互式界面,用户可以通过它观察、分析模型对特定输入(prompts)的反应…

加速科技Flash存储测试解决方案 全面保障数据存储可靠性

Flash存储芯片 现代电子设备的核心数据存储守护者 Flash存储芯片是一种关键的非易失性存储器,作为现代电子设备中不可或缺的核心组件,承载着数据的存取重任。这种小巧而强大的芯片,以其低功耗、可靠性、高速的读写能力和巨大的存储容量&…

OpenGL-ES 学习(6)---- 立方体绘制

目录 立方体绘制基本原理立方体的顶点坐标和绘制顺序立方体颜色和着色器实现效果和参考代码 立方体绘制基本原理 一个立方体是由8个顶点组成,共6个面,所以绘制立方体本质上就是绘制这6个面共12个三角形 顶点的坐标体系如下图所示,三维坐标…

【目标检测】Yolov8 完整教程 | 检测 | 计算机视觉

学习资源:https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 记录计算机视觉学习道路上的所思所得。 1、准备图片images 收集数据网站:OPEN IMAGES 2、准备标签labels 网站:CVAT 有点是:支持直接导出yolo格式的标…