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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual NLP:图像信息自动提取的未来

本文旨在以简单的方式解释 Visual NLP 的关键概念,让你了解 Visual NLP 的含义、它的用例是什么、如何使用它以及为什么它是构建自动提取管道的未来 。 NSDT在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在…

Mybatis-Plus3.0默认主键策略导致自动生成19位长度主键id的坑

码字不易,如果对您有用,求各位看官点赞关注~ 原创/朱季谦 目前的Mybatis-Plus版本是3.0,至于最新版本是否已经没有这个问题,后续再考虑研究。 某天检查一位离职同事写的代码,发现其对应表虽然设置了AUTO_INCREMENT自…

k8s部署的java服务查看连接nacos缓存的配置文件

一、问题描述 k8s部署的java服务,使用nacos中的配置文件,需要在缓存中查看该服务具体是使用到了哪些配置文件 二、解决 参考文档: https://nacos.io/zh-cn/docs/system-configurations.html 文档描述如下: 进入java服务容器进入用户目录下的nacos&a…

csapp archlab part 1

part A [rootedb3963640a6 misc]#./yas sum.ys [rootedb3963640a6 misc]# ./yis sum.yo./yas 和 ./yis 是汇编语言编译器和模拟器的命令行工具。 ./yas 是一个汇编语言编译器,它将汇编语言代码转换为可执行的二进制文件。./yas sum.ys 将sum.ys文件编译成了sum.yo可…

C++电脑组装项目(涉及知识点:多态,虚析构,使用父类指针和new关键字实例化子类时无法调用子类的析构函数,类的头文件和类的cpp文件的使用,父类中调用子类的析构函数)

一.电脑组装项目各文件的关系和cpp文件目录 二.使用父类指针和new关键字实例化子类时无法调用子类的析构函数 即使用如下代码,不会调用IntelCpu的析构函数。导致无法释放子类申请的空间。 AbstractCpu* cpu new IntelCpu; delete cpu;完整代码如下: …

华清远见嵌入式学习——网络编程——作业3

目录 作业要求&#xff1a;基于UDP的TFTP文件传输 代码 下载功能效果图​编辑 上传功能效果图 思维导图 模拟面试题和答案&#xff08;定期更新&#xff09; 作业要求&#xff1a;基于UDP的TFTP文件传输 完成文件的上传和下载功能 代码 #include<myhead.h>//实现…

一站式解决Mac音视频转换需求——Xilisoft Video Converter Ultimate for Mac

在数字化时代&#xff0c;音视频的应用越来越广泛&#xff0c;不同的设备和平台对音视频格式的要求也不尽相同。因此&#xff0c;如何找到一款功能强大、易于操作的音视频转换软件成为了Mac用户的迫切需求。而Xilisoft Video Converter Ultimate for Mac&#xff08;曦力音视频…

亚马逊智能机器人Astro新升级!可为中小企业提供巡逻服务

原创 | 文 BFT机器人 Astro是Amzon近年来推出的一种新型的家用机器人&#xff0c;由智能助手Alexa驱动&#xff0c;主要用于家庭监控&#xff0c;如检查炉子、水龙头是否开着&#xff0c;以及其他任务。它将人工智能、计算机视觉、传感器技术以及语音和边缘计算方面的新进展汇…

linux -系统通用命令查询

有时候内网环境下&#xff0c;系统有些命令没有安装因此掌握一些通用的linux 命令也可以帮助我们解决一些问题查看 1.查看系统内核版本 uname -r2.查看系统版本 cat /etc/os-release3. 查看cpu 配置 lscpu4.查看内存信息 free [参数] 中各个数值的解释如下表 数值解释t…

宿主Linux——KVM安装Windows7系统

KVM虚拟技术 KVM(Kernel-based Virtual Machine) 是基于Linux内核的开源虚拟化技术&#xff0c;在一台物理机上可同时运行多个虚拟系统。KVM使用硬件虚拟化扩展&#xff0c;例如Intel的VT和AMD的AMD-V&#xff0c;在性能方面更加高效&#xff0c;可提供更好的计算能力和响应速…

启发式搜索算法-人工智能

第1关:评估函数和启发信息 第2关:A*搜索算法 class Array2D:"""说明:1.构造方法需要两个参数,即二维数组的 宽和高2.成员变量w和h是二维数组的宽和高3.使用:‘对象[x][y]’可以直接取到相应的值4.数组的默认值都是0"""def __init__(s…

Python语言创建爬虫代理ip池详细步骤和代码示例

作为长期游弋于代码世界中的程序猿来说&#xff0c;拥有自己的服务器以及代理池能够让自己网络爬虫更得心应手。那么新手如何创建自己的私有IP池呢&#xff1f;它的步骤又有哪些&#xff1f;带着这些问题我们意义探讨。 以我多年的爬虫经验创建一个IP池的大体上可以分为以下几个…

可上手 JVM 调优实战指南

文章目录 为什么要学 JVM一、JVM 整体布局二、Class 文件规范三、类加载模块四、执行引擎五、GC 垃圾回收1 、JVM内存布局2 、 JVM 有哪些主要的垃圾回收器&#xff1f;3 、分代垃圾回收工作机制 六、对 JVM 进行调优的基础思路七、 GC 情况分析实例八、最后总结 全程可上手JVM…

又下一城!文心中国行入厦,大模型助推区域产业智能化提速

11月22日&#xff0c;“文心中国行”落地厦门。活动现场&#xff0c;厦门火炬高技术产业开发区管委会、厦门市思明区政府授予百度飞桨“人工智能公共技术服务平台”并举行授牌仪式。来自当地政产学研各界的领导、专家、企业嘉宾分享了AI大模型的最新技术趋势、产教融合开源共创…

React16中打印事件对象取不到值的现象及其原因分析

React16中打印事件对象取不到值的现象及其原因分析 一、背景 在最近的开发过程中&#xff0c;遇到了一个看起来匪夷所思的问题❓&#xff1a; <Inputplaceholder"请输入"onChange{(e) > {console.log(e:, e)}}onKeyDown{handleKeyDown} />此时按理来说我…

畅谈Linux在小型微型企业中的应用

在这篇文章里我们讨论和畅谈一下linux系统在小微型企业中的应用&#xff0c;为什么会写这篇文章呢&#xff1f;因为在平时的工作中&#xff0c;认识的一些做小微型企业的朋友&#xff0c;他们经常找我咨询或是去解决一些平时工作中的IT相关的问题&#xff0c;那么小微型企业中的…

人物血条的制作_unity基础开发教程

人物血条的制作 场景创建导入素材血条制作血量控制代码部分 场景创建 随便创建一个地板、一个胶囊体&#xff0c;搭建一个简易的场景&#xff0c;我这里就继续使用前面文章创建的场景 导入素材 在unity编辑器中选择Window&#xff0c;点击Asset Store 点击Search online 在搜…

Course1-Week1:机器学习简介

Course1-Week1&#xff1a;机器学习简介 文章目录 Course1-Week1&#xff1a;机器学习简介1. 课程简介1.1 课程大纲1.2 Optional Lab的使用 (Jupyter Notebooks)1.3 欢迎参加《机器学习》课程 2. 机器学习简介2.1 机器学习定义2.2 有监督学习2.3 无监督学习 3. 线性回归模型3.1…

垂直领域生成式AI模型的矿业应用

快速发展的人工智能 (AI) 领域正在出现一种新范式&#xff1a;更小的、垂直的生成式 AI 模型。 这种方法不同于旨在解决许多问题的传统横向模型。 相反&#xff0c;它开发专门的人工智能模型来解决特定行业或垂直领域的问题。 垂直导向的生成式AI模型迎合特定行业&#xff0c;提…