摘要: aop是面向切面编程的意思,它可以需要先选择一些切入点,然后对这些切入点进行拦截,注入统一的代码逻辑,这也是解耦的一种方式,也是为了避免重复的代码,让开发人员把关注点放在业务上。 引用包 'org.springframework.boot:spring-boot-starter-aop' 添加切入点 /** ... 阅读原文
2019-08-21 23:05:02 阅读(2439) 评论(0)
摘要: 1.理解递归     递归:是一种应用非常广泛的算法(或编程技巧),DFS深度优先搜索,前中后二叉树遍历等,都有使用到。   2.递归需要满足的三个条件:     a.一个问题可以分解为多个子问题     b.该问题与子问题的求解思路完全一致     c.存在递归的终止条件   3.编写递归代... 阅读原文
2019-08-21 21:13:01 阅读(2680) 评论(0)
摘要: 目录 核心类 各个击破 IoService IoFilter IoHandler 总结 # 加入战队 微信公众号 Mina异步... 阅读原文
2019-08-21 19:45:03 阅读(2383) 评论(0)
摘要: 1. Sharding-Jdbc源码探究-读写分离 1.1. 主入口 找到源码入口 这一个类围绕了springboot配置属性的加载,加载了spring.shardingsphere.datasource.names配置的数据源,遍历存储到了Map容器 可以看到它还有个@ConditionalOnPrope... 阅读原文
2019-08-21 18:25:10 阅读(2715) 评论(0)
摘要: 注册中心作用 开篇首先想思考一个问题,没有注册中心 Dubbo 还能玩下去吗? 当然可以,只要知道服务提供者地址相关信息,消费者配置之后就可以调用。如果只有几个服务,这么玩当然没问题。但是生产服务动辄成千上百,如果每个服务都需要手写配置信息,想象一下是多么麻烦。 好吧,如果上面的问题都不是事的话,试想一下如... 阅读原文
2019-08-21 18:10:21 阅读(2365) 评论(0)
摘要: HashMap底层原理   背景:因为我不知道下一辈子还是否能遇见你 所以我今生才会那么努力把最好的给你。HashMap底层原理和源码撸一遍面试不慌。   一、HashMap简介 1. HashMap是用于存储Key-Value键值对的集合; 2. HashMap根据键的hashCode值存储数据... 阅读原文
2019-08-21 16:51:15 阅读(2408) 评论(0)
摘要: 1.String string对象的不变性、被final关键字修饰。 使用charat方法替代startwith/endwith方法(提高性能) 使用buffer(方法同步,性能较差)和builder(同步,性能较好)来替换string equals(不可以比较基本数据类型,重写方法是为了比较对象的值... 阅读原文
2019-08-21 16:38:01 阅读(2563) 评论(0)
摘要: 一、背景 官方提供的spring boot starter的配置项,我们用IDE配置的时候一般都有自动提示的,如下图所示 而我们自己自定义的配置却没有,对开发非常不友好容易打错配置,那这个是怎样实现的呢?   二、提示原理 IDE是通过读取配置信息的元数据而实现自动提示的,而元数据在目录META-INF中的... 阅读原文
2019-08-21 14:50:03 阅读(2424) 评论(0)
摘要: 线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的类将被Thread执行,表示一个基本任务 public interface Runnable... 阅读原文
2019-08-21 13:49:04 阅读(2371) 评论(0)
摘要:  一、链表 1、什么是链表?   链表是离散存储线性结构。  n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点,每个节点只有一个后续节点,首节点没有前驱节点,尾节点没有后续节点。  每个链表都有一个头指针指向头节点(不是首节点),有个尾指针指向尾节点。只要知道一个链表的头节点,即可遍历该链表的... 阅读原文
2019-08-21 12:08:02 阅读(2588) 评论(0)