- 博客(15)
- 收藏
- 关注
原创 Redis删除策略
Redis中的数据特征在Redis内部实现中,前面三个设置过期时间的命令最后都会转换成最后一个PEXPIREAT 命令来完成。补充:数据删除策略的目标:在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或内存泄露。时效性数据的存储结构: 删除策略比对疑问:当新数据进入Redis时,如果内存不够怎么解决? 注意:最大可使用内存 占用物理内存的比例,默认值为0,表示不限制。生产环境中根据需求设定,通常设置在50%以上。每次选取待删除数据的个数 选取数
2024-05-17 00:37:36
799
原创 Reader字符输入流和Writer字符输出流
(4)FileWriter(File file,boolean append):创建一个新的 FileWriter ,以File作为对象进行写入,给出一个带有布尔值的文件名,表示是否附加写入数据。(2)String readLine():从输入流中读取一行字符,行结束标志为回车('\r')/换行('\n')或连续的回车换行符(''r''\n')。(1)FileReader(String path) :创建一个新的 FileReader ,给一个String类型文件的名称。
2024-05-16 23:57:00
980
原创 InputStream输入流和OutputStream输出流
InputStream这个抽象类定义的最重要的方法就是int read(),这个方法会读取输入流的下一个字节,并返回字节表示的int值(0-255),如果已读到末尾,返回-1表示不能继续读取了。这个方法会写入到一个字节到输出流,需要注意的是,虽然传入的是int参数,单只会写入一个字节,即只写入int最低8位表示字节的部分。缓存输出流里面包含了一个8192字节的缓冲区,new这个构造函数默认分配的就是8192个字节的byte[ ]数组(即缓冲区)(多次调用会按顺序依次读取)返回-1表示读取完毕。
2024-05-16 23:56:19
3931
原创 Redis持久化
持久化,顾名思义,指的是将短暂的、易失的数据转化为长时间保存,且不易丢失的格式。在数据库的语境中,持久化常常指的是将内存中的数据保存到硬盘或其他长期存储介质中,从而确保即使在系统崩溃、断电或其他突发事件中,数据也不会丢失。
2024-04-17 01:25:22
1031
1
原创 JavaScript中GET和POST对比
HTTP 是基于 TCP/IP 的关于数据如何在万维网中如何通信的协议。HTTP 的工作方式是客户端与服务器之间的请求-应答协议。
2024-04-12 00:49:13
2062
原创 Spring AOP
AOP(Aspect Oriented Programming):面向切面编程,是与OOP(Object Oriented Programming)面向对象编程并列的编程思想。AOP可以拦截指定的方法并且对方法增强,而且无序侵入到业务代码中,使业务与非业务处理逻辑分离,比如Spring的事务,通过事务的注解配置,Spring会自动在业务方法中开启、提交事务,并且在业务处理时,执行相应的回滚策略。
2024-03-31 21:27:09
1020
2
原创 缓存雪崩、缓存击穿、缓存穿透
逻辑分析:假设线程1在查询缓存之后,本来应该去查询数据库,然后把这个数据重新加载到缓存的, 此时只要线程1走完这个逻辑,其他线程就都能从缓存中加载这些数据了,但是假设在线程1没有走完的 时候,后续的线程2,线程3,线程4同时过来访问当前这个方法, 那么这些线程都不能从缓存中查询到 数据,那么他们就会同一时刻来访问查询缓存,都没查到,接着同一时间去访问数据库,同时的去执行 数据库代码,对数据库访问压力过大。在上面的代码中,当查询的数据不存在时,我们将一个空对象缓存到Redis中,并设置了5分钟的过期时间。
2024-03-12 00:34:48
1393
1
原创 装饰器模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰器模式通过将对象包装在装饰器类中,以便动态地修改其行为。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。在不想增加很多子类的情况下扩展类时。
2024-02-29 00:50:45
417
原创 理解Spring容器、BeanFactory和ApplicationContext
Spring容器最基本的接口就是BeanFactory。BeanFactory负责配置、创建、管理Bean,它有一个子接口ApplicationContext,也被称为Spring上下文,容器同时还管理着Bean和Bean之间的依赖关系。BeanFactory结构图:接口介绍:是Spring bean容器的根接口,提供获取bean,是否包含bean,获取bean类型,bean 别名的方法。它最主要的方法就是getBean(String beanName)。
2024-01-17 01:15:26
901
1
原创 Spring中Bean的生命周期
在Spring中,构成应用应用程序主干并由Spring IOC容器管理的对象称为Bean,Bean是由Spring IOC容器实例化、组装和以其他方式管理的对象,否则,Bean 只是应用程序中众多对象之一。该接口只有一个方法setApplicationContext(ApplicationContext applicationContext),用来获取当前环境中的ApplicationContext。该接口只有一个方法setBeanName(String name),用来获取bean的id或name。
2024-01-07 23:23:58
940
2
原创 Comparable接口与Comparator接口的区别
compareTo 方法接收的参数 o 是要对比的对象,排序规则是用当前对象和要对比的对象进行比较,然后返回一个 int 类型的值。正序从小到大的排序规则是:使用当前的对象值减去要对比对象的值;而倒序从大到小的排序规则刚好相反:是用对比对象的值减去当前对象的值。2、Comparable是通过重写compare To方法来实现排序的,而Comparator是通过重写compare方法来实现排序的。3、Comparable必须自定义类内部实现排序方法,而Comparator是外部定义并实现排序的。
2023-10-31 17:54:56
486
1
原创 HashSet去重原理
HashSet添加元素的执行流程是:把对象加入HashSet时,HashSet会先计算对象的hashcode值来判断对象加入的位置,同时也会与其他加入的对象的hashcode值作比较,如果没有相符的hashcode,HashSet会假设对象没有重复出现,会将对象插入到相应的位置中。HashSet元素去重是利用HashMap的put方法实现的,在存储之间先根据key的hashcode和equals判断是否已存在,如果存在就不再重复插入,保证了元素的不重复,达到去重的效果。
2023-10-29 21:11:28
1055
1
原创 Set接口
hashCode是一个int类型的整型值,整型值的范围是有限的,要计算hash值的数据是无限的,必然会在有限范围内产生冲突。如果两个对象通过equals方法比较是不相等的,那么它们的hashCode的hash值不一定相等,两个对象必然不等。如果两个对象通过equals方法比较是相等的,那么它们的hashCode的hash值必然相等,两个对象必然相等。如果hashCode的hash值相等,两个对象不一定相等,要在判断equals是否相等来比较两个对象是否相等。
2023-08-14 10:33:18
49
原创 List接口
LinkedList没有实现RandomAccess接口,LinkedList是从链表的头和尾根据当前的位置进行访问。LinkedList适合数据频繁添加删除操作,写多读少的场景,LinkedList访问元素比较慢,它必须从头遍历。ArrayList是RandomAccess接口的实现类,支持任意位置的查找。ArrayList是非线程安全的,Vector是线程安全的。Vector类的方法是同步的,ArrayList不是同步的。ArrayList集合数据存储的结构是数组结构。LinkedList不存在扩容。
2023-08-14 10:33:03
47
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人