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
隔离
级
别。