后端 [141]

线性数据结构:数组、链表、栈、队列

1. 数组 数组(Array) 是一种很常见的数据结构。它由相同类型的元素(element)组成,并且是使用一块连续的内存来存储。 我们直接可以利用元素的索引(index)可以计算出该元素对应的存储地址。 数组的特点是:提供随机访问 并且容量有限。 假如数组的长度为 n。 访问:O(1)//访问特定

Spring 中的设计模式详解

“JDK 中用到了哪些设计模式? Spring 中用到了哪些设计模式? ”这两个问题,在面试中比较常见。 我在网上搜索了一下关于 Spring 中设计模式的讲解几乎都是千篇一律,而且大部分都年代久远。所以,花了几天时间自己总结了一下。 由于我的个人能力有限,文中如有任何错误各位都可以指出。另外,文章

SpringBoot自动装配原理详解

作者:Miki-byte-1024 & Snailclimb 侵权联系即删 每次问到 Spring Boot, 面试官非常喜欢问这个问题:“讲述一下 SpringBoot 自动装配原理?”。 我觉得我们可以从以下几个方面回答: 什么是 SpringBoot 自动装配? SpringBoot 是如何实

Java魔法类Unsafe详解

本文转载来自JavaGuide ,如有侵权及时联系。 阅读过 JUC 源码的同学,一定会发现很多并发工具类都调用了一个叫做 Unsafe 的类。 那这个类主要是用来干什么的呢?有什么使用场景呢?这篇文章就带你搞清楚! Unsafe 介绍 Unsafe 是位于 sun.misc 包下的一个类,主要提供

BigDecimal 详解

本文转载来自JavaGuide ,如有侵权及时联系。 《阿里巴巴 Java 开发手册》中提到:“为了避免精度丢失,可以使用 BigDecimal 来进行浮点数的运算”。 浮点数的运算竟然还会有精度丢失的风险吗?确实会! 示例代码: float a = 2.0f - 1.9f; float b = 1

JavaSPI机制详解

本文来自JavaGuide ,如有侵权及时联系。 在面向对象的设计原则中,一般推荐模块之间基于接口编程,通常情况下调用方模块是不会感知到被调用方模块的内部具体实现。一旦代码里面涉及具体实现类,就违反了开闭原则。如果需要替换一种实现,就需要修改代码。 为了实现在模块装配的时候不用在程序里面动态指明,这

JDK监控和故障处理工具

本文来自JavaGuide ,如有侵权及时联系。 JDK 命令行工具 这些命令在 JDK 安装目录下的 bin 目录下: jps (JVM Process Status): 类似 UNIX 的 ps 命令。用于查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息; jstat(J

ConcurrentHashMap核心源码+底层数据结构分析

本文来自公众号:末读代码的投稿,原文地址:https://mp.weixin.qq.com/s/AHWzboztt53ZfFZmsSnMSw 。 本文转载来自JavaGuide ,如有侵权及时联系。 上一篇文章介绍了 HashMap 源码,反响不错,也有很多同学发表了自己的观点,这次又来了,这次是

ArrayList 核心源码+扩容机制分析

本文转载来自JavaGuide ,如有侵权及时联系。 ArrayList 简介 ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递

ConfigurationClassPostProcessor源码解析

ConfigurationClassPostProcessor 0.预备 1.在spring源码中讲到, 在refresh()方法中的第5个小方法invokeBeanFactoryPostProcessors(beanFactory)中会先后调用BeanFactoryPostProcessor接口的

Spring-transaction源码

Transaction源码 1.准备 pom文件 <dependencies> <!-- context --> <dependency> <groupId>org.springframework</groupId> <artifactId>sprin

Spring-ioc源码解析

AnnotationConfigApplicationContext 启动类 public class ConfigStart { public static void main(String[] args) { ApplicationContext applicationC

@Autowired和@Resource解析

@Autowired和@Resource 解析 准备 1.通过前面部分的spring源码解析, 我们知道BeanPostProcessor, 会在普通bean实例化之前实例化并初始化完成!并在bean的整个实例化和初始化过程前后执行其加强的方法; 2.@Autowired和@Resource都是通过

Spring-Mybatis源码解析

Spring-Mybatis整合 1.准备 pom文件 <dependencies> <!-- context --> <dependency> <groupId>org.springframework</groupId> <artifactId>sp

Spring-aop源码解析

Aop源码 1.准备 aspect @Component @Aspect @Slf4j public class LogAspect { private static final String POINT_CUT = "execution(public void c

SpringMVC源码解析

SpringMVC源码解析 xml配置文件版 0. 准备阶段 maven springMVC工程搭建 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-

多线程面试题

本文转载自动力节点 ,如有侵权及时联系。 001 为什么要使用多线程呢? 我们现在所使用操作系统都是多任务操作系统(早期使用的DOS操作系统为单任务操作系统),多任务操作指在同一时刻可以同时做多件事(可以同时执行多个程序)。 多进程:每个程序都是一个进程,在操作系统中可以同时执行多个程序,多进程的目

Web后端面试题

本文转载自动力节点 ,如有侵权及时联系。 001 Servlet的生命周期? 1 web Client 向servlet服务器,发出Http请求 2 servlet接受web Client的请求 3 servlet容器创建一个HttpRequest 对象,将Web Client请求的信息封装到这个对