程序猿修仙之路--数据结构之设计高性能访客记录系统

栏目: 数据库 · 发布时间: 5年前

内容简介:每个用户都有自己的个人空间,当有其他用户来访问的时候,需要添加访客记录,并且更新为最新的访客,这里设计到一个坑,如果存在这个用户的访问记录需要更新用户的最后访问时间。那这个需求在技术维度来说,有什么特点吗? 先想10秒钟,在接着往下看!!!有什么设计要点呢?缓存的篇章今日暂且不说,说一下以上的第二点,也就引出了今日数据结构主角:链表

每个用户都有自己的个人空间,当有其他用户来访问的时候,需要添加访客记录,并且更新为最新的访客,这里设计到一个坑,如果存在这个用户的访问记录需要更新用户的最后访问时间。那这个需求在技术维度来说,有什么特点吗? 先想10秒钟,在接着往下看!!!

有什么设计要点呢?

  1. 用户的访客记录一定要缓存,要不然怎么抗住大并发呢?
  2. 由于最新的访客记录变化非常快,要有一种能快速添加新数据,删除老数据的数据结构。

缓存的篇章今日暂且不说,说一下以上的第二点,也就引出了今日数据结构主角:链表

链表百科:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表属于线性结构。

链表分类

  1. 单链表:链表中的元素的指向只能指向链表中的下一个元素或者为空,元素之间不能相互指向。也就是一种线性链表。
    程序猿修仙之路--数据结构之设计高性能访客记录系统
public class Node<T>
    {
        //当前节点的数据元素
        public T Data { get; set; }
        //当前节点的下一个元素
        public Node<T> NextNode { get; set; }
    }
复制代码
  1. 双向链表:每个链表元素既有指向下一个元素的指针,又有指向前一个元素的指针,其中每个结点都有两种指针。
    程序猿修仙之路--数据结构之设计高性能访客记录系统
public class Node<T>
    {
        //当前节点的前一个节点
        public Node<T> PreNode { get; set; }
        //当前节点的数据元素
        public T Data { get; set; }
        //当前节点的下一个元素
        public Node<T> NextNode { get; set; }
    }
复制代码
  1. 循环链表:指的是在单向链表和双向链表的基础上,将两种链表的最后一个结点指向第一个结点从而实现循环。
    程序猿修仙之路--数据结构之设计高性能访客记录系统
    程序猿修仙之路--数据结构之设计高性能访客记录系统

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Android编程权威指南(第3版)

Android编程权威指南(第3版)

比尔·菲利普斯 (Bill Phillips)、克里斯·斯图尔特 (Chris Stewart)、克莉丝汀·马西卡诺 (Kristin Marsicano) / 王明发 / 人民邮电出版社 / 2017-6 / 129.00元

Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。 第3 版较之前版本增加了对数据绑定等新工具的介......一起来看看 《Android编程权威指南(第3版)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换