面试题分享11月7日
1、ThreadLocal 是什么
是 Java 中线程的本地方法变量,用来存储每个线程的私有数据,每个线程都有它的独立副本,相互隔离,互不影响
2、ThreadLocal 实现原理
每个 ThreadLocal 都有一个 ThreadLocalMap 对象,用来存储 ThreadLocal 变量和对应的值,通过 ThreadLocal 对象的 get()、set() 方法访问对应的 ThreadLocalMap 的值
3、ThreadLocal 的使用场景
token 验证之后会把用户相关的信息存储在 ThreadLocal 中,方便之后业务获取当前业务信息
数据库连接、事务管理,查日志的记录
4、ThreadLocal 注意事项
ThreadLocal 是不安全的,存在内存泄漏问题,当一个线程结束时,需要手动清除对应的 ThreadLocalMap,以避免内存泄露问题(在线程最后 remove() )
5、ThreadLocal 优缺点
优点:线程安全:他会建立一个独立的变量副本,确保他们之间互不影响
简化编程模型
可以跨层:跨类跨方法传递变量
数据隔离:每个线程提供单独的上下文环境,方便跨层传递,避免参数传递的复杂性
缺点:会造成内存泄漏
6、Spring Boot 如何读取配置文件
@Value 属性注入
@ConditionalOnProperty(prefix = "") Java Bean
@PropertySource
7、Spring Boot 配置文件的优先级
file:./config/application.properties 高
file:./application.properties
classpath:/config/application.properties
classpath:/application.properties 低
8、SpringBoot 常用注解
启动层:@SpringBootApplication(总代理)、@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan、@MapperScan("com.by.dao")
controller 层:@RestController、@RequestMapping、@ResponseBody、@AutoWired、@GetMapping、@PostMapping、@PutMapping、@DelectMapping
service 层:@Service
dao 层:@Mapper
@Configuration、@Bean、@Resource、@value、@ConditionalOnProperty
9、常用的日志框架
SLF4j(Simple Logging Facade for Java)门面模式(抽象层)
Log4j、Log4j2、logback 日志的实现
10、ELK
是由Elasticsearch (ES):非关系型数据库
Logstash (LS):采集器
Kibana (KB):UI 可视化工具
11、EFK
是由Elasticsearch (ES):非关系型数据库
Filebeat (LS):采集器
Kibana (KB):UI 可视化工具
Filebeat 相对于 Logstash 来说更为轻量级,资源消耗较小
12、MDC
其实就是 ThreadLocal 的升级版 InheritableThreadLocal ,它不仅继承了 ThreadLocal 还扩展了一些功能,就比如说子线程继承了父线程的 ThreadLocal 的值(简单说父线程会将它脑门上的标签复制一份给到子线程,让子线程也可以被 MDC 所访问)
对于 web 应用来说,会在请求的最开始(在拦截器 Filter)保存这些数据
13、InheritableThreadLocal 与ThreadLocal 的区别
InheritableThreadLocal 继承了 ThreadLocal 类,还扩展了一些其他的功能
准确的说就是 InheritableThreadLocal 可以让子线程继承父线程的 ThreadLocal 的值,ThreadLocal 不可以
相关文章:
面试题分享11月7日
1、ThreadLocal 是什么 是 Java 中线程的本地方法变量,用来存储每个线程的私有数据,每个线程都有它的独立副本,相互隔离,互不影响 2、ThreadLocal 实现原理 每个 ThreadLocal 都有一个 ThreadLocalMap 对象,用来存储…...
数据结构_哈夫曼树及其应用
构造算法的例子 构造算法的实现 初始化,置权值 int i, m, s1, s2;m 2 * n - 1;for (i 1; i < m; i){HT[i].lch 0;HT[i].rch 0;HT[i].parent 0;}for (i 1; i < n; i){cin >> HT[i].weight;}合并结点 // 创建哈夫曼树for (i n 1; i < m; i){s1…...
从0开始学习机器学习--Day19--学习曲线
一般来说,如果一个算法的表现不理想,那么多半是因为出现了欠拟合或过拟合问题,这种时候我们要做的就是搞清楚出现的是偏差问题还是方差问题,亦或是二者皆有,这有助于我们精准定位问题所在。 之前,我们发现…...
2.索引:深入解析 B+ 树:原理、MySQL 应用及与其他数据结构的对比
B 树是一种高效的平衡树结构,在数据库和文件系统中被广泛应用,尤其在 MySQL 中,InnoDB 存储引擎通过 B 树实现索引结构,提升了大数据量条件下的查询性能。 本文将深入介绍 B 树的原理和设计特点,分析 MySQL 中使用 B …...
[全网最细数据结构完整版]第六篇:3分钟带你吃透栈并模拟实现
目录 1->栈的概念和结构 1.1栈的概念 1.2栈的结构 2->栈的实现 2.1定义关于栈的结构体和各种函数 2.2栈的初始化 STInit 函数 2.3栈的销毁 STDestroy 函数 2.4栈的插入操作 STPush 函数 2.5栈的判断是否为空操作 STEmpty 函数 2.6栈的删除操作 STPop 函数 2.7…...
如何在 Docker 容器中启动 X11 图形界面程序
如何在 Docker 容器中启动 X11 图形界面程序 在使用 Docker 时,我们通常会发现,容器中的图形应用没法直接显示到宿主机的界面上。不过,我们可以通过共享 X11 的 Unix 套接字,让容器把显示数据传递给宿主机的 X11 服务器ÿ…...
pycharm保存是自动格式化
在PyCharm中设置保存时自动格式化代码,可以按照以下步骤进行: 1. 打开设置 在Windows和Linux系统中,可以通过File(文件)->Settings(设置)打开设置窗口;在Mac系统中,…...
.netCore WebAPI中字符串加密与解密
In today’s digital landscape, securing sensitive information is more critical than ever. If you’re using ASP.NET Core, you might store configuration settings in appsettings.json. However, hardcoding sensitive data like connection strings or API keys in p…...
Next.js + Move 石头剪刀布
rock-paper-scissors 写在前面 本地 源码:https://github.com/zcy1024/SuiStudy/tree/main/rock-paper-scissors # 或其它等价的命令来安装依赖并将项目跑起来 pnpm install pnpm run dev # http://localhost:3000/在线(如果没过期的话) …...
[面试]关于Redis 的持久化你了解吗
Redis的持久化是指Redis服务器在关闭或重启时,将内存中的数据保存到磁盘上的一种机制。Redis支持多种持久化方式。 一、RDB(Redis Database)持久化 RDB持久化是Redis默认采用的持久化方式,它将Redis在某个时间点的数据保存到磁盘上…...
Systemd:tmpfiles
Systemd提供了一个结构化的可配置方法来管理临时文件和目录,即systemd-tmpfiles,可以创建、删除和管理临时文件的服务。 $ systemctl list-units --all | grep systemd-tmpfilessystemd-tmpfiles-clean.service load…...
【Flutter 内嵌 android 原生 View以及相互跳转】
Flutter 内嵌 android 原生 View以及相互跳转 一. 内嵌android 原生View二、android 与 flutter 相互跳转 一. 内嵌android 原生View 在android 工程的包名下,也可在MainActivity创建 android 原生view ,继承PlatformView // 1.自定义textview public st…...
python externally-managed-environment 外部管理环境
https://realpython.com/python-virtual-environments-a-primer/?refyaolong.net#why-do-you-need-virtual-environments 简而言之, pip 默认会将您安装的所有外部包放置在 Python 安装路径/site-packages/ 的文件夹中一些Linux 和 macOS操作系统 预装了内部的 P…...
前端 | MYTED单篇TED词汇学习功能优化
文章目录 📚实现效果🐇before🐇after 📚模块实现解析🐇html🐇css🐇javascript 📚实现效果 🐇before 点击TED单篇词汇表按钮,选择对应TED打卡号,…...
64 mysql 的 表锁
前言 我们这里来说的就是 我们在 mysql 这边常见的 几种锁 行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁, 表共享锁, 表排他锁 我们前面了解了行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁 等等相关 我们这里 来看一下 表共享锁, 表排他锁 的获取, 以及 和 其他表级…...
【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】题库(1)
前言 大家好吖,欢迎来到 YY 滴计算机网络 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的计算机网络题目,供yy应对期中考试复习。大家可以参考 欢迎订阅 YY滴其他专栏!…...
ajax关于axios库的运用小案例
AJAX案例 图书管理 四大功能: 展示图书删除图书编辑图书信息新增图书 步骤 1.bootstrap弹窗来实现新增和编辑图书时出现的弹窗 有两种方案: a.可以用自带的属性来进行弹窗的显示和隐藏 b.可以通过JS进行控制,此操作可以进行自定义&am…...
微搭低代码入门01变量
目录 1 变量的定义2 变量的赋值3 变量的类型4 算术运算符5 字符串的连接6 模板字符串7 检查变量的类型8 解构赋值8.1 数组的解构赋值8.2 对象的解构赋值 9 类型转换9.1 转换为字符串9.2 转换为数字9.3 转换为布尔值 总结 好些零基础的同学,在使用低代码的时候&#…...
盘点2024年10款视频剪辑,哪款值得pick!!
在这个短视频盛行的时代,如何让我们的故事更生动有趣呢?那就要对短视频进行修饰了。这就需要借助视频剪辑工具:而一款好的工具不仅仅是视频的“美颜”,更是创意的灵魂所在!想象一下,运用一款功能齐全的剪辑…...
苹果手机照片批量删除:一键清理,释放空间
在数字化时代,iPhone不仅是我们沟通的桥梁,也是记录生活的重要工具。然而,随着时间的积累,手机中的照片数量不断增加,不仅占用大量存储空间,也让设备变得缓慢。苹果手机照片批量删除成为了一个普遍的需求。…...
FUTURE POLICE语音模型Agent智能体开发:多轮语音对话任务规划
FUTURE POLICE语音模型Agent智能体开发:多轮语音对话任务规划 想象一下,你对着手机说:“帮我订一张下周五从北京飞往上海,下午出发的机票,要经济舱。” 几秒钟后,手机用自然的人声回复你:“好的…...
告别重复编码:用快马AI自动生成软件库e7c9的高效调用代码
作为一名经常和第三方库打交道的开发者,我深刻体会到手动编写调用代码的繁琐。尤其是像e7c9这样功能强大的软件库,虽然封装完善,但每次调用都需要反复查阅文档、处理边界情况,效率实在不高。最近尝试用InsCode(快马)平台的AI辅助生…...
C++的std--ranges适配器视图元素类型系统与概念约束在模板
C20引入的std::ranges库彻底改变了传统迭代器模式,其适配器视图与概念约束系统为模板元编程带来了革命性提升。本文将深入剖析这一机制如何通过编译期类型推导与约束检查,实现更安全、更高效的泛型编程范式。 视图元素类型推导机制 std::ranges视图通过…...
Deep-Live-Cam实时换脸诊断指南:从启动失败到流畅运行的快速修复方案
Deep-Live-Cam实时换脸诊断指南:从启动失败到流畅运行的快速修复方案 【免费下载链接】Deep-Live-Cam real time face swap and one-click video deepfake with only a single image 项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam Deep-L…...
颠覆式剧本创作:Dramatron如何用AI重构故事生成流程
颠覆式剧本创作:Dramatron如何用AI重构故事生成流程 【免费下载链接】dramatron Dramatron uses large language models to generate coherent scripts and screenplays. 项目地址: https://gitcode.com/gh_mirrors/dr/dramatron 痛点直击:剧本创…...
3步掌握WindowResizer:免费强制调整任意窗口大小的终极方案
3步掌握WindowResizer:免费强制调整任意窗口大小的终极方案 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些顽固的窗口尺寸而烦恼吗?无论你面对的…...
耦合详解-模块
耦合详解 耦合(Coupling)是衡量软件模块之间相互依赖程度的指标。低耦合是优秀软件设计的核心目标之一,它使系统更易于维护、测试和扩展。 1. 耦合的本质 耦合描述的是两个模块(类、组件、服务)之间的依赖关系强度。当修改一个模块时,需要修改其他模块的程度越高,耦合…...
N_m3u8DL-CLI-SimpleG:解决M3U8流媒体下载难题的开源解决方案
N_m3u8DL-CLI-SimpleG:解决M3U8流媒体下载难题的开源解决方案 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG M3U8流媒体格式已成为在线视频传输的主流标准࿰…...
原创分享:长图分割神器,让超长网页和聊天记录轻松打印
你是不是也遇到过这种情况? 1、想把微信里一段长长的聊天记录打印出来留存,结果发现截图太长,打印出来字小得看不清,或者直接被裁掉一大半 2、看到一篇很好的网页文章,想打印成纸质版慢慢看,但网页截图是一…...
音频合并避坑指南:为什么你的MP3拼接总有杂音?附FFmpeg解决方案
音频合并避坑指南:为什么你的MP3拼接总有杂音?附FFmpeg解决方案 当你尝试将多个MP3文件拼接成一个时,是否经常遇到以下问题:拼接处出现刺耳的杂音、音频卡顿或时间戳错乱?这并非你的操作失误,而是MP3格式本…...
