- 博客(10)
- 收藏
- 关注
原创 vue中computed和watch的区别
computed是依赖vm中data的属性变化而变化的,也就是说,当data中的属性发生改变的时候,当前函数才会执行,data中的属性没有改变的时候,当前函数不会执行。watch中的函数名称必须要和data中的属性名一致,因为watch是依赖data中的属性,当data中的属性发生改变的时候,watch中的函数就会执行。data或props中的数据变化,并且支持异步,当数据发生改变的时候,watch中的函数就会执行,有两个参数,前者是newVal,后者是oldVal。watch中的函数是不需要调用的。
2024-03-26 22:03:12 301
原创 Redis的删除策略
在过期 key 比较多的情况下,删除过期 key 这一行为可能会占用相当一部分 CPU 时间,在内存不紧张但是 CPU 时间非常紧张的情况下,将 CPU 时间用在删除和当前任务无关的过期 key 上,无疑会对服务器的响应时间和吞吐量造成影响。只在取出 key 时,才对 key 进行过期检查,即只会在非做不可的情况下进行,并且删除的目标仅限于当前处理的 key,不会在删除其他无关的过期 key 上花费任何 CPU 时间。优点:保证过期 key 会尽可能快的被删除,并释放过期 key 所占用的内存。
2024-03-15 07:59:40 263 1
原创 Redis的删除策略
惰性删除是Redis底层使用到的一种删除策略,当数据到达过期时间,不处理,等下次访问该数据时:①如果未过期,返回数据;缺点:CPU压力大,无论此时CPU过载有多高,都会占用CPU,会影响Redis服务器的响应时间和吞吐量。创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作。Redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度。优点:节省内存,到时就删除,快速释放掉不必要的内存空间。优点:节约CPU性能,发现必须删除时才删除。
2024-03-14 21:56:50 273 1
原创 动态代理和静态代理的区别:
目标对象不固定,通过反射机制在应用程序执行时动态创建目标对象,代理对象会增强目标对象的行为。①JDK动态代理是Java官方提供的工具,不需要引入其它依赖;②JDK基于接口实现动态代理,要求被代理类必须实现接口;静态代理对于代理的角色是固定的,代理类和被代理类有共同的父类 ,在。动态代理的代理类是在运行时生成,需要通过反射的机制调用代理类的方法。② 静态代理的代理类在编译时就已经存在,直接调用代理类的方法;而动态代理是在运行时动态生成代理类的代码。① 静态代理是在编译时就已经确定代理类的代码;
2024-01-14 21:37:28 404 1
原创 SpringAop的原理:
什么是Spring AOP:Spring AOP(面向切面编程) 是 Spring 框架的一个核心模块;利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
2024-01-14 12:30:38 750 1
原创 Spring中Bean的生命周期:
③Aware接口处理完之后,到BeanPostProcessor后置处理器,后置处理器有两个方法before,after(before先执行,after后执行),before执行完,则执行init相关的方法 比如定义的init-method=""方法,最后执行after方法,获取到的对象就可以使用了(getBean)。实例化阶段:在Spring中是通过反射来实现的,这里只是把对象创建出来,而具体的对象属性还没有注入,是个半成品的bean(例如:service层依赖dao层,这时dao还是空的。
2024-01-07 11:55:04 857 1
原创 Comparable接口与Comparator接口的使用及区别
接口,它们都可以用于对对象进行比较和排序,但在使用时需要根据具体的需求和场景选择合适的接口和实现方式。如果需要多个不同的比较方式,或者对已有的类进行排序而无法修改其源代码,就可以使用。接口还可以使用匿名类或 Lambda 表达式来定义比较逻辑,使代码更加简洁。都是 Java 中用于比较对象的接口,但有不同的实现方式和使用场景。方法对集合进行排序。这些方法在内部会自动调用对象的。接口的自定义类,用于按照学生的成绩进行比较和排序。结果为:按照学生的成绩升序排序。接口,那么可以直接用。方法来进行比较和排序。
2023-10-30 19:40:26 57 1
原创 《HashSet去重复原理解析》
当我们向 HashSet 中添加元素时,HashSet首先计算元素的哈希码(hash code),然后使用哈希函数将哈希码映射到底层数组的索引位置。在添加元素的过程中,HashSet 会检查元素的哈希码是否与已存在的元素的哈希码相同。注意:要确保HashSet 正确的进行去重,存储在 HashSet 中的元素需要实现 HashCode()方法和 equals() 方法。通过良好设计的哈希函数和合理的哈希表大小,HashSet可以在大多数情况下实现常熟时间的增加,删除和查找操作,从而提供高效的去重功能。
2023-10-29 20:49:40 89
原创 String、StringBulider和StringBuffer的区别
String底层:使用char数组存储字符串 S。2.数据较多时:单线程操作字符串缓冲区使用StringBuilder。1.如果数据较少的情况下:多线程和单线程都可以使用String对象。是字符串常量,字符串常量一旦被声明不可以改变。但是都没有用final。可变,那么 它的线程就是安全的。关键字修饰,所以线程是安全的,没有此关键字修饰,线程不安全,类中也是使用字符数组保存字符串。是不可变的,在多线程的情况下,可能会被不同的线程共享,如果把。效率更快,因为它不需要加锁。字符数组保存字符串,
2023-07-15 23:10:54 116 1
原创 为什么大部分小数在计算机中是不精确的
在计算机中采用的是w二进制进行存储的,十进制会导致计算机精度运算不准确,因此在将小数存入计算机中时,要将十进制转为二进制。例如:十进制数0.4转换为二进制的值为0.0110011001100110011... 它的小数部分会无限循环。十进制0.1至0.9转二进制都是如此(无限循环),除过0.5它的小数部分是1。为什么会不精确:因为有些十进制小数部分转二进制小数部分,会无限循环,所以就会导致不精确。
2023-04-09 15:41:42 161 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人