自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 SpringBoot启动Debug笔记二 ———— 准备环境

先来代码:public ConfigurableApplicationContext run(String... args) { // 初始并启动StopWatch,用来监控运行时间等,不重要,暂时略过。 StopWatch stopWatch = new StopWatch(); stopWatch.start(); // 该接口为配置应用上下文(ApplicationContext)提供方法 ConfigurableApplicationContext context = nu

2021-07-21 09:50:25 361

原创 SpringBoot启动Debug笔记一 ———— 启动监听器

前言从主启动类开始,进入下面这段代码:所以这篇文章的主要部分就是这个红色框的部分。一、EventPublishingRunListener.starting() @Override public void starting() { this.initialMulticaster.multicastEvent(new ApplicationStartingEvent(this.application, this.args)); }此方法通过SimpleApplicationEventMu

2021-07-12 11:39:37 291

原创 RabbitMQ如何保证消息不丢失

RabbitMQ如何保证消息不丢失(一)(一)开篇(二)信道的 Confirm 确认模式(三)定义生产者(四)保存失败消息的数据结构(五)MQ消息服务(六)定义消息重新发送任务(七)使用Spring和线程池共同组织消息发送线程(八)总结(一)开篇保证消息不丢失,可以从三个方面来做处理:(1)生产者方面;(2)MQ本身;(3)消费者方面。今天先从生产者角度开始。本工程实例的背景是springboot整合rabbitMQ。(二)信道的 Confirm 确认模式默认情况下,生产者和 Rabbit

2021-05-12 18:28:13 307

原创 自定义线程池之ThreadPoolExecutor的使用

了解原因在阿里规约里面,有这样一条规则:这里提到了使用ThreadPoolExecutor来创建线程池,其实这就是我们常常听说的“自定义线程池”。该类位于java的java.util.concurrent包下。至于使用自定义的好处,上面的图片已经可以说明,接下来我们从概念到实战,分析一下这个类。概念ThreadPoolExecutor类间接实现了ExecutorService接口。通常经使用Executors类的工厂方法设置后,它能够从一些可能池化管理的线程里面选择一个来执行每个已经提交的任务。

2021-04-02 16:00:42 496

原创 实现生产者-消费者模型的JDK中提供的7 个阻塞队列(我只是翻译了JDK源码的类头,没有做总结)

如何使用阻塞队列来实现生产者-消费者模型概述JDK提供的7 个阻塞队列ArrayBlockingQueue(数组阻塞队列)LinkedBlockingQueue(链表阻塞对列)如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入概述阻塞队列(BlockingQueue)是一

2021-03-08 17:04:50 849

原创 代码整洁之道——对象和数据结构

代码整洁之道——对象和数据结构对象和数据结构之间具有二分原理对象和数据结构之间具有二分原理,先看下面两个例子:上述两种定义的本质是截然对立的。过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数。面向对象代码便于在不改变既有函数前提下添加新类。反过来说:过程式代码难以添加新数据结构,因为必须修改所有函数。面向对象代码难以添加新函数,因为必须修改所有类。举个例子:假如,在6-5中,Square类的side域修改为String类型,将不得不对Geometry类中area

2020-08-18 10:13:46 176

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除