2024-06学习笔记

news2024/9/21 20:41:59

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,那就按照代码编写顺序

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中${}和#{}

 

9.算法相关

1.双指针

2.同构字符串

 

3.二叉树最大深度

 

4.有序数组转为二叉搜索树

二叉搜索树的 左<根<右

 

 5.二进制逐位颠倒

 >>>无论如何都补0,>>如果有符号位补符号位

 1.我的解决办法

 6.异或^=

两数相同,异或为1

1和任何数n异或,结果为n

 7.二叉搜索树两个节点公共祖先

因为二叉搜索树满足 左<根<右

所以可以分别求两个节点路径

当路径不同时,前一个值就是公共祖先

10.字符串在内存中的分配

 

 

 

 

 

11.java1.8后map扩容算法

 (n - 1) & hash 在计算机科学中经常用于快速计算 hash 值在数组(或哈希表)中的索引位置

这里的 n 通常是数组的长度,而 hash 则是计算出来的哈希值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1947150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端面试宝典【Javascript篇】【3】

欢迎来到《前端面试宝典》&#xff0c;这里是你通往互联网大厂的专属通道&#xff0c;专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习&#xff0c;无论是一线大厂还是初创企业的面试&#xff0c;都能自信满满地展现你的实力。 核心特色&#xff1a; 独家实战案例…

大语言模型-GPT2-Generative Pre-Training2

一、背景信息&#xff1a; GPT2是2019年由OpenAI 提出的预训练语言模型。 GPT2提出语言模型式无监督的多任务学习 。旨在通过无监督学习也能达到和finetune一样的效果&#xff0c;并且拥有更强的泛化能能力。 即提出利用语言模型做下游任务时&#xff0c;不需要下游任务的任何…

Ubuntu 22.04如何设置中文输入法

前言 近期整理了一下之前在ubuntu 22.04 中如何设置中文输入法的过程&#xff0c;对于本人比较适应读中文写中文来说&#xff0c;这是我安装后的第一步。 一、流程 1.1 安装中文语言包&#xff08;如果还未安装&#xff09; 首先是安装中文语言包&#xff0c;直接在终端输入…

Elasticsearch集群配置-节点职责划分 Hot Warm 架构实践

前言 本文主要讲了ES在节点部署时可以考虑的节点职责划分&#xff0c;如果不考虑节点部署&#xff0c;那么所有节点都会身兼数职&#xff08;master-eligible &#xff0c;data&#xff0c;coordinate等&#xff09;&#xff0c;这对后期的维护拓展并不利&#xff0c;所以本文…

SSRF中伪协议学习

SSRF常用的伪协议 file:// 从文件系统中获取文件内容,如file:///etc/passwd dict:// 字典服务协议,访问字典资源,如 dict:///ip:6739/info: ftp:// 可用于网络端口扫描 sftp:// SSH文件传输协议或安全文件传输协议 ldap://轻量级目录访问协议 tftp:// 简单文件传输协议 gopher…

算法——滑动窗口(day8)

30.串联所有单词的子串 30. 串联所有单词的子串 - 力扣&#xff08;LeetCode&#xff09; 必看&#xff01;&#xff01;&#xff01;本题是我们上次写的438.异位词的进阶版&#xff0c;可参考本篇文章&#xff1a;算法——滑动窗口&#xff08;day7&#xff09;-CSDN博客来…

c++笔记2

目录 2.2 栈底&#xff08;bottom&#xff09; } 大数乘大数 节点&#xff1a;包含一个数据元素及若干指向子树分支的信息 。 节点的度&#xff1a;一个节点拥有子树的数目称为节点的度 。 叶子节点&#xff1a;也称为终端节点&#xff0c;没有子树的节点或者度为零的节点…

vue3+openLayers触摸事件显示弹窗

<template><!--地图--><div class"distributeMap" id"distributeMap"></div><!--弹窗--><section ref"popup" id"popupDiv" class"popup">{{ state.popupParams.name }}</section&g…

OpenGauss和GaussDB有何不同

OpenGauss和GaussDB是两个不同的数据库产品&#xff0c;它们都具有高性能、高可靠性和高可扩展性等优点&#xff0c;但是它们之间也有一些区别和相似之处。了解它们之间的关系、区别、建议、适用场景和如何学习&#xff0c;对于提高技能和保持行业敏感性非常重要。本文将深入探…

电脑ip地址怎么改?修改技巧大放送!

在现代网络环境中&#xff0c;IP地址的设置对于连接互联网和局域网至关重要。无论是因为网络配置的需求&#xff0c;还是出于隐私和安全考虑&#xff0c;学会更改电脑的IP地址是一项有用的技能。本文将介绍电脑ip地址怎么改的3种方法&#xff0c;帮助您根据不同需求灵活调整网络…

Go并发GMP调度模型

如何知道一个对象是分配在栈上还是堆上&#xff1f; Go和C不同&#xff0c;Go的逃逸分析是在编译器完成的&#xff1b;go局部变量会进行逃逸分析。如果变量离开作用域后没有被引用&#xff0c;则优先分配到栈上&#xff0c;否则分配到堆上。那么如何判断是否发生了逃逸呢&#…

VMWare 16 安装

1、下载地址 VMware-workstation-full-16.2.4-20089737 2、激活码 VM16&#xff1a;ZF3R0-FHED2-M80TY-8QYGC-NPKYF 3、安装步骤 修改一下【安装位置】&#xff0c;将【增强型键盘驱动程序(需要重新引导以使用此功能()此功能要求主机驱动器上具有 10MB 空间。】【将 wMware…

【LLM】-07-提示工程-聊天机器人

目录 1、给定身份 1.1、基础代码 1.2、聊天机器人 2、构建上下文 3、订餐机器人 3.1、窗口可视化 3.2、构建机器人 3.3、创建JSON摘要 利用会话形式&#xff0c;与具有个性化特性&#xff08;或专门为特定任务或行为设计&#xff09;的聊天机器人进行深度对话。 在 Ch…

钉钉 ai卡片 stream模式联调

sdk连接 新建卡片模板下载node.js sdkconfig.json 配置应用信息 启动项目npm i npm run build npm run start连接成功 获取卡片回调 注册卡片回调事件调用https://api.dingtalk.com/v1.0/card/instances 创建卡片实例&#xff0c;返回实例Id //参数结构 {"cardTempla…

同花顺股票数据逆向:Cookie加密和Hook注入

&#x1f50d; 思路与步骤详解 &#x1f310; 抓包解析接口 首先&#xff0c;我们使用抓包工具对同花顺的股票数据接口进行分析&#xff0c;发现其中的Cookie参数经过了加密处理。 接下来&#xff0c;我们需要深入挖掘这些加密参数的生成位置。 &#x1f6e0; hook注入 对于…

信号的运算

信号实现运算&#xff0c;首先要明确&#xff0c;电路此时为负反馈电路&#xff0c;当处于深度负反馈时&#xff0c;可直接使用虚短虚断。负反馈相关内容可见&#xff1a;放大电路中的反馈_基极反馈-CSDN博客https://blog.csdn.net/qq_63796876/article/details/140438759 一、…

【深度学习总结】基于U-Mamba使用nnUNetv2处理BraTS挑战赛数据

基于U-Mamba使用nnUNetv2处理BraTS挑战赛数据 【深度学习总结】基于U-Mamba使用nnUNetv2处理BraTS挑战赛数据U-Mamba介绍数据集下载环境准备数据集准备运行其他2D网络结构UMambaBot的模型结构UMambaEnc的模型结构 【深度学习总结】基于U-Mamba使用nnUNetv2处理BraTS挑战赛数据 …

matlab仿真 数字基带传输(下)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第六章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; clear all Fd1;%符号采样频率 Fs10;%滤波器采样频率 r0.2;%滤波器滚降系数 delay4;%滤波器时延 [num,den]rcosine(Fd,Fs,defau…

使用LLaMA-Factory对Llama3-8B-Chinese-Chat进行微调

文章目录 模型及数据&#xff1a;模型下载数据 LLaMA-Factory启动拉取代码启动webui 模型训练数据导入数据预览设置模型路径配置参数及参数的保存开始训练 过程观察加载模型、对话模型导出、再次加载 模型及数据&#xff1a; 模型下载 使用基于中文数据训练过的 LLaMA3 8B 模…

Java基本数据类型与String类型的转换

目录 基本数据类型和Strng类型的转换 第一种方法 第二种方法 将字符串转成字符 注意事项 本章练习题 题1 题2 基本数据类型和Strng类型的转换 第一种方法 使用号和" "即可完成转换 第二种方法 第二种方法是通过基本类型的包装类调用parsexx方法 将字符…