小小少年_
码龄6年
  • 49,560
    被访问
  • 116
    原创
  • 21,657
    排名
  • 25
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2016-05-21
博客简介:

小小少年的博客

查看详细资料
  • 4
    领奖
    总分 497 当月 65
个人成就
  • 获得48次点赞
  • 内容获得46次评论
  • 获得139次收藏
创作历程
  • 14篇
    2022年
  • 62篇
    2021年
  • 40篇
    2020年
成就勋章
TA的专栏
  • rocketmq
    1篇
  • 常见问题
    11篇
  • spring源码
    50篇
  • JUC
    9篇
  • Redis
    6篇
  • springmvc
    6篇
  • 微服务
    2篇
  • JDK
    12篇
  • dubbo
    9篇
  • MySQL
    3篇
  • 设计模式
    3篇
  • nacos
    1篇
  • Java基础知识点
    2篇
  • mybatis源码
    2篇
  • springboot
    1篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

rocketmq延迟消息实现原理

这篇笔记主要记录延迟队列的实现原理
原创
发布博客 1 小时前 ·
4 阅读 ·
0 点赞 ·
0 评论

慢sql优化

慢sql优化大表深分页问题解决:问题描述A表中,数据量大约在150W左右,并且还在持续增长表中的核心字段:id:店铺id:用户id:模板id:我现在的场景是,在A店铺闭店的时候,需要把这个表中A店铺下所有的用户数据都删除,因为考虑到数据量较大,所以采用异步方式来处理异步线程在处理的时候,也是分批处理的,不可能一次全部删除完毕,所以,提供了两个接口:1.切割接口:一次切割1000条数据,然后返回2.执行接口:根据切割接口返回的数据,执行删除操作这两个接口有可能是并行执行的,所以需要考
原创
发布博客 2022.05.24 ·
24 阅读 ·
0 点赞 ·
0 评论

spring注入list集合

spring可以帮助我们自动的完成bean属性的注入,其中有一个比较特殊的,就是list集合spring中,在使用@Autowired注解注入list集合的时候,并不会根据注入属性值的类型去容器中查找,而是根据list集合的元素类型,从spring容器中找到所有的实现类,放在list集合中,然后注入到bean中...
原创
发布博客 2022.05.15 ·
34 阅读 ·
0 点赞 ·
0 评论

git开发分支合并master,revert之后,再次merge,不生效问题

遇到一个问题:开发分支是:feature/test在把开发分支合并到master分支之后,如果因为某些原因,直接revert了代码然后会发现,再次把feature/test分支合并到master的时候,并不会把开发分支的代码合到master中处理办法:1.基于master分支,拉一个新的分支出来:feature/test_new2.找到revert的版本号,需要注意的是:一次revert之后,会有两条revert相关的记录,分别是revert 和revert之后的merge记录,此时需要用的是第
原创
发布博客 2022.05.10 ·
230 阅读 ·
0 点赞 ·
0 评论

jdk1.8-hashmap 树化过程

在jdk8中的hashmap,引入了红黑树的概念,那自然就会涉及到树化的过程,这篇笔记单独记录下树化的一些细节
原创
发布博客 2022.04.20 ·
89 阅读 ·
0 点赞 ·
0 评论

Redis分布式锁加锁失败,休眠机制

redissonLock分布式锁在加锁的时候,如果已经有线程加锁成功,此时的线程会进入等待,比如:当前key还有2S过期,那就休眠2S,这里休眠怎么实现的呢?通过Semaphore来实现?如何实现?初始化Semaphore的permits为0,Semaphore是用来进行资源竞争的一个工具类,初始化时,指定的permits表示同时允许有几个线程持有资源,这里为0,就表示永远不允许有线程持有资源,那这样的话,在tryAcquire()时,只需要指定超时时间为key的过期时间即可,这样的话,就会在过期时间到
原创
发布博客 2022.04.16 ·
577 阅读 ·
0 点赞 ·
0 评论

springmvchandlerAdapter和handlerMapping类在什么时候被初始化

springmvc
原创
发布博客 2022.04.15 ·
73 阅读 ·
0 点赞 ·
0 评论

ThreadPoolExecutor源码笔记

线程池源码
原创
发布博客 2022.04.13 ·
218 阅读 ·
0 点赞 ·
0 评论

sentinel滑动时间窗口算法统计通过请求数量细节

问题描述昨天写的笔记中,最后我留了一个疑问,疑问是这样的:假如:在0-500ms之间有4次请求,500-1000ms之间有4个请求;在1000ms - 1500ms之间请求次数为0,1600ms的时候,有三个请求进来,此时在进行判断的时候,会把第二个窗口进行reset:也就变成了这样:我的疑问是:此时在统计qps的时候,如果还是直接把两个窗口的请求次数累加到一起,那就统计的不是前1S之内的请求数了;、今天翻了下源码,发现针对这个场景的源码了:源码com.alibaba.csp.sentin
原创
发布博客 2022.04.02 ·
90 阅读 ·
0 点赞 ·
0 评论

sentinel滑动时间窗口算法学习

滑动时间窗口先不说sentinel的算法实现,先说什么是滑动时间窗口,我们在进行限流的时候,比如通过QPS进行限流,那假如我们以秒为单位,举个例子:我设置了限流规则,qps是10如果不使用滑动窗口算法,在统计qps的时候,就有可能会有问题,比如:在0 - 500ms中的请求数是0,但是在500ms - 1000 ms的请求数是10;在1000ms - 1500ms 之间又进来了5个请求,此时只判断了1000ms - 2000 ms之间的请求数因为没有把1S进行拆分多个窗口,所以在1000ms之后
原创
发布博客 2022.04.02 ·
622 阅读 ·
0 点赞 ·
0 评论

futureTask

futureTask可以用来异步获取执行结果,也就是说,业务代码的线程和主线程,可以同时执行,在需要获取执行结果的时候,调用其get()方法,就会阻塞主线程,直到获取到执行结果之后,再继续执行主线程的代码,具体的用法,不再详细叙述使用public class FutureTaskTest { public static void main(String[] args) throws Exception{ FutureTask<Integer> futureTask
原创
发布博客 2022.02.24 ·
40 阅读 ·
0 点赞 ·
0 评论

dubbo源码-隐式传参

在业务系统中,如果要使用dubbo的隐式传参功能,可以使用RpcContext对象使用在服务消费者这一端这样设置即可RpcContext.getContext().setAttachment("age","22");然后在服务提供者这一端String age = RpcContext.getContext().getAttachment("age");System.out.println("隐式传参获取到的age:" + age);就可以获取到设置的参数源码分析其实要实现隐式传输的传递
原创
发布博客 2022.02.19 ·
175 阅读 ·
0 点赞 ·
0 评论

dubbo的线程模型、派发策略、线程池策略

https://dubbo.apache.org/zh/docs/advanced/thread-model/dubbo提供了自己的线程池以及派发策略,其实官方文档上讲的是比较清楚的,只需要结合着源码看下,就能明白具体的原理
原创
发布博客 2022.02.19 ·
1388 阅读 ·
0 点赞 ·
0 评论

spring aop和事务同时开启带来的一些问题

最近自己在写一个aop切面,主要是用来记录日志和打印一些信息的,在测试过程中,发现,业务方法在加了事务之后,如果有其他异常抛出,事务并没有回滚,于是,就Google了一把,发现有大佬遇到过这个问题,大部分博客给到的答案是:因为切面的优先级低于事务的优先级,导致事务advisor生成的代理对象被,切面生成的代理对象给覆盖了,需要在切面上加上@Order(1)注解,这样可以保证,切面的优先级较高我自己忽然间想到之前,遇到过类似的问题,并且也记录到了线上问题模块,按照实际操作之后,确实:在切面上加了@Order
原创
发布博客 2022.01.05 ·
156 阅读 ·
0 点赞 ·
0 评论

jdk动态代理为什么只能为接口生成代理类?

在动态代理
原创
发布博客 2021.12.25 ·
1178 阅读 ·
0 点赞 ·
0 评论

mysql redolog日志

在mysql的架构中,有几个比较重要的日志,分别是binlog、redolog和undoLog,这篇博客主要记录redo log是什么redo log我们称之为重做日志,mysql通过redo log日志来保证了持久性;mysql事务要求要保证持久性,其实如果不考虑性能因素,要保证持久性,最简单的做法,就是:在事务提交的时候,将更新、或者删除的数据,同步去更新磁盘上的数据页即可但是这样做,有一个很大的问题,就是性能问题,因为mysql在磁盘上存储的时候,是按照数据页来存储的,提交的一个sql有可能要
原创
发布博客 2021.12.15 ·
922 阅读 ·
0 点赞 ·
0 评论

Redis分布式锁零散知识

一、为了确保分布式锁的可用性,需要确保锁在任意时刻,能同时满足以下四个条件1.互斥性:在任意时刻,只有一个客户端能持有锁2.不会发送死锁,即时有一个客户端在持有锁期间崩溃而没有主动解锁,也需要保证其他客户端能加锁3.具有容错性,只要大部分的Redis节点正常运行,客户端就可以加锁解锁4.加锁和解锁必须是同一个客户端二、Redis分布式锁和Java锁的区别1. 如果是分布式部署的话,那么Java锁是锁当前机器上的请求,无法对其他机器的请求进行加锁,因为Java锁用的是jvm的机制,只在本机生效2
原创
发布博客 2021.12.04 ·
607 阅读 ·
0 点赞 ·
0 评论

Redis分布式锁之:RedLock

redLock也是Redis提供的一个分布式锁,和redissonLock有些区别是什么RedLock可以指定等待时间,也就是说,假如我指定了等待时间waitTime是2S,比如:1.A线程来加锁,正常去执行业务逻辑2.B线程也来加锁,此时会加锁失败,那B线程最多等待2S,如果超过了2S还没有获取到分布式锁,那B线程加锁就返回false,表示加锁失败redLock的思想是:redLock的使用,需要有奇数台独立部署的Redis节点在加锁的时候,会分别去N台节点上加锁,如果半数以上的节点加锁成
原创
发布博客 2021.12.04 ·
1296 阅读 ·
1 点赞 ·
0 评论

Redis分布式锁之:RedissonLock

Redis提供的分布式锁有多个,这篇笔记主要记录redissonLock的相关内容
原创
发布博客 2021.12.04 ·
1547 阅读 ·
0 点赞 ·
0 评论

模板设计模式

模板设计模式是比较简单,也容易理解的,简单来讲,就是一个事情的完成,要分为多个步骤来进行,但是不同的实现类,有不同的想法,可以自己去实现,但是步骤的顺序不能变举个例子:比如说,做饭,要经过三个步骤:1.买菜2.炒菜3.端上餐桌那这个1、2、3顺序是不可以变的,但是不同的人,买菜的方式不同,有些人是网上下单购买,有些人是自己线下购买炒菜:有些人是电磁炉炒菜,有些人是煤气灶炒菜所以,模板设计模式,其实就是在父类中,规定了一个功能的先后步骤,但是具体每个步骤怎么实现,有子类去实现,如果某一个步
原创
发布博客 2021.11.26 ·
112 阅读 ·
0 点赞 ·
0 评论
加载更多