答辩
数据库下面为该项目数据库中各表的用途、字段含义及主要关联(中文说明): admin:管理员表。 id:主键。 username:用户名。 password:密码(明文示例,应加密存储)。 image:头像路径。 role:角色(如“管理员”)。 addtime:创建时间。 chatmessage:私聊消息表。 id:主键。 addtime:消息创建时间。 uid:发送者用户ID(对应 users 中用户,逻辑关联)。 fid:接收者用户ID(对应 users...
测试面经
哪些属于异常测试异常测试核心是验证系统在非预期场景、非法输入、故障条件下的容错能力,简单说就是 “故意找问题、造麻烦”,看系统是否会崩溃、泄露数据或逻辑出错。结合常见测试场景,主要分为这几类 12345678910111213141516171819202122232425一、输入类异常(最常用) 非法格式:比如手机号输字母、日期输 “2025-13-01”、接口参数传非 JSON 格式。 边界 / 极端值:价格输 0、负数或超大数(9999999)、文件上传选 10GB 超大文件。 空值 / 缺失:登录时空用户名、新增药品漏填必填项、接口少传关键参数。 恶意输入:SQL 注入语句、XSS 脚本、特殊字符(!@#$%^&*)。二、业务逻辑类异常 权限越界:普通用户想改管理员权限、无 Token 调用需登录的接口。 状态冲突:修改已删除的药品、重复提交同一表单、审核中的医院直接发布内容。 依赖异常:删除被药品关联的公司、修改药品所属医院为已注销医院。三、环境与资源类异常 网络问题:请求时断网、网络延迟高、服务器响应超时。 ...
无标题
Spring显示声明事务失效Spring事务原理Spring 事务的实现基于AOP(面向切面编程) 和事务管理器(TransactionManager),核心是通过代理机制对目标方法进行环绕增强,在方法执行前后嵌入事务的开启、提交、回滚等逻辑 当调用被@Transactional注解标记的方法时,实际执行的是代理对象的方法。 代理对象会先触发事务拦截器(TransactionInterceptor),由拦截器完成事务的开启、提交或回滚。 事务拦截器的逻辑由事务管理器(TransactionManager) 实现,不同的数据源(如 JDBC、Hibernate、MyBatis)对应不同的事务管理器。 Spring事务失效场景1.自调用事务通过代理对象触发,同一类内方法调用时使用this,未经过代理,导致事务逻辑不生效。123456789101112131415@Servicepublic class UserServiceImpl implements UserService { public void transfer(User user)...
12306
AOP + 责任链 == 幂等性校验1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161. 定义一个注解:包含: 1. 返回信息 2. 校验类型(枚举,基于什么场景:入参、Token、SPEL) 3. 校验场景(MQ、RestAPI) 4. 过期时间2. 创建一个切面类: 1....
并发JUC
Sleep 和 wait的区别123451. sleep是Thread包下,wait是object包下2. 若在带有对象锁的情况下,sleep是不会释放锁,wait会释放锁3. sleep能在各处使用,wait只能在同步区域使用4. 调用 sleep 方法后,线程会进入 TIMED_WAITING 状态,即在指定的时间内暂停执行。当指定的时间结束后,线程会自动恢复到 RUNNABLE 状态,等待 CPU 调度再次执行。 调用 wait 方法后,线程会进入 WAITING 状态,直到有其他线程在同一对象上调用 notify 或 notifyAll 方法,线程才会从 WAITING 状态转变为 RUNNABLE 状态,准备再次获得 CPU...
MySQL
外连接和内连接123456789101112131415161718192021221. 内连接:Inner join SELECT LEFT(a.title, 20) AS ArticleTitle, LEFT(c.content, 20) AS CommentContent FROM article a INNER JOIN comment c ON a.id = c.article_id LIMIT 2; 返回左右均匹配的行2. 外连接:LEFT JOIN RIGHT JOIN(1). 左连接 SELECT LEFT(a.title, 20) AS ArticleTitle, LEFT(c.content, 20) AS CommentContent FROM article a LEFT JOIN comment c ON a.id = c.article_id LIMIT 2; 会返回左边的全部行,右边无匹配行则返回null(2). 右连接 SELECT LEFT(a.title, 20) AS...
面试准备
谈谈你对面向对象的看法1234封装:保证了独立性,安全性继承:避免了大量重复代码,提升开发效率多态:提高代码的灵活和可扩展性抽象:强调了子类必要的核心 线程池的核心参数1核心线程数,最大线程数,任务队列,线程存活时间,时间单位,拒绝策略,线程工厂 核心线程数和最大线程数的区别1231. 核心线程数:是线程池长期维持的线程数量,即便这些线程空闲,也不会轻易被销毁,随时待命处理任务2. 最大线程数:是线程池能创建的线程上限。当任务队列已满,且当前活动线程数小于最大线程数时,线程池会创建新线程来处理任务。这用于应对突发的高并发任务。 什么样的情况需要设置索引1231. 频繁查询字段:当某个字段经常在WHERE子句中作为查询条件时2. 连接字段:在多表连接操作中,用于连接的字段设置索引可提升连接效率3. 排序字段:若查询结果需要按某个字段排序,对该排序字段创建索引有助于快速排序 你了解的一些索引优化的方式12341. 聚焦高频查询字段:仅在常出现在WHERE、JOIN、ORDER BY子句的字段上建索引。2. 前缀索引:对于长字符串字段,可使用前缀索引。3....
星策味达
项目简介12星策味达是一款点餐系统,项目包含后台管理系统和客户端界面,实现了员工管理、菜品及套餐展示、订单处理等核心功能,系统还引入了优惠券秒杀、菜品评价、附近美食等增值服务,丰富了用户的点餐体验。 延迟双删,缓存过期时间数据一致性保障:采用延迟双删和缓存过期时间,巧妙地解决了数据不一致问题,防止了脏数据残留。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131. 延迟双删 (1). 解决 “数据库更新期间,其他线程可能写入旧缓存” 的并发问题。 (2). 为什么需要第二次删除? 假设线程 A 删除缓存后,在更新数据库的过程中: ...
乐享学
项目简介12345678910111213141516171819202122232025.2 - 2025.05乐享学习后端开发项目简介:乐耍学是一款面向中学生的学习论坛,提供课业答疑,知识共享、学习方法交流等功能,支持发帖、评论、点赞、私信、热门排行及系统通知等功能,旨在提升学习效率。*技术架构:SpringBoot + MyBatis + MySQL + Redis + JWT + RabbitMQ + Elasticsearch项目亮点:*帖子排行:利用 Sorted Set 实现了帖子排行功能,并使用时间戳拼接元素值的方式,解决了权重相同的排行问题。*优化热门 Key 问题:使用 Caffeine+Redis 两级缓存,优化了热门帖子的访问,单机可达 80000QPS。*异步消息处理:利用 RabbitMQ 异步处理站内通知,在用户被点赞、评论、关注后,放入异步队列,以系统通知的方式推送给用户,降低系统耦合度,提升消息处理效率。*精准全文搜索:利用 ElasticSearch,可准确匹配搜索结果,并高亮显示关键词。*UV 和 DAU 统计:利用...
无标题
Jmeter快速入门1.安装JmeterJmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。 1.1.下载可以Apache Jmeter官网下载,地址:http://jmeter.apache.org/download_jmeter.cgi 当然,我们课前资料也提供了下载好的安装包: 1.2.解压因为下载的是zip包,解压缩即可使用,目录结构如下: 其中的bin目录就是执行的脚本,其中包含启动脚本: 1.3.运行双击即可运行,但是有两点注意: 启动速度比较慢,要耐心等待 启动后黑窗口不能关闭,否则Jmeter也跟着关闭了 2.快速入门2.1.设置中文语言默认Jmeter的语言是英文,需要设置: 效果: 注意:上面的配置只能保证本次运行是中文,如果要永久中文,需要修改Jmeter的配置文件 打开jmeter文件夹,在bin目录中找到...







