个人笔记

面试题整理

Shiro权限控制流程的原理
应用代码 —- 调用Subject (shiro的Subject 就代表当前登陆用户) 控制权限 —- Subject 在shiro框架内部 调用 Shiro SecurityManager 安全管理器 —– 安全管理器调用 Realm (程序和安全数据连接器 )。Subject要进行任何操作,都必须要调用安全管理器(对我们来说是自动的)。 而安全管理器会调用指定的Realms对象,来连接安全数据。Realms用来编写安全代码逻辑和访问安全数据,是连接程序和安全数据的桥梁。

Redis集群
使用ruby工具创建集群.集群中全部的节点相互之间互相通讯.在redis内部实现高可用.redis集群是分片和哨兵的集合体.

伪静态技术
动态页面不能被搜索引擎收录.为了保证搜索引擎的友好性.则以.html的静态页面形式展现动态页面数据

微服务治理方案(ZooKeeper)
业务逻辑说明:
当服务的提供者启动时,会将服务的名称:IP:端口会写入注册中心.
注册中心内部会维护服务列表
当消费者需要访问服务时,需要先访问注册中心获取服务列表信息.之后将服务列表保存到本地缓存中.方便后续的访 问.在客户端内部有负载均衡的算法,筛选出一台服务器,之后进行访问.
如果后台服务器出现宕机现象.这时注册中心通过心跳检测的方式判断服务器是否宕机.如果服务器宕机则会将该服务器信息从服务列表中删除.之后将新的服务列表发送消费者(客户端)进行更新.

高并发Rabbitmq+Redis处理秒杀问题
1、将商品的库存,存到redis中,这样不用从mysql中,一直获取数据库,提高性能,使用redis的decr方法,再判断的方法,而不是先查询再判断的方法,防止卖超。
2、使用Rabbitmq进行流量的削峰,先将抢到商品的用户入队列,然后再通过队列的监听,来进行入库。
3、采用Rabbitmq的异步操作,先返回给用户等待信息,增强体验,而不是一直转圈圈。

为什么要使用消息队列
解耦、异步、削峰
将消息写入消息队列,需要消息的系统自己从消息队列中订阅,实现系统之间的解耦
将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快相应速度
系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。

HashMap
–1,创建对象
HashMap()
构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。
–2,常用方法
同Map接口
–3,原理
HashMap中存放数据时,拿着key进行哈希算法,开始计算存储位置
开始存:
1,这个位置是空的,没存过数据,把数据直接存入数组
2,这个位置存过了,有数据了(hash碰撞/hash冲突),就会形成链表结构(把新的数据,挂载在老数据的下面)
3,最好把数据都放在数组节点上.如果链表太长,会影响查询效率
4,影响HashMap的性能有两个因素:初始容量和加载因子
初始容量 是指是哈希表中桶的数量–就是数组的容量,默认是16
加载因子 是指哈希表在其容量自动增加之前可以达到多满的一种尺度,默认是0.75
当存储的数据容量超出阈值(16*0.75)后,会发生rehash的现象,会自动扩容,大概是原来容量的两倍.
尽量减少rehash的过程.因为需要底层再次开辟空间,初始化,赋值,复制等动作…
关于Redis内存优化策略
LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的 页面(数据)予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t, 当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。LRU算法是内存优化中最 好用的算法
LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
随机算法:随机删除数据.
TTL算法将剩余存活时间排序,将马上要被删除的数据,提前删除.

注解

**@Accessors(chain = true)**链式加载让set方法返回this即当前对象,可以连着设置值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值