随笔分类 - 面面俱到
摘要:Spring Cloud Alibaba 是什么 Spring Cloud Alibaba 是一套开源的分布式系统解决方案,为开发者提供了在云计算环境下构建应用程序所需的全部开发工具和服务支持。它在 Spring Cloud 基础上进行了扩展,为开发者提供了更多选择和灵活性。 Spring Clou
阅读全文
摘要:什么是微服务 微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分为一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API),每个服务都围绕着具体的业务进行构
阅读全文
摘要:自动配置基本思想示例 以mybatis-spring-boot-starter为例。 1)当导入了 mybatis-spring-boot-starter后,其导入的相关依赖如下: 2)可以看到其导入了 mybatis-spring-boot-autoconfigure的jar包,其中有一个自动配置
阅读全文
摘要:什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用Spring 的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手。 为什么要用SpringBoot? 快速开发,快速整合,配置简化、内嵌服
阅读全文
摘要:我们在开发任何一个Spring Boot项目,都会用到如下的启动类: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Ap
阅读全文
摘要:Netty是什么? Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty是基于nio的,它封装了jdk的nio,让我们使用起来更加方法灵活。 Netty架构设计 功能特性 传输服务:支持BIO和NIO 容器集成:支持OSGI、JBossMC、Sp
阅读全文
摘要:NoSQL 是什么? NoSQL(Not Only SQL 的缩写)泛指非关系型的数据库,主要针对的是键值、文档以及图形类型数据存储。NoSQL 数据库天生支持分布式,数据冗余和数据分片等特性,旨在提供可扩展的高可用高性能数据存储解决方案。 一个常见的误解是 NoSQL 数据库或非关系型数据库不能很
阅读全文
摘要:Java IO概览 Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。 InputStream / Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流。 OutputStream / Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流。 I
阅读全文
摘要:给某一个对象提供一个代理,并由代理对象控制对真实对象的访问,代理模式是结构型设计模式的一种。 根据字节码文件的创建时机来分类,可以分为静态代理和动态代理。 静态代理 在程序运行前就已经存在代理类的字节码文件,代理类和被目标类的关系在运行前就确定了。 动态代理 代理类在程序运行期间由JVM根据反射等机
阅读全文
摘要:什么是SPI? SPI 的全名为 Service Provider Interface ,用于接口寻找服务实现类。 实现方式:标准制定者制定接口,不同厂商编写针对于该接口的实现类,并在jar的“classpath:META-INF/services/全接口名称”文件中指定相应的实现类全类名,开发者直
阅读全文
摘要:ArrayList简介 ArrayList的底层数据结构是一维数组,而且是动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。 ArrayList 继承于 Abs
阅读全文
摘要:ConcurrentHashMap概览 jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。 JDK1.8的实现降低
阅读全文
摘要:HashMap结构图 HashMap底层数据结构:Entry数组+链表+红黑树(JDK1.8版本) Entry+链表(JDK1.7版本) 这里简单说下红黑树的特点: 每个节点只有两种颜色:红色或者黑色 根节点必须是黑色 每个叶子节点(NIL)都是黑色的空节点 从根节点到叶子节点,不能出现两个连续的红
阅读全文
摘要:双向链表 单向链表只有一个方向,结点只有一个后继指针 next 指向后面的结点。而双向链表,顾名思义,它支持两个方向,每个结点不止有一个后继指针 next 指向后面的结点,还有一个前驱指针 prev 指向前面的结点。 从上图中可以看出来,双向链表需要额外的两个空间来存储后继节点和前驱结点的地址。所以
阅读全文
摘要:Java 集合概览 Java 集合,也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口:List、Set 和 Queue。 Java 集合框架如下图所示:
阅读全文
摘要:JVM vs JDK vs JRE JVM Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运
阅读全文
摘要:上图展示了循环依赖是什么,类A存在B类的成员变量,所以类A依赖于类B,类B同样存在类A的成员变量,所以类B也依赖于类A,就形成了循环依赖问题。 Spring是如何创建Bean的 Spring 中Bean初始化的精简流程如下: 简要描述一下Spring Bean的创建流程: (1)首先Spring容器
阅读全文
摘要:什么是Spring Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 基于XML的配置:所有的 Spring
阅读全文
摘要:数据库三大范式是什么 第一范式:每个列都不可以再拆分。 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。 在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由,比如性能。事实
阅读全文
摘要:说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 Class loade
阅读全文