|
举一反三,还可以实现A用户自己的好友,或者B用户自己的好友等,都可以进行实现。
ZSet集合
ZSet是有序集合,从上面的图中可以看到ZSet的底层实现是ziplist和skiplist实现的,ziplist上面已经详细讲过,这里来讲解skiplist的结构实现。
skiplist也叫做「跳跃表」,跳跃表是一种有序的数据结构,它通过每一个节点维持多个指向其它节点的指针,从而达到快速访问的目的。
skiplist由如下几个特点:
-
有很多层组成,由上到下节点数逐渐密集,最上层的节点最稀疏,跨度也最大。
-
每一层都是一个有序链表,只扫包含两个节点,头节点和尾节点。
-
每一层的每一个每一个节点都含有指向同一层下一个节点和下一层同一个位置节点的指针。
-
如果一个节点在某一层出现,那么该以下的所有链表同一个位置都会出现该节点。
具体实现的结构图如下所示:
这样就完成了Redis消息队列工具类的创建,在后面的代码中就可以直接使用。
Set集合
Redis中列表和集合都可以用来存储字符串,但是「Set是不可重复的集合,而List列表可以存储相同的字符串」,Set集合是无序的这个和后面讲的ZSet有序集合相对。
Set的底层实现是「ht和intset」,ht(哈希表)前面已经详细了解过,下面我们来看看inset类型的存储结构。
inset也叫做整数集合,用于保存整数值的数据结构类型,它可以保存int16_t、int32_t 或者int64_t 的整数值。
在整数集合中,有三个属性值encoding、length、contents[],分别表示编码方式、整数集合的长度、以及元素内容,length就是记录contents里面的大小。
在整数集合新增元素的时候,若是超出了原集合的长度大小,就会对集合进行升级,具体的升级过程如下:
-
首先扩展底层数组的大小,并且数组的类型为新元素的类型。
-
然后将原来的数组中的元素转为新元素的类型,并放到扩展后数组对应的位置。
-
整数集合升级后就不会再降级,编码会一直保持升级后的状态。
应用场景
Set集合的应用场景可以用来「去重、抽奖、共同好友、二度好友」等业务类型。接下来模拟一个添加好友的案例实现:
措施
安全专业人员应齐心协力,深入业务部门的各个角落,架起桥梁,建立学科的团队协作,并传达出以下信息:安全是每个人的责任,应该嵌入到每个业务流程中。
6. 压力,焦虑和倦怠
安全人员的工作并没有想象中的那么简单,回顾上述的所有问题,你会觉得亚历山大。根据Ponemon研究所的说法,有65%的SOC专业人员表示感觉压力太大,可能会考虑换一份工作。
在Nominet调查中,有91%的CISO表示他们承受的压力较大,另有60%的CISO表示很少休息。更令人不安的是,接受调查的四分之一的CISO认为这份工作对他们的心理、身体健康以及个人和家庭关系有影响。
高倦怠率会导致高离职率,从而加剧行业人才和技能的流失,这是个恶性循环,会使得安全专业人员的生活更加艰难。
措施
这个问题没有那么好解决。安全从业人员需要敞开心扉,经常与同事或家人聊聊,从而减轻自己的压力,并要好好的改善和调整目前工作与生活的平衡。

(编辑:周口站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|