- 博客(25)
- 收藏
- 关注
原创 List优雅分组
最近小永哥发现,在开发过程中,经常会遇到需要对list进行分组,就是假如有一个RecordTest对象集合,RecordTest对象都有一个type的属性,需要将这个集合按type属性进行分组,转换为一个以type为key,RecordTest集合为value的Map对象,这个功能其实本身并不难,相信以老铁们的实力那还不是轻轻松松嘛,那下面小永哥就先献丑了。
2025-05-20 23:00:46
694
原创 浅谈装饰模式
hello大家好,本次打算简单聊一下装饰者模式,其实写有关设计模式的内容还是蛮有挑战性的,首先呢就是小永哥实力有限担心说不明白,其次设计模式是为了解决某些问题场景,在当前技术生态圈如此完善的情况下,能遇到使用设计模式的时候其实还是蛮少见的,而且我一直认为解决方案本身没有好坏之分,只有经过取舍适合当前的才是最好的。任何事物都是双刃剑,包括设计模式,在没有适合场景的情况下强行使用反而会造成过度设计,这样就不好了。
2025-05-10 23:35:51
1034
原创 String之拼接小技巧
我们在日常工作中,可能有遇到使用JdbcTemplate开发的时候,需要自己写SQL,特别是写查询SQL的时候,经常碰到in的写法。比如说前端发来一个关于id的集合,我们需要通过in的方式将这些id所对应的数据查询出来做一些逻辑操作或者是返回,简单思考一下,看到这个事情第一反应是怎么做?
2025-05-06 23:39:13
226
原创 那些年踩过的坑之Arrays.asList
熟悉开发的兄弟都知道,在写新增和删除功能的时候,大多数时候会写成批量的,原因也很简单,批量既支持单个也支持多个对象的操作,事情也是发生在这个批量方法的调用上,下面我简单说一下这个事情。我分享的这些绝不是为了装,像这种看似简单,但是平时不常见的错误,解决不也得花时间吗,如果是生产环境报错,那排查、定位、解决花费的时间更多,有这功夫,我们摸会鱼,喝点咖啡它不香嘛。
2025-04-26 00:12:34
897
原创 redis之缓存雪崩
本次我们讨论缓存雪崩的事情,缓存雪崩也是非常严重的事故,同样会导致数据库被压垮导致应用系统不可用问题,缓存雪崩和缓存击穿类似,缓存击穿是某个热点数据失效导致大量获取该热点数据的请求到达数据库,将数据库压垮,而缓存雪崩是大量的缓存数据失效,将数据库压垮,有点像增强版的缓存击穿。本期我们简单介绍了一下缓存雪崩的一些知识,大多都是理论方面的知识,涉及到的一些技能点,我们在后续分享到的时候再详细介绍。
2025-04-13 14:40:19
499
原创 redis之缓存击穿
本期我们聊一下缓存击穿,其实缓存击穿和缓存穿透很相似,区别就是,缓存穿透是一些黑客故意请求压根不存在的数据从而达到拖垮系统的目的,是恶意的,有针对性的。缓存击穿的情况是,数据确实存在,只不过因为某些原因导致缓存中数据消失了,导致请求到达了数据库,从而导致数据库的崩,下面我们看看这个问题是怎么个情况。缓存穿透我们讨论了两种解决方式,这两种方式并没有谁比谁更优秀,没有哪种解决方案是完美的,只有适合应用场景的解决方案,在日常应用时需要我们灵活选择。
2025-04-12 22:56:13
977
1
原创 redis 缓存穿透
我们平时做数据缓存的时候,一般套路是在项目启动时,将热点数据加载到缓存中,请求接口时,如果缓存中存在,优先从缓存中获取返回,如果缓存中不存在,才会从数据库中查询并设置到缓存中,通过这种方式来提升系统的相应性能、减少数据库访问压力。缓存穿透的意思就是,一些恶意请求故意去获取缓存和数据库都不存在的数据,导致每次都会跳过缓存直击数据库,当这种恶意请求数量巨大时,首先会导致其他正常请求无法得到响应,第二是有可导致数据库崩溃导致系统不可用,危害巨大。
2025-03-27 00:01:14
1020
原创 redis与数据库双写一致性解决方案
在我们平时开发过程中,把某些数据放到redis中缓存起来用于快速读取已不是什么稀奇的事情。通常的流程是这样的:1、项目启动时,将数据从数据库中加载出来保存到redis中2、项目启动成功后,系统在运行过程中,如果需要这些数据,优先从redis中获取,如果redis中不存在,那么再去查询一次数据库,把查询到的数据先保存到redis中,然后再将数据返回给页面。
2025-03-23 21:38:35
1142
4
原创 redisson 使用与分析
上一期小永哥简单介绍了基于redis实现自定义分布式锁,通过三步优化将漏洞完善。本期要分享的是一个基于redis的分布式锁的成熟框架-redisson,该框架简单易用,功能强大,对于上一期我们担心的问题,redisson框架内部也都已实现,下面简单介绍一下redisson的使用4.1、我们在锁创建、加锁、解锁处打上断点,通过断点来窥探一下redisson的实现原理。
2025-03-20 00:06:41
674
原创 redis 自定义分布式锁
基于redis的分布式锁之前也分享过,上次分享稍微简单了,本次结合小永哥实际工作时遇到的业务场景聊一下redis分布式锁。之前分享中也提过,传统的线程锁只能对当前服务起作用,对于分布式并发有心无力,对于分布式应用,依赖于分布式锁处理并发风险。分布式锁一般有两种实现方案,第一种是zookeeper,第二种是redis,zookeeper在以后的分享中再做介绍,本次主要聊一下基于redis的分布式锁。
2025-03-14 00:19:34
715
原创 redis 日常使用场景整理(一)
redis作为缓存中间件可以说是鼎鼎有名,这次主要是分享一些我本人在平时日常工作中的使用场景,虽然没有很高深的东西,但是做一个记录,希望老铁们平时遇到问题的时候,可以多一点思路。
2025-03-04 23:01:06
416
原创 vue入门之环境搭建
目前java行业不景气,找工作的人多,岗位少,所以岗位对人员的要求越来越高,过去前后端分离,后端程序员只需要管好自己后端那一摊子事情就好了,但是现在远远不够,越来越多的岗位要求全栈,全栈俨然是种趋势,要不向全栈方向进发,要不可能退出这个行业,所以笔者也打算学一学前端向全栈靠近,顺便做点笔记。
2024-05-05 20:10:44
478
2
原创 java lambda简单用法
lambda表达式不算是什么新奇的东西,jdk8诞生也好多年了,但是lambda表达式据我观察,在我多年的开发生涯中,周围同事用的其实不多,具体原因可能还是说不了解,习惯了过去的编程方式等等,其实自己不了解的东西不要抗拒,个人理解都是一个熟悉的过程,熟练以后也没什么大不了。
2024-03-20 14:53:08
347
2
原创 线程池的简单使用
其实所有池化技术,初衷都是节约资源,提升性能,线程池也不例外,线程的创建和销毁非常耗资源,不适合在实际的工作中使用。线程池可以对线程进行重复利用,很好的节约了资源。int corePoolSize 核心线程数;线程池常驻线程数量int maximumPoolSize 最大线程数;当阻塞队列已满,线程池所能扩容的最大数量long keepAliveTime 空闲时间;扩容的线程所能存活的时间。TimeUnit unit 空闲时间单位。
2024-03-19 22:28:47
245
原创 redis最近最少淘汰策略(LRU)模拟实现
以前面试的时候,面试官问了一些redis相关的知识,比如说常用几种数据类型、穿透、击穿、雪崩、持久化方式、过期策略、淘汰策略等等,回答的都还凑合,画风一转,面试官突然问我,redis淘汰策略中,最近最少使用的这种策略底层的实现方式可以说一下吗?当时大脑一片空白,心中万马奔腾,不会......如果容器已满,有新元素到来时,删除最近最少使用的元素,给新元素腾出空间。
2024-03-19 20:52:03
404
原创 spring aop简单使用
spring aop可以说是鼎鼎大名,但是说实话在实际工作中,用的其实并不多,别人不知道哈,反正我本人使用的次数说实话确实不多,纠其原因,我个人总结有以下两点1、中途加入到项目组中,一些公共的业务逻辑已经由大神实现了2、公共逻辑可以使用aop抽取,也可以不抽取,很多时候要不就是手懒不愿意抽取,要不就是压根想不起来使用aop(打完架了才想起来自己会武术)网上经常流传着面试造火箭,工作拧螺丝,这句话我不敢苟同,工作中真的就不能造火箭吗?
2024-03-19 17:52:12
286
原创 图数据库Neo4j笔记一:入门
1、随着社交、金融、零售等行业的发展,现实社会织起了一个庞大而复杂的关系网,采用图数据来处理它,会更高效、更方便,图数据库更擅长支持海量、复杂、多变的关系运算,并且运算性能非常高,在后续的笔记会记录图数据库的其他特性。
2024-01-17 11:35:55
2864
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人