学习基础 四种io模型(同步阻塞io,同步非阻塞io,io多路复用(select/poll,epoll),异步io) 传统bio(同步阻塞io,blocking io) jd...
学习基础 四种io模型(同步阻塞io,同步非阻塞io,io多路复用(select/poll,epoll),异步io) 传统bio(同步阻塞io,blocking io) jd...
最简单的demo,编写一个消息监听和消息发送。namesrv,broker,producer,consuer都是一个。本文的意思在于初学者可以根据文章的代码,操作复制出一个入...
BF 算法和 RK 算法BM 算法和 KMP 算法
一.What-图的概念:如下就是一个图(非线性表数据结构) 图的分类:无向图(微信-不允许单向关注)、有向图(微博-允许单向关注)、带权图(QQ-亲密度) 图相关概念: 顶点...
什么是堆? 如何存储一个堆(如何实现一个堆?) 堆的插入、删除操作 如何基于堆实现排序?(建堆和排序) 为什么快速排序要比堆排序性能好? 在讲堆排序建堆的时候,我说到,对于完...
树、二叉树、二叉查找树、平衡二叉树、红黑树、递归树 一、树 树的常用概念节点:树中的每个元素称为节点父子关系:相邻两节点的连线,称为父子关系根节点:没有父节点的节点叶子节点:...
一、什么是哈希算法? 定义将任意长度的二进制值串映射成固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。 如何设计一个优秀的...
一、散列表的由来? 散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。 需要存储在散列表中的数据我们称为键,将键转化为数...
一、什么是跳表? 为一个值有序的链表建立多级索引,比如每2个节点提取一个节点到上一级,我们把抽出来的那一级叫做索引或索引层。如下图所示,其中down表示down指针,指向下一...
一、什么是二分查找? 二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0。 二、时间复杂...
一、线性排序算法介绍 线性排序算法包括桶排序、计数排序、基数排序。 线性排序算法的时间复杂度为O(n)。 此3种排序算法都不涉及元素之间的比较操作,是非基于比较的排序算法。 ...
归并排序和快速排序 一、分治思想 分治思想:分治,顾明思意,就是分而治之,将一个大问题分解成小的子问题来解决,小的子问题解决了,大问题也就解决了。 分治与递归的区别:分治算法...
一、排序方法与复杂度归类 几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排序、基数排序、桶排序。 复杂度归类冒泡排序、插入排序、选择排序...
一、什么是递归? 递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。 方法或函数调用自身的方式称为递归调用...
一、什么是队列? 先进者先出,这就是典型的“队列”结构。 支持两个操作:入队enqueue(),放一个数据到队尾;出队dequeue(),从队头取一个元素。 所以,和栈一样,...
一、什么是栈? 后进者先出,先进者后出,这就是典型的“栈”结构。 从栈的操作特性来看,是一种“操作受限”的线性表,只允许在端插入和删除数据。 二、为什么需要栈? 栈是一种操作...