技术问题汇总

1、LRU缓存机制:

LRU是一种缓存替换算法,就是将最近最少使用的页面或者元素进行替换,将最近最多使用的页面或者元素保持在缓存里。

 2、rabbitmq 消息队列

(1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的。消息生产者和消费者都不知道对方的存在;

(2)异步:主流程只需要完成业务的核心功能;对于业务非核心功能,将消息放入到消息队列之中进行异步处理,减少请求的等待,提高系统的总体性能;

(3)削峰/限流:将所有请求都写到消息队列中,消费服务器按照自身能够处理的请求数从队列中拿到请求,防止请求并发过高将系统搞崩溃;

 3、多线程

实现线程:继承Thread类;实现Runnable接口;实现Callable接口

避免死锁最简单的方法就是阻止循环等待条件 ,将系统中所有的资源设
置标志位、排序,规定所有的进程申请资源必须以一定的顺序(升序或降序)
做操作来避免死锁
wait()方法用于线程间通信,如果等待条件为真且其它线程被唤醒时它会
释放锁,而 sleep()方法仅仅释放 CPU 资源或者让当前线程停止执行一段时间,
但不会释放锁。
4、hashmap底层原理

jdk1.7:底层是基于 数组+链表 组成的

put方法:

  • 判断当前数组是否需要初始化
  • 如果 key 为空,则 put 一个空值进去
  • 根据 key 计算出 hashcode
  • 根据计算出的 hashcode 定位出所在桶
  • 如果桶是一个链表则需要遍历判断里面的 hashcode、key 是否和传入 key 相等,如果相等则进行覆盖,并返回原来的值,如果不相等则加一个实体
  • 如果桶是空的,说明当前位置没有数据存入;新增一个 Entry 对象写入当前位置

get方法:

  • 首先也是根据 key 计算出 hashcode,然后定位到具体的桶中
  • 判断该位置是否为链表。
  • 不是链表就根据 key、key 的 hashcode 是否相等来返回值。
  • 为链表则需要遍历直到 key 及 hashcode 相等时候就返回值。
  • 啥都没取到就直接返回 null 。

jdk1.8:底层是基于 数组+链表+红黑树 组成的

5、springcloud五大组件

      springcloud常用五大组件:
            1、服务发现——Netflix Eureka
            2、负载均衡——Netflix Ribbon
            3、断路器——Netflix Hystrix
            4、服务网关——Netflix Zuul
            5、分布式配置——Spring Cloud Config
            
    Eureka 是分为 server 和 service , server 通常只有一个(多个可以提高高可用性及容错),service 有一般多个。service 通常都是单个 springboot 程序,启动时向 server 注册自己,这样,在 RestTemplate 或者 feign 调用时,不需要根据 ip 及 端口 去查找,只需要知道你这个 springboot 程序的 applic.name 即可(当ip地址多的时候,每启动一下就配置一次会很麻烦)。

    Ribbon 一般结合 RestTemplate 去使用,RestTemplate 默认实现了 负载均衡,轮询机制,及多个相同 application.name 的程序,不同ip或端口,Ribbon 不需要知道你的ip和端口,只需要知道你在 Eureka server 注册的名字,便会 不断对具有相同名字的 程序进行轮询。

    Hystrix 断路器,一般 Ribbon 去访问某个 程序应用时,这个程序挂掉了,此时如果没任何措施,可能引起连锁反应,最后导致不可想象的后果,而 断路器 的作用就是,当这个程序不可用时,及时切断之间联系,当程序恢复时,在保持关联。

    Zuul 网关,他的作用类似 nginx 的反向代理,除此之外,还可以配置权限验证等。当后台有多个应用时,app或者前端程序想访问后端接口时,统一格式,否则程序一多便会出现混乱。

    Spring Cloud Config 分布式配置,他的作用见名知意,通过 连接 git 或 mvn 等,实现统一的 文件配置,结合 spring cloud bus 可以实现动态的属性配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值