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

Java大厂面试实战:电商高并发场景下的Spring Boot+Redis+Kafka技术栈深度解析

Java大厂面试实战电商高并发场景下的技术栈深度解析前言在互联网大厂面试中技术面试官往往会结合具体业务场景来考察候选人的技术深度和广度。本文模拟了一场电商场景下的Java技术面试通过面试官与求职者谢飞机的三轮对话帮助大家理解大厂面试的考察重点。面试场景某电商大厂后端开发岗位面试官严肃脸你好请坐。今天我们来聊聊电商场景下的技术实现问题。谢飞机紧张地搓手好...好的面试官好第一轮基础技术考察电商商品系统问题1电商商品详情页的并发量很大你会用哪些技术来优化谢飞机这个...可以用缓存Redis缓存商品数据数据库用连接池...还有Spring Boot做快速开发面试官点头方向对。具体说说Redis怎么设计缓存结构谢飞机就...key-value嘛key是商品IDvalue是商品信息的JSON字符串面试官微笑不错基础概念清晰。那缓存穿透、击穿、雪崩怎么解决谢飞机擦汗穿透...是查不存在的数据可以用布隆过滤器击穿...热点数据过期加互斥锁雪崩...大量缓存同时过期设置随机过期时间面试官满意回答得很好继续。问题2商品库存扣减怎么保证数据一致性谢飞机用数据库事务Transactional注解加上就行面试官高并发场景下呢比如秒杀活动1万人同时抢100件商品。谢飞机犹豫那...那用Redis预扣减先在Redis里减库存再异步写数据库面试官引导思路对但怎么防止超卖谢飞机用Redis的Lua脚本保证原子性或者用Redisson的分布式锁面试官点头很好知道用原子操作。问题3订单系统用什么数据库分库分表怎么设计谢飞机MySQL分库分表...按用户ID哈希还是按订单时间面试官两种方案各有什么优缺点谢飞机挠头用户ID哈希...查询用户订单快但时间范围查询慢按时间分表...时间查询快但用户订单查询要扫多个表面试官认可理解到位。那用什么中间件谢飞机ShardingSphere或者MyCat第二轮进阶技术考察微服务架构问题4电商系统怎么用微服务拆分谢飞机按业务域拆分用户服务、商品服务、订单服务、支付服务、库存服务...面试官服务之间怎么调用谢飞机Spring Cloud OpenFeign还有Spring Cloud Gateway做网关面试官服务挂了怎么办谢飞机自信熔断降级用Resilience4j或者Sentinel面试官赞许技术选型很新不错。问题5订单创建后需要通知库存、物流、积分等多个系统怎么设计谢飞机用消息队列Kafka面试官为什么选Kafka不选RabbitMQ谢飞机思考Kafka吞吐量高适合日志和大量消息RabbitMQ功能更丰富有各种交换器面试官电商场景下呢谢飞机订单消息量大用Kafka需要复杂路由用RabbitMQ面试官满意理解场景差异。问题6消息丢失怎么解决谢飞机开始含糊Kafka有ack机制...生产者确认...消费者手动提交...面试官具体怎么配置谢飞机眼神飘忽ackall...retries设置大一点...幂等性消费...面试官皱眉幂等性怎么实现谢飞机擦汗数据库唯一索引或者Redis记录已处理的消息ID面试官记录继续下一轮。第三轮架构设计考察高并发与监控问题7双11大促系统怎么保证高可用谢飞机紧张限流熔断降级预案面试官具体怎么限流谢飞机网关层限流用SentinelQPS阈值...用户维度限流...接口维度限流...面试官服务实例怎么扩缩容谢飞机KubernetesHPA自动扩缩容面试官点头云原生意识不错。问题8系统监控怎么做谢飞机稍微自信PrometheusGrafana监控指标...JVM...CPU...内存...面试官链路追踪呢谢飞机SkyWalking或者ZipkinJaeger面试官日志收集谢飞机ELK StackElasticsearchLogstashKibana面试官认可技术栈比较全面。问题9分布式事务怎么解决谢飞机开始含糊SeataTCC模式...或者...最终一致性面试官订单和库存的分布式事务具体怎么设计谢飞机眼神游离先扣库存...再创建订单...失败了回滚...用消息队列保证最终一致...面试官追问回滚失败怎么办谢飞机冒汗补偿事务定时任务扫描...人工介入面试官记录好今天先到这里。面试结束面试官合上笔记本今天的面试就到这里我们会在一周内给你反馈请保持手机畅通。谢飞机松一口气好的好的谢谢面试官详细答案解析小白学习专区一、缓存优化方案1.1 Redis缓存结构设计// 商品缓存Key设计 String productKey product: productId; // 库存缓存Key设计 String stockKey stock: productId; // 热点数据单独缓存 String hotProductKey hot:product: productId;技术要点使用分层缓存策略热点数据单独处理Key设计要有业务含义便于管理设置合理的过期时间避免雪崩1.2 缓存三大问题解决方案| 问题 | 原因 | 解决方案 | |------|------|----------| | 缓存穿透 | 查询不存在的数据 | 布隆过滤器、缓存空值 | | 缓存击穿 | 热点数据过期 | 互斥锁、永不过期异步更新 | | 缓存雪崩 | 大量缓存同时过期 | 随机过期时间、高可用集群 |代码示例// 布隆过滤器防止穿透 Autowired private RedissonClient redissonClient; public Product getProduct(Long productId) { RBloomFilterLong bloomFilter redissonClient.getBloomFilter(product:bloom); if (!bloomFilter.contains(productId)) { return null; // 直接返回不查数据库 } // 正常查询逻辑 } // 互斥锁防止击穿 public Product getProductWithLock(Long productId) { String key lock:product: productId; RLock lock redissonClient.getLock(key); if (lock.tryLock()) { try { // 双重检查后加载缓存 return loadProductFromDb(productId); } finally { lock.unlock(); } } // 等待后重试 }二、库存扣减一致性方案2.1 Redis Lua脚本原子扣减-- 库存扣减Lua脚本 local stockKey KEYS[1] local quantity tonumber(ARGV[1]) local current tonumber(redis.call(GET, stockKey)) if current quantity then redis.call(DECRBY, stockKey, quantity) return 1 -- 成功 else return 0 -- 库存不足 end// Java调用Lua脚本 Autowired private RedisTemplateString, Object redisTemplate; public boolean deductStock(Long productId, Integer quantity) { String script ...; // 上面的Lua脚本 RedisScriptLong redisScript RedisScript.of(script, Long.class); Long result redisTemplate.execute( redisScript, Collections.singletonList(stock: productId), quantity ); return result 1; }2.2 分布式锁方案RedissonAutowired private RedissonClient redissonClient; public Order createOrder(OrderDTO dto) { RLock lock redissonClient.getLock(order: dto.getUserId()); if (lock.tryLock(3, 10, TimeUnit.SECONDS)) { try { // 1. 校验库存 // 2. 扣减库存 // 3. 创建订单 return orderService.create(dto); } finally { lock.unlock(); } } throw new BusinessException(系统繁忙请稍后重试); }三、分库分表设计3.1 分片策略对比| 分片方式 | 优点 | 缺点 | 适用场景 | |----------|------|------|----------| | 用户ID哈希 | 用户订单查询快 | 时间范围查询慢 | C端用户订单 | | 订单时间 | 时间查询快 | 用户查询需扫多表 | 后台管理查询 | | 复合分片 | 兼顾多种查询 | 配置复杂 | 大型电商系统 |3.2 ShardingSphere配置示例spring: shardingsphere: datasource: names: ds0,ds1 rules: sharding: tables: t_order: actual-data-nodes: ds${0..1}.t_order_${0..3} table-strategy: standard: sharding-column: user_id sharding-algorithm-name: user-hash sharding-algorithms: user-hash: type: HASH props: sharding-count: 8四、微服务架构设计4.1 服务拆分原则电商系统微服务拆分 ├── 用户服务 (user-service) ├── 商品服务 (product-service) ├── 订单服务 (order-service) ├── 库存服务 (inventory-service) ├── 支付服务 (payment-service) ├── 物流服务 (logistics-service) └── 网关服务 (gateway-service)4.2 OpenFeign调用示例FeignClient(name inventory-service) public interface InventoryClient { PostMapping(/api/inventory/deduct) ResultBoolean deductStock(RequestBody StockDTO dto); } Service public class OrderService { Autowired private InventoryClient inventoryClient; public Order createOrder(OrderDTO dto) { // 调用库存服务 ResultBoolean result inventoryClient.deductStock( new StockDTO(dto.getProductId(), dto.getQuantity()) ); if (!result.getData()) { throw new BusinessException(库存不足); } // 创建订单逻辑 } }4.3 熔断降级配置Resilience4jConfiguration public class ResilienceConfig { Bean public CircuitBreakerConfig circuitBreakerConfig() { return CircuitBreakerConfig.custom() .failureRateThreshold(50) // 失败率阈值50% .waitDurationInOpenState(Duration.ofSeconds(30)) // 打开状态等待时间 .slidingWindowSize(10) // 滑动窗口大小 .build(); } } Service public class InventoryService { CircuitBreaker(name inventoryService, fallbackMethod fallback) public Boolean deductStock(Long productId, Integer quantity) { // 正常调用逻辑 } public Boolean fallback(Long productId, Integer quantity, Exception e) { // 降级逻辑返回缓存数据或默认值 return false; } }五、消息队列设计5.1 Kafka vs RabbitMQ选型对比| 特性 | Kafka | RabbitMQ | |------|-------|----------| | 吞吐量 | 10万/秒 | 万级/秒 | | 延迟 | 毫秒级 | 毫秒级 | | 可靠性 | 高 | 非常高 | | 功能 | 简单 | 丰富各种交换器 | | 适用场景 | 日志、大数据、订单流 | 复杂路由、事务消息 |5.2 Kafka消息可靠性配置# 生产者配置 spring: kafka: producer: acks: all # 所有副本确认 retries: 3 # 重试次数 properties: enable.idempotence: true # 幂等性 max.in.flight.requests.per.connection: 5 # 消费者配置 consumer: enable-auto-commit: false # 手动提交 isolation.level: read_committed # 读已提交5.3 幂等性消费实现Service public class OrderMessageConsumer { Autowired private StringRedisTemplate redisTemplate; KafkaListener(topics order-created) public void consumeOrderMessage(ConsumerRecordString, String record) { String messageId record.key(); String idempotentKey order:message: messageId; // 使用Redis SETNX实现幂等 Boolean success redisTemplate.opsForValue() .setIfAbsent(idempotentKey, 1, 24, TimeUnit.HOURS); if (!success) { log.warn(重复消息已处理过{}, messageId); return; } try { // 处理业务逻辑 processOrder(record.value()); } catch (Exception e) { // 处理失败删除幂等标记允许重试 redisTemplate.delete(idempotentKey); throw e; } } }六、高可用架构设计6.1 限流策略SentinelRestController RequestMapping(/api/order) public class OrderController { PostMapping(/create) SentinelResource(value createOrder, blockHandler handleBlock, fallback handleFallback) public ResultOrder createOrder(RequestBody OrderDTO dto) { return orderService.create(dto); } // 限流处理 public ResultOrder handleBlock(OrderDTO dto, BlockException e) { return Result.fail(系统繁忙请稍后重试); } // 降级处理 public ResultOrder handleFallback(OrderDTO dto, Throwable e) { return Result.fail(服务暂时不可用); } }6.2 Kubernetes HPA配置apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: order-service-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: order-service minReplicas: 3 maxReplicas: 20 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 80七、监控体系设计7.1 PrometheusGrafana监控指标# Spring Boot Actuator配置 management: endpoints: web: exposure: include: health,info,metrics,prometheus metrics: export: prometheus: enabled: true tags: application: ${spring.application.name}核心监控指标JVM堆内存、GC次数、线程数应用QPS、响应时间、错误率业务订单量、支付成功率、库存周转率中间件Redis命中率、Kafka积压量、数据库连接数7.2 链路追踪SkyWalking// 无需代码侵入Agent自动采集 // 配置application.yml skywalking: agent: service_name: order-service namespace: ecommerce collector: backend_service: skywalking-oap:118007.3 日志收集ELK# Logback配置 dependencies: - logback-classic - logstash-logback-encoder # logback-spring.xml appender nameLOGSTASH classnet.logstash.logback.appender.LogstashTcpSocketAppender destinationlogstash:5000/destination encoder classnet.logstash.logback.encoder.LogstashEncoder/ /appender八、分布式事务方案8.1 Seata AT模式推荐// 全局事务注解 GlobalTransactional public Order createOrderWithStock(OrderDTO dto) { // 1. 扣减库存库存服务 inventoryService.deduct(dto.getProductId(), dto.getQuantity()); // 2. 创建订单订单服务 Order order orderService.create(dto); // 3. 扣减余额账户服务 accountService.deduct(dto.getUserId(), dto.getAmount()); return order; // 任意一步失败自动回滚所有操作 }8.2 最终一致性方案消息队列订单创建流程 1. 订单服务创建订单状态待支付→ 本地事务提交 2. 订单服务发送订单创建消息 → Kafka 3. 库存服务消费消息 → 扣减库存 4. 积分服务消费消息 → 增加积分 5. 物流服务消费消息 → 生成物流单 补偿机制 - 定时任务扫描超时未支付订单 - 自动取消订单发送订单取消消息 - 各服务消费取消消息回滚操作总结面试准备建议技术栈学习路径基础层Java核心 → JVM → 数据结构与算法 框架层Spring Boot → Spring Cloud → MyBatis 中间件Redis → Kafka → Elasticsearch 架构层微服务 → 分布式 → 高并发 运维层Docker → Kubernetes → 监控体系面试技巧业务场景结合不要只背八股文要结合具体业务场景回答循序渐进从简单到复杂展示思考过程承认不足不会的问题诚实说展示学习能力主动引导在自己熟悉的领域多展开引导面试官提问常见误区❌ 只背答案不理解原理❌ 技术栈贪多不精❌ 忽视业务场景理解❌ 不关注新技术发展最后提醒面试是双向选择保持自信展现真实的自己。祝大家都能拿到心仪的Offer本文基于真实面试场景整理技术点仅供参考实际面试请以公司要求为准。

相关文章:

Java大厂面试实战:电商高并发场景下的Spring Boot+Redis+Kafka技术栈深度解析

Java大厂面试实战:电商高并发场景下的技术栈深度解析 前言 在互联网大厂面试中,技术面试官往往会结合具体业务场景来考察候选人的技术深度和广度。本文模拟了一场电商场景下的Java技术面试,通过面试官与求职者"谢飞机"的三轮对话&a…...

中国举办,IEEE会议,录用率39.5%!CCF推荐学术会议(C)截稿提醒

►►►Globecom 2026IEEE Global Communications Conference (GLOBECOM), a flagship IEEE Communications Society event, gathers top experts to drive innovation and advance nearly every aspect of communications technology. Each year, thousands of the most ground…...

从Solidworks到Simulink:避开ADAMS“雷区”的机电联合仿真实践

1. 为什么机电联合仿真总在ADAMS上栽跟头? 第一次用ADAMS做机电联合仿真时,我对着满屏的线框图发呆了半小时——这玩意儿怎么连个像样的实体显示都要手动切换?更崩溃的是,好不容易导入的Solidworks装配体,所有配合关系…...

StackEdit:让Markdown创作如虎添翼的开源编辑器全攻略

StackEdit:让Markdown创作如虎添翼的开源编辑器全攻略 【免费下载链接】stackedit In-browser Markdown editor 项目地址: https://gitcode.com/gh_mirrors/st/stackedit 1. 核心价值解析:为什么StackEdit能重塑你的写作体验? 想象一…...

Python零基础到入门-数据类型的内置方法(1)

当我们在操作 字符串/列表,要想到对字符串或者列表做一些高级的操作字符串 判断这个字符是否以 某个字符开头列表 添加元素 删除元素 修改元素 。。。官方根据上边的功能,给我们提供了一些公共的接口(方法)【一】整数类型语法&…...

KDE vs直方图:7个真实数据集对比告诉你何时该用核密度估计

KDE vs直方图:7个真实数据集对比揭示核密度估计的最佳实践 在数据分析的日常工作中,我们常常需要快速理解数据的分布特征。直方图作为最基础的分布可视化工具,几乎成为每个数据分析师的第一选择。但当我第一次在电商用户行为分析中遇到双峰分…...

League-Toolkit:智能辅助驱动的英雄联盟效率提升解决方案

League-Toolkit:智能辅助驱动的英雄联盟效率提升解决方案 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Tool…...

SEO_详解SEO优化的完整工作流程与执行要点

<h2>SEO优化的重要性</h2> <p>在当前数字化时代&#xff0c;网站的可见度和流量直接关系到企业的市场竞争力。搜索引擎优化&#xff08;SEO&#xff09;作为提升网站在搜索引擎中排名的关键手段&#xff0c;其重要性不言而喻。SEO不仅能帮助企业吸引更多的自…...

别再傻傻用二维数组存大矩阵了!手把手教你用C++实现稀疏矩阵的三元组压缩(附完整代码)

稀疏矩阵高效存储实战&#xff1a;从三元组压缩到十字链表的C实现 当你在处理一个1000010000的矩阵&#xff0c;却发现其中99%的元素都是零时&#xff0c;传统的二维数组存储方式就像用集装箱运输几颗散落的珍珠——浪费了巨大的空间和运输成本。这种"稀疏"场景在科学…...

深入解析WIFI中EAP-TLS认证流程与安全机制

1. EAP-TLS认证&#xff1a;WIFI安全连接的基石 每次我们用手机连接公司或学校的WIFI时&#xff0c;系统总会弹出一个证书确认的窗口&#xff0c;这就是EAP-TLS在发挥作用。作为目前最安全的WIFI认证协议之一&#xff0c;它就像网络世界的"护照查验系统"&#xff0c;…...

软电话通话30秒自动挂断?一文讲透FreeSWITCH通话超时问题

当你满怀期待地搭建好FreeSWITCH&#xff0c;用两个软电话成功呼叫&#xff0c;却发现通话总是在30秒左右莫名其妙地中断——别急&#xff0c;这是SIP新手最常遇到的“经典Bug”。本文将为你抽丝剥茧&#xff0c;彻底解决这个问题&#xff0c;并附带其他可能引发通话异常中断的…...

机械臂+点云相机实战:手眼标定全流程避坑指南(附PCL库代码)

机械臂与点云相机手眼标定实战&#xff1a;从原理到代码的完整避坑指南 在工业自动化与机器人应用领域&#xff0c;机械臂与3D视觉系统的协同作业已成为提升生产灵活性和智能化的关键技术。其中&#xff0c;手眼标定作为连接机械臂运动学与视觉感知的桥梁&#xff0c;其精度直接…...

Vitis自定义IP编译报错?手把手教你修复Makefile路径问题(附完整代码)

Vitis自定义IP编译报错&#xff1f;手把手教你修复Makefile路径问题&#xff08;附完整代码&#xff09; 最近在Vitis中导入包含自定义IP的XSA文件时&#xff0c;不少开发者遇到了令人头疼的编译错误——"xxx.h: No such file or directory"。这个看似简单的报错背后…...

java 短信验证码接口开发面向接口编程实现

在Java企业级后端开发中&#xff0c;短信验证码是用户登录、注册、密码重置的核心身份验证方案&#xff0c;java短信验证码接口的规范化开发直接决定系统的扩展性与维护性。传统硬编码开发模式存在耦合度高、服务商切换困难等问题&#xff0c;本文基于面向接口编程思想&#xf…...

Matlab 2024b 新变化:手把手教你搞定TI C2000代码生成环境(含CCS避坑指南)

Matlab 2024b与TI C2000代码生成环境配置全指南&#xff1a;从版本差异到实战避坑 如果你是一位长期使用Matlab进行TI C2000系列芯片开发的嵌入式工程师&#xff0c;升级到2024b版本后可能会发现&#xff1a;熟悉的配置界面不见了&#xff0c;命令行里输入的命令也不一样了。这…...

2026 机器人行业发展前景与 AI 获客方案深度解析

引言&#xff1a;机器人行业的爆发式增长与获客挑战2026 年 3 月&#xff0c;全球机器人行业正处于爆发前夜。数据显示&#xff0c;2026 年全球机器人市场规模预计将达到 4000 亿元&#xff0c;较 2025 年增长 25%&#xff08;数据来自网络&#xff09;。随着具身智能技术的加速…...

保姆级教程:在NUC12Pro上配置Ego_planner无人机自主飞行系统(含D435i与Pixhawk 6C)

在NUC12Pro上构建Ego_planner无人机自主飞行系统的全流程指南 当硬件堆满工作台时&#xff0c;最令人兴奋的莫过于将它们组装成一个能自主思考的飞行系统。本文将带您完成从零搭建基于NUC12Pro、D435i深度相机和Pixhawk 6C飞控的完整解决方案&#xff0c;重点解决那些官方文档从…...

隔离变送器VS普通变送器:为什么你的PLC信号总受干扰?(实测XYS-5531抗干扰性能)

隔离变送器VS普通变送器&#xff1a;为什么你的PLC信号总受干扰&#xff1f;&#xff08;实测XYS-5531抗干扰性能&#xff09; 在工业自动化现场&#xff0c;信号干扰就像潜伏的"隐形杀手"——它不会直接摧毁设备&#xff0c;却能让控制系统频繁误动作、数据采集失真…...

超实用!学生党第一把吉他怎么选?9款“低弦距神器”深度测评与避坑指南!

大家好&#xff0c;我是深耕音乐教育与乐器选购多年的好物推荐官&#xff0c;常年和学生党打交道&#xff0c;最常被问到的问题就是&#xff1a;“预算有限&#xff0c;怎么选到好弹又耐用的吉他&#xff1f;” 其实对学生而言&#xff0c;第一把吉他无需追求高端奢华&#xff…...

从Sigmoid函数到脉冲频率:步进电机S型加减速的数学建模与C/C++实现

1. 为什么步进电机需要S型加减速 我第一次接触步进电机控制时&#xff0c;以为只要给脉冲信号就能让电机转起来。结果在实际项目中&#xff0c;电机要么启动时丢步&#xff0c;要么停止时过冲&#xff0c;把机械结构撞得砰砰响。后来才知道&#xff0c;步进电机和普通直流电机不…...

Spring Boot 集成云快充协议:充电桩接入平台完整Demo

云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码介绍云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码软件架构1、提供云快充底层桩直连协议&…...

智能高效的离线OCR解决方案:Umi-OCR从基础到进阶的全方位应用指南

智能高效的离线OCR解决方案&#xff1a;Umi-OCR从基础到进阶的全方位应用指南 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitco…...

【BoClaw教程03】BoClaw实战:打工人常用技能

博云BoClaw官方教程系列&#xff08;三&#xff09;本教程聚焦打工人日常办公高频需求&#xff0c;详细讲解 BoClaw 在桌面整理、文档检索、PPT 制作、简历筛选、销售报表处理五大场景的实操方法、操作要点及避坑技巧&#xff0c;助力高效提升办公效率。1.桌面整理&#xff1a;…...

从‘画图’到‘造芯’:模拟版图工程师必须懂的CMOS工艺那些事儿

从‘画图’到‘造芯’&#xff1a;模拟版图工程师必须懂的CMOS工艺那些事儿 当你第一次打开PDK文档&#xff0c;面对密密麻麻的设计规则表格时&#xff0c;是否感觉像在解读天书&#xff1f;作为模拟版图工程师&#xff0c;我们每天都在与纳米级的几何图形打交道&#xff0c;但…...

自然滚动的终结:Scroll Reverser如何重构输入设备交互逻辑

自然滚动的终结&#xff1a;Scroll Reverser如何重构输入设备交互逻辑 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在追求无缝人机交互的今天&#xff0c;macOS系统中输入设备…...

Ubuntu 22.04 换源+Docker安装+镜像加速

Ubuntu 22.04 换源Docker安装镜像加速 前言 本文针对 Ubuntu 22.04 LTS 系统&#xff0c;先更换国内镜像源提升下载速度&#xff0c;再完成 Docker 引擎与 Compose 插件安装&#xff0c;最后配置 Docker 国内镜像加速&#xff0c;全程无报错、可直接复制执行&#xff0c;适配 V…...

QMCDecode:解锁QQ音乐加密文件的macOS终极解决方案

QMCDecode&#xff1a;解锁QQ音乐加密文件的macOS终极解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转换…...

计算机毕业设计springboot校园外卖系统 基于Spring Boot的高校餐饮配送服务平台 Spring Boot框架下的校园在线订餐与配送管理系统

计算机毕业设计springboot校园外卖系统n322b9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的日益成熟和普及&#xff0c;网络已经深度融入人们的日常生活&…...

《Cancer Discov》(IF: 33.3)|新型空间蛋白组和空间转录组整合流程解析肿瘤免疫微环境

空间转录组学和空间蛋白组学能分别在原位解析基因表达和蛋白功能状态。然而&#xff0c;它们各有自己独特的应用场景&#xff0c;例如空间转录组覆盖广但预测功能不直接&#xff0c;而空间蛋白组功能信号直接&#xff0c;靶向性高&#xff0c;能提供更多的有效生物学信息。如果…...

5分钟掌握精灵图智能切割:Pixelorama扩展让资源提取效率倍增

5分钟掌握精灵图智能切割&#xff1a;Pixelorama扩展让资源提取效率倍增 【免费下载链接】Pixelorama A free & open-source 2D sprite editor, made with the Godot Engine! Available on Windows, Linux, macOS and the Web! 项目地址: https://gitcode.com/gh_mirrors…...