自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 Java反射➕注解,实现简单版本的IOC

利用反射➕注解,实现简单版本的IOC。1.先来说下简单说下什么是IOC?IOC是反转控制 (Inversion Of Control)的缩写。打个比方:传统的:当我们需要一个对象的时候需要去new一个。IOC:当我们需要对象时直接从对象工厂里获取就行了。在打个比方:传统的:当我们需要买一台适合自己的电脑时,我们需要自己购买零件,然后组装。IOC: 我们直接去工厂拿,然后他直接给你一...

2020-05-03 20:36:27 232

原创 IO模型之NIO快速理解

IO模型之NIO快速理解什么是NIO?NIO是一个非阻塞的就是说,他在accept()的时候不会阻塞,在read()的时候也不会阻塞,和之前的BIO不同。假设有一万个连接,如果是BIO那内核就必须抛出1万个线程去处理,但是NIO确不用,他可能只需要几百个就行。为什么NIO可以做到这样呢?是因为NIO的3大核心。//NIO : non-blocking IO 这是在Socket网络 内...

2020-04-26 22:58:51 199

原创 SpringBoot 源码分析(三) 监听器分析以及属性文件加载分析

在创建SpringBoot项目的时候会在对应的application.properties或者application.yml文件中添加对应的属性信息,这些属性文件是什么时候被加载的?如果要实现自定义的属性文件怎么来实现?在讲属性加载之前先讲下监听器分析。

2023-10-25 21:43:45 247

原创 SpringBoot 源码分析(一) 启动过程分析

SpringBoot的源码主要核心有以下几块;1、是run()方法 ,做一些准备工作2、是自动装配原理3、配置文件加载原理4、tomcat内嵌原理。

2023-10-25 21:42:42 208

原创 SpringBoot 源码分析(二) 自动装配过程分析

Overridetry {// 此处是自动装配的入口//省略其他代码,重点代码在invokeBeanFactoryPostProcessors()定义的格式转换的接口,并且定义两个实现类/*** 定义一个格式化的方法* @return*/@Override@Override@Bean@Primary // 优先加载@Bean。

2023-10-25 21:24:45 267

原创 SpringBoot 源码分析(四) 内置Tomcat分析

Tomcat文件的目录结构。

2023-10-25 21:23:35 575

原创 MyBatis整合Spring的原理分析

1、提供了SqlSession的替代品SqlSessionTemplate,里面有一个实现了实现了InvocationHandler的内部SqlSessionInterceptor,本质是对SqlSession的代理。2、提供了获取SqlSessionTemplate的抽象类SqlSessionDaoSupport。3、扫描Mapper接口,注册到容器中的是MapperFactoryBean,它继承了SqlSessionDaoSupport,可以获得SqlSessionTemplate。

2023-10-22 15:24:48 94

原创 Mybatis 相关模块以及设计模式分析

一、缓存模块MyBatis作为一个强大的持久层框架,缓存是其必不可少的功能之一,Mybatis中的缓存分为一级缓存和二级缓存。但本质上是一样的,都是使用Cache接口实现的。缓存位于 org.apache.ibatis.cache包下。通过结构我们能够发现Cache其实使用到了装饰器模式来实现缓存的处理。“装饰者模式(Decorator Pattern)是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能)。”1. Cache接口Cache

2023-10-22 15:24:20 251

原创 Mybatis源码分析

1. Mybatis整体三层设计SSM中,Spring、SpringMVC已经在前面文章源码分析总结过了,Mybatis源码相对Spring和SpringMVC而言是的简单的,只有一个项目,项目下分了很多包。从宏观上了解Mybatis的整体框架分为三层,分别是基础支持层、核心处理层、和接口层。如下图MyBatis的主要工作流程图2.1 接口层首先接口层是我们打交道最多的。核心对象是SqlSession,它是上层应用和MyBatis打交道的桥梁,SqlSession上定义了非常多的对数据库的

2023-10-22 13:34:16 144

原创 SpringMVC源码分析(四)请求流程分析

SpringMVC请求过程分析

2023-10-18 19:23:10 166

原创 SpringMVC源码分析(三)HandlerExceptionResolver启动和异常处理源码分析

SpringMVC异常处理器初始化和执行流程

2023-10-16 20:45:24 817

原创 SpringMVC源码分析(一)启动流程分析

SpringMVC启动流程分析

2023-10-11 18:06:05 337

原创 SpringMVC源码分析(二)启动过程之RequestMappingHandlerMapping分析

SpringMVC中的Controller中的url与对应method映射的关系分析

2023-10-11 17:57:50 452 1

原创 Spring源码分析(五) 事务全流程分析

事务全流程分析

2023-10-08 15:19:49 96

原创 Spring源码分析(四) Aop全流程

spring Aop 全流程分析以及总结

2023-09-29 21:09:55 247

原创 Spring源码分析(三) IOC 之 createBean()和doCreateBean()

spring 生命周期之createBean() 和doCreateBean详解

2023-09-15 17:53:40 147

原创 Spring源码分析(三) IOC 之 getBean()和doGetBean()

此处开始进行对象的获取也就是核心步骤@Override// 此方法是实际获取bean的方法,也是触发依赖注入的方法/*** 提取对应的beanName,有人可能会认为此处直接使用即可,为什么还要进行转换呢,原因在于当bean对象实现FactoryBean接口之后就会变成&beanName,同时如果存在别名,也需要把别名进行转换*//**提前检查单例缓存中是否有手动注册的单例对象,跟循环依赖有关联*/// 如果bean的单例对象找到了,且没有创建bean实例时要使用的参数else {

2023-09-14 14:39:24 167

原创 Spring源码分析(三) IOC 开篇

Spring bean生命周期

2023-09-11 16:46:24 31

原创 Spring源码分析(二)拓展篇 - registerBeanPostProcessors(beanFactory)

这一步是为了实例化并且注册所有的beanPostProcessor,为了方便在后期初始化其他bean对象的时候直接使用。常用的BPP有7、InitDestroyAnnotationBeanPostProcessor(处理@postConstruct,@PreDestroy)其中在prepareBeanFactory中添加的BPP有ApplicationContextAwareProcessor和ApplicationListenerDetector。

2023-09-10 14:29:20 47

原创 Spring源码分析(二)拓展篇 - invokeBeanFactoryPostProcessors(beanFactory)

spring源码分析扩展篇之自动装配解析部分

2023-09-10 00:03:02 34

原创 Spring源码分析(二)refresh()核心方法

spring核心的13个方法

2023-09-07 20:54:51 67

原创 Spring源码分析(一)

spring源码执行前准备工作

2023-09-06 22:20:34 55

原创 spring源码分析前置环节

阅读spring源码首要任务是为了更好的利用spring开发日常需求,然后是学习spring当中的设计思想转为自有,能够更好的使用这些设计思想,让自身的业务代码更优美。Spring Web:提供了基础的 Web 开发的上下文信息,现有的Web框架,如JSF、Tapestry、Structs等,提供了集成。a方式、从官网下载spring的源码 然后构建,因为是基于gradle的 所以构建会比较麻烦,但是可以在源码里新增备注,调整代码。Spring DAO:提供了JDBC的抽象层,还提供了声明性事务管理方法。

2023-09-03 22:44:27 27

原创 ThreadLocal、InheritableThreadLocal、transmittable-thread-local

threadlocal

2023-09-03 16:10:19 15

原创 项目常用到的技术:Springboot+Mybatis+Mysql+Ehcache+Thymeleaf+Layui

修改项目的数据库地址改成本地的数据库地址访问项目的网址:http://localhost:8080/项目功能具体截图主界面项目登录|注册界面(在将图书添加进书架时,进行登录|注册拦截) 初始登录用户名:admin 密码:123456图书详细界面阅读图书界面下載txt界面阅读记录界面书架界面...

2021-09-10 20:54:49 111

原创 FreeMaker 导出自定义样式word (SpringBoot)图片、文本块、集合循环(详细教程)

FreeMaker 导出自定义样式word (SpringBoot)第一步、准备模板文件创建doc文档这是自己准备的doc文档每一块要填的内容都用${ }来代替,因为后面填充数据的时候遇到这个符号都会去填充对应的数据。我这个模板里用的都是表格因为表格设计方便,只要把表格的边框设置不显示就行了。下面教育经历跟工作经历都是可以循环显示的。用这种方法可以解决很多模板需求。里面包含了图片、文本块、循环显示内容 。第二步、将模板文件doc另存为xml格式的,如下图所示第三步、将上面另存的xml文件

2021-01-12 11:40:52 699

原创 mac 下 idea 常用快捷键

mac 下 idea 常用快捷键

2020-10-01 15:16:09 121

原创 Java8 新特性简介

Java 8新特性快速了解

2020-05-09 16:18:24 186

原创 快速了解JUC(二)

集合不安全问题在并发的情况下,集合也是不安全的。1.ArrayListpublic class Test01 { public static void main(String[] args) { //并发下的ArrayList不安全 //解决方案:// List<String> list = new Vector<...

2020-05-08 18:18:22 1104

原创 快速理解JUC(一)

JUC介绍JUC是一个java的util包下东西,如下图所示:说JUC前先补充下基础知识1.进程、线程什么是进程?什么是线程?进程就是一个程序,线程就是一个进程里的执行路径,一个进程至少有一个线程。Java的两个默认的线程:main线程gc线程Java是不可自己开启线程的,jvm只是一个虚拟的不能去操作底层硬件的,需要通过本地方法start0()去调用底层的c++。如下图所...

2020-05-07 21:13:45 223

原创 快速理解多线程(一)

多线程讲多线程前先来了解下面几个概念;进程、线程、多任务、程序进程:其实说白了就是程序,只不过进程是动态的一个概念,而一个进程里往往有着>=1个的线程,比如,你在看直播的时候,技能看弹幕,又能听声音,这种肯定不是一个线程能处理的,不过一般多线程,是对应多个CPU的。程序:是指令和数据的有序集合是静态的一个概念。多任务:就是说一个人要执行很多的任务,比如你在吃饭的时候玩手机。线程:...

2020-05-04 20:24:01 300

原创 快速理解Java反射

Java反射1.说反射之前先来说下,静态语言跟动态语言。➢静态语言在程序运行时是不可以改变结构的,像Java、C、C++就是的。➢动态语言是可以在运行时改变结构的,像js,python等。但是,Java在有了反射之后,也可以称为准动态语言。那问题来了具体什么是反射呢?2.Reflection (反射)➢Reflection 反射机制允许程序在执行期借助于Reflection A...

2020-05-03 18:55:57 172

原创 Java自定义注解

什么是注解?先来了解一下什么是注解?注解是jdk5.0之后才引入的,其实用通俗的话来说就注解就像一个标签一样,是对程序的一种解释,当我们看到一个注解就能知道这个程序大概的意思,就比如说大神这个词一样,很多厉害的人都会被贴上这个标签,自然而然,当我们一看到某某学界泰斗就会想到大神二字是一样的道理。注解说明注解格式@+注解名注解使用场地包、类、方法、属性等等...

2020-05-02 20:27:28 103

原创 Java、ssm+mysql技术实现点餐系统

基于ssm的在线点餐系统登陆页面:有管理员登陆和普通用户登陆新用户需要注册管理员登陆后台管理餐厅每桌的点餐普通用户点餐页面结算页面修改菜的数量和选择菜品...

2020-05-02 13:14:08 2490 2

原创 Java使用redis

Java使用redisJava使用的redis是用Jedis来连接的,这个就像是jdbc一样。下面直接上步骤。1.添加依赖2.使用方法就是这么简单,但是具体的数据类型,还是需要看的 不然不会使用的。...

2020-05-01 18:58:05 116

原创 Springboot整合redis简单案例

Springboot整合redis简单案例步骤很简单,使用Springboot和redis时最好要先了解一下redis的8中数据类型。第一步、先在pom.xml中倒入maven依赖第二步、在application.properties里配置redis的ip和端口第二步、具体使用@Autowired RedisTemplate redisTemplate; @Test void...

2020-05-01 18:54:44 179

原创 快速理解Netty(2)

快速理解Netty(2)netty的几个重要内容1.selectorselector就是一个选择器,把连接的客户端生成的channel注册在上面之后,selector会去轮询看看有没有事件发生。这个在netty的源码里可以看到。2.TaskQueue任务队列简单的说为什么要有任务列队? 就是为了处理耗时的操作,不然的话,在高并发的情况下。一旦一个线程里有一个耗时的操作,但又没有很好的...

2020-05-01 15:11:55 221

原创 快速理解Netty

快速理解Nettynetty的简单介绍Netty是由Trustin Lee(韩国人 Line公司)开发本质:网络应用程序框架实现:异步、事件驱动特性:高性能、可维护、快速开发应用:客户端可服务器要想了解netty最好先是去了解BIO、NIO,因为NIO的多线程模式就是很接近netty了。而且现在很多项目都是用netty来做的,因为netty真的是个很好的东西,相同的功能NIO可...

2020-04-30 22:23:36 491

原创 个人博客的设计与实现

个人博客的设计与实现项目效果截图:运行环境jdk1.8tomcat7.0mysql5.7访问地址http://localhost:8080/Blog/index.html之前练习的一个个人博客的系统,需要的可以联系我qq3148686496。...

2020-04-27 16:20:51 1609 2

原创 Select、poll、epoll的区别

快速了解多路复用器 {Select、poll、epoll}1.select上一篇已经讲过什么是select了,可以把它比做是一个大管家。2.pollpoll其实和select是一类的,都是内核提供的,poll是select的一个升级版本。两者区别在于:1.select 提供1024个文件描述符,传递的是一个linklist2.poll 是没有限制的 ,但是传递的是一个array数组...

2020-04-27 15:27:58 165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除