- 博客(18)
- 收藏
- 关注
原创 追溯源码观察HashMap底层原理
从事Java的小伙伴,在面试的时候几乎都会被问到Map,Map都被盘包浆了。Map是键值集合,使用的场景有很多比如缓存、数据索引、数据去重等场景,在算法中也经常出现,因为在Map中获取元素的时间复杂度为常数!
2024-07-17 21:15:08 379
原创 Java设计模式:工厂模式与单例模式
设计模式是极为重要的,本篇文章演示的工厂模式和单例模式是日常开发中经常使用的,并且Spring框架中也涉及到了这两种模式,希望大家能好好理解,欢迎大家指正!!
2024-06-20 15:37:18 405
原创 浅谈fail-fast和fail-safe
前几天刷视频,看到一位程序员好像叫”建国“,他写了一段代码,不出意外,这位叫”建国“的同学又要挨批了。这段代码开始没有什么违和感,但是在多线程情况下就会抛出也就是fail-fast。
2024-05-09 20:48:48 408 2
原创 SpringBoot+Security实现登录接口
在平时开发中其实是很复杂的,不要小看一个简单的登录接口,一个登录接口不仅仅是对账号密码的校验,还需要拦截非法参数、设置重试次数以及保存登录信息等操作。本篇文章对标企业级实现登录接口。源代码在。
2024-05-07 14:20:48 419 2
原创 一篇搞懂Synchronized与Lock的区别
以Lock的实现类ReenTranLock来看,当创建ReenTranLock时传入的参数为true是,会创建一个公平锁,查看Sync发现继承了AbstractQueuedSynchronized,这就说明Lock底层使用AQS+CAS来实现的,传入的参数为空或者false则创建非公平锁。首先声明一个ReenTranLock锁和调用newCondition创建条件,然后创建一个线程t1并且尝试获取锁调用条件进入等待,线程t2同理,线程t3,唤醒t1,t2,最后观察控制台。而Lock提供了许多额外的功能。
2024-04-14 20:19:43 784 1
原创 一篇搞懂Spring AOP+案例(修改PointCut参数)
这里我选择消费者的模块。在这里我选择对MqListener中的所有方法进行加强,同时定义切入点。@Component@Slf4j@Autowired//声明队列 mq的容器工厂。
2024-04-12 20:57:59 710
原创 一篇搞懂Redis五种常见的数据结构
ZRANGE key min max:按照score排序后,获取指定排名范围内的元素 ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素 ZDIFF、ZINTER、ZUNION:求差集、交集、并集。String结构是将对象序列化JSON字符串后存储,修改对象的某个属性时很不方便,Hash结构可以将对象中的每个属性独立存储,可以针对单个属性进行CRUD。HSETNX:添加一个hash类型的key的field的值,前提是这个field不存在。
2024-04-11 20:10:59 792 1
原创 线程池解决RabbitMQ消息堆积
使用Spring提供的ThreadPoolTaskExecutor/*定义线程池,提供多个线程消费消息*///threadPoolTaskExecutor.setThreadNamePrefix("开启多个线程消费消息----");
2024-04-10 21:32:33 756 1
原创 Redis与RabbitMQ配合使用多线程(多消费者)处理消息
通过本次演示的案例,希望大家可以掌握并且多加练习,在日常的开发中缓存数据库和异步队列是必备的手段,同时也是大家找工作时的一个亮点。本文如有不妥之处希望大家指正!!!
2024-04-09 14:20:59 2649
原创 浅谈Redis数据过期删除策略与内存淘汰策略
大家都知道Redis是内存数据库,将所有的数据都放在内存中,而内存经常会出现饱和的情况,为了节约内存空间,Redis会将过期数据清除。本章讲解Redis过期数据删除策略。
2024-04-04 14:02:29 669 1
原创 浅谈SpringBoot自动装配
自动装配的重点就是@EnableAutoconfiguration注解。该主机通过@Import导入了对应的配置选择器。简单来说就是读取了META-INF/spring.factories文件中所配置的类的全类名。而在加载这些类的时候会根据所指定的条件决定是否导入Spring容器中。例如@ConditionalClass,就是判断时候有对应的class文件,然后决定是否加载该Bean放入到Spring容器中。以上内容是个人的一些理解,欢迎大家交流!
2024-04-01 19:52:37 1464
原创 Spring事务失效场景及原因
事务其实是一个并发控制单位,是用户定义的一个操作序列,这些操作要么全部完成,要不全部不完成,是一个不可分割的工作单位,具备ACID属性。Spring事务的本质是通过AOP面向切面功能,对方法进行拦截,在执行之前开启事务,在执行完方法后根据情况提交或者回滚事务。本篇文章记录了作者对在日常开发中遇到的事务失效的场景进行了总结和解决方案,欢迎大家交流,进行指正!!!!
2024-03-31 18:47:37 397 1
原创 浅谈MySQL优化的常见手段
最近在项目的测试阶段中,发现有几个接口所调用的SQL语句执行很慢,在压测的时候还经常出现响应超时的状况。为此写下本篇文章,为大家提供一些常见的SQL优化手段
2024-03-31 16:39:32 366 1
原创 Docker搭建SpringBoot项目(干货)
本篇文章简单的介绍了如何在Docker部署SpringBoot项目,其重要内容就是Dockerfile镜像文件的编写,本案例只是简单的演示了基本的编写,详细内容可以访问Docker官网。下一节教大家如何快速的部署分布式应用以及DockerCompose文件的编写。
2024-03-29 21:20:48 269 1
原创 浅谈Redis缓存穿透、缓存击穿、缓存雪崩
一般场景就是缓存中某一个Key过期的瞬间,对这个Key发生了大量的请求,缓存中没有数据,大量请求去读底层DB,可能会把底层数据库压垮。对请求中的某一个线程上互斥锁,在该线程拿到锁的时候添加缓存。大致意思就是,一个人说,你们先稍息,听我讲话看我操作,然后其余人再操作。我们都知道,缓存固然好,省流量,速度快,但缓存也有“不行”的时候,Redis作为一个缓存数据库也存在这三大缓存问题。简单来说就是查询缓存和底层DB中都不存在数据,而用户却不断的发起请求,在流量高峰的时候,就特别容易使DB崩溃。
2024-03-29 20:20:10 156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人