八股文面试day6

什么是代理?为什么要用动态代理?

代理模式大概意思是:为其他对象提供一个代理项或者是占位符,以控制对这个对象的访问

代理模式核心思想:创建一个代理对象,在客户端和目标对象之间的一个中介,主要作用就是保护目标对象以及增强目标对象

静态代理:相当于是这个代理对象我们需要手动去创建,而且一个代理对象只能服务于一种业务类型对象,那么当我们有n个业务目标对象的时候,就需要n个静态代理对象,这样的话就不利于我们业务的扩展

举例:有一个程序员张三,他平时加班比较多,并且加上公司的异性同事又比较少,然后又不善于与其沟通,那自己又缺少人脉和资源,所以一直没有找对象,这时张三的父亲张老三就比较着急了,他就利用自己的人脉然后经常给张三安排相亲,那张老三就是张三的代理的相亲对象,那么问题来了,一般情况下,张老三是不会给李四去安排相亲的,因为张老三是不会关心李四有没有对象这个事情,李四有没有对象只有李老四才会关心,那么这个时候呢,就出现了一个新的职业叫媒婆,媒婆就会关心张三李四王五赵六等这些有没有对象,**媒婆就成了所有相亲需求的代理对象,**那么这样的代理对象就可以服务于所有相关业务对象,这就相当于动态代理对象

减少代理对象的个数,从而去降低程序的复杂度,易于复杂业务的动态扩展

jdk proxy的基本实现原理

  1. 拿到目标对象的引用,并且通过反射去获取目标对象所有的接口
  2. 要重新去生成一个新的代理类,实现目标类所有的接口方法
  3. 把增强的逻辑代码加入到新生成的代理类的源代码中
  4. 动态去编译代理类的源代码并且生成字节码即class文件,这个部分是内存中完成的
  5. 去加载并执行新生成的代理对象

CGLib和JDK动态代理的对比

  • JDK动态代理是实现目标对象的接口,而CGLib是继承目标对象
  • JDK和CGLib都是在运行期生成字节码
  • JDK通过反射来调用目标方法,而CGLib是通过FastClass机制调用目标方法

目标对象即被代理对象

为什么不用UUID来做主键?

  1. 无序不是趋势递增,而是会导致树的分裂与合并,树的问题虽然查询快,但是修改比链表慢,增加数据的时候会很慢 联想hashmap1.8以后他加了一个红黑树,他在链表和红黑树之间转来转去,如果数据小于6了,就把它转为链表了
  2. 内存 页放的数据越少,同样的数据我需要的页数越多 层级可能越高 磁盘io次数越多(int -> String)

SpringBoot和传统的Spring有什么区别

首先,springboot采用了约定大于配置 这样一个理念,大大简化了spring应用的初期搭建以及后期的维护工作,它提供大量的自动配置,开发者不需要进行繁琐的XML配置就可以专注于核心业务的开发

其次,springboot内置了Tomcat等应用服务器,让项目的部署也变得更加方便,同时springboot还提供了许多starters组件,方便集成各种常用的框架和中间件,比如Redis,JPA,MQ等,相比之下,传统的Spring配置更加灵活,可以适应各种复杂项目的需求,但是相应的配置更加复杂,对于我个人而言,我更加倾向于使用SpringBoot,因为它能让我更加专注与业务代码的编写,而不需要花费大量的时间在配置和环境搭建上,以上就是我对这个问题的理解

项目举例描述

比如说我先拿到这个文件,然后去遍历这个文件里面的词组,然后我给他建立一个正排的索引和一个倒排的索引,通过一个ID,也就是集合的下标,他们建立关系,然后查询的话就是用倒排获得这种ID,再通过正牌去拿到文章的内容,然后再展示出来,然后这边就会涉及到权重的问题和排序的问题

反射

反射是指在运行时检查和操作类、接口、字段、方法等程序结构的能力。通过反射,可以在运行时获取类的信息,创建类的实例,调用类的方法,访问和修改类的字段等。通过反射可以提高程序的灵活性和可扩展性,可以实现更多的功能。但在使用反射时需要考虑性能问题以及安全等问题。

克隆

线程安全

如何查看端口80有没有被占用

netstat -anp | grep 80

相关推荐
腾阳27 分钟前
99%的人忽视了这一点:活着本身就是人生的意义,别让抑郁和内耗成为你的枷锁!
经验分享·程序人生·职场和发展·跳槽·学习方法·媒体
不吃西红柿的8527 分钟前
[职场] 内容运营求职简历范文 #笔记#职场发展
笔记·职场和发展·内容运营
liyang_83028 分钟前
邦芒秘诀:职场高手都具备的三个特征
职场和发展
普通网友29 分钟前
十大秘闻:揭秘霍兰德职业兴趣理论的未知面!
职场和发展·求职招聘·职场发展·单一职责原则
爱我所爱flash30 分钟前
职场上,如果不想被淘汰,谨记这3条生存法则,早知早获益
职场和发展
程序员雨果31 分钟前
软件测试工程师:面试题与经验分享
软件测试·面试·职场和发展
普通网友31 分钟前
[职场] 运营支撑是什么意思 #其他#学习方法#职场发展
职场和发展·学习方法
Yvonne爱编码31 分钟前
2026年计算机专业求职指南:从简历优化到技术面试通关【科普类】
面试·职场和发展
测试界的飘柔32 分钟前
月薪 20k 的性能测试面试题大曝光,让你如何迅速拿下 offer!
自动化测试·软件测试·功能测试·面试·职场和发展·职场经验·找工作
努力也学不会java33 分钟前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试