- 博客(199)
- 资源 (10)
- 收藏
- 关注
原创 Spring事务核心接口:PlatformTransactionManager
PlatformTransactionManager是Spring框架中事务管理的核心接口,它负责管理事务的创建、提交和回滚等操作。在Spring中,事务管理是通过PlatformTransactionManager和TransactionManager接口来实现的。PlatformTransactionManager是一个更高级的接口,它封装了TransactionManager接口,提供了更丰富的事务管理功能。
2024-03-25 22:28:27 740
原创 Spring事务核心:声明式事务&注解式事务
在Spring中,事务管理是一个非常重要的特性,它可以帮助开发者在应用程序中实现事务控制。Spring提供了两种事务管理方式:声明式事务和注解事务。
2024-03-25 22:27:57 881
原创 Spring核心接口:HandlerMethodArgumentResolver参数解析器
在Spring中,参数解析器是一个接口,它负责将HTTP请求中的参数解析为控制器方法的参数。Spring提供了许多内置的参数解析器,用于处理不同类型的请求参数,例如查询参数、路径变量、请求头、请求体等。开发人员还可以自定义参数解析器,以处理特定的请求参数。除了Spring提供的内置参数解析器外,开发人员还可以自定义参数解析器,以处理特定的请求参数。自定义参数解析器需要实现HandlerMethodArgumentResolver接口,并在配置类中将其添加到WebMvcConfigurer中。
2024-03-25 22:26:02 821
原创 Spring核心方法:Refresh全解(WebMVC如何装配、关联)
需要注意的是,这些方法的具体实现取决于具体的ApplicationContext实现类,例如XmlWebApplicationContext、AnnotationConfigApplicationContext等。因此,在具体使用时需要结合具体的实现类来学习和理解这些方法。
2024-03-16 19:12:22 1127
原创 Spring容器(ApplicationContext)刷新过程
Spring Boot是一个用于快速构建基于Spring框架的应用程序的平台。Spring Boot提供了许多有用的特性,其中一个特性是StartUpStep接口。StartUpStep接口用于在应用程序启动时执行一些自定义操作。在本文中,我们将介绍StartUpStep接口,以及如何在Spring Boot应用程序中使用它来执行自定义的启动任务。StartUpStep是Spring Boot中的一个接口,它在Spring Boot 2.2中被引入。
2024-03-16 19:11:16 916
原创 Vue中nextTick一文详解
nextTick在这篇文章中,我们详细介绍了 Vue 中的nextTick。我们介绍了nextTick的基本概念、使用方法、原理以及应用场景。需要注意的是,nextTick是一个非常重要的 API,它可以帮助我们在更新 DOM 后获取更新后的 DOM 状态,执行依赖于 DOM 的操作和第三方库。因此,在实际应用中,我们需要根据具体情况灵活运用nextTick。以下是一个表格,列出了本文中介绍的nextTick知识点示例代码nextTick的基本概念nextTick的使用方法nextTick的原理。
2024-03-16 19:06:02 846
原创 Vue中Diff算法一文详解
Diff 算法是一种比较两个对象之间差异的算法。在 Vue 中,Diff 算法用于比较虚拟 DOM 中两棵树的差异,从而最小化对真实 DOM 的操作。当组件的数据发生变化时,Vue 会根据新数据生成一棵新的虚拟 DOM 树,然后使用 Diff 算法比较新旧两棵树的差异,找出需要更新的节点,最终将变化的部分更新到真实 DOM 中。在这篇文章中,我们详细介绍了 Vue 中的 Diff 算法。我们介绍了 Diff 算法的基本概念,以及 Vue 中 Diff 算法的实现方式。
2024-03-16 19:05:03 888
原创 Vue中的Vnode虚拟Dom一文详解
在这篇文章中,我们介绍了 Vue 中的 VNode 以及其各个知识点。我们介绍了 VNode 的结构、创建、渲染和 diff 算法,并提供了详细的示例代码。我们还介绍了 Vue 中的一些优化策略,用于提高虚拟 DOM 的性能。VNode 比操作真实 DOM 节点要快得多,因为它只需要更新变化的部分,而不需要重新渲染整个组件。VNode 可以在服务器端渲染中使用,以提高页面加载速度。VNode 的 diff 算法可以快速地比较两棵树的差异,以最小化 DOM 操作次数。
2024-03-16 19:04:19 1012
原创 Spring核心接口:ObjectProvider接口
它可以用于在需要延迟获取 bean 或在需要对 bean 进行多次访问时,减少 bean 的创建次数和提高应用程序性能。ObjectProvider 和隐式注入可以结合使用,以实现对 bean 的延迟访问和自动注入。例如,可以在一个 bean 中注入 ObjectProvider,然后在需要使用 AnotherBean 时,调用 ObjectProvider 的。在使用隐式注入时,Spring 会自动寻找与要注入的 bean 类型匹配的 bean,并将其注入到需要使用的地方。
2024-03-13 22:42:09 387
原创 Spring核心接口:BeanFactory接口
编号接口/实现类名称描述1BeanFactory (接口)Spring IoC 容器的基础接口,提供了最基本的依赖注入功能2ListableBeanFactory (接口)BeanFactory 的子接口,提供了查找 Bean 定义和 Bean 实例的功能3HierarchicalBeanFactory (接口)BeanFactory 的子接口,提供了层次化 Bean 工厂的功能4ConfigurableBeanFactory (接口)
2024-03-13 22:41:30 856
原创 Spring神器:SpEl表达式
Spring Expression Language (SpEL) 是Spring框架提供的一种强大的表达式语言,它允许开发人员在运行时动态地计算表达式,并访问和操作对象图。SpEL是一种基于表达式的语言,它支持各种操作符、函数和变量,可以用来执行各种复杂的计算和数据操作。SpEL的语法类似于Java表达式语言,但它更加强大和灵活。SpEL表达式可以用在Spring配置文件中,也可以用在代码中。在Spring配置文件中,SpEL表达式可以用来设置Bean的属性值,或者用来执行一些条件判断和循环操作。
2024-03-13 22:39:38 375
原创 Spring核心接口:InstanceStrategy接口
CGLIB实例化策略是Spring中用来控制CGLIB创建代理对象的策略。在Spring中,CGLIB通过一个名为Enhancer的类来创建代理对象。Enhancer会为被代理类创建子类,并在子类中插入一些拦截器逻辑。CGLIB创建代理对象的过程是通过一个名为的接口来控制的。和。
2024-03-13 22:39:01 373
原创 Spring具体拓展点:后置处理器
除了使用Spring提供的内置后置处理器,我们还可以通过实现或接口来创建自定义后置处理器。@Component@Override// 在这里编写自定义逻辑,例如修改bean的定义或注册新的bean@Component@Override// 在这里编写自定义逻辑,例如在bean初始化之前进行验证或修改属性@Override// 在这里编写自定义逻辑,例如在bean初始化之后执行额外的设置或处理。
2024-03-13 22:38:04 872
原创 深入理解Spring的ApplicationContext:案例详解与应用
如果说是Spring的心脏,那么就是完整的身躯了。由派生而来,提供了更多面向实际应用的功能,是“应用的容器”。通过本文的学习,您应该对有了更深入的理解。它不仅是Spring框架的核心组件,也是您在构建企业级应用程序时的得力助手。希望本文能够帮助您在实际开发中更好地利用,构建出更加健壮和可维护的应用程序。
2024-03-13 22:27:03 390
原创 Spring神器:时间多播器ApplicationEventMulticaster
Spring的时间多播器(ApplicationEventMulticaster)是Spring事件机制的核心组件之一。它负责将Spring应用程序中发布的事件分发给感兴趣的监听器。在Spring中,事件机制是一种发布-订阅模式的实现。事件发布者将事件发布到ApplicationEventMulticaster中,然后ApplicationEventMulticaster将事件分发给所有注册的事件监听器。这种机制使得Spring应用程序中的组件可以更好地解耦,并且可以更灵活地响应事件。
2024-03-12 21:24:17 923
原创 Spring神器:Environment环境配置
在Spring框架中,Environment是一个很重要的组件,它提供了对当前应用程序运行环境的抽象。Environment是Spring中的一个接口,它代表了应用程序运行时的环境,包括应用程序的配置信息、系统属性、环境变量、JVM属性等。Environment接口提供了许多方法,用于获取不同类型的属性值。
2024-03-12 21:23:45 388
原创 Spring神器:SpEl表达式
Spring Expression Language (SpEL) 是Spring框架提供的一种强大的表达式语言,它允许开发人员在运行时动态地计算表达式,并访问和操作对象图。SpEL是一种基于表达式的语言,它支持各种操作符、函数和变量,可以用来执行各种复杂的计算和数据操作。SpEL的语法类似于Java表达式语言,但它更加强大和灵活。SpEL表达式可以用在Spring配置文件中,也可以用在代码中。在Spring配置文件中,SpEL表达式可以用来设置Bean的属性值,或者用来执行一些条件判断和循环操作。
2024-03-12 21:23:04 797
原创 Vue3 中的代理原理详解
### Vue3 中的代理原理详解Vue3 中引入了代理(Proxy)机制,取代了 Vue2 中的 Object.defineProperty() 机制,用于实现数据响应式。代理机制是 ES6 中新增的特性,它可以用来自定义对象中的操作,比如属性查找、赋值、枚举、函数调用等。在 Vue3 中,代理机制用于拦截对象中的属性访问和修改,从而实现数据的响应式。#### 什么是代理?代理(Proxy)是 ES6 中新增的一个特性,它可以用来自定义对象中的操作。代理是一个对象,它可以拦截并重定义基本操作,
2024-03-07 16:59:05 992 1
原创 Fetch的使用
# Fetch的使用Fetch API 是一个用于发起 HTTP 请求的新式 API,它比传统的 XMLHttpRequest 更加强大和灵活。Fetch API 返回的是一个 Promise 对象,因此可以很方便地使用 async/await 来处理请求的响应。以下是 Fetch API 的基本用法:```javascriptfetch('https://api.example.com/data') .then(response => response.json()) .then(d
2024-03-07 16:58:00 848
原创 Vue的Diff详解
在 Vue 中,当我们更新数据时,Vue 会自动更新视图,这个过程就是虚拟 DOM 的 diff 算法。虚拟 DOM 是一种以 JavaScript 对象的形式表示 DOM 节点的方式,它可以更快地计算出需要更新的节点,从而提高渲染效率。接下来,我们来详细介绍一下 Vue 中的 diff 算法。### 什么是 diff 算法?diff 算法是一种比较两个对象的差异的算法,在 Vue 中,它用来比较新旧虚拟 DOM 的差异,从而找出需要更新的节点。### Vue 中的 diff 算法是如何工作
2024-03-07 16:54:27 402
原创 Vue的属性和方法($符号说明)
# Vue的属性和方法在 Vue.js 中,$ 是一个特殊前缀,用于表示 Vue 实例或 Vue 组件上的内置属性和方法。这些属性和方法被称为“实例属性”或“实例方法”。以下是一些常见的实例属性和方法:* `$data`:Vue 实例的数据对象。* `$props`:Vue 组件的 props 对象。* `$el`:Vue 实例或组件的根 DOM 元素。* `$refs`:一个对象,包含所有具有 ref 属性的子组件和 DOM 元素。* `$options`:Vue 实例或组件的选项对象
2024-03-07 16:53:10 485
原创 ES6新特性
ECMAScript 6 (ES6),也称为 ECMAScript 2015,是 JavaScript 语言的下一代标准,于 2015 年正式发布。使用 const 命令声明的变量必须在声明时赋值,一旦声明,就不能再改变它的值。ES6 新增了一些对象的方法,比如 Object.assign()、Object.is()、Object.keys()、Object.values() 等。ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范。
2024-03-07 16:51:40 877
原创 Vue实例声明详解
在 Vue 3.x 中,使用 `createApp` 方法创建一个 Vue 实例,代码如下:```javascriptimport { createApp } from 'vue';const app = createApp({ // 选项});```在创建 Vue 实例时,可以传入一个选项对象,该对象可以包含以下属性:* `data`:一个返回数据对象的函数。* `methods`:一个包含方法的对象。* `computed`:一个包含计算属性的对象。* `watch`:一
2024-03-07 16:50:37 489
原创 v-mode详解以及具体的使用示例
在 Vue.js 中,组件是可重用的 Vue 实例,它们拥有自己的数据和方法,并可以接受来自父组件的 props 数据。在组件中使用 `v-model` 时,可以实现组件和父组件之间的双向数据绑定。组件中使用 `v-model` 的原理是:父组件将一个值传递给子组件的 props 属性,子组件通过 `$emit` 方法触发一个自定义事件,将新值传递回父组件。父组件接收到新值后,更新数据,从而实现双向绑定。在组件中使用 `v-model` 时,需要在组件中定义一个 `model` 选项,该选项用于指定
2024-03-07 16:49:21 551
原创 数据结构与算法之Floyd算法-最短路径问题
# Floyd算法-最短路径问题# 算法结束Floyd算法:求出每一对顶点之间的最短路径**核心**:使用动态规划思想,将问题的求解分为多个阶段:对于n个顶点的图G,求任意一对顶点V_i->V_j之间的最短路径可分为如下几个阶段:* 初始:不允许在其他顶点中转,最短路径是?* 0:若允许在$V_0$中转,最短路径是?* 1:若允许在$V_0,V_1$中转,最短路径是?* 2:若允许在$V_0,V_1,V_2$中转,最短路径是?* ...* n-1:若允许在$V_0,V_1,V_
2023-09-17 19:50:41 227
原创 数据结构与算法之树、森林与二叉树的转换(手绘)
> 视频讲解:[【数据结构】树、二叉树、森林直接的转换_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Sq4y1M7cs)# 树转换成二叉树## 原则:1. 给兄弟加线2. 给出除长子外的结点去线【第一个连接的节点就是长子】3. 层次调整,兄弟节点变成右子元素【书上说:以树根为轴心,顺时钟旋转 45 度】## 步骤展示### 连线![GIF 2022-9-17 8-56-25](assets/GIF 2022-9-17 8-56
2023-09-17 19:30:01 662
原创 邮箱转发工具类
以下是完整的Java代码,其中包含了两个静态方法,分别用于发送纯文本邮件和包含HTML内容的邮件。两个方法的参数列表基本相同,分别为:from:发送方邮箱地址,可以是一个字符串数组,用于支持多发件人。to:接收方邮箱地址,可以是一个字符串数组,用于支持多收件人。subject:邮件标题,字符串类型。content:邮件内容,字符串类型,可以是纯文本或HTML。host:SMTP服务器主机名,字符串类型,。port:SMTP服务器端口号,整型,一般为465或587。
2023-04-12 21:57:49 809 1
原创 阿里云视频点播服务Vod工具类——实现视频上传、删除、播放
需要注意的是,你需要将ACCESS_KEY_ID、ACCESS_KEY_SECRET替换成你自己的阿里云账号的AccessKey信息,将REGION_ID替换成你自己的VOD服务所在的区域。同时,视频文件的路径需要根据你自己的实际情况来修改。如果报错或者是下载不下来,这里需要你把maven的镜像调成aliyun的才行。
2023-04-05 21:08:47 514
原创 Vue学习之Vue的生命周期详细解释
mounted(挂载后) 在组件被挂载到页面之后调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。beforeMount(挂载前) 在组件被挂载到页面之前调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。beforeUpdate(更新前) 在组件更新之前调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。updated(更新后) 在组件更新之后调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。
2023-03-21 10:22:16 1433
原创 Vue学习之VueRouter的路由钩子使用
VueRouter提供了一些路由钩子函数,允许开发者在不同的路由生命周期阶段执行自定义逻辑,从而实现更为灵活的路由控制。执行顺序:全局前置守卫 ➜ 组件内前置守卫 ➜ 路由独享的守卫 ➜ 路由自身的钩子函数 ➜ 组件内的后置钩子 ➜ 全局后置钩子。VueRouter提供了多个路由钩子函数,用于在路由发生变化时执行某些操作或判断条件。在进入该路由前调用,但是此时该组件还未被创建。因此无法访问组件实例(this),可以通过next(vm => {})方式访问。在当前路由更新但是该组件被复用时调用。
2023-03-16 20:15:42 2289
原创 Vue学习之VueRouter的基本用法(多而全)
重定向是指将一个路由重定向到另一个路由,可以是一个字符串或者一个路由配置对象。在Vue Router中,我们可以在路由配置中使用。路由元信息是指在路由配置中定义的一些额外信息,例如页面标题、页面描述、页面关键字等。命名路由是指在路由配置中为路由命名,以便在代码中使用。在Vue Router中,我们可以通过配置子路由来实现路由嵌套。在Vue Router中,我们可以在路由配置中使用冒号。这个方法会在每次路由跳转后执行,可以用来做一些页面切换后的处理,例如页面滚动到顶部等。在该函数中,可以指定返回的位置。
2023-03-16 19:35:58 2947
原创 QB图床白嫖艺术-github+公共CDN代理
CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。由于某些原因,很多公用免费的 CDN 资源在中国大陆并不很好用,就算是付费的,也有一定的限制,例如每天的刷新次数有限之类的。那有没有一款造福人类的,或者造福中国大陆的公用 CDN 呢?
2022-09-30 21:43:48 775
原创 数据结构与算法之删除以x为值的节点的子树
已知二叉树以二叉链表存储,编写算法完成:对于树中每个元素值为x的结点,删去以它为根的子树,并释放相应的空间。
2022-09-17 10:53:49 1282
原创 数据结构与算法之构建二叉搜索树
定义:遍历二叉树是以一定的跪着将二叉树中的结点排列成有一个线形序列,从而得到几种遍历序列,使得该序列中的每个结点(第一个和最后一个节点除外)都有一个直接前驱和直接后继。直接前驱和直接后驱使按照遍历序列的顺序来的(不是逻辑上的左右子树或父子关系)。规定:若无左子树,令lchild指向其前驱结点;若无右子树,令rchild指向其后继节点。
2022-09-17 10:52:12 693
原创 数据结构与算法之对于递归的理解
为什么 function 需要 call 自己?因为大问题(Big problem)可以分解成小问题(sub problems).小问题通常很容易解答!例如:跑步 10km 很难,但是跑步 10km =跑步 9km+ 先跑 1km,后者不再是一个艰难的任递归是一种非常直观的解决复杂问题的方法。(重点就在于你怎么去把这个问题抽象出简单的几步)递归分两步:Base Case+Recursion Relation。
2022-09-17 10:50:30 225
原创 数据结构与算法之交换二叉树左右子树
# 题目![image](assets/image-20220913103238-m8nudwk.png)# 思想递归交换即可,前/中/后序皆可# 代码实现## 简洁版```javapublic TreeNode swapLeftAndRightNode(TreeNode root) { if(root!=null){ swapLeftAndRightNode(root.left); swapLeftAndRightNode(root.rig
2022-09-17 10:44:23 187
原创 数据结构与算法之从前序与中序遍历序列构造二叉树
## 试题部分### 做表法【做完之后一定要验证】主要内容就是使用**做表法**来快速确定二叉树的结构,这里贴上up主原视频链接:> [无脑秒解!已知先/后序遍历与中序遍历,求后/先序遍历。_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Xu411d7qf)#### 原则:1. 两个序列中必须含有**中序遍历序列**才能确定唯一的二叉树序列2. 在表格中: 1. **中序遍历序列**表示表格的**行表头**(首行)
2022-09-17 10:41:14 884
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人