- 博客(56)
- 收藏
- 关注
原创 SpringCloudAlibaba(简介及核心组件使用)
Spring Cloud 是一系列框架的集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工
2023-05-28 15:41:34
4156
1
原创 微服务的演变史(单体式、分布式、SOA架构、微服务架构)
在某种程度上是面向服务的SOA架构的继续发展的下一步,微服务架构更加强调服务的"彻底拆分"将一个大型系统的各个不同模块按照需求拆分成一个一个的服务,各自独立运行
2023-05-28 14:17:30
1748
原创 消息中间件——RocketMQ(与Kafka、RabbitMQ的对比)
阿里在使用Kafka之后发现了它的消息系统主要定位于日志传输,并且有可能会造成数据丢失,对于淘宝的一些核心功能,是绝对不允许出现数据丢失的,因此RocketMQ就基于Kafka而诞生,定位于非日志的可靠消息传输;
2023-05-22 14:10:06
1233
原创 Dubbo——SpringBoot集成Dubbo(@Autowired和@Reference的区别、Dubbo的服务治理)
在上一篇文章中我们讲了如何使用原生API发起远程调用,显然这种方式肯定是非常麻烦的,因此我们这里就讲如何使用SpringBoot去集成Dubbo将这些配置简化。
2023-05-16 16:40:44
2073
原创 Dubbo——微服务框架(单体式->分布式->微服务)
Dubbo是阿里巴巴开源的基于Java的高性能RPC(一种远程调用)分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。;
2023-05-14 14:57:04
3219
1
原创 设计模式——中介者模式
中介者模式又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互;
2023-05-09 15:22:48
596
原创 设计模式——代理模式(静态代理、JDK动态代理、CGLIB动态代理)
如果因为某些原因访问对象不适合,或者不能直接引用目标对象,这个时候就需要给该对象提供一个代理以控制对该对象的访问,代理对象作为访问对象和目标对象之间的中介;Java中的代理按照代理类生成时机不同又分为静态代理和动态代理,静态代理代理类在编译时期就生成,而动态代理代理类则是在Java运行时动态生成的,而动态代理又分为JDK动态代理和CGLIB动态代理两种;
2023-05-09 13:09:28
405
原创 设计模式——责任链模式
责任链模式又称职责链模式,为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止;
2023-05-07 13:51:15
461
原创 设计模式——装饰者模式(继承和接口的两种实现方式)
装饰者模式可以带来比继承更加灵活性的扩展功能,使用更加方便,可以通过组合不同的装饰者对象来获取具有不同行为状态的多样化的结果,装饰者模式比继承更具有良好的扩展性,完美的尊姓开闭原则,继承是静态的附加责任,装饰者则是动态的附加责任;装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能;
2023-05-06 16:11:22
891
原创 设计模式——适配器模式(类适配器、对象适配器)
因此适配器模式就是将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作; 适配器模式分为类适配器模式和对象适配器模式(还有一个接口适配器模式),前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些;
2023-05-06 14:14:26
1325
原创 设计模式——观察者模式(应用广,较难)
又被称为发布-订阅模式,实际应用中非常广泛,它定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象,这个主题对象在状态变化时,会通知所有的观察者对象,使它们能够更新自己;
2023-05-05 13:33:03
442
原创 设计模式——策略模式
而策略模式就是定义了一系列算法, 并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户,策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委托给不同的对象对这些算法进行管理
2023-05-05 11:58:26
509
原创 设计模式——模板方法模式
在我们的实际开发中尝尝会遇到这种问题:在设计一个系统时知道了算法所需要的关键步骤,而且确定了这些步骤的执行顺序,但是某些步骤的具体实现还不知道,或者说某些步骤的实现与具体的环境相关,例如每个人订车,最开始的流程都是相同的:预约、到店、取号、排队、办理业务,这些流程对于每个客户都是相同的,但是办理业务这个流程对于每个客户都可能是不同的,比如有的客户是来订车,有的客户是来进行保养,而有的客户是来更换配饰;因此模板方法模式是定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中
2023-05-05 10:45:43
741
原创 设计模式——原型模式(浅拷贝和深拷贝)
当类需要通过原型模式进行拷贝的时候,如果原型类里面的属性没有引用类型,或者引用类型较少,且该类的属性不会频繁修改的情况下,我们可以使用浅拷贝;但如果引用类型较多,或者后期需要添加或者修改里面的引用类型的属性时,我们选择深拷贝;
2023-05-04 18:08:35
699
原创 设计模式——工厂模式(简单工厂、工厂方法、抽象工厂)
工厂模式的目的是将创建对象的具体过程隐藏起来,从而达到更高的灵活性工厂模式分为:简单工厂模式、工厂方法模式、抽象工厂模式;
2023-05-03 17:07:00
990
原创 设计模式——单例模式
单例模式是Java中最简单的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式;这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象;
2023-05-02 15:47:02
519
原创 Spring源码解读——高频面试题
1.先通过createBeanFactory创建出一个Bean工厂(DefaultListableBeanFactory)2.开始循环创建对象,因为容器中的bean默认都是单例的,所以优先通过getBean、doGetBean从容器中查找,如果找不到的话;3.通过createBean、doCreateBean方法,以的方式创建对象(一般情况下使用的是无参的构造方法),getDeclaredConstructor、newInstance。
2023-05-01 16:41:34
1010
1
原创 SpringBoot源码解读——启动过程以及自动装配过程
不要再按照一些帖子上说的什么@SpringBootApplication注解=》@EableAutoConfiguration=》@Import什么什么的了,这样回答只会让面试官觉得你根本没看过源码,只是去网上找了一篇帖子来背的;因此我们在回答的时候要给面试官一种感受:我看过且了解过且理解了这个原理;
2023-04-27 18:37:16
265
原创 Spring源码解读——循环依赖问题(三级缓存机制)
因此三级缓存其实就是三种用来存储Bean对象不同状态的不同的Map结构,在A对象里面有一个属性b,这个属性b是B对象;那么在进行创建A对象之后需要对其属性b进行赋值,这个时候需要判断容器里面有没有B对象,如果有B对象就直接赋值就可以了;但是没有B对象,那么就会去创建B对象然后对属性a进行赋值,这样的话就会出现上图这样一个闭环的情况,这就是我们所说的循环依赖问题;图中框起来的地方就是一个闭环,也就是出现了循环依赖问题;
2023-04-25 21:21:16
287
原创 Spring源码解读——Bean的生命周期(AOP的实现)
Spring Bean对象生命周期的核心,其中包括实例化、属性赋值、Aware接口的检测、Bean对象前置处理器和后置处理器的扩展,以及AOP其实就是IoC整体流程(Bean生命周期)里的一个扩展点的讲解;
2023-04-24 17:05:24
785
原创 Spring源码解读——后置处理器(增强器)、BeanFacotory
大家可能之前看过一些帖子或者文章,说BeanFactory是一个Bean工厂,但其实这样说并不是很准确,我们打开源码来看看它的注释:这是一个用来访问Spring Bean容器的根接口;
2023-04-23 16:01:07
336
原创 Spring源码解读——前瞻(BeanDefinitionReader、BeanDefinition)
Spring源码解读前瞻,我们需要从哪些方面去学习Spring的源码,以及在面试的时候面试官问到相关Spring问题的时候我们应该从哪些角度和哪些方面去回答,以及在学习Spring源码之前我们需要知道的一些细节问题
2023-04-23 15:50:42
140
原创 基数排序算法(典型的空间换时间)
基数排序属于“分配式排序”,又称“桶子法”,顾名思义,它是通过键值的各个位的值将要排序的元素分配至某些桶中,达到排序的作用;基数排序法是属于稳定性的排序,基数排序法是效率高的稳定性排序法;基数排序是桶排序的扩展;它是将整数按位数切割成不同的数字,然后按每个位数分别比较;2.基数排序是典型的空间换时间的方式,占用内存很大,因此当面对海量数据排序的时候很容易造成OutOfMemoryError
2023-04-21 15:46:17
274
原创 归并排序算法
归并序是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分治法将问题分成一些小的问题然后递归求解,而治的阶段将分的阶段得到的答案“修补“在一起,即分而治之)。
2023-04-20 16:30:28
97
原创 快速排序算法
快速排序是对冒泡排序的一种改进,基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一个部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;
2023-04-19 18:25:03
83
原创 希尔排序(交换法和移位法)
希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序;希尔排序是把记录按下标的一定增量分组;对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1的时,整个文件恰被分成一组,算法便终止;
2023-04-18 17:44:10
180
原创 插入排序算法
插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的;使用Java实现插入排序它的基本思想是:把n个待排序的元素看成(想象出来的)为一个有序表和一个无序表,始时有序表只包含一个元素,无序表中包含n-1个元素,排序的过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表的排序码进行比较,将它插入到有序表中的适当位置,使之称为新的有序表;
2023-04-17 17:31:27
114
原创 选择排序算法
选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的;是一种简单的排序方法,它的基本思想是:第一次从arr[0]-arr[n-1]中选取最小值与arr[0]进行交换,第二次从arr[1]-arr[n-1]中选取最小值与arr[1]交换,以此类推,最终在arr[n-2]-arr[n-1]中选取最小值与arr[n-2]进行交换总过通过n-1次,得到一个按排序码从小到大排列的有序序列;
2023-04-17 15:33:45
82
原创 冒泡排序算法(优化前与优化后代码实现)
冒泡排序的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部;就像水底下的气泡一样逐渐向上冒;
2023-04-17 14:21:04
100
原创 排序算法绪论(时间频度、时间复杂度、空间复杂度)
一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多,一个算法中的语句的执行次数称为语句频度或者时间频度,记为T(n);,一个算法的空间复杂度定义为该算法所耗费的存储空间,它也是问题规模n的函数;
2023-04-16 16:08:17
124
原创 栈(前缀、中缀、后缀表达式及逆波兰计算器的实现)
通过我们刚刚介绍的前缀表达式的计算机实现来讲,只要前缀表达式是正确的,我们不需要去判断运算符的优先级,并且在一个栈中就可以完成整个表达式的运算;要求输入一个逆波兰表达式(后缀表达式),我们使用系统提供的栈(Stack)计算其结果;支持小括号和多位数整数,我们这里主要讲的是数据结构,因此计算器进行了简化,只支持整数运算;
2023-04-14 16:35:48
304
原创 栈(综合计算器的实现)
1.栈(stack)是一个先入后出的有序列表;2.栈是为了限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊性表,允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom);因此我们可以将栈的结构理解为一口井;3.根据上面栈的定义可以知道,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除;
2023-04-13 17:43:39
1148
原创 链表(单向链表&双向链表&单向环形链表及约瑟夫问题)
1.链表是以节点的方式来存储的;2.每个节点包括了和,其中data域就是存放元素的,next域就是指向下一个节点的;3.链表的每个节点都不一定是连续存储的;4.链表根据结构可以分为,根据需求可以选择;
2023-04-12 17:43:28
95
原创 队列(基本使用以及存在的问题)
1.队列是一个有序列表,可以使用数组或者链表来实现;2.遵循先进先出的原则,即先存入队列的数据要先取出,后存入的要后取出;
2023-04-11 15:02:23
263
dubbo Admin的可视化管控台
2023-05-16
Java中的ArrayList的底层源码解读、LinkedList、Vector的区别介绍
2023-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人