1. HTTP请求结构?HTTP请求头中有什么?
- ⼀个HTTP请求报⽂由四个部分组成:请求⾏、请求头部、空⾏、请求数据
- 请求头
1.Accept:浏览器可接受的mime类型。
2.Accept-Charset:浏览器可接受的字符集。
3.Accept-Encoding:浏览器能够进⾏解码的⽅式。
4.Content-Length:表⽰请求消息的⻓度。
5.Host: 客户端告诉服务器,想访问的主机名。
6.Cookie:客户端可以向服务器带数据,只是⾮常重要的信息之⼀。
2. GET和POST的区别
- GET⽅式是通过请求⾏传递⽤户所输⼊的内容,其内容会全部显⽰的浏览器的地址栏中;
- GET提交具有⻓度限制
- GET是从服务器上获取数据
- GET请求没有HTTP消息体
- POST提交将⽤户所输⼊数据放到HTTP消息体中发送到服务器端
- POST没有提交⻓度限制
- POST是向服务器传送数据
3. 如何⽤反射获取⽅法?
1 ⾸先找到类型的Class对象
Class.forName(类型)
类型.class
对象.getClass()
2 然后在类型上查找⽅法
getMethods();//获取包括⾃⾝和继承(实现)过来的所有的public⽅法
getDeclaredMethods();//获取⾃⾝所有的⽅法
getMethod(⽅法签名);//表⽰获取指定的⼀个公共的⽅法,包括继承的
getDeclaredMethod(⽅法签名);//表⽰获取本类中的⼀个指定的⽅法,不包括继承的
⽅法
⽅法签名包括:⽅法的名字,参数的Class类型列表
4. 什么是反射
- ava反射(Java Reflection)是指在运⾏时获取程序的类型信息并可以操作对象的机制。通过反
射,可以在运⾏时获取类的成员变量、⽅法、构造函数等信息,并可以在运⾏时调⽤对象的⽅法,创建对象的实例,操作对象的属性等。
- 在Java中,反射机制主要通过以下⼏个类实现:
- Class类:表⽰类的类型,通过该类可以获取类的构造函数、成员变量、⽅法等信息。
- Constructor类:表⽰类的构造函数类型,通过该类可以创建类的实例。
- Field类:表⽰类的成员变量类型,通过该类可以获取、设置类的成员变量的值。
- Method类:表⽰类的⽅法类型,通过该类可以调⽤类的⽅法。
- 反射机制在Java中具有⼴泛的应⽤,例如:
- 动态代理:可以通过反射⽣成实现了某个接⼝的代理类,实现动态代理。
- 依赖注⼊:可以通过反射获取类的构造函数、成员变量等信息,实现依赖注⼊。- 注解处理器:可以通过反射获取类的注解信息,实现注解处理器。
- 配置⽂件解析器:可以通过反射获取类的属性信息,实现配置⽂件解析器。
- 尽管反射机制可以⽅便地获取类的信息并进⾏操作,但是它也具有⼀定的缺点,如性能较差、代
码可读性差、安全性差等。因此,在实际开发中,应该根据实际情况谨慎使⽤反射机制。
5.什么是事务,以及事务的应⽤,举例说明
事务:指构成单个逻辑⼯作单元的操作集合
事务是指是程序中⼀系列严密的逻辑操作,⽽且所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。可以通俗理解为:就是把多件事情当做⼀件事情来处理,好⽐⼤家同在⼀条船上,要活⼀起活,要完⼀起完
6. 对SQL的优化⽅式有哪些
减少数据访问: 设置合理的字段类型,启⽤压缩,通过索引访问等减少磁盘IO
返回更少的数据: 只返回需要的字段和数据分⻚处理 减少磁盘io及⽹络io
减少交互次数: 批量DML操作,函数存储等减少数据连接次数
减少服务器CPU开销: 尽量减少数据库排序操作以及全表查询,减少cpu 内存占⽤
利⽤更多资源: 使⽤表分区,可以增加并⾏操作,更⼤限度利⽤cpu资源
总结到SQL优化中,就三点:
最⼤化利⽤索引;
尽可能避免全表扫描;
减少⽆效数据的查询;
分析语句,是否加载了不必要的字段/数据。
分析 SQL 执⾏计划(
explain extended),思考可能的优化点,是否命中索引等。
查看 SQL 涉及的表结构和索引信息。
如果 SQL 很复杂,优化 SQL 结构。
按照可能的优化点执⾏表结构变更、增加索引、SQL 改写等操作。
查看优化后的执⾏时间和执⾏计划。
如果表数据量太⼤,考虑分表。
利⽤缓存,减少查询次数。
7. 说说事务的ACID和隔离级别
原⼦性(Atomicity)
操作这些指令时,要么全部执⾏成功,要么全部不执⾏。只要其中⼀个指令执
⾏失败,所有的指令都执⾏失败,数据进⾏回滚,回到执⾏指令前的数据状态。
⼀致性(Consistency)
事务的执⾏使数据从⼀个状态转换为另⼀个状态,但是对于整个数据的完
整性保持稳定。
隔离性(Isolation)
隔离性是当多个⽤户并发访问数据库时,⽐如操作同⼀张表时,数据库为每
⼀个⽤户开启的事务,不能被其他事务的操作所⼲扰,多个并发事务之间要相互隔离。
持久性(Durability)
当事务正确完成后,它对于数据的改变是永久性的。
为了达到事务的四⼤特性,数据库定义了 4 种不同的事务隔离级别:
READ-UNCOMMITTED(读取未提交):最低的隔离级别,允许脏读,也就是可能读取到其他会话中未提交事务修改的数据,可能会导致脏读、幻读或不可重复读。
READ-COMMITTED(读取已提交): 只能读取到已经提交的数据。Oracle 等多数数据库默认都是该级别 (不重复读),可以阻⽌脏读,但是幻读或不可重复读仍有可能发⽣。
REPEATABLE-READ(可重复读):对同⼀字段的多次读取结果都是⼀致的,除⾮数据是被本⾝事务⾃⼰所修改,可以阻⽌脏读和不可重复读,但幻读仍有可能发⽣。
SERIALIZABLE(可串⾏化):最⾼的隔离级别,完全服从 ACID 的隔离级别。所有的事务依次逐个执⾏,这样事务之间就完全不可能产⽣⼲扰,也就是说,该级别可以防⽌脏 读、不可重复读以及幻读。
MySQL 默认采⽤的 REPEATABLE_READ 隔离级别。
HTTP请求结构与方法、反射机制、事务ACID属性和SQL优化
文章详细介绍了HTTP请求的组成部分,包括请求行、头部、空行和数据,并对比了GET和POST方法的区别。接着,阐述了Java反射的概念,如何获取方法以及反射在动态代理、依赖注入等场景的应用。此外,讨论了事务的ACID特性以及四种事务隔离级别。最后,提到了SQL优化的方法,如利用索引、减少数据访问和交互次数等。

被折叠的 条评论
为什么被折叠?



