自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 问答 (1)
  • 收藏
  • 关注

原创 源码解析PageHelper如何进行自动分页

分页插件PageHelper自动分页原理解析

2021-03-18 15:41:44 2756

原创 源码解析mybatis拦截器的运行原理

从源码逐步解析mybatis拦截器的底层实现原理,不容错过>>>

2021-01-27 17:29:10 4136 3

原创 CountDownLatch和CyclicBarrier到底有什么区别

看了很多文章,没有说到重点。重点在这里>>

2020-10-21 11:55:12 7476 1

原创 如何生成指定范围内的随机数,要求稳定的时间复杂度?

解决循环生成重复随机数的问题

2020-08-25 14:36:25 8623 3

原创 HashMap的同一链表中对象的hashcode真的一样吗?

打破惯性思维!重新理解hashMap的链式存储

2020-07-27 16:54:25 9072 7

原创 快速排序进阶:解决经典面试topK问题

不玩虚的,硬核干货快排解决topK,你值得拥有

2020-04-07 15:40:52 8854 5

原创 快速排序计算第K大的数

熟悉快排的同学都知道,若不熟悉的同学,可以先看我的这篇白话解析快速排序。快排使用某一个数作为基准点进行分区,通常基准点左边的数都是小于基准点的,在基准点右边的数都是大于基准点的。 例如1,3,4,2这组数字,使用快排以2为基准点进行倒序排序第一次的结果为3,4,2,1 ,如果你恰好是求第3大的数,那么就是基准点2,只用了一次排序,时间复杂度为O(n)。如果你是求第...

2020-03-26 10:58:34 8168 10

原创 源码解析BeanUtils.copyProperties方法

常用的 BeanUtils.copyProperties 方法,你知道它的实现原理吗?

2020-01-20 16:09:06 8559 5

原创 白话解析平安笔试题:多线程交替打印

题目:请使用A,B 2个线程,交替打印1-100,提供2种以上的实现方式 ?说实话,我很懒,没刷过什么多线程相关的题目,和大多数人一样只是知道一些多线程的基础知识,所以第一眼看到这个题目是有点懵的。写这篇文章主要是分享一下我的思考过程,如何通过自己已知的信息,将其整合起来去解决这道问题,这是一种信息整合能力。现在我们先来剖析一下题目:A、B 2个线程,交替打印。也就是说在同一时间只能有一个...

2019-12-10 18:02:25 8020 3

原创 重写jdk源码:HashMap的resize方法优化思考

友情提示:本文推理过程是不准确的,因为在HashMap中处于数组同一位置的元素的哈希值大部分情况是不同的,但整个思考过程比较完整,有兴趣的可以看看。话不多说,我们直接看HashMap的resize方法源码:重点在715-744行,我直接说结论,我会用一行代码去替换掉这近30行,如下:newTab[e.hash & (newCap - 1)] = e;你...

2019-11-22 11:55:37 7824

原创 源码解析 HashMap 的线程安全问题

我们经常在面试中会遇到这个问题: Q:HashMap是线程安全的吗? A:不是 Q:为什么? A:因为Hashmap 在多线程的情况下扩容会造成死循环的问题上述回答并不准确, 因为在jdk1.7 和 jdk1.8 中的Hashmap是不...

2019-11-21 19:18:51 7929 3

原创 白话解析快速排序

快速排序算法简称快排,就是在数组中选择任意一个元素作为临界值,然后遍历数组中的元素将小于临界值的放到左边,大于临界值的放到右边,这样就完成了一次排序,最后通过递归依次将临界值左右部分的元素进行排序即可。现在我们来思考下如何实现这样一种排序方式,若不考虑空间复杂度,我们最容易想到的一种方式是新建2个临时数组分别存放左右两部分排序的数据,比如临界值为4,我们将小于4的放到一个数组,大于4的放到另一...

2019-11-20 16:38:51 7695 5

原创 白话解析归并排序

简单来说,归并排序主要是将多个有序的序列合并为一个有序的序列. 我们首先看下2个简单的数 5 , 2,那么直接将5和2比较交换位置就变成 2,5。然后再加2个数 4,3,同理,比较交换变成3,4 。 现在我们将2,5和3,4 这2个序列合并为一个有序序列, 对于没有什么算法基础的同学第一个想到可能是先找出最小的数,然后是第二小的数,第三小的数等等,最后依...

2019-11-14 16:28:04 7603 5

原创 白话解析冒泡排序优化

冒泡排序就是每2个相邻的数据进行比较后,按照升降序进行交换,每次排序至少会让一个最大或最小的元素(默认从左至右排序,升序为最大元素,降序为最小元素)移动至队尾,重复N次后,完成此次排序。 假设我们用2,5,1,3,4,6这个整型数组进行排序。 我们首先看下优化前的冒泡排序: public static int[] bubbleSort(in...

2019-11-01 16:58:26 7691 5

原创 源码解析 xxl-job 如何进行稳定性保障

本文是基于上篇xxl-job 源码运行解析进行解析的1. 调度中心如何进行故障转移(Failover)?故障转移就是在调度阶段,如果某一台执行器发生故障支持自动切换到一台正常的执行器机器并且完成调度请求流程首先在新增一个调度任务的时候,路由策略选择故障转移:当源码执行到 XxlJobTrigger 的processTrigger方法时,如下图:我们可以...

2019-08-28 17:54:16 9633 6

原创 springboot VS springmvc的区别

发现很多小伙伴不清楚springboot 和springmvc 的区别,事实上从功能和本质上来讲,这2者没有任何关系。如果非要说有什么关系,那就是都属于spring家族的。 什么是springboot : 一个自动配置化的工具 什么是springmvc: 一个web框架 那为什么2个毫无关系的框架会很容易发生混淆?因为当springboot ...

2019-08-14 14:17:19 15454 3

原创 xxl-job 源码运行解析

xxl-job 调度中心源码解析 ( RPC请求客户端)首先我们在调度中心里面通过add接口新增一个定时任务:在库里面会保存相应的定时任务的信息,如下:现在我们在调度中心点击启动,会调用start 接口:在上图的接口中我们可以看到,它会添加一个job任务到quartz中,任务的执行类是RemoteHttpJobBean,现在我们查看一下这个类:...

2019-06-25 11:02:47 10560 13

原创 一文看懂mybatis底层运行原理解析

友情提示 : 本文的重点是解析mybatis执行一次sql 的流程 ,过程中思维比较跳跃,觉得比较难得可以往下查看总结中源码流程这篇文章通过一个insert语句来解析mybatis执行一次sql的运行流程。背景介绍,源码来自于mybatis-3.0.5.jar,mybatis-config.xml:<?xml version="1.0" encoding="UTF-8"...

2019-06-10 11:11:00 15704 5

原创 白话解析动态代理设计模式

动态代理就是对目标对象的方法做不同的代理实现,通俗点说就是在一个方法的执行前后加上对应的处理逻辑。例如spring的事务处理,在插入一条数据的前面开启事务,插入完成后提交事务。现在我们解析一下动态代理底层的执行方式,直接上代码:public interface Parent { public void create();}public class Sub i...

2019-04-02 09:52:42 8178 8

原创 java 栈 stack的应用场景

栈的特性: 先进后出1. 单链表,求倒数第K个数public class MyNode { public Integer value; public MyNode next; public MyNode(Integer value) { this.value = value; } @Override public Stri...

2019-03-25 17:23:46 9313

原创 记一次Http方式请求webservice的优化(递归业务实战)

最近接了一家供应商,他们的服务端采用webservice,但只能通过http进行请求,请求的返回值是如下这种格式:<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:B...

2019-02-20 11:24:03 7623

原创 容易忽略的ConcurrentHashMap 线程不安全行为

线程安全的基础知识首先解释什么是线程安全:在多线程中对一种数据类型的参数进行共享时,各个线程可以正确的执行,不会出现数据错误的情况就是线程安全。接下来我们看一段常见的线程代码:public class ThreadTest {public static int index=0;public static String str="0";public static void main...

2019-01-21 15:27:32 11125 6

原创 HttpClient 重试机制的源码解析 (httpclient 超时不重试问题解析)

友情提示 : 超时重试的解决方案在最下面,可直接查看首先介绍一下我的版本是httpclient 4.3.4,采用的是 PoolingHttpClientConnectionManager 连接池的方式构造CloseableHttpClient,代码如下:接下来,执行如下图所示的get 请求:查看execute 方法 ,一直到下图所示的doExecute 方法,...

2018-08-28 16:30:05 12428 3

原创 记一次hashmap乱序的问题

首先交代一下背景,一个用户权限菜单按照数据库字段sort倒序排列,首先sql按照order by sort desc倒序传到前台中的数据没问题,但是将数据转为树节点(此代码是我维护),简单看了下,他是采用Hashmap.而 Hashmap是无序,所以在网上查了下有序的map,,看到一个说Treemap是有序的,于是改用TreeMap,最后发现还是无序的,key是采用的String. ...

2017-03-04 14:11:30 9321 2

原创 java之自定义ArrayList

通过阅读源码,java中ArrayList其本质上是由object数组封装而成,其默认长度为10.下面是自定义模仿的ArrayList,主要是重写了其add方法:public class ArrayList implements Collection { Object[] objects=new Object[10]; int index=0; public void add(...

2016-09-26 19:39:26 8918

原创 intellij idea java8反射获取方法参数名

java8中的新特性可以直接通过反射获取方法的参数名,//通过类名获取classClass clazz=Class.forName(className); //通过方法名获取对应的方法Method   method=clazz.getDeclaredMethod(methodName);//获取方法的所有参数Parameter parameter=metho

2016-08-22 20:29:18 14399 5

原创 高效的十进制与18进制的转换

十进制与18进制数的转换

2016-08-11 19:30:18 10845 1

原创 java之生成不重复的随机数

话不多说,,直接上代码public Set getRandomNum(int begin,int size,int maxNum){ Random r=new Random(); Set ranNum=new HashSet(); while(ranNum.size() ranNum.add(r.nex

2016-01-12 17:10:58 9642

原创 由微服务联想到如何保持职场竞争力

近期由springboot掀起了一股微服务的热潮,用过微服务的都知道,采用springcloud的架构,开发一个微服务时通常采用springboot+apollo或config+mybatisplus+代码生成器 , 基本上简单的业务逻辑直接就能一套生成了,而且由于统一配置中心可以节省大部分配置,充分实现了敏捷式开发,与原来的SSM架构相比,是开发变得更加自动化,基本实现了开发只需要关...

2019-07-04 14:56:04 7481 2

原创 struts2奇葩问题之 no result define

struts的配置如下:                        application/octet-stream            bis                attachment;filename="${downloadFileName}"                100000                      

2016-04-01 13:42:43 7899

空空如也

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

TA关注的人

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