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

Java项目拷打(外卖+点评)

一、点评星球(黑马点评)

1、项目概述

1.1、项目简介

本项目是基于Spring Boot与Redis深度整合的前后端分离的点评平台。系统以Redis为核心技术支撑,重点解决高并发场景下的缓存穿透、击穿、雪崩等问题,涵盖商户展示、优惠券秒杀、达人探店、社交互动等创新功能。

1.2、项目亮点

  • 使用 Redis 解决了在集群模式下的 Session共享问题,使用双拦截器实现用户的登录校验和权限刷新
  • 运用Cache Aside模式解决数据库与缓存的一致性问题,通过主动更新结合超时删除保证最终一致性
  • 使用 Redis 对高频访问的信息进行缓存,降低数据库查询压力,解决了缓存穿透、雪崩、击穿问题
  • 使用 Redis + Lua脚本实现对用户秒杀资格的预检,同时用乐观锁解决秒杀产生的超卖问题
  • 使用 Redisson分布式锁解决在集群模式下一人一单的线程安全问题
  • 基于RabbitMQ作为消息队列,实现异步秒杀下单
  • 使用Redis的 ZSet 数据结构实现了点赞排行榜功能,使用Set 集合实现关注、共同关注功能

1.3、核心功能

用户服务

  • 短信登录(Redis替代Session实现集群共享,双拦截器保障Token刷新)

商户服务

  • 多级缓存优化(Cache Aside模式 + Redisson读写锁保障双写一致性)
  • 缓存异常处理:空值缓存防穿透、互斥锁/逻辑过期防击穿、随机TTL防雪崩

秒杀服务

  • 分布式锁(Redisson实现)解决集群环境下“一人一单”线程安全问题
  • 异步下单优化:Redis Lua脚本预检库存 + RabbitMQ消息队列异步处理订单

社交服务

  • 达人探店笔记(发布、点赞排行榜基于ZSet实现)及好友关注(Set集合实现共同关注)

2、使用 Redis 解决了在集群模式下的 Session 共享问题,使用拦截器实现了用户的登录校验和权限刷新

3、运用Cache Aside模式解决数据库与缓存的一致性问题,通过主动更新结合超时删除保证最终一致性

4、使用 Redis 对高频访问的信息进行缓存,降低数据库查询压力,解决了缓存穿透、雪崩、击穿问题

5、使用 Redis + Lua脚本实现对用户秒杀资格的预检,同时用乐观锁解决秒杀产生的超卖问题

6、使用 Redisson分布式锁解决在集群模式下一人一单的线程安全问题

7、基于RabbitMQ作为消息队列,实现异步秒杀下单

8、使用Redis的 ZSet 数据结构实现了点赞排行榜功能,使用Set 集合实现关注、共同关注功能

链接:
链接1
链接2
链接3

二、校园生活服务平台(苍穹外卖)

1、项目概述

1.1、项目简介

本项目是基于Spring Boot的校园生活服务系统,分为管理端(供校内商家使用)和用户端(微信小程序)。管理端包括员工信息、商品及分类的管理,订单状态跟踪等功能;用户端在线浏览商品,添加购物车及下单等功能。

1.2、项目亮点

  • 登录及身份验证使用JWT令牌技术,用自定义拦截器完成用户认证,通过ThreadLocal优化鉴权逻辑
  • 使用Redis缓存高频数据如同分类商品,并使用SpringCache优化代码,提高系统性能和响应速度
  • 使用Nginx用作HTTP服务器,部署静态资源,反向代理和负载均衡
  • 通过webSocket实现客户端与服务端的长连接,并实现来单提醒及客户催单等功能
  • 使用SpringTask实现订单状态的定时处理,超时自动取消订单等功能

1.3、核心功能

管理端
1、用户登录(JWT、ThreadLocal)
2、员工信息维护
3、商品管理
4、分类管理
5、订单状态跟踪
6、来单/催单提醒(webSocket实时推送)
7、Spring Cache缓存菜品信息
8、定时任务处理超时订单(Spring Task)

用户端(微信小程序)
1、微信登陆
2、商品浏览(Redis缓存)
3、购物车管理
4、下单支付

1.4 模块作用

序号模块作用
1sky-take-outmaven父工程,统一管理依赖版本,聚合其他子模块
2sky-common子模块,存放公共类,例如:工具类、常量类、异常类等
3sky-pojo子模块,存放实体类、VO、DTO等
4sky-server子模块,后端服务,存放配置文件、Controller、Service、Mapper等

2、JWT令牌+ThreadLocal

2.1、JWT登录流程

使用JWT令牌和自定义拦截器完成用户认证的流程如下:

  • 用户登录时,客户端发送用户名和密码给服务器请求令牌,服务器验证通过后生成包含用户信息的JWT令牌并返回给客户端。
  • 客户端收到JWT令牌后将其存储在本地(如localStorage或cookie),后续每次请求都在请求头中携带该令牌(如Authorization:Bearer )。
  • 服务器端的自定义拦截器会拦截所有请求,首先从请求头中提取JWT令牌并进行解析验证(包括检查令牌是否存在、签名是否有效、是否过期等),若令牌不存在或验证失败则直接返回401未认证错误。
  • 当JWT令牌验证通过后,拦截器将解析出的用户信息存储在ThreadLocal中,使本次请求的后续业务处理流程可以直接获取用户信息,避免重复解析JWT令牌。
  • 请求处理完成后,拦截器会调用remove()方法清除ThreadLocal中的用户信息,确保不会发生内存泄漏。

2.2、ThreadLocal使用过多会造成的影响?怎么解决内存泄漏的问题?

每个线程都有⼀个ThreadLocalMap的内部属性,map的key是ThreaLocal,定义为弱引用,value是强引用类型。垃圾回收的时候会⾃动回收key,但对应的 Value 仍然是强引用,且线程未结束时,ThreadLocalMap 会一直持有该 Value,导致内存泄漏。
解决⽅法:每次使⽤完ThreadLocal就调⽤它的remove()⽅法,手动将对应的键值对删除,从⽽避免内存泄漏

2.3 JWT的组成:

它由三部分组成:header(头部)、payload(载荷)、signature(签名)

  • Header(头部) 作用:描述令牌的元数据,如签名算法(如HS256、RS256)和令牌类型(固定为JWT)。
  • Payload(负载) 作用:携带实际的数据(声明),分为三类:
    预定义声明:标准字段,如 iss(签发者)、exp(过期时间)、sub(主题)等。
    公开声明:自定义公共字段,需避免冲突(建议通过IANA 注册)。
    私有声明:双方约定的自定义数据。
  • Signature(签名)作用:验证令牌的完整性和真实性。生成方式:将编码后的 Header 和 Payload 拼接后通过 Header 中指定的算法(如 HS256)和密钥进行签名。

3、Redis

3.1项目中哪里用到redis了,缓存的粒度是什么?key,value如何定义?

缓存商品 用户端小程序展示的商品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。结果是系统响应慢、用户体验差。通过Redis来缓存商品数据,减少数据库查询操作。缓存逻辑是每个分类的商品下缓存一份数据,数据库中商品数据有变更时及时清理数据。key是分类的id,value是该分类下所有商品信息

3.2、数据库与redis如何实现的数据同步

在项目中,我们采用分布式锁策略实现数据库与Redis的数据同步。通过Redis分布式锁(如Redisson)对数据ID细粒度加锁,确保同一时间只有一个请求能修改数据;在锁内严格按"先更新数据库→再删除缓存"的顺序操作,保证后续请求必然读取最新数据;
因为有库存价格等信息所以不适合用延时双删)。
修改频率较低所以加锁性能损耗不高

4、Nginx

4.1 负载均衡:

Nginx 的负载均衡功能允许将请求分发给多个应用服务器,以均衡负载和提高系统的可扩展性和可靠性。下面是一些常用的 Nginx 负载均衡配置方法:

  • 轮询:这是默认的负载均衡策略。Nginx 将请求依次分发给每个后端服务器,确保每个服务器都能获得相同的请求数量。
  • IP 哈希(IP Hash):Nginx 使用客户端 IP地址的哈希值来决定将请求发送给哪个后端服务器。
  • 加权轮询:可以为每个后端服务器设置权重,高权重的服务器将获得更多的请求。这种方式可以根据服务器的性能和处理能力来分配负载。
    我们项目用的是轮询方式,共有2台后端服务器(一台本机,一台虚拟机)
    在nginx.conf配置:
upstream webservers{server 127.0.0.1:8080 weight=90 ;#server 127.0.0.1:8088 weight=10 ;}

4.2 反向代理与正向代理:

反向代理隐藏服务器,正向代理隐藏客户端。

  • 正向代理是客户端发送请求后通过代理服务器访问目标服务器,代理服务器代表客户端发送请求并将响应返回给客户端。正向代理隐藏了客户端的真实身份和位置信息,为客户端提供代理访问互联网的功能。
  • 反向代理是位于目标服务器和客户端之间的代理服务器,它代表服务器接收客户端的请求并将请求转发到真正的目标服务器上,并将得到的响应返回给客户端。反向代理隐藏了服务器的真实身份和位置信息,客户端只知道与反向代理进行通信,而不知道真正的服务器。

反向代理优点:

  • 提高访问速度,因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。

  • 进行负载均衡,把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。

  • 保证后端服务安全因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。

反向代理配置。在nginx.conf配置

server {listen       80;server_name  localhost;# 反向代理,处理管理端发送的请求location /api/ {proxy_pass   http://localhost:8080/admin/;#proxy_pass   http://webservers/admin/;}# 反向代理,处理用户端发送的请求location /user/ {proxy_pass   http://webservers/user/;}}

5、webSocket

5.1 什么是webSocket

WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

5.2、WebSocket和HTTP协议的区别?为什么不用HTTP

特性WebSocketHTTP
连接性质全双工(双向实时通信)半双工(单向请求-响应)
持久性长连接(建立后持续保持)短连接(默认每次请求后关闭)
主动推送服务端可主动推送数据服务端只能被动响应客户端请求

这两个功能对实时性要求极高,传统的HTTP请求-响应模式无法满足毫秒级推送的需求,因此我们采用WebSocket协议实现服务端主动推送,确保商家能第一时间处理订单。

5.3 WebSocket在项目中的应用场景

我们使用WebSocket实现了两个核心功能: ✅ 来单实时提醒:当用户下单并支付成功后,系统立即通知商家端有新订单。 ✅ 客户催单处理:用户点击催单按钮后,商家端实时收到催单通知,并触发语音播报。

通过WebSocket实现管理端页面和服务端保持长连接状态。当客户支付完成或者点击催单后,调用WebSocket的相关API实现服务端向客户端推送消息,客户端浏览器解析服务端推送的消息,判断是来单提醒还是客户催单,进行相应的消息提醒和语言播报

6、SpringTask

6.1、springTask怎么实现的超时自动取消订单的功能?

Spring Task(Spring 任务调度)是 Spring 框架提供的一种任务调度框架,用于执行定时任务、异步任务、任务监听、任务调度等。

苍穹外卖采用Spring Task实现订单超时自动取消功能,核心逻辑是每分钟扫描一次数据库中订单,筛选出创建时间超过15分钟且状态为"待支付"的订单,批量修改为"已取消"状态

7、数据库相关

7.1 数据库表你是怎么设计的

序号表名
1employee(员工表)
2category(分类表)
3dish(菜品表)
4dish_flavor(菜品口味表)
5setmeal(套餐表)
6setmeal_dish(套餐菜品关系表)
7user(用户表)
8address_book(地址表)
9shopping_cart(购物车表)
10orders(订单表)
11order_detail(订单明细表)

7.2 为什么用逻辑外键,而不用数据库自带的外键?

  • 减少数据库开销:物理外键约束会增加数据库在插入、更新和删除操作时的额外开销。数据库需要花费额外的时间来检查外键约束的完整性,这在高并发、大数据量的场景下可能会对性能产生明显的影响。而逻辑外键由应用程序来控制,开发人员可以根据具体业务场景,在必要时才进行关联数据的检查,避免了数据库层面不必要的检查操作,从而提高系统的整体性能
  • 适应变化:在软件开发过程中,业务需求可能会不断变化。如果使用物理外键,当表结构发生变化时,例如修改外键关联的字段类型、删除关联表中的字段等操作,可能会受到外键约束的限制,导致数据库结构的修改变得复杂和困难。而逻辑外键不存在这种限制,开发人员可以更自由地对表结构进行调整,只需要在应用程序中相应地修改逻辑外键的处理逻辑即可,提高了数据库设计的灵活性和可维护性。

8、微信相关

8.1 微信登录是怎么实现的?

  • 小程序端,调用wx.login()获取code,就是授权码。
  • 小程序端,调用wx.request()发送请求并携带code,请求开发者服务器(自己编写的后端服务)。
  • 开发者服务端,通过HttpClient向微信接口服务发送请求,并携带appId+appsecret+code三个参数。
  • 开发者服务端,接收微信接口服务返回的数据,session_key+opendId等。opendId是微信用户的唯一标识。
  • 开发者服务端,自定义登录态,生成令牌(token)和openid等数据返回给小程序端,方便后绪请求身份校验。
  • 小程序端,收到自定义登录态,存储storage。
  • 小程序端,后绪通过wx.request()发起业务请求时,携带token。
  • 开发者服务端,收到请求后,通过携带的token,解析当前登录用户的id。
  • 开发者服务端,身份校验通过后,继续相关的业务逻辑处理,最终返回业务数据。

8.2如何实现的微信支付功能?

在这里插入图片描述
完成微信支付有两个关键的步骤:
1️⃣ 就是需要在商户系统当中调用微信后台的一个下单接口,就是生成预支付交易单。

2️⃣ 就是支付成功之后微信后台会给推送消息。

9、你在项目中遇到了什么困难?

9.1处理公共字段的填充

如果都按照之前的操作方式来处理这些公共字段(创建时间,创建人id,修改时间,修改人id), 需要在每一个业务方法中进行操作, 编码相对冗余、繁琐。我们使用AOP切面编程,实现功能增强,来完成公共字段自动填充功能。

实现步骤:

1). 自定义注解 AutoFill,用于标识需要进行公共字段自动填充的方法

2). 自定义切面类 AutoFillAspect,统一拦截加入了 AutoFill 注解的方法,通过反射为公共字段赋值

3). 在 Mapper 的方法上加入 AutoFill 注解


链接:
1、链接1
2、链接2
3、链接3
4、链接4
5、链接5

相关文章:

Java项目拷打(外卖+点评)

一、点评星球(黑马点评) 1、项目概述 1.1、项目简介 本项目是基于Spring Boot与Redis深度整合的前后端分离的点评平台。系统以Redis为核心技术支撑,重点解决高并发场景下的缓存穿透、击穿、雪崩等问题,涵盖商户展示、优惠券秒杀…...

MCP:开启AI的“万物互联”时代

MCP:开启AI的“万物互联”时代 ——从协议标准到生态革命的技术跃迁 引言:AI的“最后一公里”困境 在2025年的AI技术浪潮中,大模型已从参数竞赛转向应用落地之争。尽管模型能生成流畅的对话、创作诗歌甚至编写代码,但用户逐渐发现…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】附录-D. 扩展插件列表(PostGIS/PostgREST等)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 附录D. PostgreSQL扩展插件速查表一、插件分类速查表二、核心插件详解三、安装与配置指南四、应用场景模板五、版本兼容性说明六、维护与优化建议七、官方资源与工具八、附录…...

Spring Boot拦截器详解:原理、实现与应用场景

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、拦截器概述 拦截器(Interceptor)是Spring MVC框架中用于对请求进行预处理和后处理的组件,主要作用于Controller层。相…...

万字解析:Java字符串

目录 一、 String类 1. String类的初始化 1.1 常用的三种构造String类的方式 1.2 String类如何存储字符串? 2. String类的常用功能方法 2.0 字符串长度的获取 2.1 String对象的比较 2.2 字符/字符串的查找 2.3 字符串的转化 2.4 字符 / 字符串的替换 2.5…...

0514得物、0509滴滴面试总结复盘

目前最欠缺的还是,编码不是很熟,很多都遇到过但是就是写不出来,或者靠背先写一点,然后去加,加的过程没考虑逻辑是不是对的,用滴滴面试官的一句话,就是多刷多练多编码! 第二块就是项目…...

记录算法笔记(20025.5.14)对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 提示: 树中节点数目…...

AI大模型从0到1记录学习 linux day23

第 1 章 MySQL概述 1.1 基本概念 1.1.1 数据库是什么? 数据库(DB:Database):存储数据的地方。 1.1.2 为什么要用数据库? 应用程序产生的数据是在内存中的,如果程序退出或者是断电了,…...

用git下载vcpkg时出现Connection was reset时的处理

用git安装vcpkg时出现Connect was rest(如上图)。多谢这位网友的博文解决了问题: 通过:http.sslVerify false全局来设置,执行以下命令: git config --global http.sslVerify "false" 原文链接&#xff1a…...

【数据库复习】SQL语言

一、SQL通用语法与分类 (一)SQL通用语法 SQL语句的格式通常较为规范,以关键字开头,如CREATE、SELECT、INSERT等,后跟具体的表名、字段名和条件等。在MySQL中,还可以使用help命令获取帮助信息,…...

二叉树——层序遍历

目录 实现层序遍历 判断是否为完全二叉树 实现层序遍历 除了先序遍历,中序遍历,后序遍历外,还可以对二叉树进行层序遍历。设二叉树的结点所在层数为1,层序遍历就是从所在二叉树的根结点出发,首先访问第一层的树根结点…...

Seata源码—2.seata-samples项目介绍

大纲 1.seata-samples的配置文件和启动类 2.seata-samples业务服务启动时的核心工作 3.seata-samples库存服务的连接池配置 4.Seata对数据库连接池代理配置的分析 5.Dubbo RPC通信过程中传递全局事务XID 6.Seata跟Dubbo整合的Filter(基于SPI机制) 7.seata-samples的AT事…...

企业数字化转型背景下的企业知识管理挑战与经验杂谈

一、引言 在数字化转型的浪潮下,企业知识管理正面临前所未有的挑战。随着数据量的急剧增长,企业内部积累的信息呈现出碎片化、分散化的趋势,传统的知识管理体系已难以有效应对这一变革。首先,信息碎片化问题日益严重,…...

第二章:磁盘管理与文件管理

一、磁盘管理 1.windows和Linux磁盘管理的区别 windows资源管理方式 系统一般安装在C盘 C盘下的"Windows"目录是操作系统的核心 C盘下的"Program Files"目录下安装软件 C盘下的"用户"目录是所有的用户,包括超级管理员也在其中 …...

Java版OA管理系统源码 手机版OA系统源码

Java版OA管理系统源码 手机版OA系统源码 一:OA系统的主要优势 1. 提升效率 减少纸质流程和重复性工作,自动化处理常规事务,缩短响应时间。 2. 降低成本 节省纸张、打印、通讯及人力成本,优化资源分配。 3. 规范管理 固化企…...

springboot踩坑记录

之前运行好端端的项目,今天下午打开只是添加了一个文件之后 再运行都报Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver class Action: Conside…...

SpringAI

机器学习: 定义:人工智能的子领域,通过数据驱动的方法让计算机学习规律,进行预测或决策。 核心方法: 监督学习(如线性回归、SVM)。 无监督学习(如聚类、降维)。 强化学…...

acwing 1488. 最短距离 超级源点 最短路 堆优化Dijkstra

经验总结 邻接表 节点1连接到节点2&#xff0c;权重为3。 节点1连接到节点3&#xff0c;权重为5。 节点2连接到节点4&#xff0c;权重为2。 g[1] {{2, 3}, {3, 5}} g[2] {{1, 3}, {4, 2}} g[3] {{1, 5}} g[4] {{2, 2}} vector<vector<PII>> g;题目背景 有 N…...

2002-2024年地级市新质生产力词频统计数据(46个关键词词频)

2002-2024年地级市新质生产力词频统计数据&#xff08;46个关键词词频&#xff09; 1、时间&#xff1a;2002-2024年 2、来源&#xff1a;ZF工作报告 3、指标&#xff1a;行政区划代码、年份、地区、所属省份、文本总长度、仅中英文-文本总长度、文本总词频-全模式、文本总词…...

院校机试刷题第二天:1479 01字符串、1701非素数个数

一、1479 01字符串 1.题目描述 2.解题思路 方法一&#xff1a;暴力法 模拟过程&#xff0c;列出几个数据来a[1]1, a[2]2, a[3]3, a[4]5以此类推&#xff0c;这就是斐波那契数列&#xff0c;每一项都等于前两项之和&#xff0c;确定好a[1], a[2]即可。 方法二&#xff1a;动…...

2011-2019年各省总抚养比数据

2011-2019年各省总抚养比数据 1、时间&#xff1a;2011-2019年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;行政区划代码、地区、年份、总抚养比(人口抽样调查)(%) 4、范围&#xff1a;31省 5、指标解释&#xff1a;总抚养比也称总负担系数。指人口总体中非劳动年…...

3337|3335. 字符串转换后的长度 I(||)

1.字符串转换后的长度 I 1.1题目 3335. 字符串转换后的长度 I - 力扣&#xff08;LeetCode&#xff09; 1.2解析 递推法解析 思路框架 我们可以通过定义状态变量来追踪每次转换后各字符的数量变化。具体地&#xff0c;定义状态函数 f(i,c) 表示经过 i 次转换后&#xff0…...

【电路笔记 通信】8B/10B编码 高速数据传输的串行数据编码技术 论文第三部分 The 8B/10B coding map

0810逻辑总览 The 8B/10B coding map 图 1 展示了一个通信适配器接口&#xff0c;它由八条数据线 A、B、C、D、E、F、G、H&#xff08;注意&#xff1a;使用大写字母表示&#xff09;、一条控制线 K&#xff0c;以及一条以字节速率运行的时钟线 BYTECLK 组成。控制线 K 用于指…...

智能化双语LaTeX系统,分阶段系统性开发技术实现路径:目标是实现语义级编译和认知增强写作,推动跨文明知识表达

智能化双语LaTeX系统&#xff0c;分阶段系统性开发技术实现路径&#xff08;D认为W可辅助各环节开发&#xff09;&#xff1a; 第一阶段&#xff1a;双语LaTeX引擎升级 1. 核心架构设计 Unicode深度支持 开发新一代XeLaTeX/LuaLaTeX内核 原生支持UTF-8编码&#xff08;如汉…...

【RabbitMQ】路由模式和通配符模式的具体实现

文章目录 路由模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费者 通配符模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费…...

【测试开发知识储备】之Jacoco(Java Code Coverage)

文章目录 Jacoco是什么Jacoco的主要功能&#xff08;一&#xff09;多样化覆盖率指标分析&#xff08;二&#xff09; 丰富的报告生成&#xff08;三&#xff09;实时数据收集 Jacoco的工作原理&#xff08;一&#xff09;字节码增强&#xff08;二&#xff09;测试执行与数据收…...

大二java第一面小厂(挂)

第一场&#xff1a; mybatis怎么防止数据转义。 Hutool用的那些你常用的方法。 springboot的常用注解。 redis的多级缓存。 websocket怎么实现的多人协作编辑功能。 怎么实现的分库分表。 mysql里面的各种操作&#xff0c;比如说分表怎么分&#xff0c;分页查询怎么用。 mybat…...

Postman接口测试

现在企业级测试分为三层测试 UI层&#xff1a;即与用户交互的层面 Service层&#xff1a;比如前后端分离的系统&#xff0c;测试数据的传输 Unit层&#xff1a;单元测试 接口 接口的概念很抽象&#xff0c;比如我们经常使用的USB接口&#xff0c;Lighting接口等传输电量数据…...

试除法判断素数优化【C语言】

代码引用 int is_prime(int num) {if (num < 1) return 0;if (num 2 || num 3) return 1;if (num % 2 0 || num % 3 0) return 0;for (int i 5; i * i < num; i 6) {if (num % i 0 || num % (i 2) 0) return 0;}return 1; } 一、数学原理 所有大于3的素数都可…...

全新开发-iVX图形化编程VS完整IDE

本文针对传统软件开发的效率与可控性矛盾&#xff0c;系统阐释 iVX"图形化编程 全栈 IDE" 的复合架构如何突破行业瓶颈。通过 "可视化建模 - 标准代码生成 - 独立运行" 的技术闭环&#xff0c;iVX 实现开发效率提升 60% 与源码完全可控的双重目标。研究揭…...

前端表格滑动滚动条太费事,做个浮动滑动插件

比如下面的表格&#xff0c;因为滚动条样式设计得很窄&#xff0c;所以用鼠标滑动起来很费劲 <template><el-table:data"tableData"style"width: 600px"height"250"><el-table-columnfixedprop"date"label"日期&…...

基于自校准分数的扩散模型在并行磁共振成像中联合进行线圈灵敏度校正和运动校正|文献速递-深度学习医疗AI最新文献

Title 题目 Joint coil sensitivity and motion correction in parallel MRI with aself-calibrating score-based diffusion model 基于自校准分数的扩散模型在并行磁共振成像中联合进行线圈灵敏度校正和运动校正 01 文献速递介绍 磁共振成像&#xff08;MRI&#xff09;…...

【CUDA】Sgemm单精度矩阵乘法(上)

目录 前言1. 简述2. 框架搭建和CPU串行实现3. baseline算法&#xff1a;global memory4. 优化技巧1&#xff1a;shared memory5. 优化技巧2&#xff1a;shared memory sliding window6. 优化技巧3&#xff1a;增加每个线程的工作量7. 优化技巧4&#xff1a;使用float4提高读取…...

Linux proc文件系统 内存影射

文章目录 常见的内存分配函数/proc/pid/ 目录解析 用户进程的内存空间分配算法mmap 分配大内存可能不在堆中换为 malloc 现象相同 常见的内存分配函数 malloc / calloc / realloc&#xff08;来自 C 标准库&#xff09; void *malloc(size_t size)&#xff1a;分配 size 字节…...

服务器时间发生跳变导致hghac中对应主机状态频繁切换为crash或stop

文章目录 环境症状问题原因解决方案相关文档报错编码 环境 系统平台&#xff1a;N/A 版本&#xff1a;N/A 症状 集群状态&#xff1a; [rootbthbj-hgywsjkjq-ip28-cen76 ~]# hghactl list Cluster: highgo-ee-cluster —---------------------—---------- | Member | Ho…...

“智”造升级:金众诚如何赋能重型机械企业高效项目管理?

据悉&#xff0c;由中国重型机械工业协会主办的2025中国&#xff08;郑州&#xff09;重型机械装备展览会&#xff08;以下简称&#xff1a;重型机械装备展&#xff09;&#xff0c;将于2025年10月15-17日在河南省郑州市中原国际会展中心隆重举办。 作为中国重型机械行业唯一的…...

反向操作:如何用AI检测工具优化自己的论文“人味”?

大家好&#xff0c;这里是论文写手的一线自救指南&#x1f624; 在AIGC横行的今天&#xff0c;谁还没偷偷用过AI写几段论文内容&#xff1f;但问题来了&#xff1a;学校越来越会“识AI”了&#xff01; 有的学校甚至不看重复率&#xff0c;只盯AIGC率报告&#xff0c;一句“AI…...

前端面试宝典---js垃圾回收机制

什么是垃圾回收 垃圾回收是指一种自动内存管理机制&#xff0c;当声明一个变量时&#xff0c;会在内存中开辟一块内存空间用于存放这个变量。当这个变量被使用过后&#xff0c;可能再也不需要它了&#xff0c;此时垃圾回收器会自动检测并回收这些不再使用的内存空间。垃圾回收…...

【docker】--容器管理

文章目录 容器重启--restart 参数选项及作用**对比 always 和 unless-stopped****如何查看容器的重启策略&#xff1f;** 容器重启 –restart 参数选项及作用 重启策略 no&#xff1a;不重启&#xff08;默认&#xff09;。on-failure&#xff1a;失败时重启&#xff08;可限…...

如何下载和安装 Ghost Spectre Windows 11 24H2 PRO

如何下载和安装 Ghost Spectre Windows 11 24H2 PRO 我们都希望拥有一台运行速度飞快的电脑系统,但对于那些使用普通硬件的用户来说,这并不总是可能的。所以,如果你觉得你的 Windows 11 电脑运行缓慢,你并不孤单。许多用户,包括 Reddit 和 YouTube 上的技术爱好者,都在放…...

软考软件设计师中级——软件工程笔记

1.软件过程 1.1能力成熟度模型&#xff08;CMM&#xff09; 软件能力成熟度模型&#xff08;CMM&#xff09;将软件过程改进分为以下五个成熟度级别&#xff0c;每个级别都定义了特定的过程特征和目标&#xff1a; 初始级 (Initial)&#xff1a; 软件开发过程杂乱无章&#xf…...

有关多线程

一、多线程到底是什么&#xff1f;简单说一说 你可以把程序想象成一台工厂。单线程就是工厂里只有一个员工&#xff0c;他做事情、搬产品、打包都靠一个人&#xff0c;他忙起来速度会慢一些。而多线程就像有多个员工同时工作&#xff0c;他们各自干自己的事情&#xff0c;整体…...

静电的起因与静电效应:技术分析与应用

杭州干扰净电子科技有限公司出品&#xff1a; 静电&#xff08;Electrostatics&#xff09;是由于电荷积累或转移引起的现象&#xff0c;广泛存在于日常生活和工业环境中。静电的起因主要包括接触起电、摩擦起电和感应起电&#xff0c;而其效应可能引发静电放电&#xff08;ES…...

Python知识框架

一、Python基础语法 变量与数据类型 变量命名规则 基本类型&#xff1a;int, float, str, bool, None 复合类型&#xff1a;list, tuple, dict, set 类型转换与检查&#xff08;type(), isinstance()&#xff09; 运算符 算术运算符&#xff1a;, -, *, /, //, %, ** 比较…...

npm install 报错

1、protobufjs7.4.0 postinstall: node scripts/postinstall verbose stack Error: protobufjs7.4.0 postinstall: node scripts/postinstall 确认是否有postinstall# node scripts/postinstallCannot find module /home/rio/scripts/postinstall解决办法&#xff1a; # 添加…...

ESP32WIFI工具加透传

工欲善其事&#xff0c;必先利器其器 项目首页 - ESP-12F烧录使用软件与说明书:ESP-12F 烧录使用软件与说明书本仓库提供了ESP-12F模块的烧录使用软件及相关说明书&#xff0c;帮助用户快速上手并使用ESP-12F模块进行开发 - GitCode ATCWMODE 是 ESP32 系列芯片中用于设置 Wi…...

44、私有程序集与共享程序集有什么区别?

私有程序集&#xff08;Private Assembly&#xff09;与共享程序集&#xff08;Shared Assembly&#xff09;是.NET框架中程序集部署的两种不同方式&#xff0c;它们在部署位置、版本控制、访问权限等方面存在显著差异&#xff0c;以下是对二者的详细比较&#xff1a; 1. 部署…...

Hadoop集群故障节点隔离操作指南

一、确认故障节点状态 1‌.查看集群节点状态 hdfs dfsadmin -report # 显示所有DataNode状态(存活/宕机/存储利用率) 输出中标记为 Dead 或 Decommissioning 的节点为异常节点。 ‌ 2.分析监控指标 通过Prometheus/Grafana监控平台检查节点资源(CPU、内存、磁盘I…...

流速仪数据处理及流量断面线绘制

1 需求描述 在实际航道测量项目中&#xff0c;有测量断面线流量流速的需求&#xff0c;得使用流速仪在现场进行测量&#xff0c;相关操作在之前已经写了记录。本次手册记录后期数据处理与流量线绘制&#xff0c;以该区域为例。 流速仪设备操作说明 2 规范要求 3 流量断面表格…...

android实现USB通讯

在 Android 上枚举 USB 设备除了使用 UsbManager.getDeviceList() 方法外&#xff0c;还有以下几种常见的方式&#xff1a; 1. 使用 USB 设备过滤器&#xff08;XML 配置&#xff09; 通过在 AndroidManifest.xml 中配置 USB 设备过滤器&#xff0c;可以让系统自动检测并通知…...