2024-06学习笔记
1.事务与数据库链接的占用
如果用@Transactional注解,那在第一次与数据库交互的时候,就会打开数据库链接,再整个方法执行完,才会关闭数据库链接。
即使后边用的事务传播是required_new,那之前的事务也是被挂起,不会被关闭,也是占用了数据库链接。
所以为了防止链接占用时间过长,最好不要在被@Transactional修饰的方法中,做文件处理或者是操作redis
可以像下边那样写
//MethodA不被@Transactional修饰
MethodA(){MethodB();//被@Transactional修饰的方法,注意B方法和A方法不能在同一个类中MethodC();//文件处理,或者操作redis
}或者,使用编程式事务。execute执行完,数据库链接就会关闭。

 @Transactional是注解式事务,TansactionTemplate是注解式事务
2.事务传播
- REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。
- 这是新创建了一个数据库链接Connection,新事务完成后就关闭那个数据库链接
- NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前不存在事务,则创建一个新的事务。如果主事务提交,则提交所有的嵌套事务。如果任何一个嵌套事务失败,则回滚所有的嵌套事务,但不影响主事务的提交。
- 这个数据库链接用的还是原来的,但是新建了savepoint。如果嵌套事务执行失败,就回滚到指定的savepoint
- 因为外层事务的savepoint在更前边,所以嵌套事务不影响外层事务,但是外层事务回滚时,子事务也回滚。
总结
加入事务(REQUIRED)和嵌套事务(NESTED)都是事务传播机制中的两种传播级别,如果当前不存在事务,那么二者的行为是一致的;但如果当前存在事务,那么加入事务的事务传播级别当遇到异常时会回滚全部事务,而嵌套事务则是回滚部分事务。嵌套事务之所以能回滚部分事务,是因为数据库中存在一个保存点的概念,嵌套事务相对于新建了一个保存点,如果出现异常了,那么只需要回滚到保存点即可,这样就实现了部分事务的回滚。
Nested事务传播的模拟
 
 
3.spring如何处理事务
1. spring检查当前方法以及类上有没有@transactional注解
2. 事务开启后,会在连接中关闭数据库的自动提交
3. 非public得方法,事务不生效,因为spring无法生成代理对象
这是spring源码

4.spring的切面
1.代理模式
这是spring源码

2.切面加载排序
 如果注解相同,比如同为@Before,那就按照代码编写顺序
 如果注解相同,比如同为@Before,那就按照代码编写顺序
5.要实例化一个类必须有beandefinition
6.前后端交互逻辑
1.url匹配
后端启动的时候就把被@Controller修饰的类加载出来,并且找到类上边的@RequestMapping和方法上的@RequestMapping,两个url拼接,形成完整的url
下边是源码

2.返回的时候,不一定使用到视图解析器
 
 
在Spring MVC中,如果你的控制器方法只返回字符串或者JSON串(通常作为RESTful API的响应),通常不需要配置视图解析器(ViewResolver)。
视图解析器主要用于将控制器方法返回的逻辑视图名称解析为实际的视图(如JSP、Thymeleaf模板等),然后渲染到客户端。但是,如果你的方法直接返回字符串或者JSON数据,Spring会将这些数据写入HTTP响应体中,而不是尝试解析为视图。
### 返回字符串
如果你的控制器方法返回一个普通的字符串,Spring MVC将直接将这个字符串作为HTTP响应的内容返回给客户端,而不会将其解析为视图。例如:
```java
@RequestMapping("/hello")
@ResponseBody
public String hello() {
return "Hello, World!";
}
```在这个例子中,`@ResponseBody`注解告诉Spring MVC将方法的返回值直接作为HTTP响应的主体内容,而不会通过视图解析器来渲染。
### 返回JSON
如果你的控制器方法返回一个对象,并且希望将其转换为JSON格式返回给客户端,通常使用`@RestController`注解更为方便,它结合了`@Controller`和`@ResponseBody`的功能。例如:
```java
@RestController
public class ExampleController {@RequestMapping("/user")
public User getUser() {
User user = new User("John Doe", 30);
return user;
}
}
```在这个例子中,Spring MVC会自动将`User`对象转换为JSON格式,并将其作为HTTP响应的内容返回给客户端,而不需要视图解析器的参与。
因此,当你的控制器方法仅返回字符串或者JSON数据时,视图解析器是不必要的。相反,Spring MVC会根据方法的注解(如`@ResponseBody`或`@RestController`)来直接处理返回的数据。
3.前端header中的Accept与后端的produces对比

7.如何注入所有子类
 8.spring中${}和#{}
 8.spring中${}和#{}
 
9.算法相关
1.双指针

2.同构字符串
 
3.二叉树最大深度
 
4.有序数组转为二叉搜索树
二叉搜索树的 左<根<右
 
5.二进制逐位颠倒

>>>无论如何都补0,>>如果有符号位补符号位
 1.我的解决办法
 1.我的解决办法
 

6.异或^=
两数相同,异或为1
1和任何数n异或,结果为n

 7.二叉搜索树两个节点公共祖先
 7.二叉搜索树两个节点公共祖先
 
因为二叉搜索树满足 左<根<右
所以可以分别求两个节点路径
当路径不同时,前一个值就是公共祖先

10.字符串在内存中的分配
 
 
 
 
11.java1.8后map扩容算法
(n - 1) & hash 在计算机科学中经常用于快速计算 hash 值在数组(或哈希表)中的索引位置
这里的 n 通常是数组的长度,而 hash 则是计算出来的哈希值。
相关文章:
 
2024-06学习笔记
1.事务与数据库链接的占用 如果用Transactional注解,那在第一次与数据库交互的时候,就会打开数据库链接,再整个方法执行完,才会关闭数据库链接。 即使后边用的事务传播是required_new,那之前的事务也是被挂起,不会被…...
 
【VUE】封装一个追随鼠标的漂浮组件框架
红色箭头代表鼠标位置,蓝色区域跟随鼠标出现,鼠标进行其他操作的时候,蓝色区域隐藏。 vue全码 <template><divmousemove"updatePosition"mouseleave"hideDiv"class"container":style"{ positi…...
mapstruct与lombok结合使用
问题 如果同时使用mapstruct与lombok,需要多添加一个lombok支持mapstruct的依赖库。 解决 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId> </dependency><dependency><groupId&…...
【SpringBoot】Web开发之URL映射
RequestMapping("/getDataById/{id}") public String getDataById(PathVariable("id") Long id){ return "getDataById:"id; }46 如果URL中的参数名称与方法中的参数名称一致,则可以简化为: RequestMapping("/get…...
 
对递归的一些理解。力扣206题:翻转链表
今天在刷力扣的时候,在写一道翻转链表的题目的过程中,在尝试使用递归解决该问题的时候,第一版代码却每次都返回的是null,这个错误让我尝试去debug了一下,最终找出了问题,并且让我对递归有了一些更深的理解&…...
Kafka面试三道题
针对Kafka的面试题,从简单到困难,我可以给出以下三道题目: 1. Kafka的基本概念与优势 问题:请简要介绍Kafka是什么,并说明它相比传统消息队列的优势有哪些? 答案: Kafka定义:Apa…...
 
C/C++编程-算法学习-数字滤波器
数字滤波器 一阶低通滤波器结论推导11. 基本公式推导2. 截止频率 和 采样频率 推导 实现 二阶低通滤波器实现1实现2 一阶低通滤波器 结论 其基本原理基于以下公式: o u t p u t [ n ] α ∗ i n p u t [ n ] ( 1 − α ) ∗ o u t p u t [ n − 1 ] output[n] …...
 
maven介绍 搭建Nexus3(maven私服搭建)
Maven是一个强大的项目管理工具,它基于项目对象模型(POM:Project Object Model)的概念,通过XML格式的配置文件(pom.xml)来管理项目的构建 Maven确实可以被视为一种工程管理工具或项目自动化构…...
 
电商项目之如何判断线程池是否执行完所有任务
文章目录 1 问题背景2 前言3 4种常用的方法4 代码4.1 isTerminated()4.2 线程池的任务总数是否等于已执行的任务数4.3 CountDownLatch计数器4.4 CyclicBarrier计数器 1 问题背景 真实生产环境的电商项目,常使用线程池应用于执行大批量操作达到高性能的效果。应用场景…...
 
【前端 15】Vue生命周期
Vue生命周期 在Vue.js中,了解组件的生命周期对于开发者来说是至关重要的。Vue的生命周期指的是Vue实例从创建到销毁的一系列过程,每个阶段都对应着特定的生命周期钩子(或称为生命周期方法),允许我们在不同的时间点加入…...
 
PCIe总线-Linux内核PCIe软件框架分析(十一)
1.简介 Linux内核PCIe软件框架如下图所示,按照PCIe的模式,可分为RC和EP软件框架。RC的软件框架分为五层,第一层为RC Controller Driver,和RC Controller硬件直接交互,不同的RC Controller,其驱动实现也不相…...
 
视觉SLAM第二讲
SLAM分为定位和建图两个问题。 定位问题 定位问题是通过传感器观测数据直接或间接求解位置和姿态。 通常可以分为两类:基于已知地图的定位和基于未知地图的定位。 基于已知地图的定位 利用预先构建的地图,结合传感器数据进行全局定位。SLAM中的全局…...
 
mysql1055报错解决方法
目录 一、mysql版本 二、 问题描述 三、解决方法 1.方法一(临时) 2.方法二(永久) 一、mysql版本 mysql版本:5.7.23 二、 问题描述 在查询时使用group by语句,出现错误代码:1055…...
Java的@DateTimeFormat注解与@JsonFormat注解的使用对比
Java的DateTimeFormat注解与JsonFormat注解的使用对比 在Java开发中,处理日期和时间格式时,我们经常会使用到DateTimeFormat和JsonFormat注解。这两个注解主要用于格式化日期和时间,但在使用场景和功能上有所不同。本文将详细介绍这两个注解…...
 
德国云手机:企业移动办公解决方案
在现代商业环境中,移动办公已经成为一种趋势。德国云手机作为一种高效的解决方案,为企业提供了强大的支持。本文将探讨德国云手机如何优化企业的移动办公环境。 一、德国云手机的主要优势 高灵活性 德国云手机具有高度的灵活性,能够根据用户需…...
 
【React】useState:状态管理的基石
文章目录 一、什么是 useState?二、useState 的基本用法三、useState 的工作原理四、高级用法五、最佳实践 在现代前端开发中,React 是一个非常流行的库,而 useState 是 React 中最重要的 Hook 之一。useState 使得函数组件能够拥有自己的状态…...
商品中心关于缓存热key的解决方案
缓存热key一旦被击穿,流量势必会打到数据库,如果数据库崩了,游戏直接结束。 从两点来讨论:如何监控、如何解决。 如何监控 通过业务评估:比如营销活动推出的商品或者热卖的商品。基于LRU的命令,redis-cl…...
 
【Python系列】Parquet 数据处理与合并:高效数据操作实践
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
 
大脑自组织神经网络通俗讲解
大脑自组织神经网络的核心概念 大脑自组织神经网络,是指大脑中的神经元通过自组织的方式形成复杂的网络结构,从而实现信息的处理和存储。这一过程涉及到神经元的生长、连接和重塑,是大脑学习和记忆的基础。其核心公式涉及神经网络的权重更新…...
org.springframework.context.annotation.DeferredImportSelector如何使用?
DeferredImportSelector 是 Spring 框架中一个比较高级的功能,主要用于在 Spring 应用上下文的配置阶段延迟导入某些组件或配置。这个功能特别有用,比如在处理依赖于其他自动配置的场景,或者当你想基于某些条件来决定是否导入特定的配置类时。…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。  - 个性化梦境…...
 
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
 
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了  先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
 
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
 
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
 
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
 
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...


 
 