1.get与post请求区别?
区别1:
get重点在从服务器上获取资源,post重点在向服务器发送数据;
区别2:
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/LogI
n.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别3:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
区别4:
Get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
Post较get安全性较高;
区别5:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
2.rabbitmq的常见作用有哪些?
1.服务间解耦
2.实现异步通信
3.流量削峰
3.RabbitMQ的工作模式有哪些?
1.简单模式 2.工作者模式 3.广播模式 4.路由模式 5.通配符模式 6.RPC 7.消息确认模式
4.Redis的常用存储结构有哪些
String,字符串,是 Redis 的最基本的类型,一个 key 对应一个 value。是二进制安全的,最大能存储 512MB。
Hash,散列,是一个键值(key=>value)对集合。string 类型的 field 和 value 的映射表,特别适合用于存储对象。每个 hash 可以存储 232 -1 键值对(40多亿)
List,列表,是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
Set,集合, 是 string 类型的无序集合,最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。
Sorted set,有序集合,和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
5.redis缓存雪崩,缓存穿透
缓存雪崩,即缓存同一时间大面积的失效,这个时候又来了一波请求,结果请求都怼到数据库上,从而导致数据库连接异常。
缓存穿透,即故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。
6.Redis持久化机制
Redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。
RDB,简而言之,就是在不同的时间点,将Redis存储的数据生成快照并存储到磁盘等介质上。
AOF,则是换了一个角度来实现持久化,那就是将Redis执行过的所有写指令记录下来,在下次Redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。
RDB和AOF两种方式也可以同时使用,在这种情况下,如果Redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。
7.SpringCloudAlibaba常用组件以及作用
1.Gateway网关:路由,用户鉴权
2.Nacos注册中心:服务注册,发现组件,统一配置中心
3.Sentinel熔断:服务流量控制和服务降级
4.Feign:远程调用
5.Seata:分布式事务
6.Ribbon:负载均衡
8.事务的四大特性
事务具备以下四个属性,简称 ACID 属性:
A 原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。
B 一致性(Consistency):当事务完成时,数据必须处于一致状态。
C 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
D 永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。
9.Spring五个隔离级别
1、DEFAULT (默认)
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应。
2、READ_UNCOMMITTED (读未提交)
这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
3、READ_COMMITTED (读已提交)
保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。
这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
4、REPEATABLE_READ (可重复读)
这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读。
5、 SERIALIZABLE(串行化)
这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻像读。
10.Controller和RestController的区别
Controller, RestController的共同点
都是用来表示Spring某个类的是否可以接收HTTP请求。
Controller, RestController的不同点
@Controller:标识一个Spring类是Spring MVC controller处理器。
@RestController:@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。
@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。