摘要: 程序次序规则。在一个线程内,书写在前面的代码先行发生于后面的。确切地说应该是,按照程序的控制流顺序,因为存在一些分支结构。 Volatile变量规则。对一个volatile修饰的变量,对他的写操作先行发生于读操作。 线程启动规则。Thread对象的start()方法先行发生于此线程的每一个动作。 线 阅读全文
posted @ 2020-12-20 19:38 不变的是改变 阅读(117) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2020.cnblogs.com/blog/905724/202012/905724-20201220161552935-914014003.jpg) 阅读全文
posted @ 2020-12-20 16:16 不变的是改变 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。 所 阅读全文
posted @ 2020-12-20 16:14 不变的是改变 阅读(78) 评论(0) 推荐(0) 编辑
摘要: springboot自动配置的原理 springboot启动类上面有一个注解叫做@SpringBootApplication,它集成了一个@enableAutoConfiguration注解 @enableAutoConfiguration注解又集成了一个@import注解,里面注入了一个AutoC 阅读全文
posted @ 2020-11-01 23:29 不变的是改变 阅读(82) 评论(0) 推荐(0) 编辑
摘要: redis的bitmap 概念 bitmap: 位图,通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身,value对应0或1,我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间 应用 Redis的bitmap让我们可以实时的进行统计,并且极其 阅读全文
posted @ 2020-11-01 22:28 不变的是改变 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 实现异步的方式 创建多线程的方式 继承Thread 实现runnable 实现callable结合futuretask 创建线程池 还有一种就是使用CompletableFuture实现异步编排 声明式异步 使用springboot里的@Async,动态代理方式异步 分布式异步 使用消息一致性进行异 阅读全文
posted @ 2020-11-01 22:04 不变的是改变 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 如何处理消息丢失 开启生产者确认模式 开启消费者确认模式 消息、队列以及交换机持久化 阅读全文
posted @ 2020-11-01 21:05 不变的是改变 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 如何处理消息堆积 开启能者多劳模式 开启多线程消费 阅读全文
posted @ 2020-11-01 21:02 不变的是改变 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 消息的重复发送 问题描述 如果我们的消息从死信队列里面出来之后,出现了错误之后导致无法手动确认,之后消息反复发送,如何处理? 解决方式 可以把这个消费出错的消息存入缓存中,记录失败的次数,提前设置失败次数上限,如果超过了话,那么可以发送短信提醒用户失败; 阅读全文
posted @ 2020-11-01 21:00 不变的是改变 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 内存泄漏和内存溢出的关系 下面是我的浅显理解: 内存溢出,指的是内存不够,这里的不够可以打个比方,总是在new 对象,而GC回收不过来,那么就出现oom,就好比一个池子,进水的速度远远大于排水的速度,那么迟早会溢出来; 内存泄漏,指的是申请的内存不释放,好像和上面一样,但是这里说的是不释放,打个比方 阅读全文
posted @ 2020-11-01 20:11 不变的是改变 阅读(95) 评论(0) 推荐(0) 编辑