接下来的笔记都会以难点与一些不常见的方法为主,一些重复的crud并不会出现哦

ThreadLocal类

ThreadLocal 并不是一个Thread,而是Thread的局部变量,它用于创建线程局部变量

  • 核心思想:每个线程都有自己独立的变量副本。这意味着,即使多个线程使用同一个 **<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">ThreadLocal</font>** 对象,它们也无法看到或修改彼此的变量值。这完美地避免了多线程环境下的共享资源竞争问题,无需使用同步(synchronized)。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
  • 简单比喻:就像一个公司(进程)里有多个员工(线程)。公司提供了一个储物柜(**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">ThreadLocal</font>** 对象),但这个储物柜很神奇。每个员工用他的工卡去开这个储物柜时,打开的都是只属于他自己的那个小格子。员工A看不到员工B格子里的东西,反之亦然。这个公共的储物柜(**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">ThreadLocal</font>**)只是提供了访问各自独立空间的“钥匙”或“机制”。

在本项目中,当我们在新增员工的时候,需要表明是谁对新增员工进行了创建和修改,那么我们就需要拿到当前登录用户的Token,并对其解析,就可以得到这两个值

先创建使用静态工具类BaseContext实现ThreadLocal

使用BaseContext进行存储,后续在调用时,只需在调用处使用getCurrentId()方法,便可以动态的得到当前操作的id

分页查询

这样主要使用了PageHelper插件来简化分页代码的开发

select * from employee后面会自动补上limit(),括号内为传递的参数

  • 要使用的依赖:

  • 员工分页查询的实现

时间格式化

对时间字段的显示进行统一的规定的两种方法:

  1. 在属性上加上注解@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”),对日期进行格式化

但这种方式,需要在每个时间属性上都要加上该注解,使用较麻烦,不能全局处理。

  1. 在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对日期类型进行格式处理

自定义消息转换器,可以对全局的变量有效,因为这是我们自己定义的配置类,会在全局生效

/*** 扩展Spring MVC框架的消息转换器-->主要用于日期* @param converters*/
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("扩展消息转换器...");//创建一个消息转换器对象MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();//需要为创建的消息转换器对象设置一个对象转换器,对象转换器可以将java对象序列化为json数据messageConverter.setObjectMapper(new JacksonObjectMapper());//将上面的消息转换器对象追加到mvc框架的转换器集合中converters.add(0, messageConverter);
}

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式12-适配器模式

定义 Adapter Partern: 将一个类的接口变换成客户端所期待的另一种接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 场景 系统需要使用现有的类&#xff0c;而这些类的接口不符合系统的需要。 典型场景&#xff1a;集成第三方库、遗留系统代…

VGG改进(6):基于PyTorch的VGG16-SE网络实战

1. 引言&#xff1a;注意力机制在计算机视觉中的重要性近年来&#xff0c;深度学习在计算机视觉领域取得了巨大成功&#xff0c;从图像分类到目标检测&#xff0c;各种复杂任务都获得了前所未有的性能提升。然而&#xff0c;传统的卷积神经网络&#xff08;CNN&#xff09;在处…

[电商网站-动态渲染商品-尺寸、尺码、颜色图片等];库存缺货状态动态对应。

目录 描述&#xff1a; 数据结构 组件代码文件 描述&#xff1a; 自动处理SKU数据生成规格属性列表 支持用户选择不同规格组合 智能禁用无库存选项 自动匹配当前选择对应的SKU信息 通过视觉样式区分可选/不可选状态 该组件采用Vue实现&#xff0c;通过计算属性和响应式数据…

论《运动战》

运动战的本质是以机动换主动&#xff0c;以时间换空间&#xff0c;通过高度的流动性、主动的位移和灵活的战术选择&#xff0c;在动态中创造并捕捉战机&#xff0c;最终以较小的代价换取最大的胜利。它是一种非对称的、主动的作战哲学&#xff0c;其核心不在于一城一地的得失&a…

DVWA靶场通关笔记-CSRF(Impossible级别)

目录 一、查看源码 二、功能分析 三、CSRF防范分析 1、CSRF令牌验证机制 &#xff08;1&#xff09;核心原理 &#xff08;2&#xff09;防范机制 2、旧密码确认防御实现 &#xff08;1&#xff09;核心原理 &#xff08;2&#xff09;为什么旧密码确认能有效防范CSRF…

深层语义在自然语言处理中的理论框架与技术融合研究

摘要本文章系统阐述了深层语义在自然语言处理&#xff08;NLP&#xff09;领域的定义、特征及其与知识图谱和大型预训练语言模型的融合方法。基于截至2025年8月的最新研究成果&#xff0c;报告深入分析了深层语义的多维度特性、技术实现路径以及面临的挑战&#xff0c;为研究人…

深入解析HarmonyOS:UIAbility与Page的生命周期协同

深入解析HarmonyOS&#xff1a;UIAbility与Page的生命周期协同 在HarmonyOS应用开发中&#xff0c;理解UIAbility和Page的生命周期是构建高质量应用的关键。本文将深入探讨这两大核心概念的生命周期及其协同工作机制&#xff0c;帮助开发者更好地管理应用资源、优化用户体验。…

规律作息 + 养成好的习惯 + 考研倒计时 111 天 + 线面积分入门 1 下半部分

文章目录前言杂进度10.4空间直线一般式方程对称式方程 点向式方程参数式方程转换位置关系10.510.610.7平面束方程10.810.9总结前言 规律作息&#xff01; 杂 欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游。 进度 向量代数和空间解析几何。 10.4 这题就是算一个…

序列容器(vector,deque,list)

STL 序列式容器&#xff08;vector、deque、list、array、forward_list&#xff09;的核心特征是按插入顺序存储元素&#xff08;元素的逻辑顺序与物理存储顺序一致&#xff09; vector 下图是底层原理 具体点击链接vector介绍 deque(双端队列) 在 C STL 中&#xff0c;deque…

Time-MOE添加MLP分类头进行分类任务

文章目录一、背景&#xff1a;Time-MoE 的 4096 长度限制二、数据准备&#xff08;以帕金森二分类为例&#xff09;三、标签对齐&#xff08;弱监督&#xff09;四、类别不平衡 & 数据划分五、模型微调&#xff08;冻结 backbone&#xff0c;只训 MLP 头&#xff09;六、评…

朴素贝叶斯:用 “概率思维” 解决分类问题的经典算法

一、贝叶斯&#xff1a;从 “逆概” 问题走来的数学家要理解朴素贝叶斯&#xff0c;得先回到它的 “源头”—— 贝叶斯公式&#xff0c;以及它要解决的核心问题&#xff1a;逆概问题。1. 贝叶斯的 “生不逢时”托马斯・贝叶斯&#xff08;Thomas Bayes&#xff0c;约 1701-1761…

Qt/C++开发监控GB28181系统/视频点播主码流子码流/动态切换码流/支持海康大华/全网唯一

一、前言说明 目前市面上的国标监控系统&#xff0c;没有看到可以切换码流的&#xff0c;都是默认主码流&#xff0c;包括easynvr、livegbs、wvp等&#xff0c;很是奇怪为什么他们不做呢&#xff1f;难道没有用户反馈需要这个&#xff1f;我这就遇到过一些用户需要能够切换主码…

【 MYSQL | 基础篇 四大SQL语句 】资料位于文章末尾

摘要&#xff1a;本文先介绍数据库 SQL 的核心概念&#xff0c;接着阐述 SQL 通用语法与 DDL、DML、DQL、DCL 四大分类&#xff0c;随后详细讲解各类语句操作&#xff0c;包括 DDL 的数据库与表操作及数据类型&#xff0c;DML 的数据增删改&#xff0c;DQL 的查询语法与功能&am…

Webrtc支持FFMPEG硬解码之Intel

Intel QSV下载编译git clone https://github.com/lu-zero/mfx_dispatch.git1.使用CMake生产VS工程编译生成libmfx.lib文件 头文件为mfx文件夹libmfx---include---mfx---lib---libmfx.libWebrtc中ffmpeg的修改因为Webrtc中的ffmpeg是使用gn进行编译的&#xff0c;所以这里先找到…

【二叉树(DFS) - LeetCode】437. 路径总和 III

437. 路径总和 III 题解&#xff1a;DFS /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullp…

【Python】shutil.make_archive() 方法详解

文章目录功能概述函数签名核心参数详解1. base_name2. format3. root_dir4. base_dir使用示例将 /home/user/project/data 目录打包为 data.tar.gz&#xff0c;并保存到 /home/user/backups/打包当前工作目录下的 docs 文件夹为 zip 文件替代方案总结shutil.make_archive() 是 …

CAN总线(Controller Area Network Bus)控制器局域网总线(二)

6、错误帧 总线上所有设备都会监督总线的数据&#xff0c;一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” &#xff0c;这些设备便会发出错误帧来破坏数据&#xff0c;同时终止当前的发送设备。7、过载帧 当接收方收到大量数据而无法处理时&#…

LeetCode 317 离建筑物最近的距离

LeetCode 317 题的详细题目信息如下&#xff1a;题目名称Shortest Distance from All Buildings&#xff08;中文译名&#xff1a;离建筑物最近的距离&#xff09;题目描述给你一个由 0、1 和 2 组成的二维网格&#xff0c;其中&#xff1a;0 代表空地1 代表建筑物2 代表障碍物…

AI之CodeTool之Kode:Kode(claude_code风格)的简介、安装和使用方法、案例应用之详细攻略

AI之CodeTool之Kode&#xff1a;Kode(claude_code风格)的简介、安装和使用方法、案例应用之详细攻略 目录 相关文章 LLMs之PE之SystemPrompt&#xff1a;analysis_claude_code的简介、使用方法、案例应用之详细攻略 AI之CodeTool之Kode&#xff1a;Kode(claude_code风格)的简…

网络请求优化:用 Retrofit 拦截器玩转日志、重试与缓存,OkHttp 和 Volley 谁更香?

目录 1. 拦截器:Retrofit 的“超级管理员” 拦截器的本质 为什么用拦截器? 2. 日志拦截器:让请求和响应“现原形” 引入日志拦截器 实现日志拦截器 日志输出示例 生产环境注意事项 3. 重试拦截器:网络不稳定也能稳如狗 设计重试逻辑 集成到 Retrofit 优化重试策…