官网网站建设需求,开店做网站,网站开发教程图文,谷德设计网案例什么是代理#xff1f;为什么要用动态代理#xff1f;
代理模式大概意思是#xff1a;为其他对象提供一个代理项或者是占位符#xff0c;以控制对这个对象的访问
代理模式核心思想#xff1a;创建一个代理对象#xff0c;在客户端和目标对象之间的一个中介#xff0c;…什么是代理为什么要用动态代理
代理模式大概意思是为其他对象提供一个代理项或者是占位符以控制对这个对象的访问
代理模式核心思想创建一个代理对象在客户端和目标对象之间的一个中介主要作用就是保护目标对象以及增强目标对象
静态代理相当于是这个代理对象我们需要手动去创建而且一个代理对象只能服务于一种业务类型对象那么当我们有n个业务目标对象的时候就需要n个静态代理对象这样的话就不利于我们业务的扩展
举例有一个程序员张三他平时加班比较多并且加上公司的异性同事又比较少然后又不善于与其沟通那自己又缺少人脉和资源所以一直没有找对象这时张三的父亲张老三就比较着急了他就利用自己的人脉然后经常给张三安排相亲那张老三就是张三的代理的相亲对象那么问题来了一般情况下张老三是不会给李四去安排相亲的因为张老三是不会关心李四有没有对象这个事情李四有没有对象只有李老四才会关心那么这个时候呢就出现了一个新的职业叫媒婆媒婆就会关心张三李四王五赵六等这些有没有对象媒婆就成了所有相亲需求的代理对象那么这样的代理对象就可以服务于所有相关业务对象这就相当于动态代理对象
减少代理对象的个数从而去降低程序的复杂度易于复杂业务的动态扩展
jdk proxy的基本实现原理
拿到目标对象的引用并且通过反射去获取目标对象所有的接口要重新去生成一个新的代理类实现目标类所有的接口方法把增强的逻辑代码加入到新生成的代理类的源代码中动态去编译代理类的源代码并且生成字节码即class文件这个部分是内存中完成的去加载并执行新生成的代理对象
CGLib和JDK动态代理的对比
JDK动态代理是实现目标对象的接口而CGLib是继承目标对象JDK和CGLib都是在运行期生成字节码JDK通过反射来调用目标方法而CGLib是通过FastClass机制调用目标方法
目标对象即被代理对象
为什么不用UUID来做主键
无序不是趋势递增而是会导致树的分裂与合并树的问题虽然查询快但是修改比链表慢增加数据的时候会很慢 联想hashmap1.8以后他加了一个红黑树他在链表和红黑树之间转来转去如果数据小于6了就把它转为链表了内存 页放的数据越少同样的数据我需要的页数越多 层级可能越高 磁盘io次数越多(int - String)
SpringBoot和传统的Spring有什么区别
首先springboot采用了约定大于配置这样一个理念大大简化了spring应用的初期搭建以及后期的维护工作它提供大量的自动配置开发者不需要进行繁琐的XML配置就可以专注于核心业务的开发
其次springboot内置了Tomcat等应用服务器让项目的部署也变得更加方便同时springboot还提供了许多starters组件方便集成各种常用的框架和中间件比如Redis,JPA,MQ等相比之下传统的Spring配置更加灵活可以适应各种复杂项目的需求但是相应的配置更加复杂对于我个人而言我更加倾向于使用SpringBoot因为它能让我更加专注与业务代码的编写而不需要花费大量的时间在配置和环境搭建上以上就是我对这个问题的理解
项目举例描述 比如说我先拿到这个文件然后去遍历这个文件里面的词组然后我给他建立一个正排的索引和一个倒排的索引通过一个ID也就是集合的下标他们建立关系然后查询的话就是用倒排获得这种ID再通过正牌去拿到文章的内容然后再展示出来然后这边就会涉及到权重的问题和排序的问题 反射
反射是指在运行时检查和操作类、接口、字段、方法等程序结构的能力。通过反射可以在运行时获取类的信息创建类的实例调用类的方法访问和修改类的字段等。通过反射可以提高程序的灵活性和可扩展性可以实现更多的功能。但在使用反射时需要考虑性能问题以及安全等问题。
克隆 线程安全 如何查看端口80有没有被占用 netstat -anp | grep 80