当前位置: 首页 > news >正文

面试系列|蚂蚁金服技术面【3】

今天继续分享一下蚂蚁金服的 Java 后端开发岗位真实社招面经,复盘面试过程中踩过的坑,整理面试过程中提到的知识点,希望能给正在准备面试的你一些参考和启发,希望对你有帮助,愿你能够获得心仪的 offer !

第二轮面试之后的后续,隔了几天没有通知结果。但是某天晚上接到一个电话,是另一位面试官,得知是简历被另一个部门捞起来了,应该是之前的流程没过,但是简历被其他部门捞起来了。这次约的是晚上 7 点,仍然是视频远程面试,下面是面试时语音实录复盘。


面试官:请简单介绍一下你的项目。
候选者:好的,balabala…(按照提前准备的进行答复)。


面试官:这个项目的定位是什么,和 xxx 有什么区别?
候选者:xxx 平台更偏向,而 xxx 主要面向。


面试官:单点登录(SSO)有哪些实现方案?
候选者:
1)基于 JWT(客户端存储 Token,服务端解析)。
2)基于浏览器 Cookie(共享 Cookie 进行身份验证)。
3)基于 Session(服务端共享 Session)。
4)基于 SSO 网关(所有请求经过网关统一认证)。


面试官:统一鉴权怎么做?

候选者: 通过浏览器 CookieHeader 获取 Token,解析身份信息。在 Gateway 统一设置线程上下文,让后续服务能直接获取用户身份。


面试官:你提到了线程上下文,那么线程上下文可能遇到什么问题,有遇到过吗?

候选者:(1)线程污染问题:在后端 HTTP 请求通常由线程池处理,比如 Tomcat 或 Netty 都会复用线程池中的线程来处理请求。例如请求 A 进入后端,线程池分配 线程 T1 处理它,A 的请求过程中设置了 线程上下文(ThreadLocal 变量),但没有在请求结束时清理。请求 B 进入后端,线程池又分配到 线程 T1,由于 T1 之前被请求 A 污染,B 可能会获取到 A 的数据,导致数据错乱或权限问题

候选者:(2)线程上下文参数传递问题:使用 ThreadLocal 时,线程上下文参数比如租户ID存储在当前线程中,无法传递的一个子线程中,比如有异步的逻辑会进行日志记录、消息发送,任务触发等操作,这个时候线程上下文拿不到这个参数会导致业务出错。

候选者: 针对上面连个问题的解决方案。(1)针对线程污染问题可以通过统一拦截的清理机制,或者手动清理,确保 finally 里 clear() 线程变量;(2)线程上下文父子线程之间传递的问题可以通过使用阿里一个 TTL(TransmittableThreadLocal) 库解决线程池透传问题。TTL 通过增强 ThreadLocal 机制,可以保证 父线程的 ThreadLocal 变量正确地传递给线程池中的子线程,即使子线程是复用的


面试官:你提到 ThreadLocal ,那么 ThreadLocal 是怎么实现的?
候选者:每个 Thread 维护一个 ThreadLocalMap,Key 是 Thread.currentThread() 对象,Value 是存储的变量值。线程通过 ThreadLocal 的 get() 方法,获取当前线程的变量值,确保变量是线程私有的。

private T get(Thread t) {ThreadLocalMap map = getMap(t);if (map != null) {ThreadLocalMap.Entry e = map.getEntry(this);if (e != null) {T result = (T) e.value;return result;}}return setInitialValue(t);}private void set(Thread t, T value) {ThreadLocalMap map = getMap(t);if (map != null) {map.set(this, value);} else {createMap(t, value);}}

面试官:实现完整的多租户需要哪些方面的改造?

候选者:租户管理大致需要租户创建、分配资源、连接池(PgBouncer)、License 限制。
(1)数据库隔离:物理隔离(独立库)、逻辑隔离(租户 ID 过滤)。
(2)访问控制:租户的访问地址、权限模型。
(3)数据层:MyBatis AbstractRoutingDataSource 自动路由数据源。


面试官:你提到了你尝试几种 SaaS 化实现,哪种 SaaS 改造方式比较好?

候选者:
(1)小规模:逻辑隔离(共享数据库,按业务表添加租户ID字段区别,或者按照租户ID分表)。
(2)大规模:物理隔离(独立数据库),提高安全性和扩展性。
(3)再大规模:多租户集群 + 读写分离 + 连接池优化(PgBouncer)。


面试官:假设未来要支持 1 万个租户,如何优化资源使用?你上面说的一个租户一个库的方案有什么问题?

候选者:(这里感觉掉坑里了,当时没有答好,此前说了几种方式,但是没有仔细思考里面的问题,下面梳理复盘整理如下)

(1)数据库实例管理成本高: 1 万个租户 = 1 万个数据库,数据库的运维、备份、监控成本极高。
(2)资源利用率低: 许多租户可能业务量小,独立数据库的大量资源处于闲置状态,造成浪费。高负载租户可能会遇到资源不足的问题,扩展性差。
(3)数据库连接数受限: 数据库的 最大连接数 是有限的,例如 MySQL 默认最大连接数 151,无法同时支持大量租户的并发访问。需要使用连接池(如 PgBouncer 或 HikariCP),但连接数仍然受物理资源限制。
(4)Schema 变更困难: 1 万个数据库要同时执行 DDL 变更(如表结构调整)是非常麻烦的,升级难度高。需要设计 数据库版本管理 机制,避免版本不一致导致问题。


面试官:介绍一下二级缓存(Redis + 内存缓存)解决了什么问题?

候选者:二级缓存(Caffeine + Redis)可优化使得本地缓存命中率高,减少 Redis 压力(Redis 连接、网络I/O消耗)。


面试官:二级缓存如何保证数据一致性?

候选者:(1)分布式锁(RLock):确保缓存更新时并发安全。(2)事件订阅(Redis Key 过期监听):数据更新后删除内存缓存。


面试官:Redis 集群有使用过吗?
候选者:使用过 Redis Cluster,采用分片存储,提高高可用性,支持 主从同步 + 哨兵模式 保证故障恢复能力。


面试官:讲一下如何使用异步线程?
候选者:(1)新建线程(new Thread)。(2)Spring @Async 注解,基于线程池执行。(3)线程池(ThreadPoolExecutor),支持任务队列、线程回收。
面试官:详细讲一下 @Async,有看过它的源码吗?
候选者:(光记得拿来就用,后悔没有看过…)整理一下:@Async 依赖 TaskExecutor 线程池,默认是 SimpleAsyncTaskExecutor,可通过 @EnableAsync 配置 ThreadPoolTaskExecutor。


面试官:自己实现一个阻塞队列,如何设计?说一下思路
候选者:(G,开始上强度了)(1)基于 CAS 设计无锁队列,避免线程竞争。(2)使用 ReentrantLock + Condition 实现阻塞队列。(3)采用 LinkedBlockingQueue 支持 FIFO 消息存储,避免数据丢失。

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;public class MyBlockingQueue<T> {private final Object[] items;  // 用数组存储队列元素private int count, head, tail; // count 记录当前队列元素个数,head 头指针,tail 尾指针private final ReentrantLock lock = new ReentrantLock();private final Condition notFull = lock.newCondition();  // 队列满时,生产者等待private final Condition notEmpty = lock.newCondition(); // 队列空时,消费者等待public MyBlockingQueue(int capacity) {items = new Object[capacity]; }// 生产者入队(如果满了,阻塞)public void put(T element) throws InterruptedException {lock.lock();try {while (count == items.length) {  // 队列满,生产者阻塞等待notFull.await();}items[tail] = element;tail = (tail + 1) % items.length; // 循环队列,防止数组越界count++;notEmpty.signal(); // 通知消费者可以消费了} finally {lock.unlock();}}// 消费者出队(如果空了,阻塞)@SuppressWarnings("unchecked")public T take() throws InterruptedException {lock.lock();try {while (count == 0) { // 队列空,消费者阻塞等待notEmpty.await();}T element = (T) items[head];items[head] = null; // 释放对象,防止内存泄漏head = (head + 1) % items.length; // 维护循环队列count--;notFull.signal(); // 通知生产者可以继续生产了return element;} finally {lock.unlock();}}// 获取队列当前大小public int size() {lock.lock();try {return count;} finally {lock.unlock();}}
}

面试官:RBAC、ABAC、PBAC 的区别?

候选者:(1)RBAC(基于角色的访问控制):用户 → 角色 → 权限。(2)ABAC(基于属性的访问控制):通过用户、环境、资源等属性控制权限。(3)PBAC(基于策略的访问控制):基于策略定义权限。


📢 如果对你有帮助的话,还请帮忙点赞 + 收藏!!!(谢谢!!!)

在这里插入图片描述

相关文章:

面试系列|蚂蚁金服技术面【3】

今天继续分享一下蚂蚁金服的 Java 后端开发岗位真实社招面经&#xff0c;复盘面试过程中踩过的坑&#xff0c;整理面试过程中提到的知识点&#xff0c;希望能给正在准备面试的你一些参考和启发&#xff0c;希望对你有帮助&#xff0c;愿你能够获得心仪的 offer ! 第二轮面试之…...

Spring Boot项目中成功集成了JWT

JWT 原理解释 什么是 JWT&#xff1f; JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应用环境间安全地将信息作为JSON对象传输。JWT通常用于身份验证和信息交换。 JWT 的结构 JWT由三部分组成&#xff…...

《Java SQL 操作指南:深入理解 Statement 用法与优化》

在 Java 数据库编程中&#xff0c;Statement 是用于执行 SQL 语句的接口&#xff0c;允许程序与数据库进行交互。本文将详细介绍 Statement 的基本概念、常见用法以及 PreparedStatement 和 CallableStatement 等相关接口。 1. Statement 基本介绍 Statement 接口继承了 AutoC…...

element ui设置结束时间为23:59:59

开始时间为00:00:00结束时间为23:59:59 在请求接口前&#xff0c;用substring取结束时间的年月日&#xff0c;并替换时间值即可 <el-formref"searchForm":model"searchForm":inline"true"size"mini"keyup.enter.native"getDa…...

Matlab 舰载机自动着舰控制系统研究

1、内容简介 Matlab 188-舰载机自动着舰控制系统研究 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

数据集格式转换——json2txt、xml2txt、txt2json【复制就能用】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏地址:YOLO11入门 + 改进涨点——点击即可跳转 欢迎订阅 目录 json2txt脚本 xml2txt txt2json...

MySQL 横向衍生表(Lateral Derived Tables)

前面我们介绍过MySQL中的衍生表&#xff08;From子句中的子查询&#xff09;和它的局限性&#xff0c;MySQL8.0.14引入了横向衍生表&#xff0c;可以在子查询中引用前面出现的表&#xff0c;即根据外部查询的每一行动态生成数据&#xff0c;这个特性在衍生表非常大而最终结果集…...

基于llama.cpp的QwQ32B模型推理

基于llama.cpp的QwQ32B模型推理 llama.cpp项目主页&#xff1a; https://github.com/ggml-org/llama.cpp# llama.cpp源码下载 cd /root/lanyun-tmpgit clone https://github.com/ggml-org/llama.cpp#llama.cpp编译 llama.cpp是个C语言项目&#xff0c;实际调用过程需要先构建项…...

【Jmeter】使用教程

下载及安装 参考链接: JMeter下载及安装&#xff08;附插件及中文包超详细&#xff09; 参考链接: 【Jmeter】win 10 / win 11&#xff1a;Jmeter 下载、安装、汉化、新机迁移、版本更新&#xff08;Jmeter 4 以上版本均适用&#xff09; 分辨率的调整 参考链接: Jmeter5.3字…...

黑马商城完成随笔

完结撒花 &#x1f389; &#x1f389; &#x1f389; 差不多用了两三个星期&#xff1f;终于是完成了。 黑马商城体量应该是全部黑马项目中体量最多&#xff0c;技术栈最复杂的了。 可是仍然存在之前黑马项目的问题&#xff1a;不细致&#xff0c;不完整 很多技术栈的使用仅…...

【Python 算法零基础 1.线性枚举】

我装作漠视一切&#xff0c;以为这样就可以不在乎 —— 25.3.17 一、线性枚举的基本概念 1.时间复杂度 线性枚举的时间复杂度为 O(nm)&#xff0c;其中 n是线性表的长度。m 是每次操作的量级&#xff0c;对于求最大值和求和来说&#xff0c;因为操作比较简单&#xff0c;所以 …...

涨薪技术|Kubernetes(k8s)之Pod端口设置及资源配额

01端口设置 使用以下命令可以可以查看到到ports的子选项 [rootk8s-master01 ~]# kubectl explain pod.spec.containers.portsKIND: PodVERSION: v1RESOURCE: ports <[]Object>FIELDS:name <string> # 端口名称&#xff0c;如果指定&#xff0c;必须保证name在pod…...

七大常用智能家居协议对比

如果您不知道在项目中使用哪种智能家居通信协议&#xff0c;那么进入智能家居行业可能会很困难。如果没有合适的协议将其集成到智能家居生态系统中&#xff0c;智能家居设备将无法正常工作。否则&#xff0c;您将面临硬件和软件无法满足最终用户期望的风险。协议选择不当可能会…...

K8S快速部署

前置虚拟机环境正式部署BUG解决 前置虚拟机环境 每个虚拟机配置一次就好 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld #关闭 selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 #关闭 swap swapoff -a # 临时 vi…...

TCP 三次握手四次挥手过程详解

注&#xff1a;本文为 “TCP 的三次握手与四次挥手” 相关文章合辑。 英文引文&#xff0c;机翻未校。 中文引文&#xff0c;未整理去重。 英文引文第二篇&#xff0c;实为国内《稀土掘金技术社区》文章&#xff0c;没检索到原文&#xff0c;此处 “出口转内销” 。 如有内…...

如何利用 Zeabur 实现 OceanBase 的一键部署

引言 Zeabur 是一个功能强大且即开即用的自动化部署平台&#xff0c;它不仅能迅速部署多种应用&#xff0c;还支持一键安装 MySQL、PostgreSQL 等数据库服务。 Zeabur 拥有众多国内外用户&#xff0c;如 AFFiNE、Bytebase 等企业客户&#xff0c;以及大量全栈和独立开发者。将…...

基于Springboot+服务器磁盘的本地文件存储方案

[local-file-system]基于服务器磁盘的本地文件存储方案 仅提供后端方案 github 环境 JDK11linux/windows/mac 应用场景 适用于ToB业务&#xff0c;中小企业的单体服务&#xff0c;仅使用磁盘存储文件的解决方案 仅使用服务器磁盘存储 与业务实体相结合的文件存储方案&…...

基于FPGA的3U机箱模拟量高速采样板ADI板卡,应用于轨道交通/电力储能等

板卡简介&#xff1a; 本板为模拟量高速采样板&#xff08;ADI&#xff09;&#xff0c;主要用于电机转速和相电流检测&#xff0c;以实现电机闭环控制。 性能规格&#xff1a; 电源&#xff1a;DC5V&#xff0c;DC3.3V&#xff0c;DC15V&#xff0c;DC24V FPGA&#xff1a;…...

泰勒·斯威夫特(Taylor Swift)的音乐影响力与商业版图深度研究

泰勒斯威夫特的音乐影响力与商业版图深度研究 简介 泰勒斯威夫特&#xff08;Taylor Swift&#xff09;是当今流行音乐领域最具影响力的全球巨星之一。自少年时期出道以来&#xff0c;她在音乐风格、形象和商业战略上不断演变&#xff0c;从乡村音乐新人成长为引领流行文化的…...

神经网络微调技术解析

神经网络微调技术 微调&#xff08;Fine-tuning&#xff09;是迁移学习的核心技术&#xff0c;通过在预训练模型基础上调整参数&#xff0c;使其适应特定任务或领域。以下从传统方法、参数高效微调&#xff08;PEFT&#xff09;、新兴技术三个维度展开&#xff0c;覆盖主流技术…...

鸿蒙路由 HMRouter 配置及使用 三 全局拦截器使用

1、前期准备 简单封装一个用户首选项的工具类 import { preferences } from "kit.ArkData";// 用户首选项方法封装 export class Preferences {private myPreferences: preferences.Preferences | null null;// 初始化init(context: Context, options: preference…...

国科大——计网(0812)——考试真题

前沿&#xff1a; 此篇文章记录了国科大秋季学期计网&#xff08;0812&#xff09;课程的一些考试真题&#xff0c;某些题目的答案仅供参考&#xff0c;还请自行辨别。 备注&#xff1a; 计网的考试题一般都会多一道&#xff0c;每道题的分值相同&#xff0c;例如&#xff1a;…...

Feedback-Guided Autonomous Driving

Feedback-Guided Autonomous Driving idea 问题设定&#xff1a;基于 CARLA 的目标驱动导航任务&#xff0c;通过知识蒸馏&#xff0c;利用特权智能体的丰富监督信息训练学生传感器运动策略函数 基于 LLM 的端到端驱动模型&#xff1a;采用 LLaVA 架构并添加航点预测头&#…...

超参数优化算法:scikit-opt库、Scikit-Optimize库

1 scikit-opt库&#xff1a;https://www.cnblogs.com/luohenyueji/p/18333387 https://blog.csdn.net/weixin_45750972/article/details/124683402 a 差分进化算法 (Differential Evolution)&#xff1a;一种基于群体搜索的优化算法&#xff0c;通过模拟生物进化的过程来寻找最…...

我与DeepSeek读《大型网站技术架构》- 大型网站架构技术一览与Web开发技术发展历程

文章目录 大型网站架构技术一览1. 前端架构2. 应用层架构3. 服务层架构4. 存储层架构5. 后台架构6. 数据采集与监控7. 安全架构8. 数据中心机房架构 Web开发技术发展历程一、静态HTML阶段二、CGI脚本模式阶段三、服务器页面模式阶段 大型网站架构技术一览 1. 前端架构 浏览器…...

解决QT_Debug 调试信息不输出问题

方式1 &#xff1a;手动通过添加环境变量解决 ->使用命令&#xff1a; QT_LOGGING_TO_CONSOLE1 qtcreator启动 ->如若还未输出qDebug调试信息 则在程序中引<QLoggingCategory>包 #include <QLoggingCategory> ->在程序入口添加 QLoggingCategory::defa…...

NebulaGraph3.3.0部署与配置

系统参数 8g 2核参考文档: https://docs.nebula-graph.com.cn/3.8.0/4.deployment-and-installation/2.compile-and-install-nebula-graph/2.install-nebula-graph-by-rpm-or-deb/静态IP配置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容…...

oracle 基础知识之 多表查询

多表查询定义&#xff1a;当查询的数据并不是来源一个表时&#xff0c;需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段&#xff0c;一次查询出多个表的数据。多表查询包括了等值连接、左连接、右连接、完全连接。 1.等值连接 等值连接也称为简单连接&#xf…...

《论分布式系统架构设计及其应用》架构师论文

【摘要】 2022年3月&#xff0c;我参与了某金融科技公司“智能风控云平台”项目的研发工作&#xff0c;担任系统架构师职务&#xff0c;负责分布式系统架构设计与核心技术选型。该平台旨在为银行、保险等金融机构提供实时风险评估、反欺诈及数据服务&#xff0c;需支撑每秒十万…...

Matlab 汽车主动悬架LQR控制器设计与仿真

1、内容简介 Matlab 182-汽车主动悬架LQR控制器设计与仿真 可以交流、咨询、答疑 2、内容说明 略 1、研究背景 汽车悬架系统由弹性元件、导向元件和减振器组成,是车身与车轴之间连接的所有组合体零件的总称,也是车架(或承载式车身)与车桥(或车轮)之间一切力传递装置的总称,…...

JMeter 参数化工作原理说明

一、核心目标&#xff1a;让每条请求都能用不同数据 参数化的本质是让 JMeter 在发送请求时&#xff0c;自动替换变量为不同的值。例如&#xff1a; 模拟 100 个用户登录 → 每个用户使用不同的账号密码。模拟搜索不同关键词 → 每次请求自动更换关键词。 二、参数化如何工作…...

[免费]直接整篇翻译pdf工具-支持多种语言

<闲来没事写篇博客填补中文知识库漏洞> 如题&#xff0c;[免费][本地]工具基于开源仓库&#xff1a; 工具 是python&#xff01;太好了&#xff0c;所以各个平台都可以&#xff0c;我这里基于windows. 1. 先把github代码下载下来&#xff1a; git clone https://githu…...

Python 鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…...

Unity音乐内存优化

文章目录 音乐下载远程音乐 音乐 音乐文件如果只从工程目录里面读取&#xff0c;那有很多种方法可以优化&#xff0c;比如设置Load Type直接采用流式加载方式&#xff0c;内存直接降最小&#xff08;但是记住&#xff0c;每种优化都是有对应的代价的&#xff0c;优化是一种平衡…...

hubilder打包ios app, 并上传TestFlight

目录 一 前提条件 不是该项目成员解决 1. 直接找到该项目的管理人员去设置你的账号 2. 直接重新生成APPID(一般不建议的&#xff0c;可以查看) 3. 如果是离职人员&#xff0c;可以让他将项目权限转让出来 - 如何转让应用 - DCloud问答 未申请ios证书和描述文件 APP ID 的…...

3个 Vue $set 的应用场景

大家好&#xff0c;我是大澈&#xff01;一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员&#x1f468;&#x1f3fb;‍&#x1f4bb;&#xff0c;关注我&#xff0c;科技未来或许我能帮到你&#xff01; 在 Vue2 中&#xff0c;由于 Object.defineProperty 的限制&#…...

3ds Max 导入到 After Effects 还原摄像机要注意事项--deepseek

我&#xff1a;dp我这有两个脚本分别是syn软件相机导出到max的和syn软件相机导出到ae的&#xff0c;你能看出差别来吗&#xff1f;如果我想把max里的相机导入到ae里&#xff0c;保持原来的位置方向&#xff0c;该怎么做 dp&#xff1a;从这两个脚本可以看出&#xff0c;3ds Ma…...

从零开始 | C语言基础刷题DAY3

❤个人主页&#xff1a;折枝寄北的博客 目录 1.打印3的倍数的数2.从大到小输出3. 打印素数4.打印闰年5.最大公约数 1.打印3的倍数的数 题目&#xff1a; 写一个代码打印1-100之间所有3的倍数的数字 代码&#xff1a; int main(){int i 0;for (i 1; i < 100; i){if (i % …...

SQL注入第7关

存在注入&#xff0c;需要使用单引号闭合 拥有root权限&#xff0c;secure_file_priv值为空&#xff0c;确定路径 http://127.0.0.1/sqli-labs-master/Less-7/?id1)) union select 1,"<?phpinfo();?>",3 into outfile "D:\\landui\\xp\\phpstudy_pro…...

Git使用和原理(3)

1.远程操作 1.1分布式版本控制系统 我们⽬前所说的所有内容&#xff08;⼯作区&#xff0c;暂存区&#xff0c;版本库等等&#xff09;&#xff0c;都是在本地&#xff01;也就是在你的笔记本或者 计算机上。⽽我们的 Git 其实是分布式版本控制系统&#xff01;什么意思呢&a…...

从零搭建微服务项目Pro(第6-1章——Spring Security+JWT实现用户鉴权访问与token刷新)

前言&#xff1a; 在现代的微服务架构中&#xff0c;用户鉴权和访问控制是非常重要的一部分。Spring Security 是 Spring 生态中用于处理安全性的强大框架&#xff0c;而 JWT&#xff08;JSON Web Token&#xff09;则是一种轻量级的、自包含的令牌机制&#xff0c;广泛用于分…...

LeetCode 124.二叉树中的最大路径和

题目&#xff1a; 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点…...

结构型模式之适配器模式:让不兼容的接口兼容

在软件开发中&#xff0c;经常会遇到这样一种情况&#xff1a;系统的不同部分需要进行交互&#xff0c;但由于接口不兼容&#xff0c;导致无法直接使用。这时&#xff0c;适配器模式&#xff08;Adapter Pattern&#xff09;就能派上用场。适配器模式是设计模式中的结构型模式&…...

Python 中用T = TypeVar(“T“)这个语法定义一个“类型变量”,属于类型提示系统的一部分

T TypeVar("T") 这一语法规则定义了一个泛型类型变量 T&#xff0c;用于标记“某种类型”&#xff0c;让你可以写出既通用又类型安全的代码。 TypeVar(“T”) 会创建一个名为 T 的类型占位符&#xff0c;这个占位符可以在后续的函数、类或方法中用作泛型参数。泛型…...

uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能

组件下载地址&#xff1a;https://ext.dcloud.net.cn/plugin?id22609 已测试h5和微信小程序&#xff0c;理论支持全平台 亮点&#xff1a; 简单易用 使用js计算而不是resize属性&#xff0c;定制化程度更高 组件挂在后可播放指示线动画&#xff0c;提示用户可以拖拽比较图片…...

理解我们单片机拥有的资源

目录 为什么要查询单片机拥有的资源 所以&#xff0c;去哪些地方可以找数据手册 一个例子&#xff1a;STM32F103C8T6 前言 本文章隶属于项目&#xff1a; Charliechen114514/BetterATK: This is a repo that helps rewrite STM32 Common Repositorieshttps://github.com/C…...

接上一篇,C++中,如何设计等价于Qt的信号与槽机制。

看下面例子&#xff1a; class FileManager : public QObject {Q_OBJECTpublic:FileManager(QObject* parent nullptr) : QObject(parent) {}void changeFileName(const QString& newName) {fileName newName;emit fileNameChanged(fileName);}signals:void fileNameChan…...

redis分片集群如何解决高并发写问题的?

不使用分片集群&#xff0c;仅使用主从复制和哨兵模式下&#xff0c;可以有多个主从集群&#xff0c;但每个主从集群一般只有一个活跃的主节点并执行写操作&#xff0c;每个主从集群的数据也可能&#xff08;应该&#xff09;是不同的&#xff0c;同时每个主从集群存储的数据没…...

2025 linux系统资源使用率统计docker容器使用率统计docker监控软件Weave Scope安装weavescope

1.Weave Scope介绍 Weave Scope 是一款用于监控和可视化 Docker 容器、Kubernetes 集群以及分布式应用的强大工具。它的设计目标是帮助开发者和运维人员更好地理解和管理复杂的微服务架构。以下是 Weave Scope 的主要优点&#xff1a; 1. 实时可视化 Weave Scope 提供了一个直…...

Spring Boot 核心知识点深度详解:自动化配置 (Auto-configuration) - 解锁 Spring Boot 的 “魔法”

Spring Boot 核心知识点深度详解&#xff1a;自动化配置 (Auto-configuration) - 解锁 Spring Boot 的 “魔法” ✨ 自动化配置 (Auto-configuration) 是 Spring Boot 最核心的特性之一&#xff0c;也是它能够大幅简化 Spring 应用开发的关键所在。 它让 Spring Boot 应用能够…...