
java事务怎么用,要注意什么
事务我一般会用 Spring 的 @Transactional
它本质上是通过 AOP + ThreadLocal 管理数据库连接和事务状态
第一,默认只有运行时异常才回滚
第二,事务方法需要用public修饰(默认只有public方法会被代理)
第三,类内部自调用事务会失效(因为没有经过代理)
private修饰的方法可以回滚吗,原理是什么
不能
因为 Spring 的事务本质是:
AOP 动态代理
Spring 会生成代理对象:
代理对象 → 开启事务 → 调用目标方法 → 提交/回滚
但 private 方法无法被代理类重写,所以事务增强不会生效。
MySQL 索引的结构和分类
MySQL默认存储引擎innodb的默认所以存储结构的B+树
因为 B+Tree:
- 高度低(磁盘 IO 少)
- 范围查询效率高
索引分类:
- 主键索引
- 普通索引
- 唯一索引
- 联合索引
- 覆盖索引
项目中如何创建表和索引
我一般会先根据业务查询场景设计表结构。
核心思路:
根据查询设计索引
而不是根据字段设计索引
- 高频查询字段会建索引
- 面对经常回表查询的也需要建立联合索引
创建表例子:
CREATE TABLE user (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
phone VARCHAR(20),
create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
创建索引:
CREATE INDEX idx_name ON user(name);
Java 如何调用 Python
1.HTTP 调用
Python 用 Flask/FastAPI 提供接口
Java 通过OpenFeign 调用
2.直接调用python本地脚本
java
String command = "python_test.py";
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream())
);
按钮点击没反应,怎么排查
我会从
前端 → 网络 → 后端
1.浏览器 F12
点击事件是否绑定成功
2.看 Network
请求是否成功发送并响应
3.如果请求到了后端,查看日志
可以在对应代码部分添加日志,看看是在哪一步被拦截
form表单提交用get还是post,有啥区别
GET 一般用于:
查询
POST 一般用于:
新增 / 修改
所以form表单的提交应该使用post