各地
资讯
当前位置: 考呗网 > 教师资格 > 面试指导 >

面试内容(最新发布)(8)

蚂蚁考呗网     [ 2020-09-06 ]   点击次数:

(15)事务
1.事务特性
ACID
原子性:强调事务的不可分割,要么全部成功,要么全部失败
一致性:事务的执行的前后,数据的完整性保持一致
持久性:一旦事务提交了或者回滚了.都要将这些操作持久化到数据库中.
隔离性:一个事务的执行不要受其他事务影响.

2.不考虑隔离性会出现的读问题: 脏读:一个事务读取到了另一个事务没有提交的数据 不可重复读:在一个事务中两次查询的结果不一致(针对于update操作) 虚读(幻读):在一个事务中两次查询的结果不一致(针对于insert操作)  幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。 1 Read uncommitted 读未提交:最低级别,任何情况都无法保证。 2 Read committed 读已提交(Oracle):可避免脏读的发生。 3 Repeatable read 可重复读(MySQL):可避免脏读、不可重复读的发生。 4 Serializable 串行化 没有并发问题:可避免脏读、不可重复读、幻读的发生。

(16)mysql索引:hash,Btree
(18)读写分离:程序里面如何实现读写分离?
(19)Redis
spring-data-redis把jedis融入到spring中,无缝整合到spring中,对jedis中的方法(jedisCluster.命令)进行了增强,通过spring-data-redis访问redis服务器,底层还是jedis。
1)redisTemplate:所有的redis对象都封装在redisTemplate模版中了,模版提供了各种操作,异常处理以及序列化,支持发布订阅。
2)spring-data-redis针对jedis提供了如下功能:
1.连接池自动管理,提供了一个高度封装的RedisTemplate类
2.针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
ValueOperations:简单K-V操作
SetOperations:set类型数据操作
ZSetOperations:zset类型数据操作
HashOperations:针对map类型的数据进行操作
ListOperations:针对list类型的数据进行操作
boundValueOps、boundHashOps(“index_cache”).delete(“1”);
1)数据类型
2)常用命令:set,get,del,incr(递增),decr(递减)
3)单线程?多线程?
4)setNX命令:set if Not exists
setNX可以用来实现分布式锁
setNX key value,将key的值设为value,当且仅当key不存在
5)redis持久化方式
redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式;二是Append-only file(缩写aof)的方式;三是虚拟内存方式;四是diskstore方式。
6)redis事务
Redis事务的实现需要用到 MULTI 和 EXEC 两个命令,事务开始的时候先向Redis服务器发送 MULTI 命令,然后依次发送需要在本次事务中处理的命令,最后再发送 EXEC命令表示事务命令结束。MULTI和EXEC中的命令是一起执行的,并不能将其中一条命令的执行结果作为另一条命令的执行参数,所以这个时候就需要引进Redis事务家族中的另一成员:WATCH命令。
7)redis并发问题: Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:
1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。
2.服务器角度,利用setnx实现锁。 对于第一种,需要应用程序自己处理资源的同步,可以使用的方法比较通俗,可以使用synchronized也可以使用lock;第二种需要用到Redis的setnx命令,但是需要注意一些问题。

(20)负载策略:
1.加权轮询: 第一,如果可以把加权轮询算法分为先深搜索和先广搜索,那么nginx采用的是先深搜索算法,即将首先将请求都分给高权重的机器,直到该机器的权值降到了比其他机器低,才开始将请求分给下一个高权重的机器。
第二,当所有后端机器都down掉时,nginx会立即将所有机器的标志位清成初始状态,以避免造成所有的机器都处在timeout的状态,从而导致整个前端被夯住。
2.ip hash策略: hash值既与ip有关又与后端机器的数量有关。经测试,上述算法可以连续产生1045个互异的value,这是此算法硬限制。nginx使用了保护机制,当经过20次hash仍然找不到可用的机器时,算法退化成轮询。
3.fair
fair策略是扩展策略,默认不被编译进nginx内核。它根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流。
这种策略具有很强的自适应性,但是实际的网络环境往往不是那么简单,因此须慎用。
4.通用hash、一致性hash
通用hash和一致性hash也是种扩展策略。通用hash可以以nginx内置的变量为key进行hash,一致性hash采用了nginx内置的一致性hash环,可支持memcache。

评论责编::admin
相关推荐
热点推荐»