挑战Java面试题复习第5天,无人扶我青云志

挑战第 5 天

  • java反射
  • List Set Map 区别
  • Object 常用方法

java反射

  1. 定义:
  • 运行时动态获取类信息和调用方法的特性。
  1. 应用场景:
  • JDBC数据库连接。
  • 框架如Hibernate和Struts等。
  1. 实现方式:
  • 通过四种方法获取Class对象:
    1. Class.forName(“类的路径”)
    2. 类名.class
    3. 对象名.getClass()
    4. 基本类型的包装类通过Type属性获取Class对象。
  1. 核心类:
  • Class:获取类和接口信息。
  • Field:获取属性信息和动态访问权限。
  • Constructor:获取构造方法信息和访问权限。
  • Method:获取方法信息。
  1. 优缺点:
  • 优点:
    1. 运行时动态获取实例,提高灵活性。
    2. 可与动态编译结合。
  • 缺点:
    1. 性能较低,因为需要解析字节码。
    2. 破坏封装性,可以访问私有方法和属性。
  1. 性能优化方案:
  • 使用setAccessible(true)关闭安全检查。
  • 缓存Class对象以加快多次实例化速度。
  • 使用ReflectASM工具类通过字节码生成加速反射。

List Set Map 区别

  1. List:
  • 存储元素的顺序是有序的。
  • 可以包含重复的元素。
  • 允许元素引用相同的对象。
  1. Set:
  • 不允许重复元素。
  • 元素自动去重,不会有多个元素引用相同的对象。
  • 无序的,但某些实现如LinkedHashSet和TreeSet可以保持元素的插入顺序或自然排序顺序。
  1. Map:
  • 使用键值对存储数据。
  • 每个键最多只能映射到一个值。
  • 键不能重复,但值可以重复。
  • 键通常使用String类型,但也可以使用任何对象。
  • Map不保证元素的顺序,但某些实现如LinkedHashMap可以保持插入顺序。

Object 常用方法

  1. clone方法:
  • 保护方法,用于实现对象的浅复制。
  • 只有实现了Cloneable接口的类才能调用此方法,否则会抛出CloneNotSupportedException。
  • 实现深拷贝需要成员变量也为引用类型并实现Cloneable,同时重写clone方法。
  1. finalize方法:
  • 与垃圾收集器相关,用于判断对象是否可以被回收。
  • 当对象即将被垃圾回收器回收时,由垃圾回收器调用此方法。
  1. equals方法:
  • 用于比较对象的等价性。
  • 默认行为与==相同,即比较对象的内存地址,通常需要在子类中重写。
  1. hashCode方法:
  • 用于哈希查找,通常在重写equals方法时也需要重写此方法。
  • JDK 1.6和1.7默认返回随机数,而JDK 1.8使用Marsaglia’s xorshift scheme算法生成随机数。
  1. wait方法:
  • 与synchronized关键字配合使用,使当前线程等待对象的锁。
  • 可以无限期等待或设置超时时间。
  • 等待期间,线程进入睡眠状态,直到被通知、被中断或超时。
  1. notify方法:
  • 与synchronized关键字配合使用,唤醒在此对象上等待的单个线程。
  1. notifyAll方法:
  • 与synchronized关键字配合使用,唤醒在此对象上等待的所有线程。
  1. toString和getClass方法:
  • toString方法用于返回对象的字符串表示,通常需要在子类中重写。
  • getClass方法用于获取对象的运行时类信息,通常不需要讨论。

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

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

相关文章

Oracle视频基础1.3.5练习

Oracle视频基础1.3.4练习 1.3.5 检查数据库启动状态 ps -ef | grep oracle ipcs clear演示alter向前向后改database阶段 sqlplus /nolog conn / as sysdba startup mount alter database nomount # 报错 alter database open启动restricted mode,创建一个connect&…

Unity3D包管理bug某些版本Fbx Exporter插件无法搜索到的问题

这个问题是在使用unity的时候发现的 有些版本里没有Fbx Exporter插件也是没法搜到 经过测试,在package manager中开启Enable Preview Packages也没有用 这个插件在2020已经是正式版了,不需要再开启 后来发现可能是版本bug 需要手动开启 在工程的Pac…

深度学习-学习率调整策略

在深度学习中,学习率调整策略(Learning Rate Scheduling)用于在训练过程中动态调整学习率,以实现更快的收敛和更好的模型性能。选择合适的学习率策略可以避免模型陷入局部最优、震荡不稳定等问题。下面介绍一些常见的学习率调整策…

【MogDB】MogDB5.2.0重磅发布第五篇-支持部分ORACLE的HINT

一、背景 ORACLE的SQL优化器非常强大,但是仍然会在某些情况下,ORACLE自动生成的执行计划并不是很好,此时可以通过在SQL中增加HINT来人工控制执行计划应该怎么走。在ORACLE迁移到国产库的过程中,由于部分国产库并不支持ORACLE的HI…

U盘引导丢失问题的处理办法

项目背景:在使用自制的u盘系统的时候经常遇到引导丢失的问题,那么咱们怎么解决这个问题呢,首先第一步通过手动引导u盘 进入系统,同时再进行引导区的修复这样u盘系统就可以正常工作了。 1 进入grub 的提示符下面,首先…

Caffeine 手动策略缓存 put() 方法源码解析

BoundedLocalManualCache put() 方法源码解析 先看一下BoundedLocalManualCache的类图 com.github.benmanes.caffeine.cache.BoundedLocalCache中定义的BoundedLocalManualCache静态内部类。 static class BoundedLocalManualCache<K, V> implements LocalManualCache&…

树莓派开发相关知识四 传感器-测距C语言版本

1、封装调用函数 #include <stdio.h> #include <time.h> #include "wiringPi.h"void initmode(int trig,int echo) {wiringPiSetupGpio();pinMode(trig,OUTPUT);digitalWrite(trig,LOW);pinMode(echo,INPUT); }double get_distance(int trig,int echo) …

《Qwen2-VL》论文精读【上】:发表于2024年10月 Qwen2-VL 迅速崛起 | 性能与GPT-4o和Claude3.5相当

1、论文地址Qwen2-VL: Enhancing Vision-Language Model’s Perception of the World at Any Resolution 2、Qwen2-VL的Github仓库地址 该论文发表于2024年4月&#xff0c;是Qwen2-VL的续作&#xff0c;截止2024年11月&#xff0c;引用数24 文章目录 1 论文摘要2 引言3 实验3.…

StandardThreadExecutor源码解读与使用(tomcat的线程池实现类)

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java源码解读-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 目录 1.前言 2.线程池基础知识回顾 2.1.线程池的组成 2.2.工作流程 2…

Spring学习笔记_21——循环依赖

循环依赖 1. 介绍 在Spring中的循环依赖就是指一个或者多个Bean之间存在着互相依赖的关系&#xff0c;并且形成了循环调用。 例如&#xff1a;在Spring中&#xff0c;Bean-A依赖Bean-B&#xff0c;Bean-B又依赖Bean-A&#xff0c;Bean-A和Bean-B之间就形成了相互依赖的关系。…

前端埋点与监控最佳实践:从基础到全流程实现.

前端埋点与监控最佳实践&#xff1a;从基础到全流程实现 大纲 我们会从以下三个方向来讲解埋点与监控的知识&#xff1a; 什么是埋点&#xff1f;什么是监控&#xff1f; JS 中实现监控的核心方案 写一个“相对”完整的监控实例 一、什么是埋点&#xff1f;什么是监控&am…

asp.net老项目运维,出现的问题4

此次问题出现在sqlserver的select in(单号1,单号2........) 语句&#xff0c;项目中使用这个语句批量查询单号&#xff0c;最多的情况也就几十个&#xff0c;返回结果速度上用户还能接受。 但是最近有了新业务&#xff0c;select数据量大大提升&#xff0c;有的情况in()中的单…

【缓存与加速技术实践】NoSQL之Redis部署安装与基础命令

文章目录 关系型数据库与非关系型数据库关系型数据库SQL定义SQL语句主流产品 非关系型数据库NoSQL定义主流产品 区别数据存储方式不同扩展方式不同对事务性的支持不同应用场景结构对比 补充 RedisRedis 的特点与优势Redis 的使用场景哪些数据适合放入缓存中&#xff1f;Redis 为…

MATLAB-数学建模-无约束规划求解方法(非线性规划)

MATLAB-数学建模-无约束规划求解方法&#xff08;非线性规划&#xff09; fminbnd函数 其功能是求取固定区间内单变量函数的最小值&#xff0c;也就是一元函数的最小值问题。其数学模型为 minf(x),x1<x<x1 式中&#xff0c;x,x1,x2 均为标量&#xff1a;f(x)为目标函…

rom定制系列------红米k30_4G版澎湃os安卓13批量线刷固件

&#x1f49d;&#x1f49d;&#x1f49d;红米k30 4G版&#xff0c;机型代码;phoenix.此机型官方固件最后一版为稳定版13.0.6安卓12的固件。客户的软件需运行在至少安卓13的系统至少。测试原生适配有bug。最终测试在第三方澎湃os安卓13的固件可以完美运行。 &#x1f49d;&am…

Nginx 报错400 Request Header Or Cookie Too Large

错误的原因&#xff1a; 1、可能是你的网络DNS配置错误。 2、由request header过大所引起&#xff0c;request过大&#xff0c;通常是由于cookie中写入了较大的值所引起的。 3、访问太频繁&#xff0c;浏览器的缓存量太大&#xff0c;产生错误。 解决办法&#xff1a; 1、清…

钉钉平台开发小程序

一、下载小程序开发者工具 官网地址&#xff1a;小程序开发工具 - 钉钉开放平台 客户端类型 下载链接 MacOS x64 https://ur.alipay.com/volans-demo_MiniProgramStudio-x64.dmg MacOS arm64 https://ur.alipay.com/volans-demo_MiniProgramStudio-arm64.dmg Windows ht…

android——渐变色

1、xml的方式实现渐变色 效果图&#xff1a; xml的代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools…

已知三角形三边长求面积用仓颉语言作答

仓颉语言 https://cangjie-lang.cn/ linux和win和mac均有sdk&#xff0c;在本机deepinlinuxv23下载到本地解压缩到目录下设置环境变量 source envsetup.sh 比java方便太多了&#xff0c;java每次都是要自己搞很久&#xff0c;当然&#xff0c;打开看一下envsertup.sh,和我们…

微信小程序生成二维码

目前是在开发小程序端 --> 微信小程序。然后接到需求&#xff1a;根据 form 表单填写内容生成二维码&#xff08;第一版&#xff1a;表单目前需要客户进行自己输入&#xff0c;然后点击生成按钮实时生成二维码&#xff0c;不需要向后端请求&#xff0c;不存如数据库&#xf…