08 2024 档案

摘要:1. MySQL8环境搭建 1.1. docker安装mysql docker run -id \ -p 3307:3306 \ -v mysql8_conf:/etc/mysql/conf.d \ -v mysql8_data:/var/lib/mysql \ -e MYSQL_ROOT_PASS 阅读全文
posted @ 2024-08-29 10:13 LilyFlower 阅读(5) 评论(0) 推荐(0) 编辑
摘要:第一章 NoSQL数据库 学习目标 1 了解什么是NoSQL 数据库及常见的NoSQL数据库 2 了解其他类型数据库 第一节 NoSQL数据库概述 1.1 什么是NoSQL数据库 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不 阅读全文
posted @ 2024-08-28 09:43 LilyFlower 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1 Gateway组件 1.1 Gateway简介 1.1.1 官网 https://docs.spring.io/spring-cloud-gateway/docs/4.0.x/reference/html/ 1.1.2 概述 Spring cloud Gateway 是基于Spring5.0 + 阅读全文
posted @ 2024-08-27 23:58 LilyFlower 阅读(85) 评论(0) 推荐(0) 编辑
摘要:1 系统架构演进 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。 1.1 单体架构 早期的软件系统通常是基于单体应用架构设计的,也就是将整个系统作为一个单一的、可执行的应用程序来构建和维护。 如下图所示: 单体架构具有以下优点: 1、结构简单:单体 阅读全文
posted @ 2024-08-27 23:02 LilyFlower 阅读(31) 评论(0) 推荐(0) 编辑
摘要:MyBatis持久层框架 目录MyBatis持久层框架一、Mybatis简介1.1 简介1.2 持久层框架对比1.3 快速入门(基于Mybatis3方式)二、日志框架扩展2.1 用日志打印替代sout2.2 Java日志体系演变2.3 最佳拍档用法2.4. Lombok插件的使用2.4.1 Lomb 阅读全文
posted @ 2024-08-27 18:23 LilyFlower 阅读(108) 评论(0) 推荐(0) 编辑
摘要:Maven依赖管理项目构建工具 目录Maven依赖管理项目构建工具一、Maven简介1.1 Maven介绍1.2 Maven主要作用理解1.3 Maven软件工作原理模型图(了解)二、Maven安装和配置2.1 Maven安装2.2 Maven环境配置2.3. Maven功能配置2.4 IDEA配置 阅读全文
posted @ 2024-08-27 18:20 LilyFlower 阅读(240) 评论(0) 推荐(0) 编辑
摘要:1 JVM总结 1.1 JVM简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现的。JVM屏蔽了与具体操作系统平台相关的信息,Java程序只需生成在Java虚拟机上运行的字节码,就可以在多种平台上不加 阅读全文
posted @ 2024-08-27 10:09 LilyFlower 阅读(9) 评论(0) 推荐(0) 编辑
摘要:并发工具包-JUC 1. AQS原理 1.1 概述 AQS全称是AbstractQueuedSynchronizer,是阻塞式锁和相关同步器工具的框架(抽象队列同步器) AQS通俗的讲就是给你提供一些方法,让你自己自由的实现自定义锁,其核心就是维持锁的状态和阻塞队列 特点: 用state属性来表示资 阅读全文
posted @ 2024-08-26 20:39 LilyFlower 阅读(27) 评论(0) 推荐(0) 编辑
摘要:第三十八讲-Spring Boot War项目 本讲我们来讲一下如何使用SpringBoot搭建和运行一个war项目。 1. 基本配置 首先在main目录下创建一个文件夹webapp,在该文件夹下创建一个jsp文件hello.jsp: <page contentType="text/html;cha 阅读全文
posted @ 2024-08-21 21:27 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第三十七讲-Spring Boot脚手架搭建 这里呢,我们创建一个Spring Boot脚手架项目,对于学习Spring相关源码的读者来讲,如何创建一个Spring Boot脚手架并不是一个难的事情,这里呢,就不再做演示了,各位读者可以自行创建一个Spring Boot脚手架项目。 我在这里展示一下 阅读全文
posted @ 2024-08-21 21:27 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第三十六讲-MVC处理请求流程 本讲我们来看一下Spring MVC相对完整的处理流程。 当浏览器发送一个请求http:/Toca1host:8080/he11o后,请求到达服务器,其处理流程是: 服务器提供了DispatcherServlet,它使用的是标准Servlet技术 路径:默认映射路径为 阅读全文
posted @ 2024-08-20 18:39 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第三十五讲-HandlerMapping与HandlerAdapter-3 1. SimpleUrlHandlerMapping和HttpRequestHandlerAdapter 这讲我们再介绍一组HandlerMapping和HandlerAdapter:SimpleUrlHandlerMapp 阅读全文
posted @ 2024-08-19 22:26 LilyFlower 阅读(6) 评论(0) 推荐(0) 编辑
摘要:第三十四讲-HandlerMapping与HandlerAdapter-2 这一讲,我们来了解一下RouterFunctionMapping和HandlerFunctionAdapter。 RouterFunctionMapping和HandlerFunctionAdapter是在Spring5.2 阅读全文
posted @ 2024-08-19 19:50 LilyFlower 阅读(6) 评论(0) 推荐(0) 编辑
摘要:第三十三讲-HandlerMapping与HandlerAdapter 1. Spring提供的BeanNameUrlHandlerMapping和SimpleControllerHandlerAdapter 我们之前使用SpringMVC的HandlerMapping与HandlerAdapter 阅读全文
posted @ 2024-08-19 18:51 LilyFlower 阅读(8) 评论(0) 推荐(0) 编辑
摘要:第三十二讲-Tomcat 异常处理 我们前面讲的@ControllerAdvice配合@ExceptionHandler可以处理异常,但是实际上这套组合处理的异常是非常有限的。为什么这么说呢?如果是Spring MVC框架控制器抛出的异常,那么最终可以是由@ControllerAdvice处理的。但 阅读全文
posted @ 2024-08-16 19:13 LilyFlower 阅读(77) 评论(0) 推荐(0) 编辑
摘要:第三十一讲-ControllerAdvice之@ExceptionHandler 本将我们来看一下ControllerAdvice的第四种增强方式:通过在ControllerAdvice类中添加@ExceptionHandler的方法来达到全局处理异常的目的。 我们希望不为每一个控制器创建一个异常处 阅读全文
posted @ 2024-08-14 20:05 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第三十讲-SpringMVC中的异常处理 SpringMVC在执行HandlerAdapter的过程中,也就是执行控制器方法的过程中,例如参数解析,参数名解析,返回值解析,类型转换。数据绑定时的任何一步一旦出现异常,就会立即捕捉该异常,并进行处理!那么在异常注意过程中究竟干了哪些事呢?我们可以看一下 阅读全文
posted @ 2024-08-14 19:05 LilyFlower 阅读(13) 评论(0) 推荐(0) 编辑
摘要:第二十九讲-ControllerAdvice之ResponseBodyAdvice 本讲我们看一下ControllerAdvice的扩展功能-ResponseBodyAdvice ResponseBodyAdvice本质上就是对消息转换的一个扩展点。这里呢,我们来分析一下ResponseBodyAd 阅读全文
posted @ 2024-08-13 21:18 LilyFlower 阅读(1) 评论(0) 推荐(0) 编辑
摘要:第二十八讲-消息转换器MessageConverter 本讲我们来了解一一下消息转换器MessageConverter。其实我们在前面很多地方都用过消息转换器,如上一讲的返回处理器中的@ResponseBody中讲Java对象转为JSON,只不过一笔带过。本讲我们来介绍一下消息转换器。 我们首先看一 阅读全文
posted @ 2024-08-13 19:25 LilyFlower 阅读(7) 评论(0) 推荐(0) 编辑
摘要:第二十七讲-常见的返回值处理器 本讲我们来了解一下常见的返回值处理器的作用 1. 返回值类型为ModelAndView 我们首先编写一段控制器代码: static class Controller { private static final Logger log = LoggerFactory.g 阅读全文
posted @ 2024-08-12 20:04 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第二十六讲-ControlerAdvice之@ModelAttribute ​ 我们首先来了解一下@ModelAttribute注解的用法: 第一种是加在方法参数上 第二种是加在方法上 这两种我们在上一讲已经讲过。我们来看一下上讲的代码: @Configuration public class We 阅读全文
posted @ 2024-08-12 18:20 LilyFlower 阅读(3) 评论(0) 推荐(0) 编辑
摘要:第二十五讲-控制器方法执行流程 我们前面说了,对于HandlerAdapter最重要的功能就是执行控制器中的方法,那么控制器方法包含哪些部分呢?我们看一下下面的这张图; HandlerMethod需要 bean即是哪个Controller method即是Controller中的哪个方法 Servl 阅读全文
posted @ 2024-08-11 11:35 LilyFlower 阅读(5) 评论(0) 推荐(0) 编辑
摘要:第二十四讲-@ControllerAdvise @ControllerAdvice是对所有控制器做一些功能增强,它能提供哪些方面的功能增强呢?其实一共有三种: 一种是@ExceptionHandler:将来控制器抛出异常了,由@ExceptionHandler来处理-->加在方法上 一种是@Mode 阅读全文
posted @ 2024-08-11 10:36 LilyFlower 阅读(14) 评论(0) 推荐(0) 编辑
摘要:第二十三讲-对象绑定与类型转换 1. 底层第一套转换接口实现(Spring提供) 底层第一套接口与实现 Printer: 把其它类型转为String类型 ParserL 把字符串类型转为其它类型 Formatter: 综合Printer和Parser功能 Converter: 把类型S转为类型T 我 阅读全文
posted @ 2024-08-09 18:59 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第二十二讲-获取方法中的参数名 这一讲我们看一下获取方法的参数名称。 要想获取参数名称,就要在参数解析组合器中加入一个参数名称解析器DefaultParameterNameDiscoverer,所以参数名的获取并不是那么简单的。下面我们来探讨一下: 我们写一个简单一点的Java类,然后呢,手动编译这 阅读全文
posted @ 2024-08-08 14:34 LilyFlower 阅读(5) 评论(0) 推荐(0) 编辑
摘要:第二十一讲-不同的参数解析器 前面我们在介绍HandlerAdapter的时候,它在调用控制器方法之前,就要为控制器方法准备好每一个参数,准备参数的工作,当然是交给参数解析器来完成的。本讲我们来了解一下常见的参数解析器,以及这些参数解析器的作用是什么。 前面我们在介绍RequestMappingHa 阅读全文
posted @ 2024-08-07 19:42 LilyFlower 阅读(10) 评论(0) 推荐(0) 编辑
摘要:第二十讲-DispatcherServlet 1. DispatcherServlet初始化时机 我们首先创建一个支持Tomcat WEB的Spring容器: package com.cherry.a20; import org.slf4j.Logger; import org.slf4j.Logg 阅读全文
posted @ 2024-08-06 23:33 LilyFlower 阅读(9) 评论(0) 推荐(0) 编辑
摘要:第十九讲-动态通知调用 所谓的动态和静态是什么意思呢?看下面的代码: @Aspect static class MyAspect{ // 静态通知调用 @Before("execution(* foo(...))") public void before1(){ System.out.println 阅读全文
posted @ 2024-08-05 12:50 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第十八讲 通知调用(责任链模式) AOP有各种通知类型,但是最终都要统一转为环绕通知执行,我们首先看一下代码中的图: package org.springframework.aop.framework; import org.aopalliance.intercept.MethodInvocatio 阅读全文
posted @ 2024-08-04 18:35 LilyFlower 阅读(8) 评论(0) 推荐(0) 编辑
摘要:共享模型之工具 1. 自定义线程池 我们在了解JDK更完善的线程池之前,我们自己先写一个线程池。我们首先分析一下一个线程池的基本设计图: 首先模拟阻塞队列的实现: // 定义一个阻塞队列 class BlockingQueue<T> { // 任务队列 -- 使用双向链表实现 private Lin 阅读全文
posted @ 2024-08-04 12:51 LilyFlower 阅读(13) 评论(0) 推荐(0) 编辑
摘要:第十七讲-Spring中的两种切面 Spring种有两种切面,一种是高级的@Aspect切面,还有一种是低级的Advisor切面,这里的低级指的是比较底层的切面。对于高级切面来讲,@Aspect切面最终都会转为低级切面才会被Spring框架所使用。 如下面的演示: package com.cherr 阅读全文
posted @ 2024-08-03 19:28 LilyFlower 阅读(12) 评论(0) 推荐(0) 编辑
摘要:第十六讲-切点匹配 1. 基于方法的名字进行切点匹配 前面我们已经了解到,Spring使用切点老判断某个目标方法是否进行功能增强,我们前面也使用了AspectJ表达式来匹配某个方法需要进行功能增强。 那么切点到底是怎么匹配并判断我们设置的方法的呢?其实这个判断来自于AspectJExpression 阅读全文
posted @ 2024-08-02 20:03 LilyFlower 阅读(4) 评论(0) 推荐(0) 编辑
摘要:第十五讲-Spring选择代理 在Spring中,存在两个切面,一个是aspect,另一个是advisor,advisor相比于aspect是更细粒度的切面,切面类包含一个通知和切点。而一个切面是由通知和切点组成, 通知表现为一个方法,也就是增强的方法;切点决定了将来目标的哪些方法需要增强。一般为A 阅读全文
posted @ 2024-08-02 18:43 LilyFlower 阅读(2) 评论(0) 推荐(0) 编辑
摘要:第十四讲-Cglib代理原理 1. Cglib代理类的模拟实现 首先准备一个目标类: package com.cherry.chapter1.a14; public class Target { public void save(){ System.out.println("save()"); } 阅读全文
posted @ 2024-08-01 14:06 LilyFlower 阅读(15) 评论(0) 推荐(0) 编辑
摘要:JDK代理原理 1. JDK代理类的模拟实现 JDK动态代理的原理内部实现在Proxy.newInstance方法中,其原理是使用了ASM动态的生成代理类的字节码,我们无法看出对应代理类的Java代码是什么样子的。 因此这里呢,我们模拟一下JDK的代理实现: 我们首先编写一个接口以及接口的实现类: 阅读全文
posted @ 2024-08-01 11:00 LilyFlower 阅读(6) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示