java面试强基(13)

news2024/11/28 6:27:18

  前文链接(61条消息) java面试强基(12)_一个风轻云淡的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/m0_62436868/article/details/128047427?spm=1001.2014.3001.5501

何为反射?反射机制优缺点? 

​ 它赋予了我们在运行时分析类以及执行类中方法的能力。通过反射你可以获取任意一个类的所有属性和方法,你还可以调用这些方法和属性。

  • 优点 : 可以让咱们的代码更加灵活、为各种框架提供开箱即用的功能提供了便利
  • 缺点 :让我们在运行时有了分析操作类的能力,这同样也增加了安全问题。比如可以无视泛型参数的安全检查(泛型参数的安全检查发生在编译时)。另外,反射的性能也要稍差点,不过,对于框架来说实际是影响不大的。

反射的有哪些应用场景? 

​ 像 Spring/Spring Boot、MyBatis 等等框架中都大量使用了反射机制。

​ 这些框架中也大量使用了动态代理,而动态代理的实现也依赖反射。

​ 使用 Spring 的时候 ,一个@Component注解就声明了一个类为 Spring Bean 呢?为什么你通过一个 @Value注解就读取到配置文件中的值呢?究竟是怎么起作用的呢?这些都是因为你可以基于反射分析类,然后获取到类/属性/方法/方法的参数上的注解。你获取到注解之后,就可以做进一步的处理。

 

什么是注解?

Annotation (注解) 是 Java5 开始引入的新特性,可以看作是一种特殊的注释,主要用于修饰类、方法或者变量。

注解只有被解析之后才会生效,常见的解析方法有两种:

  • 编译期直接扫描 :编译器在编译 Java 代码的时候扫描对应的注解并处理,比如某个方法使用@Override 注解,编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。
  • 运行期通过反射处理 :像框架中自带的注解(比如 Spring 框架的 @Value 、@Component)都是通过反射来进行处理的。

什么是序列化?什么是反序列化?

如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。

简单来说:

  • 序列化: 将数据结构或对象转换成二进制字节流的过程。
  • 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。

对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class)。

seriallization 序列化 : 将对象转化为便于传输的格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串。
deseriallization 反序列化:将序列化的数据恢复为对象的过程。

比如:现在我们都会在淘宝上买桌子,桌子这种很不规则不东西,该怎么从一个城市运输到另一个城市,这时候一般都会把它拆掉成板子,再装到箱子里面,就可以快递寄出去了,这个过程就类似我们的序列化的过程(把数据转化为可以存储或者传输的形式)。当买家收到货后,就需要自己把这些板子组装成桌子的样子,这个过程就像反序列 的过程(转化成当初的数据对象)。

 

//创建student对象
        Student student = new Student(1,"1234","小明");

        //序列化
        byte[] bytes = toBytes(student);
        System.out.println(bytes.length);

        //反序列化
        Student student0 = (Student) toObj(bytes);
        System.out.println(student0);

 

 

 人生寂寞是一种力量。人经得起寂寞,就能获得自由;耐不住寂寞,就会受人牵制。

 

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

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

相关文章

Jenkins部署与基础配置(1)

5 Jenkins 部署与基础配置 IP地址角色172.18.8.19jenkins-master172.18.8.29jenkins-node1172.18.8.39jenkins-node2 [rootjenkins-master ~]# tail -n1 .bashrc PS1\[\e[1;32m\][\[\e[0m\]\[\e[1;32m\]\[\e[1;33m\]\u\[\e[34m\]\h\[\e[1;31m\] \w\[\e[1;32m\]]\[\e[0m\]# [r…

ISCTF新生赛(引用传递简单社工)

猫和老鼠 反序列化题目&#xff1a; <?php //flag is in flag.php highlight_file(__FILE__); error_reporting(0);class mouse { public $v;public function __toString(){echo "Good. You caught the mouse:";include($this->v);}}class cat {public $a;p…

05 Pod:如何理解这个Kubernetes里最核心的概念?

文章目录1 为什么要有pod?2. 为什么Pod 是 Kubernetes 的核心对象&#xff1f;3. 如何用YAML描述Pod?3.1 Pod的基本组成部分3.1.1 最重要的 spec.containers 字段使用3.1.1.1为什么要定义容器启动时要执行的命令&#xff1f;4. 如何使用kubectl 操作Pod?4.1 创建pod4.2 删除…

数据结构与算法之查找算法

数据结构与算法——查找算法 本文将不断更新查找有关算法&#xff0c;由于精力有限&#xff0c;因此本博文将分多次更新&#xff0c;感谢您的关注 文章目录数据结构与算法——查找算法1. 二分法查找&#xff08;折半查找&#xff09;1.1 算法叙述1.2 实例说明2. 插值查找&#…

【ML特征工程】第 8 章 :自动化特征化器:图像特征提取和深度学习

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

[2022-11-26]神经网络与深度学习第5章 - 循环神经网络(part 2)

contents循环神经网络(part 2) - 梯度爆炸实验写在开头解决方式概览梯度爆炸实验梯度打印函数思考&#xff1a;什么是范数、L2范数、为什么要打印梯度范数复现梯度爆炸现象使用梯度截断解决梯度爆炸问题思考&#xff1a;梯度截断解决梯度爆炸问题的原理&#xff1f;写在最后循环…

搭建MinIO容器

文章目录1 问题背景2 资源准备3 安装Docker服务4 关闭防火墙5 以Docker方式安装MinIO6 访问MinIO1 问题背景 玩一个前后端的项目&#xff0c;需要用到对象存储器&#xff0c;于是使用开源的MinIO。期间以Docker方式搭建遇到某些坑&#xff0c;此处仅以博客的方式记录下来 2 资源…

【通信原理课设--基于MATLAB/Simulink的2ASK数字带通传输系统建模与仿真】Simulink的使用介绍以及在本实验中的使用

目录 Simulink的简要介绍 Simulink的使用流程 进入Simulink 进入模型编辑窗口 ​ 建立一个新的文件 根据求需建立模型 对选择的模块进行参数设置 本次课程设计需要使用Simulink做ASK的仿真处理&#xff0c;那么下面就一起学习了解一下Simulink吧&#xff01; Simuli…

全球经济自由度1995-2021最新版绿色金融指数2001-2020

&#xff08;1&#xff09;全球经济自由度指数 1995-2021 1、数据来源&#xff1a;美国传统基金会 2、时间跨度&#xff1a;1995-2021 3、区域范围&#xff1a;全球 4、指标说明&#xff1a; 经济自由度指数&#xff0c;是由《华尔街日报》和美国传统基金会发布的年度报告…

爱站网关键词挖掘工具-长尾关键词挖掘站长工具

长尾词挖掘免费工具&#xff0c;为什么我们要使用长尾词挖掘免费工具&#xff0c;我们只要找准关键词就等于掌握了流量。 关键词可应用于任何平台&#xff1a;不管是网站、短视频、自媒体等&#xff01; 比如说用户A经常看体育领域的内容&#xff0c;平台就会给A打上体育领域标…

LeetCode刷题---19. 删除链表的倒数第 N 个结点(双指针-快慢指针)

文章目录一、编程题&#xff1a;142. 环形链表 II&#xff08;双指针-快慢指针&#xff09;1.题目描述2.示例1&#xff1a;3.示例2&#xff1a;4.示例3&#xff1a;5.提示&#xff1a;6.进阶&#xff1a;二、解题思路1.思路2.复杂度分析&#xff1a;3.算法图解三、代码实现总结…

[附源码]计算机毕业设计springboot班级事务管理论文2022

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

MQTT协议

1.MQTT基础知识学习 MQTT协议基础知识视频学习资源:太极创客 太极创客的MQTT基础篇博文目录链接:零基础入门学用物联网 – MQTT基础篇 – 目录 备注:建议先学习一下MQTT的基础知识后再学习下面章节部分的内容。 2.MQTT服务器的搭建 MQTT服务器的搭建步骤如下: 使用docker pull…

【vue + echarts】图表自适应缩放(跟随浏览器的窗口缩放,项目侧边栏折叠后的窗口缩放),图表重绘

效果图: 先清楚两个东西,浏览器窗口的缩放和项目侧边栏折叠后窗口的缩放,这两个是不一样的 第一种,浏览器窗口缩放后,当前窗口会放大了或者缩小了,这时会走浏览器缩放的代码部分, 第二种,而项目侧边栏折叠后窗口的缩放,虽然项目里面的窗口缩放了,但是,浏览器的窗口并没有发生…

tACS恢复老年人认知控制能力的EEG功能和DTI结构网络机制

认知控制能力是大多数日常任务中的关键能力&#xff0c;与年龄相关的认知控制能力下降威胁到个人的独立性。作者之前在老年人和年轻人中都发现&#xff0c;经颅交流电刺激&#xff08;tACS&#xff09;可以改善认知控制&#xff0c;在远离受刺激部位和频率之外的神经区域观察到…

使用python玩转二维码!速学速用!⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; Python3◉技能提升系列&#xff1a;https://www.showmeai.tech/tutorials/56 &#x1f4d8; 本文地址&#xff1a;https://showmeai.tech/article-detail/398 &#x1f4e2; 声明&#xff1a;版权所有&#xff0c;…

前端开发如何做新手引导

通常&#xff0c;在产品发布新版本或者有新功能上线时&#xff0c;都会开发一个新手引导功能来引导用户了解应用的功能。在前端开发中&#xff0c;如何快速地开发新手引导功能呢&#xff0c;下面介绍几个开箱即用的新手引导组件库。 1&#xff0c;Intro.js Intro.js是一个使用…

外汇天眼:外汇杠杆的“诱惑”到底有多大,为何做外汇的人都那么上瘾?

近些年随着外汇保证金在中国的持续发展&#xff0c;中国的外汇保证金交易就像当初的股票市场一样&#xff0c;从无到有&#xff0c;不断的发展壮大&#xff0c;再加上国内金融市场对外开放步伐加快&#xff0c;在中国国内参与外汇市场的投资者也是连年上升&#xff0c;那么这个…

【EI会议2023】12.20之后ddl

csdn 摘出来上文中的一些ddl ICET 2023(成都 5月12日-5月15日) http://www.icet.net/track9.html 截稿时间2022.12.20 通知录用:2023.1.20 SEGRE 2023(长沙 4月21日-4月23日) http://www.icsegre.org/ 截稿时间2023.2.26 通知录用:2023.4.3 ICIBA 2023(重庆 5月26日-…

全同态加密:GSW

参考文献&#xff1a; Micciancio D, Peikert C. Trapdoors for lattices: Simpler, tighter, faster, smaller[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2012: 700-718.Gentry C, S…