自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 问答 (2)
  • 收藏
  • 关注

原创 重试机制的实现(4m,10m,10m,1h,2h,6h,15h)

项目场景:由于我我们现在所作的项目有有很多的外放接口供代理商调用,但是有些接口的响应并不是实时返回的,此时我们就需要以回调接口的方式,将信息响应给代理商。在这期间可能会出网络不稳定等其他情况,导致回调接口调用失败。所以需要特定的回调重试机制。这个机制参考了支付宝的通知模式。思考过程:回调本身很简单,只需代理商按要求实现我们的接口便可,但是重试机制比较麻烦,他的重试时间间隔不固定,而且到后面时间的间隔过长,使用定时任务达到的效果也并不理想,最后,通过使用rabbitmq,死信队列的特性,完美的实现了

2022-01-26 15:31:30 3131

原创 idea git 只回退某个版本的代码,不影响在这版本之前之后的代码

这种情况真的很少出现,可偏偏就让我给遇到了。某个需求出现了先上问题,但是这个需求已经上线有一段时间了,如何只回滚这个需求的代码,而在这之前和之后的版本不受影响。首先,找到你要回滚的版本在右边找到所要回滚的代码右键点击‘填写comment,点击ok,有冲突解决冲突,即可。...

2022-01-20 15:05:06 1107

原创 html转图片

html转图片前言:当你点开这篇文章的时候,有一个坏消息和一个好消息,我要告诉你。坏消息就是,如果你是打算用java处理将html转图片,遗憾的告诉你,没有,现存的html转图片的jar工具类,都是十几二十年前的都行了,而且全都不维护了。当然,肯定有其他的解决方式,那就是我要说的好消息。直接看下文(如果你现在要转的页面特别复杂的话,那当我没说)。事出是因为遇到了一个需求,在进行微信认证的时候,微信会返回一个二维码,我们将会把这个二维码以短信的方式发送给客户进行认证,但是微信返回的这个二维码极其简单就类似

2022-01-18 19:00:27 292

原创 Spring源码(4)单例Bean的创建及初始化过程

前言在前面的三篇文章中,我们了解IOC的初始化流程Spring源码(1)IOC的初始化流程(构造器篇,基于注解)Spring源码(2)IOC的初始化流程(register篇)Spring源码(3)IOC的初始化流程(refresh篇)这一篇,我们开始refresh方法中的finishBeanFactoryInitialization(beanFactory)方法。直接上代码:/** * Finish the initialization of this context's bean fac

2021-08-25 17:50:25 276

原创 关于spring 三级缓存的想法

最近看到一道面试题:spring为什么用三级缓存来解决循环依赖,用二级可以么?查了一下网上的回答,普遍是根据两个点回答,在没有aop的情况下,二级缓存就可以解决,有aop的话就需要三级缓存。甚至什么只用一级缓存会造成死循环之类的。真的就是这样子么,如果你真的认真看过源码并仔细思考的话,你就会发现,其实,无论有没有aop只需要一级缓存就可以将可以解决所有问题了,我们先来看看三个缓存在spring中的作用/** Cache of singleton objects: bean name to bean i

2021-08-24 18:03:37 112

原创 Spring源码(3)IOC 的初始化流程(refresh篇)

前言在上一篇文章中,我们了解了register的基本流程Spring源码(2)IOC 的初始化流程(register篇),总结为一点,(*基于注解,基于XML的我们会在另一篇文章讲解)就是将class解析成BeanDefinition,并把它放到缓存中(BeanDefinitionMap)去。这一篇,我们开始refresh方法的学习。同样的,我们先回顾一下程序入口public AnnotationConfigApplicationContext(Class<?>... component

2021-08-18 15:04:22 153

原创 Spring源码(2)IOC 的初始化流程(register篇)

前言在上一篇文章中,我们了解了IOC(基于注解)的构造器的初始化过程Spring源码(1)IOC 的初始化流程(构造器篇,基于注解)这一篇我们开始register(componentClasses)方法的讲解我们先回顾一下程序入口public AnnotationConfigApplicationContext(Class<?>... componentClasses) { //调用无参构造器 //在本类创建 AnnotatedBeanDefinitionReader和ClassPa

2021-08-16 19:03:10 184

原创 Spring源码(1)IOC 的初始化流程(构造器篇,基于注解)

前言最近花了一个多月的时间,把spring ioc 的源码大概的看了一遍,由于经常看到后面就忘记前面,所以决定以文章的方式分享出来,也可以供自己复习和回顾。Spring源码版本为:5.2.8.RELEASE(基于注解)AnnotationConfigApplicationContext的初始化过程我们在创建spring 容器的时候,一般是以下面的形式进行创建:ApplicationContext ioc = new AnnotationConfigApplicationContext(Sprin

2021-08-16 16:11:24 226

原创 Redis中文显示为Unicode编码

只要在启动客户端的时候加上–raw就可以了例如:redis-cli --raw

2021-06-04 14:49:30 291

原创 CPU和内存的模型及工作流程

比如我们需要做一个取数的操作就是将一个数从内存中取出来进行计算第一步:寄存器指向这条操作指令的地址,并把地址传给MAR(地址寄存器)说明一下,指令大概这种格式(00000101 00001101 )高八位保存的是操作指令,第八位保存的是数据第二步:MAR通过该地址取出指令第三步:将指令保存到MDR(数据寄存器)第四步:MDR将指令保存到控制器的IR寄存器上第五步:IR将指令发送到CU,CU分析高八位得出是取数的指令第六步:CU控制IR,将IR的取数地址发送到MAR.第七步:MAR通过该地址.

2021-06-04 10:50:12 215

原创 为什么说CAP不能同时满足

CAP中的P为”分区容错“(Partition tolerance)的意思,一般是分布式系统都会存在”分区容错“,因为服务与服务之间都可能会出现通信问题CAP中的A是”可用性“(Availability)的意思,可用性就是保证所用的请求都会马上处理并返回。CAP中的C是”一致性“(Consistency)的意思,一致性就是保证当我更新完一条数据的时候,其他人马上看的到。为什么说只能有AP 或者CP,CAP不能同时满足,因为满足了一致性就无法满足可用性,比如,由redis实现的分布式锁,当线程A获取了该

2021-05-28 15:05:28 456

原创 大白话讲布隆过滤器

1、什么是布隆过滤器存值,然后检验值是否存在。数据结构为二进制位数组2、如何存储比如我们要存储“ABCD”这个值,首先会先计算出“ABCD”这个值需要使用多少个hash函数(储存多少个位置)然后把hash函数计算出来的位置都改为1。3、如何检验(保存的值越多,准确率越低),和存储一样,先计算出需要多少和hash函数,通过hash函数计算出来的位置判断是否都为1,是的话就判断它存在,不是的话就判断它不存在所有就可能出现一些问题(比如“CDEF” 计算出来的位置正好也都是1,但是它并没有存储过

2021-05-27 11:30:28 106

原创 RabbitMq学习

1、概念amqp:协议Provider:生产者Consumer:消费者Broker:接收和分发消息的应用 RabbitMQ Servervirtual:虚拟机把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概 念。当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等Exchange:交换器消息交换机,它指定消息按什么规则,路由到哪个队列常用的交换器:Di

2021-05-27 10:50:31 85

原创 为什么32位的操作系统最多只能处理4GB的内存

首先我们要理解什么是32位和64位操作系统CPU一次处理数据的能力位32位还是64位。32位换算成10进制等于4,294,967,296。计算机里面的寻址空间大小一般是1byte。所以32位系统可以寻找4,294,967,296个Byte(4GB)的空间这也就是为什么32位系统最多只有4GB的内存,即使在32位系统里加上8GB的内存,实际可以使用的也只有4GB...

2021-05-08 16:29:46 1627

原创 SPI 之(JDBC)

SPI 之(JDBC)DriverManager通过DriverManager获取连接DriverManager的初始化SPI什么是SPI如何实现DriverManager通过DriverManager获取连接Connection conn = DriverManager.getConnection("url", "user", "password");DriverManager的初始化在调用DriverManager.getConnection的时候,首先会对DriverManager执行st

2021-04-15 18:01:29 307

原创 docker分层

每当我们启动一个镜像,就会在镜像的顶部生成一个容器层,也就是我们说的容器,数据的变动只会在容器层里,不会影响到镜像。新增数据时:直接在容器层新增修改数据:直接拷贝一份到容器层,进行修改删除数据时:在容器层中进行删除标记读取文件时:从上往下读取...

2021-03-17 17:11:08 79

原创 将Excel导入并封装成对象

将Excel导入并封装成对象之前写过一篇**使用poi导入excel并封装成JavaBean**的文章,发现了很多不足的地方,今天正好有空,就把它重写了一遍。1、所需要导入的依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.5.9</version></de

2020-11-06 11:18:32 839 2

转载 java中的default关键字 以及类优先于接口原则

https://blog.csdn.net/qq_35835624/article/details/80196932

2020-08-31 15:07:38 167 1

原创 windows 10 查看局域网内所有用户的ip地址

arp -a

2020-08-27 14:38:48 2022

原创 java AutoCloseable

AutoCloseableAutoCloseable为java lang包下的一个接口,所有使用try-catch-resources的方式都需要实现AutoCloseable接口,AutoCloseable接口里之只有一个抽象方法void close() throws Exception;我们在try的括号里去声明实现了AutoCloseable的这个对象,当我们执行完try块里的逻辑后,就会自动的去调用close方法,多个声明对象时,close在try括号里先声明的后执行。接下来再去执行catc

2020-08-24 17:08:04 242

原创 快速学习生产者和消费者模型

快速学习生产者和消费者模型一、学习生产者和消费这模型之前,你要了解三个概念,生产者,消费者和缓冲区。1、生产者:产生数据2、消费者:使用数据3、缓冲区,存储数据二、生产者生产数据会保存在缓冲区,消费者会在缓冲区里取数据进行消费。注意:当缓冲区填满时,生产者不可生产数据,当缓冲区为空时,消费者不可取数据。数据不可重复生产也不可重复获取,这里以id来区分(id 以自增的方式生成)三,代码Book为产品,有三个字段,分别是id,name,price。方式一、lock的方式public clas

2020-08-14 11:08:41 107

原创 计算机网络学习总结之MAC地址

以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。每块网卡都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。前6个十六进制数是厂商编号,后6个是该厂商的网卡流水号。有了MAC地址,就可以定位网卡和数据包的路径了。电脑怎样通过mac地址将数据包准确发送给接收者?,它用的是广播的方式,举个例子,a发送消息给b,它会向本网络内的所有计算机发送数据,再由接收的计算机

2020-07-09 11:56:08 682

原创 红黑树学习总结(二)之删除篇

红黑树的五条性质:每个节点非红即黑根节点为黑红节点的两个子节点都为黑每个叶子节点都为黑对于任一节点而言,其到叶子节点的每一条路径都包含相同数目的黑节点说真的在学红黑树的时候,看网上写的博客真的是一脸懵逼,完全不知道在讲什么东西,身边的同事也没有对它比较理解的,以至于我学了整整2天才把红黑树删除的情况搞的八九不离十。以下是我的总结,虽然没有图,但是如果你跟着我的思路来,边看边画图,一定可以很快理解。红黑树的删除一共有(2+9+9)21种情况:我只说左子树的情况(2+9)11种;第一步:我们可以

2020-07-08 19:36:18 127

原创 红黑树学习总结(一)之插入篇

红黑树的五条性质:每个节点非红即黑根节点为黑红节点的两个子节点都为黑每个叶子节点都为黑对于任一节点而言,其到叶子节点的每一条路径都包含相同数目的黑节点插入的情况根据被插入节点的父节点的情况,可以将"当节点被着色为红色节点,并插入二叉树"划分为三种情况来处理。① 情况说明:被插入的节点是根节点。处理方法:直接把此节点涂为黑色。② 情况说明:被插入的节点的父节点是黑色。处理方法:什么也不需要做。节点被插入后,仍然是红黑树。③ 情况说明:被插入的节点的父节点是红色。1.叔叔节点为红色处

2020-07-03 10:34:41 118

原创 使用poi导入excel并封装成JavaBean

使用poi导入excel并封装成JavaBean因为需求原因,最近在做一个excel导入并封装成JavaBean 来实现批量导入的功能。不多废话,直接上代码。1、所需依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-o...

2020-04-01 15:51:50 422

空空如也

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

TA关注的人

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