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

北京京东,看看难度

最近由于三大外卖平台“打仗”,优惠券多到数不过来,一日三餐每个平台各点一单哈哈哈,正好最近组织内部还有朋友在北京的京东面试过,分享一下她的面经(Java岗):

1. Kafka消息不丢失问题,Kafka本身会去保证消息的不丢失,为什么还需要存一个本地消息表来保证消息的不丢失呢?

Kafka 本身通过副本机制、生产者确认(acks)、消费者手动提交等设计理论上可以实现消息不丢失,但在实际分布式系统中,由于业务逻辑复杂性、中间件与业务操作的原子性难以保障,仍需要引入“本地消息表”等额外机制。以下是具体原因及解决方案的对比分析:

Kafka 消息不丢失的机制及其局限性

  1. 生产者端
    • acks=-1:要求所有 ISR(同步副本)确认写入成功,否则重试。
    • 重试机制:配置 retriesretry.backoff.ms 应对网络抖动。
  2. Broker 端
    • 副本冗余:通过 replication.factor≥3 + min.insync.replicas≥2,避免单点故障丢失数据。
    • 持久化:消息先写入 PageCache 再异步刷盘(依赖服务器可靠性)。
  3. 消费者端
    • 手动提交 offset:关闭 enable.auto.commit,业务处理成功后再提交 offset,避免消息未处理就被标记消费。

Kafka 机制的局限性

  1. 生产者与 Broker 的协同问题
    • 若生产者发送成功但 Broker 未返回 ACK(如网络中断),重试可能导致消息重复,但无法避免中间状态丢失。
  2. 业务操作与消息消费的原子性
    • 消费者处理业务逻辑(如更新数据库)与提交 offset 不是原子操作。若业务成功但 offset 未提交,系统重启后消息会重复消费;若业务失败但 offset 已提交,则消息永久丢失。
  3. 极端故障场景
    • Broker 集群同时宕机且未持久化的 PageCache 丢失。
    • ISR 副本全部失效时,unclean.leader.election 配置可能导致数据丢失。

为什么需要本地消息表?解决哪些 Kafka 无法覆盖的问题
本地消息表的核心是将业务操作与消息发送/消费绑定为原子操作,通过业务数据库事务保证一致性:

  1. 生产者端:解决“发送后丢失”问题
    • 场景:消息发送到 Kafka 成功,但业务操作(如订单创建)失败,需回滚消息。
    • 方案
      • 业务数据与消息记录同库事务写入本地表。
      • 异步线程轮询本地表,将未发送的消息投递到 Kafka。
      • 投递成功后删除本地记录。
  2. 消费者端:解决“消费后丢失”问题
    • 场景:业务逻辑成功执行(如扣款),但提交 offset 前消费者崩溃,导致消息重复消费。
    • 方案
      • 消费消息时,先查询本地消息表是否已处理(通过消息唯一 ID)。
      • 若未处理,执行业务操作并记录结果到本地表,同事务提交。
      • 成功后提交 offset。
  3. 关键价值:弥补分布式事务缺口
    • 业务与消息状态的强一致:本地消息表通过数据库事务,确保业务操作和消息状态变更的原子性,避免 Kafka 各环节可能出现的状态分裂。
    • 幂等性保障:通过本地表去重,解决生产者重试或消费者重复消费导致的数据错乱。

生产建议

  • 若使用本地消息表,建议配合异步核对机制(如比对 Kafka 与业务库消息状态),防止极端情况下的表状态异常。
  • 优先通过 idempotent producer(幂等生产者)减少重复发送,而非完全依赖本地表。

总结:Kafka 与本地消息表的关系
Kafka 的可靠性机制解决消息在管道内的传输问题,而本地消息表解决业务操作与消息状态的全局一致性问题。二者是互补而非替代关系:

  • 在需要 100% 业务一致性的场景(如资金变动),本地消息表是必要的最终防线。
  • 在可容忍 At-Least-Once 语义的场景(如日志收集),仅 Kafka 原生机制即可满足。

2. 用守护线程来保证任务执行状态和数据库状态的一致性,这里有个问题,如果 subjob 执行完了在状态翻转之前宕机了,怎么保证他的一致性呢?宕机导致数据丢失的问题?

在分布式系统中,通过守护线程监控任务状态并同步到数据库时,若任务执行完成但状态更新前发生宕机,需通过以下机制保证一致性。具体解决方案如下:

  1. 核心问题:宕机导致状态丢失的风险

    • 场景复现:SubJob 执行完成 → 守护线程未完成状态更新(如数据库写入)→ 系统宕机 → 重启后状态未翻转,任务被视为“未完成”,可能触发重复执行或数据不一致。
    • 根本原因:任务执行结果与状态更新操作非原子性,二者分离导致中间状态丢失。
  2. 解决方案:原子性保障 + 故障恢复机制

    • 本地事务绑定状态更新
      • 设计要点:将任务执行结果与状态更新置于同一数据库事务中。
      • 优势
        • updateStatus 失败,事务回滚,任务结果不会被确认。
        • 宕机时事务未提交,数据库自动恢复至初始状态。
      • 局限:需任务执行本身支持事务(如数据库操作)。
    • 预写日志(WAL) + 检查点(Checkpoint)
      • 流程
        • SubJob 完成时,先持久化结果到预写日志(如 Kafka 或持久化队列)。
        • 守护线程消费日志,更新状态。
        • 周期性设置 Checkpoint,记录日志消费位点。
      • 故障恢复
        • 宕机重启后,从最近 Checkpoint 恢复日志消费位点,重放未确认的状态更新。
        • 通过日志唯一 ID 实现操作幂等性,避免重复更新。
    • 异步核对 + 补偿机制
      • 设计要点
        • 守护线程更新状态后,异步记录操作流水(如操作 ID + 时间戳)。
        • 定时扫描任务表与状态表的差异,对“执行成功但状态未更新”的任务触发补偿更新。
      • 关键点
        • 核对需覆盖极端场景(如守护线程更新状态后宕机)。
        • 补偿操作需幂等(例如通过 UPDATE status SET state='done' WHERE id=task_id AND state!='done')。
  3. 总结:关键设计原则

    • 原子操作优先:通过事务或预写日志绑定任务执行与状态更新,减少中间态窗口。
    • 幂等性必备:状态更新操作需支持重复执行(如基于唯一任务 ID 的幂等更新)。
    • 最终一致性兜底:通过核对与补偿覆盖极端故障,实现数据闭环。

    生产建议

    • 若采用预写日志,建议搭配 Kafka 事务消息(idempotent producer)避免消息重复。
    • 核对频率需权衡时效性与系统负载(如每 5 分钟扫描一次)。

3. Dubbo 执行的原理

Dubbo 是一个高性能 Java RPC 框架,其核心执行流程如下:

  1. 服务暴露与注册
    • 服务提供者启动时,将服务接口、实现类及主机信息注册到注册中心(如 ZooKeeper)。
    • 注册中心通知消费者服务列表变更。
  2. 服务调用流程
    • 代理层:消费者通过动态代理生成远程接口的代理对象,调用时转为 RPC 请求。
    • 集群容错:根据配置(如 Failover、Failfast)选择可用提供者,支持负载均衡(如随机、轮询)。
    • 网络传输:通过 Netty 或 Mina 进行网络通信,默认使用 Hessian2 序列化协议。
  3. 核心分层设计
    • Service 层:业务逻辑接口与实现。
    • Config 层:配置管理(如 @Reference 注解注入服务)。
    • Proxy 层:生成服务代理。
    • Registry 层:服务注册与发现。
    • Monitor 层:调用统计与监控。

4. 什么情况下会导致索引失效

MySQL 索引失效的常见场景包括:

  1. 违反最左前缀原则
    • 复合索引 (a,b,c) 下,查询条件缺失 a 或未按顺序使用索引列(如 WHERE b=1)。
  2. 对索引列运算或函数操作
    • 例如 WHERE YEAR(create_time)=2023WHERE amount*2>100
  3. 隐式类型转换
    • 如字符串字段使用数字查询(WHERE code=100,实际 code 为 VARCHAR)。
  4. 使用 OR 连接非索引列
    • WHERE a=1 OR b=2,若 b 无索引则全表扫描。
  5. LIKE 以通配符开头
    • WHERE name LIKE '%abc' 无法利用索引(LIKE 'abc%' 有效)。
  6. 数据分布不均
    • 优化器判断全表扫描更快(如表中 90% 数据满足条件)。

5. MySQL 的 MVCC 机制

MVCC(多版本并发控制)是 InnoDB 实现高并发的核心机制:

  1. 核心组件
    • 隐藏字段:每行数据包含 DB_TRX_ID(最近事务 ID)和 DB_ROLL_PTR(回滚指针)。
    • Undo Log:存储数据的历史版本,用于回滚和一致性读。
    • Read View:事务开启时生成,记录当前活跃事务 ID 列表,用于判断数据可见性。
  2. 可见性规则
    • 数据行的 DB_TRX_ID 小于 Read View 中最小事务 ID → 可见(已提交)。
    • DB_TRX_ID 大于 Read View 中最大事务 ID → 不可见(未提交)。
    • DB_TRX_ID 在活跃事务列表中 → 不可见(未提交);否则可见。
  3. 解决并发问题
    • 读已提交(RC):每次查询生成新 Read View,避免脏读。
    • 可重复读(RR):事务内首次查询生成 Read View 并复用,避免不可重复读。

6. 缓存穿透和缓存雪崩

  1. 缓存穿透
    • 问题:大量请求查询不存在的数据(如无效 ID),绕过缓存直击数据库。
    • 解决方案
      • 布隆过滤器(Bloom Filter)拦截非法 Key。
      • 缓存空值(key:null),并设置短过期时间。
  2. 缓存雪崩
    • 问题:大量缓存同时失效,请求集中访问数据库导致宕机。
    • 解决方案
      • 过期时间添加随机值(如 30min + rand(10min))。
      • 热点数据永不过期,后台异步更新。
      • 熔断降级:数据库压力过大时拒绝部分请求。

7. Redis 如何保证高性能?Redis 数据结构

Redis 高性能的核心设计:

  1. 内存操作:数据全内存存储,读写速度比磁盘数据库快 10⁵ 倍。
  2. 高效数据结构优化
    • SDS(简单动态字符串):预分配空间减少扩容开销。
    • 跳表(ZSET):O(logN) 复杂度实现范围查询。
    • 渐进式 Rehash(Hash):避免一次性迁移大哈希表导致服务阻塞。
  3. 单线程模型(6.0 前核心命令处理):
    • 避免多线程锁竞争和上下文切换开销。
  4. I/O 多路复用
    • 基于 epoll/kqueue 监听大量连接,单线程处理网络 I/O。
  5. 协议简单:RESP 协议解析高效,减少 CPU 消耗。

Redis 6.0+ 优化:网络 I/O 多线程化提升吞吐量,但命令执行仍保持单线程以保证原子性。


8. Spring 和 Spring Boot 的区别

维度SpringSpring Boot
配置方式需手动配置 XML/注解,依赖管理复杂。自动配置(@EnableAutoConfiguration),简化依赖(Starter 包)。
内嵌服务器需外部部署(如 Tomcat)。内置 Tomcat/Jetty,无需单独部署。
监控与运维需集成 Spring Actuator 等模块。内置 Actuator,提供健康检查、指标收集等。
开发效率需大量样板代码。约定优于配置,快速构建独立应用。

9. Spring Boot 自动装配的原理

自动装配通过以下流程实现:

  1. 启动注解 @SpringBootApplication
    • 组合了 @EnableAutoConfiguration,触发自动配置加载。
  2. 加载 spring.factories
    • 扫描 META-INF/spring.factories 文件,读取 AutoConfiguration 类列表。
  3. 条件化装配
    • 通过 @ConditionalOnClass@ConditionalOnProperty 等注解,按需实例化 Bean(如仅当存在 DataSource.class 时配置数据库连接)。
  4. Bean 注册
    • 符合条件的配置类中,@Bean 方法将对象注册到 IoC 容器。

10. @Autowired 是如何把 Bean 注入进去的

@Autowired 注入流程分为四个阶段:

  1. 注入触发阶段
    • AutowiredAnnotationBeanPostProcessor 扫描被 @Component 标记的类,识别带 @Autowired 的字段/方法。
    • 收集依赖信息并封装为 InjectionMetadata 对象。
  2. 依赖解析阶段
    • 按类型匹配:查找容器中与目标类型匹配的 Bean(如 UserService)。
    • 按名称兜底:若同类型多个 Bean 存在,尝试匹配字段/参数名称(如 userService)。
    • @Qualifier 指定:强制按名称注入(如 @Qualifier("masterDB"))。
  3. 注入执行阶段
    • 字段注入:反射直接修改字段值(无需 Setter)。
    • 方法注入:调用 Setter 方法传入依赖对象。
  4. 特殊场景处理
    • 集合注入List<Interface> 注入所有实现类;Map<String, Interface> 的 Key 为 Bean 名称。
    • 静态字段限制:无法直接注入静态变量(需通过 @PostConstruct 中转)。

底层原理:依赖解析由 DefaultListableBeanFactory.doResolveDependency() 完成,最终通过 Field.set() 或方法反射注入。


11. ES 与 MySQL 的区别,几个数据节点,几个副本,副本数可以为 0?

一、核心差异

维度ElasticsearchMySQL
数据模型文档型(JSON),倒排索引支持全文搜索。关系型(行列),B+树索引支持事务。
分布式架构原生分片,横向扩展至数千节点。单机为主,分库分表需中间件。
查询场景多字段组合查询高效(如 title:手机 AND price:[1000 TO 2000])。事务操作(ACID)、关联查询(JOIN)高效。

二、节点与副本配置

  1. 节点数量
    • ES:至少 3 节点(防脑裂),主分片与副本分片跨节点分布。
    • MySQL:主从架构至少需 2 节点(1 主 + 1 从)。
  2. 副本数规则
    • ES
      • 可配置为 0(number_of_replicas: 0),但宕机时数据可能丢失。
      • 生产建议 ≥1(副本=1 容忍单节点故障)。
    • MySQL:副本数不可为 0(单点部署即无副本),高可用方案需 ≥1 从节点。

12. 设计模式,使用过哪些设计模式,详细介绍模板方法

模板方法模式

  1. 核心思想
    • 定义算法骨架(抽象类),子类重写特定步骤而不改变结构。
  2. 实现示例
    public abstract class DataProcessor {// 模板方法(final 防止篡改)public final void process() {connect();      // 固定步骤transform();    // 抽象方法(子类实现)disconnect();   // 固定步骤}private void connect() { /* 数据库连接逻辑 */ }protected abstract void transform(); // 由子类自定义private void disconnect() { /* 断开连接 */ }
    }public class CSVProcessor extends DataProcessor {@Overrideprotected void transform() {System.out.println("解析 CSV 数据...");}
    }
    
  3. 应用场景
    • 框架扩展点:如 Spring 的 JdbcTemplate,用户实现 RowMapper 处理结果集。
    • 业务流程标准化:如订单处理流程(校验 → 计算 → 持久化),子类定制计算逻辑。
  4. 优势
    • 避免代码重复,确保核心流程稳定。
    • 开放扩展点,提升灵活性。

欢迎关注 ❤

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以私信我,备注:面试群。

相关文章:

北京京东,看看难度

最近由于三大外卖平台“打仗”&#xff0c;优惠券多到数不过来&#xff0c;一日三餐每个平台各点一单哈哈哈&#xff0c;正好最近组织内部还有朋友在北京的京东面试过&#xff0c;分享一下她的面经&#xff08;Java岗&#xff09;&#xff1a; 1. Kafka消息不丢失问题&#xf…...

RPGMZ游戏引擎 如何手动控制文字显示速度

直接上代码 const _Window_Base_prototype_initialize Window_Base.prototype.initialize;Window_Base.prototype.initialize function(rect) {_Window_Base_prototype_initialize.call(this, rect);this.文字速度缓冲 0;}; this.文字速度缓冲 0; 进行缓冲 Window_Base…...

linux线程同步

互斥锁 同步与互斥概述** 现代操作系统基本都是多任务操作系统&#xff0c;即同时有大量可调度实体在运行。在多任务操作系统中&#xff0c;同时运行的多个任务可能&#xff1a; 都需要访问/使用同一种资源 多个任务之间有依赖关系&#xff0c;某个任务的运行依赖于另一个任…...

大内存对电脑性能有哪些提升

在科技飞速发展的今天&#xff0c;电脑已经成为我们生活和工作中不可或缺的伙伴。无论是日常办公、追剧娱乐&#xff0c;还是进行复杂的游戏和专业设计&#xff0c;电脑的性能都至关重要。而在影响电脑性能的众多因素中&#xff0c;内存大小常常被人们忽视。 多任务处理更流畅…...

什么是“微博养铁粉”以及如何增加微博铁粉

发了个发微博养铁工具_微博养铁粉的定义 微博养铁粉是指粉丝通过与博主的互动&#xff0c;成为博主的铁粉。铁粉是微博推出的一种反映粉丝与博主之间亲密度的互动产品。成为铁粉后&#xff0c;粉丝的评论权重增加&#xff0c;更容易上前排&#xff0c;点赞和评论的效果也会更好…...

华为和H3C服务器配置远控管理地址

1、华为RH2288_V3服务器 1.1、启动服务器按DEL按键进入服务器bios 1.2、选择Advanced菜单中的 IPMI iBMC Configuration配置项回车进入。 1.3、IPMI iBMC Configuration配置界面中选择IBMC Configuration配置项回车进入。 1.4、IBMC Configuration 配置项中配置IPV4 Configura…...

Git 查询与切换分支的完整指南

Git 查询与切换分支的完整指南 1. 查询分支列表 查看本地分支 git branch当前分支会以绿色显示并带有 * 标记添加 -v 或 -vv 查看更详细的信息&#xff08;最后一次提交和跟踪关系&#xff09; git branch -v # 或者 git branch -vv查看所有分支&#xff08;包括远程分支&a…...

Spring 中的依赖注入(DI)详解

&#x1f4cc; 摘要 在现代 Java 开发中&#xff0c;依赖注入&#xff08;Dependency Injection, DI&#xff09; 是 Spring 框架最核心的功能之一。它通过解耦对象之间的依赖关系&#xff0c;提高了代码的可维护性、可测试性和可扩展性。 本文将全面讲解 Spring 中依赖注入的…...

Bytebase 3.7.1 - 数据库变更功能全免费!

&#x1f514; 重大变更 所有数据库变更相关功能现已在社区版中完全免费开放&#xff01;详情请查看我们的最新定价。 &#x1f384; 改进 文档网站全面升级&#xff0c;改进导航、搜索功能&#xff0c;以及与 AI 集成自助回答问题。SQL 编辑器现在会高亮光标所在的语句。SQ…...

深度学习笔记27-LSTM实现糖尿病探索与预测(Pytorch)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、前期准备 1.数据导入 import torch.nn as nn import torch.nn.functional as F import torchvision,torch import numpy as np import pandas as pd impo…...

3DS中文游戏全集下载 任天堂3DS简介3DS第一方独占游戏推荐

任天堂3DS 的详细介绍&#xff0c;涵盖其硬件特性、核心功能、游戏阵容及历史地位&#xff1a; 3DS游戏全集下载 https://pan.quark.cn/s/dd40e47387e7 https://sink-698.pages.dev/3ds CIA CCA 等格式可用于3DS模拟器和3DS实体机 3DS 是什么&#xff1f; 全称&#xff1a;Nin…...

vue3 reactive重新赋值

在 Vue 3 中&#xff0c;如果你想使用 reactive API 来创建一个响应式对象&#xff0c;并且之后需要更新这个对象中的属性&#xff0c;你可以按照以下步骤进行&#xff1a; 1. 使用 reactive 创建响应式对象 首先&#xff0c;你需要从 Vue 的 reactive API 中创建一个响应式对…...

全面掌握 C++ 基础:关键特性与进化

文章目录 全面掌握 C 基础&#xff1a;关键特性与进化1. C 关键字2. 命名空间&#xff08;namespace&#xff09;⚠️ 示例 2.1 定义命名空间2.2 使用成员的方法 3. C 输入/输出&#xff08;iostream&#xff09;4. 缺省参数&#xff08;Default Parameter&#xff09;4.1 定义…...

HTML一键打包EXE串口API介绍

HTML一键打包EXE软件(HTML转EXE) 支持将Web前端项目转换为Windows平台下的独立可执行程序&#xff08;EXE&#xff09;&#xff0c;适用于Windows 7及以上系统&#xff0c;无需额外配置系统环境, 软件包含多种内核, 包括IE内核, Chrome内核, 以及WebView2(永久免费), 适用于不同…...

.docx 和 .doc 都是 Word 文档格式的区别

.docx 和 .doc 都是 Word 文档格式&#xff0c;但有区别&#xff1a; .docx 是新版 Word 格式&#xff08;推荐使用&#xff09; 从 Microsoft Word 2007 起引入的格式全名是&#xff1a;Office Open XML Document实际是一个 压缩包&#xff08;ZIP&#xff09;结构&#xff0…...

如何轻松地将音乐从 iPhone 传输到 Mac?

想把音乐从 iPhone 传输到 Mac 吗&#xff1f;这很常见&#xff0c;无论你是想更换设备、备份收藏&#xff0c;还是只想在更大的屏幕上欣赏喜爱的歌曲。幸运的是&#xff0c;有 6 种有效的方法可以完成这项工作&#xff0c;具体取决于你喜欢使用的工具。让我们开始吧。 第 1 部…...

Qwen3 Embedding 结构-加载-训练 看透模型设计哲学

看透一个顶级AI句向量模型的设计秘密&#xff0c;从文件结构到加载原理&#xff0c;再到其背后的训练哲学。 1 Qwen3-Embedding模型结构拆解 说明&#xff1a;目录包含了运行一个基于 Transformer 的句向量模型所需的所有组件 文件类别核心文件作用核心模型model.safetensors…...

AT8548双通道 H 桥电机驱动芯片

AT8548 是一种双通道低饱和电压的正、反向电机驱动芯片&#xff0c;为玩具、打印机和其它电机一体化应用提供一种双通道电机驱动方案。 特点&#xff1a; 双通道H桥电机驱动器&#xff1b; 驱动两个直流有刷电机或者一个步进电机&#xff1b; 低RDS(ON)电阻&#xff0c;1.06Ω(…...

kubeadm worker节点加入master失败

文章目录 1、操作2、问题现象3、问题原因4、问题解决4.1、重新生成token4.2、重新生成hash值 5、验证 1、操作 执行以下命令&#xff0c;让worker节点加入到master节点 kubeadm join 103.123.222.241:6443 --token vxe3v1.wzpnks8v1vbbtsu0 --discovery-token-ca-cert-hash s…...

Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理

目录 1. &#x1f9e9;Maven插件 2. &#x1f3d7;️构建Maven工程 3. &#x1f4c4; pom文件配置 ​3.1. ⚙️ ​ 中定义一些配置信息 ​3.2. &#x1f4e6; ​中定义依赖的jar包坐标 ​3.3. &#x1f50c; ​中定义第三方插件 ​4. ✍️编写代码 5. &#x1f517;依赖范…...

分布式系统中的 Kafka:流量削峰与异步解耦(二)

Kafka 在分布式系统中的应用案例 电商订单系统 在电商领域&#xff0c;订单系统是核心业务模块之一&#xff0c;涉及多个复杂的业务环节和系统组件之间的交互。以常见的电商购物流程为例&#xff0c;当用户在电商平台上下单后&#xff0c;订单创建服务会首先接收到用户的订单…...

从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页

如果php.ini已经加入了如下的内容还是报错 &#xff1a; upload_max_filesize 1024M post_max_size 1024M 那就是因为阿帕奇导致&#xff1a;...

FramePack 安装指南(中文)

FramePack 安装指南&#xff08;中文&#xff09; -Windows FramePack 是最前沿的 AI 视频生成框架&#xff0c;以极小的硬件需求颠覆视频创作&#xff01;它能在仅 6GB 笔记本 GPU 内存上&#xff0c;驱动 13B 模型以 30 FPS 生成超长 120 秒视频&#xff0c;几乎无内容限制&…...

【NLP入门系列三】NLP文本嵌入(以Embedding和EmbeddingBag为例)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 博主简介&#xff1a;努力学习的22级本科生一枚 &#x1f31f;​&#xff1b;探索AI算法&#xff0c;C&#xff0c;go语言的世界&#xff1b;在迷茫中寻找光芒…...

电子电气架构 --- 软件供应商如何进入OEM体系

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...

检索增强生成(RAG)领域关键数据集综述:分类、挑战与展望

检索增强生成&#xff08;RAG&#xff09;领域关键数据集综述&#xff1a;分类、挑战与展望 摘要 检索增强生成&#xff08;RAG&#xff09;通过融合外部知识库与大型语言模型&#xff0c;已成为解决知识密集型自然语言处理&#xff08;NLP&#xff09;任务的关键范式。高质量…...

CFD仿真计算革命:基于GPU的格子玻尔兹曼方法(LBM)算子优化——利用Tensor Core加速碰撞核计算(性能提升3倍实测)

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台&#xff0c;注册即送H800算力”&#xff0c;H卡级别算力&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生专属优惠。 在计算流体动力学领域&#xff0c;格子玻尔兹曼方法正以介观模…...

【蓝牙】Qt4中向已配对的手机发送PDF文件

在Qt 4中实现通过蓝牙向已配对的设备发送文件&#xff08;例如PDF文件&#xff09;&#xff0c;你可以使用Qt Bluetooth模块。Qt 4的蓝牙模块提供了基本的蓝牙功能&#xff0c;包括设备发现、配对管理和数据传输。下面是一些步骤和示例代码&#xff0c;帮助你通过蓝牙发送PDF文…...

Vue + AbortController 请求取消弹窗 hook 封装

背景 实际业务开发场景中&#xff0c;往往存在有些大数据请求的需求&#xff0c;一旦请求发起加载遮罩后用户就无法操作了&#xff0c;直接尬住&#xff0c;所以提供一个支持取消查询的功能还是很有必要的&#xff0c;为了在全业务接口都能使用封装一个hook。 ✋为什么要用 A…...

在小程序中实现上下左右拖动表格

在小程序的开发中&#xff0c;不可避免会出现上下左右拖动表格的类似需求&#xff0c;下面将把这个简单实现一下 其中主要使用到了overflow: scroll;来使得横向和纵向可以滚动&#xff0c;并且使用负边距 父容器截断的方法来同时隐藏横向和纵向滚动条&#xff0c;从而实现该效…...

Spark 以及 spark streaming 核心原理及实践

导语 spark 已经成为广告、报表以及推荐系统等大数据计算场景中首选系统&#xff0c;因效率高&#xff0c;易用以及通用性越来越得到大家的青睐&#xff0c;我自己最近半年在接触spark以及spark streaming之后&#xff0c;对spark技术的使用有一些自己的经验积累以及心得体会&…...

数据融合平台是什么?如何搭建数据融合平台?

目录 一、数据融合是什么 1. 定义 2. 作用 二、数据融合平台的功能是什么 1. 数据抽取 2. 数据清洗 3. 数据转换 4. 数据关联 5. 数据存储 三、如何让搭建数据融合平台 1. 需求分析 2. 选择合适的技术和工具 3. 设计平台架构 4. 开发和部署平台 5. 数据迁移和融…...

Linux之线程同步与互斥

目录 一、线程互斥 1.1、进程线程间的互斥相关背景概念 1.2、互斥量mutex 1.2.1、互斥量的接⼝ 1.3、互斥量实现原理探究 1.4、互斥量的封装 二、线程同步 2.1、条件变量 2.2、同步概念与竞态条件 2.3、条件变量函数 2.4、⽣产者消费者模型 2.4.1、为何要使⽤⽣产者…...

uniapp开发小程序,导出文件打开并保存,实现过程downloadFile下载,openDocument打开

uniapp开发小程序&#xff0c;导出文件打开并保存 实现思路 1、调用请求获取到后端接口返回的下载文件的url路径 &#xff08;注意必须是https的路径&#xff0c;域名需要配置在微信小程序后台的合法域名里面&#xff09; 2、使用 uni.downloadFile 方法 &#xff08;下载文件…...

腾讯云COS“私有桶”下,App如何安全获得音频调用流程

流程图 #mermaid-svg-Phy4VCltBRZ90UH8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-icon{fill:#552222;}#mermaid-svg-Phy4VCltBRZ90UH8 .error-text{fill:#552222;stroke:#552222;}#me…...

简单的 ​Flask​ 后端应用

from flask import Flask, request, jsonify, session import os app Flask(__name__) app.secret_key os.urandom(24) users { 123: admin, admin: admin } # 登录接口 app.route(/login, methods[POST]) def login(): data request.get_json() username data.get(usern…...

Android 中 解析 XML 字符串的几种方式

在 Android 开发中&#xff0c;解析 XML 文件有多种方式&#xff0c;每种方式都有其特点和适用场景。常见的 XML 解析方式有 DOM 解析、SAX 解析 和 XmlPullParser 解析。 1、DOM 解析 DOM&#xff08;Document Object Model&#xff09;解析是一种基于树结构的解析方式&#…...

git commit

‌git commit 是版本控制的核心操作之一&#xff0c;用于将暂存区的修改记录为新的版本提交‌。以下是关键步骤和最佳实践&#xff1a; ‌基础操作‌ ‌提交单个文件‌&#xff1a; bash Copy Code git commit -m “提交信息” ‌提交多个文件‌&#xff1a; bash Copy Code …...

【新手向】GitHub Desktop 的使用说明(含 GitHub Desktop 和 Git 的功能对比)

GitHub Desktop 是 GitHub 公司推出的一款桌面应用程序&#xff0c;旨在帮助开发人员更轻松地使用 GitHub&#xff0c;以下是其简单的使用说明&#xff1a; 安装与登录 下载 GitHub Desktop |GitHub 桌面 访问GitHub Desktop 官方网站&#xff0c;根据自己的操作系统下载对应的…...

Tomcat项目本地部署(Servlet为例)

在Windows上部署 在idea中打开项目 首先我们需要准备一个Servlet项目&#xff0c;我之前的Servlet项目是用eclipse写的&#xff0c;这种情况下如果用idea直接打开的话会出现左侧目录无法显示的情况&#xff0c;这个时候我们就需要用别的方法打开 打开项目管理 如下图&#…...

Linux——linux的基本命令

目录 一、linux的目录结构 二、绝对路径和相对路径 三、文件类型&#xff08;linux下所有东西都可看作文件&#xff09; 四、文件的权限 五、文件权限的修改&#xff08;chmod&#xff09; 六、linux常用的命令 七、文件查看命令 八、文件编辑命令 九、文件压缩与解压…...

wireshark过滤显示rtmp协议

wireshark中抓包显示的数据报文中&#xff0c;明明可以看到有 rtmp 协议的报文&#xff0c;但是过滤的时候却显示一条都没有 查看选项中的配置&#xff0c;已经没有 RTMP 这个协议了&#xff0c;已经被 RTMPT 替换了&#xff0c;过滤框中输入 rtmpt 过滤即可...

Fiddler抓包工具使用技巧:如何结合Charles和Wireshark提升开发调试效率

在开发过程中&#xff0c;网络调试工具是每个程序员的必备利器&#xff0c;特别是当涉及到Web应用和移动应用的调试时&#xff0c;抓包工具的作用尤为突出。无论是处理复杂的API调用、分析性能瓶颈&#xff0c;还是排查网络通信问题&#xff0c;抓包工具都能够帮助开发者精准地…...

LVS负载均衡群集

这里写目录标题 案例:部署Tomcat案例分析案例概述案例前置知识点Tomcat 简介应用场景 案例环境 案例实施实施准备关闭 firewalld 防火墙在安装Tomcat之前必须先安装JDK 查看JDK是否安装安装配置 TomcatTomcat 的安装和配置步骤如下:解压后生成 apache-tomcat-9.0.8文件夹&#…...

【unitrix】 3.5 类型级别的比较系统(cmp.rs)

一、源码 这段代码定义了一个类型级别的比较系统&#xff0c;主要用于在编译时比较类型并得出比较结果。它使用了 Rust 的类型系统和标记特征(trait)来实现这一功能。 use crate::sealed::Sealed; use crate::number::{Z0, P1, N1}; use core::cmp::Ordering;// 比较结果类型…...

防御式编程:防止 XSS 攻击

对用户输入进行编码和过滤是防止 XSS 攻击的关键。以下是改进后的代码示例&#xff1a; from flask import Flask, request, escape from markupsafe import Markup app Flask(__name__) app.route(/comment, methods[POST]) def comment(): user_comment escape(re…...

【Java项目设计】基于Springboot+Vue的OA办公自动化系统

介绍&#xff1a; 基于Springboot为后端&#xff0c;vue为前端的企业综合性OA办公自动化平台&#xff0c;涵盖九大核心模块&#xff0c;全方位解决企业日常办公需求&#xff0c;提升工作效率和管理水平。系统采用模块化设计&#xff0c;功能全面且易于扩展&#xff0c;从基础登…...

WebServer实现:muduo库的主丛Reactor架构

前言 作为服务器&#xff0c;核心自然是高效的处理来自client的多个连接啦&#xff0c;那问题在于&#xff0c;如何高效的处理client的连接呢&#xff1f;这里就介绍两种架构:单Reactor架构和主丛Reactor架构。 单Reactor架构 单Reactor架构的核心为&#xff0c;由一个主线程监…...

每天一个前端小知识 Day 7 - 现代前端工程化与构建工具体系

现代前端工程化与构建工具体系 1. 为什么要工程化&#xff1f;&#xff08;面试高频问题&#xff09; 问题痛点&#xff1a; 模块太多、无法组织&#xff1b;代码冗长、性能差&#xff1b;浏览器兼容性差&#xff1b;团队协作混乱&#xff0c;缺少规范与自动化。 工程化目标…...

nginx的下载与安装 mac

1. 下载 方法一&#xff1a;本地下载 链接&#xff1a;https://nginx.org/en/download.html&#xff08;可直接搜官网&#xff09; 下载到本地后&#xff0c;上传到linux的某个文件夹中 方法二&#xff1a;直接linux上下载&#xff08;推荐&#xff09; wget -c http://ngi…...