逐梦少年,看你能不能发现宝藏( 六 )


? 1.从根集合开始扫描,对存活的对象进行标记 。
? 2.清除(Sweep)
? 扫描整个内存空间,回收未被标记的对象,使用free-list记录可以区域 。
? 缺点:两次扫描,耗时严重, 会产生内存碎片
? 优点:不需要额外的空间
? 4.标记压缩(Mark-)
? 老年代一般是由标记清除或者是标记清除与标记整理的混合实现
? 原理:1.先标记,这里的标记与“标记-清除”一样
? 2.压缩:再次扫描,并往一端滑动存活对西昂
? 优点:没有内存碎片,可以利用bump
? 缺点:需要移动对象的成本
? 5.标记清除压缩(Mark-Swep-)
老年代两种GC算法:标记清除,以及标记压缩,这两种技术是一起使用的,首先使用的是标记清除,当有大量的内存碎片式,就开始启用标记压缩,整理内存
16.Redis 在项目中的使用场景 数据类型使用场景
比如说,我想知道什么时候封锁一个ip地址 。命令
Hash
存储用户信息【id,name,age】
Hset(key,field,value)
Hset(,name,admin)
Hset(,age,23)
Hget(,id)
List
实现最新消息的排行,还可以利用List的push命令,将任务存在list集合中,同时使用另一个命令,将任务从集合中取出(pop)
Redis–List数据类型来模拟消息队列 。【电商中的秒杀就可以采用这种方式,来完成一个秒杀活动】
Set
特殊之处:可以自动排重 。比如说微博中将每个人的好友存在集合(Set)中 。
这样求两个人的共同好友的操作,我们只需要求交集即可 。set集合中有交集的命令
Zset
以某一个条件为权重进行排序 。
京东:查看商品详情的时候,都会有一个总和排名,还可以按照价格进行排名,都可以用Zset进行排名
17.和solr的区别
**背景:**他们都是基于搜索服务器之上开发的,一款优秀的,高性能的企业级搜索服务器 。(是因为他们都是基于分词技术构建的倒排索引的方式进行查询)
**开发语言:**都是java语言开发
诞生时间:
solr:2004年诞生
Es:2010年诞生
Es更新,功能越强大
区别:
? 1.当实时建立索引的时候,solr会产生io的阻塞,es不会,所以es的查询性能要高于solr 。
? 2.在不断动态添加数据的时候,solr的检索效率会变得低下,而es则没有什么变化 。
? 3.solr利用进行分布式管理,而es自身带有分布式管理系统的功能 。Solr一般都要部署到web服务器上,比如;而启动的时候
?。需要配置和solr的关联 。【solr的本质是一个动态的web项目】
? 4.solr支持更多的格式数据【xml,json,csv等】,而,es仅支持json文件格式
? solr是传统搜索应用的有力解决方案,但是es更适用于新型的实时搜索应用 。
? 5.单纯的额对已有数据进行检索的时候,solr效率更好,高于es
? 6.solr官网提供的功能更多,而es本身更注重于核心功能,一些高级功能的依靠与有第三方的插件 。
18.单点登陆的实现过程
? 什么是单点登陆?
? 一处登陆,多处使用;
? 前提是:单点登陆多使用在分布式系统中 。
Demo:
? 参观动物园的流程:
? 检票员就相当于我们的认证中心
? 1.我直接带着大家进动物园,则会被检票员拦住【看我们是否有门票】
? 没有【则去售票处买票】 登陆就相当于买票
? 2.我去买票【带着票,带着大家一起准备进入动物园】 检票员 check【有票】
? 3.此时的这个票就相当于我们项目中的token=piao
? 4.我们手中有票就可以任意观赏动物园的每处场景