1.常见的加密方式
    1.可逆加密:一旦加密可以解密得到原文
    1.1.对称加密:文件加密解密使用同一把密钥 如:AES、HS256
    1.2.非对称加密:有两把密钥。公钥加密,私钥解密;私钥加密,公钥解密
    如:RSA、RSA2 2.不可逆加密:一旦加密不可解密得到原文 如:MD5、SHA


    2.无状态登录
    有状态登录:服务端保存用户信息,一般用session保存
    无状态登录:服务端不保存用户信息,使用JWT令牌,浏览器保存token,服务端通过解析token得到用户信息。


    3.JWT Token
    JWT Token一般使用在ajax跨域身份认证。 JWT令牌一般由三个部分组成:
    1.Header :定义令牌类型和加密算法
    2.Payload:一般存储不敏感的数据,如签发者、过期时间戳等,如果要存储敏感信息需要加密
    3.Signature:由前两部分编码后进行签名算法获得。它的作用是防止jtw内容被篡改。


    4.如何保证token令牌不被篡改?
    签名机制保证了数据不会被篡改。
    用户会携带token发起请求,服务端会通过对token进行验证从而保证token令牌不被篡改。


    5.项目中是如何进行登录认证的?
    1.用户的所有请求经过网关被全局过滤器拦截
    2.过滤器判断请求是否需要拦截
    3.如果不需要拦截,直接放行,比如用户登录就不要拦截
    4.需要拦截,判断是否拥有访问权限
    5.我们使用的是JWT令牌来做身份认证的,通过对token进行验证来判断用户是否有访问权限。
    6.当用户登录成功后,服务端会给用户颁发一个token,让用户保存,当用户再次请求会携带token经过网关, 此时通过解析token,判断用户是否有访权限。


    6.请介绍下用户实名认证模块的业务流程?
    1.用户在App端提交身份实名认证
    2.平台管理端对用户提交的申请进行审核,其中包括身份审核,需要对接公安系统进行身份校验
    3.实名认证通过,为用户创建一个自媒体账户,并添加用户作者信息。


    7.Feign的作用
    Fegin是一个声明式http客户端,声明即可用,实现http的请求的发送,方便微服务之间进行调用。


    8.项目中Feign的具体使用?
    1.导入openfeign依赖
    2.编写Feign客户端,定义微服务访问接口 加@FeignClien注解
    3.编写微服务熔断降级逻辑
    4.编写Feign配置类,将Feign客户端和熔断降级业务加入到Spring容器中
    3.通过SpringBoot的自动配置将配置类加载到Spring容器中


    9.Hystrix的作用
    熔断和服务降级。可以对微服务进行保护,避免在进行微服务调用时,由于某个微服务出现故障,从而造成所有微服务不可以 解决雪崩方法:
    1.超时处理:请求超过一定时间,立即请求失败
    2.线程隔离:限定每个业务使用的线程数,防止耗尽整个tomcat资源
    3.熔断降级:某个微服务请求失败到达一定比例,熔断该服务,拦截该服务的所有请求,快速失败,接着走失败降级逻辑。
    4.限流:避免服务因突发的流量而发生故障


    10.事务回滚时机
    当出现RuntimeException异常时才会出现事务回滚 扩大事务失败回滚范围: @Transactional(rollbackFor = Exception.class)