沐 ぅ 阳
码龄4年
关注
提问 私信
  • 博客:3,670
    3,670
    总访问量
  • 12
    原创
  • 2,252,807
    排名
  • 0
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2020-07-31
博客简介:

qq_49771984的博客

查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得1次评论
  • 获得5次收藏
创作历程
  • 7篇
    2021年
  • 5篇
    2020年
成就勋章
TA的专栏
  • aop
    1篇
  • tomcat
    1篇
  • spring循环依赖
    1篇
兴趣领域 设置
  • 后端
    spring
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

SpringAop流程分析

在分析流程之前,我们先简单的实现一下AOP。@Component@ComponentScan("com.jxau")public class EnableComponentScan {}定义一个扫描包。然后创建一个类开启AOP的扫描注解@Component@EnableAspectJAutoProxy(exposeProxy = true)public class EnableAop {}定义一个切面。@Component@Aspectpublic class AspectJ
原创
发布博客 2021.07.27 ·
194 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Tomcat整体架构

一、Tomcat顶层架构Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。从上图可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下:1、Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;2、Container用于封装和管理Servlet,以及具体处理Request请求;
原创
发布博客 2021.07.11 ·
420 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

SpringBoot的启动流程

前言Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。项目启动流程public static void main(String[] args) { SpringApplication.run(SpringBootMainApplication.class,args);}这是我们最熟悉不过
原创
发布博客 2021.05.31 ·
416 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

springmvc源码(三)

前言上一篇跟着源码走完了HandlerMapping的创建过程以及对注解的分析和绑定的过程,这一次来看一下HandlerAdapter的过程。一、initHandlerAdapters和initHandlerMapping一样,我们直接进入到getDefaultStrategies当中。protected <T> List<T> getDefaultStrategies(ApplicationContext context, Class<T> strategyI
原创
发布博客 2021.03.28 ·
177 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

springmvc源码(二)

initHandlerMappingsprotected void initStrategies(ApplicationContext context) { // 初始化文件上传解析器 initMultipartResolver(context); // 本地化解析 initLocaleResolver(context); // 主题解析器 initThemeResolver(context); // 处理器映射器 保存Url映射关系 initHandlerMappings
原创
发布博客 2021.03.25 ·
161 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

SpringMVC源码(一)

前言在进入springmvc源码之前,我们应该知道的是,Servlet的生命周期。实例化(调用空的构造函数)—初始化(init方法)—调用Service方法(调用doService方法)–销毁(destory方法)初始化方法和销毁方法,指挥调用一次,在我们初始化Servlet的时候调用init方法,销毁容器之前会调用destory方法。所以,我们在进入DispatcherServlet之前,应该可以猜得到,他或者他的父类应该会有这样一个方法。最终我们发现,GenericServlet这个抽象类,找到i
原创
发布博客 2021.03.23 ·
737 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

MyBatis基本源码流程

前言在进行Mybatis的源码流程之前,我们首先应该知道mybatis的使用方法。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace=绑定一个对应的Dao/Mapper接口
原创
发布博客 2021.03.14 ·
153 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Spring中的循环依赖解决流程

前言说起Spring中循环依赖的解决办法,相信很多朋友们都或多或少会提到三级缓存的问题,那么三级缓存到底是怎么解决循环依赖的问题和他的过程是怎么样的,我们使用idea的debug方式,通过跟进源码来了解一下。一、什么是三级缓存一级缓存:singletonObjects,存放完全实例化属性赋值完成的Bean,直接可以使用。二级缓存:earlySingletonObjects,存放早期Bean的引用,尚未属性装配的Bean三级缓存:singletonFactories。三级缓存,存放实例化完成的Be
原创
发布博客 2020.12.29 ·
203 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

1.8环境下的ConcurrentHashMap

前言HashMap在高并发的环境下,执行put操作会导致HashMap的Entry链表形成环形数据结构,从而导致Entry的next节点始终不为空,因此产生死循环获取EntryHashTable虽然是线程安全的,但是效率低下,当一个线程访问HashTable的同步方法时,其他线程如果也访问HashTable的同步方法,那么会进入阻塞或者轮训状态。在jdk1.6中ConcurrentHashMap使用锁分段技术提高并发访问效率。首先将数据分成一段一段地存储,然后给每一段数据配一个锁,当一个线
原创
发布博客 2020.12.11 ·
924 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

1.8下的HashMap部分源码浅析

一、、HashMap概述在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一条链表上的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。我们主要来看一下它常用的几个方法二、put方法public V put(K key, V value) { return putVal
原创
发布博客 2020.12.08 ·
72 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

1.7环境下的ConcurrentHashMap源码

一、ConcurrentHashMap构造方法ConcurrentHashMap的结构和HashMap有些许的不同。他用一个叫做Segment来代替数组,具体用HashEntry来存储数据。 public ConcurrentHashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_CONCURRENCY_LEVEL); }可以看到,这里调用无参的构造方法的话,他会去调用具有三个参数的构造
原创
发布博客 2020.12.01 ·
107 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

1.7环境下的HashMap源码

HashMap是大家在经常使用的一个容器,那么他在1.7环境下到底是怎么实现的,我们一起来看一下1、HashMap构造方法public HashMap() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR); }public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) thr
原创
发布博客 2020.11.27 ·
106 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏