八股文面试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

相关推荐
大数据编程之光29 分钟前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
吾与谁归in2 小时前
【C#设计模式(13)——代理模式(Proxy Pattern)】
设计模式·c#·代理模式
ifanatic2 小时前
[面试]-golang基础面试题总结
面试·职场和发展·golang
程序猿进阶3 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
长风清留扬5 小时前
一篇文章了解何为 “大数据治理“ 理论与实践
大数据·数据库·面试·数据治理
jiao_mrswang5 小时前
leetcode-18-四数之和
算法·leetcode·职场和发展
OkeyProxy10 小时前
什麼是ISP提供的公共IP地址?
代理模式·proxy模式·ip地址·isp·海外ip代理
Swift社区14 小时前
LeetCode - #139 单词拆分
算法·leetcode·职场和发展
Dong雨15 小时前
力扣hot100-->栈/单调栈
算法·leetcode·职场和发展
周三有雨16 小时前
【面试题系列Vue07】Vuex是什么?使用Vuex的好处有哪些?
前端·vue.js·面试·typescript