摘要:
栈 Stack: 概念: 栈(Stack)是一种线性表数据结构 遵循后进先出(LIFO,Last In First Out)原则,只能在栈顶进行添加和删除操作 操作: push (入栈) pop (出栈) peek (仅查看) 栈的应用: 函数调用栈 表达式求值 回溯算法 图解: 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(27)
评论(0)
推荐(0)
摘要:
列表 List 概念: 列表 List 是一种抽象的数据结构概念 表示元素的有序集合 无须使用者考虑容量限制的问题 如何实现列表: 链表本身就是列表 动态数组实现列表,需要实现动态扩容 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(9)
评论(0)
推荐(0)
摘要:
队列 Queue: 概念: 队列 Queue 是一种线性表数据结构 遵循先进先出(FIFO,First In First Out)原则,在队列的尾部添加元素,在头部移除元素 操作: enqueue(入队) dequeue(出队) front (仅查看) 应用: 任务调度 广度优先搜索算法 图解: 双 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(7)
评论(0)
推荐(0)
摘要:
链表 Linked List: 概念: 数组(Array)是一种线性表数据结构 用非连续的内存空间,来存储具有相同类型的数据的数据结构 每个节点包含数据部分和指针,指针指向下一个(或上一个,对于双向链表)节点 特点: 动态大小:链表的大小可以在运行时改变 不连续的内存:节点可以在内存中分散存储,通过 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(12)
评论(0)
推荐(0)
摘要:
数组 Array: 概念: 数组(Array)是一种线性表数据结构 用一组连续的内存空间,来存储一组具有相同类型的数据 数组中的元素可以通过索引直接访问 特点: 随机访问:可以快速地通过索引访问任何元素 固定大小:一旦声明,数组的大小就固定了 空间效率:因为申明时需要预留空间,在空间上可能不是最优的 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(13)
评论(0)
推荐(0)
摘要:
线性表 特点: 由N个具有相同特性的数据元素组成的有限序列 线性表中的数据元素之间呈现一对一的关系,除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的 线性表上的数据最多只有前和后两个方向 举例: 数组 链表 栈 队列 个人理解 线性、非线性的区别 数学坐标系: 线性表元素之间相互连接,类 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(10)
评论(0)
推荐(0)
摘要:
5.位图 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(7)
评论(0)
推荐(0)
摘要:
4.动态扩容 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(6)
评论(0)
推荐(0)
摘要:
散列表/哈希表 特点: 通过建立键 key 与值 value 之间的映射,实现O(1)时间复杂度的高效的元素查询 举例: 树 图 图解: 常用操作: 初始化 查询操作 添加键值对 删除键值对 哈希函数(hash function): 作用:作用是将一个较大的输入空间映射到一个较小的输出空间 索引位置 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(12)
评论(0)
推荐(0)
摘要:
3.冲突处理 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(9)
评论(0)
推荐(0)
摘要:
哈希函数 目标: 极快且稳定 特点: 确定性/幂等性: 对于相同的输入,哈希算法应始终产生相同的输出。这样才能确保哈希表是可靠的。 效率高: 计算哈希值的过程应该足够快,哈希表的实用性越高。 均匀分布: 哈希算法应使得键值对均匀分布在哈希表中。分布越均匀,哈希冲突的概率就越低。 常见的哈希算法: M 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(23)
评论(0)
推荐(0)
摘要:
二叉树 Binary Tree: 1.特点: 一种非线性数据结构,代表“祖先”与“后代”之间的派生关系 二叉树的基本单元是节点,每个节点至少包含值、左子节点引用和右子节点引用 二叉树中,除叶节点外,其他所有节点都包含子节点和非空子树 2.概念: 名词 解释 根节点(root node) 位于二叉树顶 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(32)
评论(0)
推荐(0)
摘要:
多路查找树 2-3树 2-3-4树 B树 B+树 多叉树: 树的每个节点可以有超过2个子节点 举例:2-3树、2-3-4树、B树、B+树 概念: 阶数(Order),对于一颗M阶B树,一个节点最多包含M个子节点 B树(Balanced Tree): B树是多路平衡查找树的一种特殊类型 B 是Bala 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(36)
评论(0)
推荐(0)
摘要:
红黑树 红黑树是一种自平衡的二叉查找树,属于AVL平衡树的一种特殊形式 特征: 每个节点要么是红色,要么是黑色。 根节点是黑色。 每个叶子节点(NIL)是黑色。 如果一个节点是红色,则其两个子节点必须是黑色。 从任一节点到其每个叶子的所有路径,都包含相同数目的黑色节点。 红黑树的这5条性质,使得一棵 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(13)
评论(0)
推荐(0)
摘要:
AVL平衡树 特征: AVL 树既是二叉搜索树,也是平衡二叉树,同时满足这两类二叉树的所有性质 AVL 树是一种平衡二叉搜索树 属性: 节点高度 节点平衡因子:节点左子树的高度减去右子树的高度,空节点的平衡因子为0 AVL 树旋转: 作用: AVL 树的特点在于“旋转”操作,它能够在不影响二叉树的中 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(22)
评论(0)
推荐(0)
摘要:
树 在树中,数据从顶部向下按层次排列,表现出“祖先”与“后代”之间的派生关系 树结构是一种非线性存储结构,存储的是具有一对多关系的数据元素 树的分类: 树 二叉树 按树的结构: 满二叉树 完满二叉树 完全二叉树 按搜索功能: 查找:(索引) 二叉查找树(BST) 非平衡查找树 平衡树二叉树 AVL树 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(10)
评论(0)
推荐(0)
摘要:
堆 定义:完全二叉树的一种特定应用 特征: 最底层节点靠左填充,其他层的节点都被填满(完全二叉树特性)。 根节点称为“堆顶”,将底层最靠右的节点称为“堆底”。 对于大顶堆(小顶堆),堆顶元素(根节点)的值是最大(最小)的。 堆分类: 小顶堆:任意节点的值≤其子节点的值 大顶堆:任意节点的值≥其子节点 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(21)
评论(0)
推荐(0)
摘要:
定义 算法(algorithm) 是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性: 问题是明确的,包含清晰的输入和输出定义。 具有可行性,能够在有限步骤、时间和内存空间下完成。 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 数据结构(data structure) 阅读全文
posted @ 2024-10-27 23:53
navyum
阅读(60)
评论(0)
推荐(0)
摘要:
数据结构和算法 线性表 数组 链表 单链表 双向链表 循环链表 双向循环链表 静态链表 栈 顺序栈 链式栈 队列 普通队列 双端队列 阻塞队列 并发队列 阻塞并发队列 树 二叉树 平衡二叉树 AVL树 红黑树 完全二叉树 满二叉树 平衡二叉查找树 多路查找树 B树 B+树 2-3树 2-3-4树 堆 阅读全文
posted @ 2024-10-27 23:52
navyum
阅读(24)
评论(0)
推荐(0)
摘要:
学习路径: 阶段一:算法入门 我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效率等方面的内容。 阶段二:刷算法题 建议从热门题目开刷,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的。我们可以按照“艾宾浩斯遗忘曲线 阅读全文
posted @ 2024-10-27 23:52
navyum
阅读(19)
评论(0)
推荐(0)
摘要:
labuladong hello-algo 阅读全文
posted @ 2024-10-27 23:52
navyum
阅读(8)
评论(0)
推荐(0)
摘要:
简介 同步调用、异步调用的说法,是对于获取数据的过程而言的。 例如发生read调用时,内核将数据从内核空间拷贝到应用程序空间。这个过程是在read函数中是同步进行的。如果内核实现的拷贝效率很差,read调用就会在这个同步过程中消耗比较长的时间。 IO操作分两个阶段: 等待数据准备好 –读到内核缓存 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(83)
评论(0)
推荐(0)
摘要:
网络层又叫IP层: 主要的解决问题: 数据包的转发,IP to IP 路由选择 IP地址的分配 分片和重组 IP地址: 分类: Img CIDR(Classless Inter-Domain Routing): CIDR是一种更灵活的网络划分方法,它将IP地址和子网掩码写在一起。将IP 地址被划分为 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(49)
评论(0)
推荐(0)
摘要:
数据链路层又叫MAC层 MAC:Medium Access Control,即媒体访问控制,存在连接的设备 to 设备 MAC地址 是一个局域网内才有效的地址 目标MAC地址 只要过网关,就必定会改变 目标MAC地址 记录的是下一跳的地址 MAC层 主要解决问题: 解决包的接收对象 解决包的有序、并 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(193)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(25)
评论(0)
推荐(0)
摘要:
HTTP 发送格式: 图片 响应格式: 图片 HTTPS 与HTTP相比,多了SSL/TLS 握手协议 概念:前向安全性: 密钥泄露后,即使拿到以前的记录,也无法通过密钥进行破解 RSA、DH加密算法是非前向安全的;ECDHE是前向安全的 SSL/TLS 握手协议: 目的: 通过非对称加密算法,握手 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(51)
评论(0)
推荐(0)
摘要:
传输: 数据传输格式: MAC层定义了本地局域网设备的传输行为 IP层定义了整个网络端到端的传输行为 传输层定义应用程序到应用程序的传输,基于端口区分 这两层基本定义了包的特性: 网络传输是以包为单位的,MAC层叫帧Frame,IP层叫包Packet,包被分片后叫Fragment,传输层叫段Segm 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(84)
评论(0)
推荐(0)
摘要:
10. 网络文件IO优化 本地磁盘中文件发送到网络中: 1. 直接 IO 技术 Img 内核缓冲区又叫做Linux系统的Page Cahe。 为了加快磁盘的IO,Linux系统会把磁盘上的数据以 Page为单位缓存在操作系统的内存里,这里的Page是 Linux 系统定义的一个逻辑概念,一个Page 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(17)
评论(0)
推荐(0)
摘要:
简介 基本信息: 在内核中,Socket是一个文件,对应一个文件描述符。文件描述符是一个整数,是描述符数组的下标值 每一个进程都有一个数据结构 task_struct,里面指向一个文件描述符数组,表示这个进程打开的所有文件的文件描述符 socket 对应的 inode 指向了 Socket 在内核中 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(13)
评论(0)
推荐(0)
摘要:
基础 内核源码:https://elixir.bootlin.com/linux/latest/source ★★★ 各层协议的作用,以及 TCP/IP 协议的特点。 ★★☆ 以太网的特点,以及帧结构。 ★★☆ 集线器、交换机、路由器的作用,以及所属的网络层。 ★★☆ IP 数据数据报常见字段的作用 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(15)
评论(0)
推荐(0)
摘要:
OSI七层: 图片 TCP/IP 五层: 图片 思维导图: 图片 阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(8)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2024-10-27 23:45
navyum
阅读(9)
评论(0)
推荐(0)
摘要:
物理层设备 Hub 工作原理:无脑广播,不管你需不需要,收到数据包就广播 阅读全文
posted @ 2024-10-27 23:39
navyum
阅读(12)
评论(0)
推荐(0)

浙公网安备 33010602011771号