1.Redis
1.Redis的持久化方式有几中:page、Session、Application
主要在哪个层面进行持久化:两个层面:应用层、系统层
2.请说出Redis的五种数据类型:String、List、Hash、Set、Zset
3.最基本的数据类型是String,主要作用有:
a)缓存-----可以快速读写从而减轻后端压力。
b)计数器----比较典型应用就是视频或者文章的点击率
c)可以集中管理Session-----以至于每次用户在访问数据的时候,Redis都能将用户的信息均衡到不同服务器中,让用户不必频繁的重新登录,每天登录的时候都直接从Redis中查询,从而增加了用户的体验度。、
d)限速----应用的场景比如:当用户登录的时候利用手机号码获取验证码的时候,可以在自定义的时间内用Redis来进行对用户获取验证码的次数限制
4.Hash的特点:
a)采用键值对的形式存储,而值又可以采用键值对的形式存储
b)Redis hash是一个String类型的field和value的映射表,可以用于增删改查hash特别适合用于存储对象。相对于将对象序列化存储为String类型,将一个对象存储在hash类型中会占用更少的内存,并且可以方便的操作对象,值是可以改变的
5.List列表
a)主要用来存储多个有序的字符串,可以存储2的32次方减1个元素,里面存储的数据都是有序的,这样的话可以能过元素的下标来获取某个元素,或者某个范围内的元素列表
b)列表的元素是可以重复的
c)主要应用于消息队列,形成阴塞队列,生产者利用Lpush从左侧存储数据,客户端用brpop从末尾来抢数据,然后多个客户组合实现了负载均衡和高可用性
6.Set集合
a)它和List集合是一样的都是用来存储多个字符串,不同点就是它不能有重复的元素,而且他还是无序的,并且不能通过索引来查找元素
b)可以在本集合内进行增删改查的操作,还可以在多个Set集合中进行交集、差集、并差操作。
7.Zset有序集合
a)保留了Set集合当中的元素不能重复的特性,不同的是可以排序,他是给集合中的每个元素来进行分数设置,通过分数设置来进行排序
b)虽然元素不能重复,但是设置的分数是可以重复的,常用的主要是排行榜
c)过期键的删除策略:
1.定时删除:先给要设置的键设置一个过期时间,然后创建一个timer定时器,利用timer来定时删除即将过期的键
2.惰性删除:键是否过期不管,但是当每次从键空间中获取键时,都检查是否过期,如果键过期了就会被删除,如果没有过期就会返回该键。
3.定期删除:每隔一段时间就会检查数据库中是否有要过期的键,如果有就删除,至于要删除多少过期键,检查多少数据库是否算法来定的。
8.Redis的持久化机制有哪些?各自的优缺点是什么
a)第一种持久化的方式是:RDB(Redis DataBase)先来说下快照:是数据库在某一时间点的视图。在来说RDB持久化就是用数据集快照的方式来记录Redis数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用临时文件替代上次持久化的文件,来达到数据恢复的目的。
RDB的优点:
1.只有一个文件dump.rdb方便持久化
2.容灾性好,一个文件可以保存到安全的磁盘
3.性能最大化,fork进程来完成写操作,让主进程来处理命令,所以IO最大化
4.相对于数据集大时,启动比AOF的效率更高
RDB缺点:安全性低,主要适合数据要求不严谨的时候,因为RDB间隔一段时间持久化,如果在被持久化之前Redis数据库发生故障,会发生数据丢失。
b) 第二种持久化的方式是:AOF(Append-only file)是指所有命令行记录以Redis命令请求协议的格式保存为aof文件。
AOF的优点:
1.数据安全
2.可以保证数据一致性
AOF缺点:
1.经RDB持久化慢
2.比RDB启动
2.注册中心有哪几种
a)Zookeeper、Eureka、Redis
1.Zookeeper和Eureka的区别
首先我先解释一下一个名字叫CAP,什么CAP,C代表数据的一致性,A代表数据的高可和性,P代表分区容错生
1.Zookeeper采用的是CP设计架构,也就是只能保证数据的一致性和分区容错性,确不能保证注册服务的高可用性,因为Zookeeper的集体中服务节点有主次,当主节点跌机的时候就会在次节点中来进行选举,这时注册服务是不能用的, 这样长时间注册服务不能用,就会使Zookeeper集群瘫痪
2.而Eureka不会发生这样的问题,Eureka采用的是AP架构设计,有自我保护机制,Eureka中的节点都是平级关系,即使服务不可用,也会保留当前失效的微服务90S,在这90S内不会注销微服务,注册服务仍可用,只是不会同步到其它节点,当坏掉的服务恢复后会自动加入节点中,然后退出自我保护机制。
3.总结:Zookeeper在网络瘫痪的时候会倒制整个注册瘫痪,而Eureka确很好的应对了这一点
3.Dubbo
b.什么是doubbo:基于高性能RPC分布式的框架,主要做远程服务调用的分布式框架
c.Doubbo的协议有哪些:
1.默认是doubbo协议:它是单一长连接异步传输,适合小数据量大并发的情况,就是服务提供者小于服务消费者
2.hessian://
3.http://
d.默认使用zookeeper注册中心
e.配置有哪几种:
1.Spring 配置方式
2.Java API 配置方式
4.SOA架构
a)概念:SOA架构是一种粗粒度、开放式、松耦合的服务结构。
b)特点:粗粒度、开放式、松耦合
c)优点有哪些:
1)容易维护:因为是松耦合的,所以当业务需要调整的时候不需要去修改接口
2)可用性高:因为是松耦合,服务的消费方和提供方都可以单独发挥,不需要了解更多彼此之间的细节。
3)伸缩性好:服务的消费方和提供方都可以单独维护调整
4)更高的开发效率:重复的功能可以抽取
d)SOA架构的缺点:
1)难度大:抽取服务之前需要先确认哪些服务需要抽取,这样的难度比较大
2)服务粒度大:抽取服务的粒度大,不太精细,所以抽取服务的难度加大
3)耦合度高:系统与服务之间耦合度高,有接口依赖
5.Freemarker的使用方法
a)定义:FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
b)指令都有哪些:
1)Assign指令:可以定义简单类型变量,也可以定义Json对象格式数据
2)Inclued指令:用于模板文件的嵌套
3)If指令:用于判断
4)List指令:用于遍历数据
6.怎么理解Spring框架
定义:轻量级框架,大大简化了项目的开发,是面向对象编程的一种补充,用于处理系统中分布的各个模块横切关注点。主要是由动态代理实现的。主要由两大核心组成:
a)两大核心技术:
1)IOC:控制反转,就是将创建对象将由Spring容器来管理创建叫控制反转,将需要的对象注入叫做依赖注入
2)AOP:面向切面编程,切面主要是五种通知:前通知、后通知、环绕通知、最终通知、异常通知。
1.JDK主要是通过反射来抚收被代理的类,但是被代理的类必须实现接口,主要通过InvocationHandler和Proxy两个类来实现的动态代理
2.Cglib是一个代码生成的类库,可以在运行时动态生成某个类的子类,所以Gglib是继承的方式做的动态代理,因此被继承的类不能是被final修饰,并且不能是最终类
3.AOP的优点:降低系统的耦合度,提高代码的扩展性和复用性。
4.作用:主要用于日志处理和事务处理
b)什么是Di
Di就是依赖注入,是IOC的一种具体实现
Di注入的三个方式:
1.第一种是Setter方式注入
2.构造器注入
3.接口注入
4.String支持Setter注入和构造器注入
c)常用的设计模式
1)工厂模式
2)模板模式
3)代理模式
4)观察者模式
5)策略模式
6)单例模式
7)适配器模式