摘要:目录 概述 WebSocket 客户端 WebSocket 服务端 WebSocket 代理 FAQ 完整示例 资料 概述 WebSocket 是什么? WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连
阅读全文
摘要:目录 Nginx 概述 安装与使用 nginx 配置实战 更多内容 Nginx 本项目是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx。 demos 目录中的示例模拟了工作中的一些常用实战场景,并且都可以通过脚本一键式启动,让您可以快速看到演示效果。 概述 安装与使用 安装 使用
阅读全文
摘要:目录 要点 归并排序的基本思想算法分析 归并排序算法的性能 时间复杂度 空间复杂度 算法稳定性 归并排序和堆排序、快速排序的比较完整参考代码 Java版本参考资料相关阅读 要点 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的
阅读全文
摘要:目录 要点 简单排序处理流程算法分析 简单选择排序算法的性能 时间复杂度 空间复杂度完整参考代码 JAVA版本参考资料相关阅读 要点 简单选择排序是一种选择排序。 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。 简单排序处理流程 (1)从待排
阅读全文
摘要:目录 要点算法分析 希尔排序的算法性能 时间复杂度 算法稳定性 直接插入排序和希尔排序的比较完整参考代码 JAVA版本参考资料相关阅读 要点 希尔(Shell)排序又称为缩小增量排序,它是一种插入排序。它是直接插入排序算法的一种威力加强版。 该方法因DL.Shell于1959年提出而得名。 希尔排序
阅读全文
摘要:目录 要点算法分析 快速排序算法的性能 时间复杂度 空间复杂度 算法稳定性完整参考代码 JAVA版本参考资料相关阅读 要点 快速排序是一种交换排序。 快速排序由C. A. R. Hoare在1962年提出。 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边
阅读全文
摘要:目录 要点 算法思想算法分析 冒泡排序算法的性能 时间复杂度 算法稳定性优化完整参考代码 JAVA版本参考资料相关阅读 要点 冒泡排序是一种交换排序。 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 算法思想 它重复地走访过要排序的
阅读全文
摘要:目录 在一次面试中遇到一个有意思的小算法题:要求将阿拉伯数字转为汉字显示出来(包含单位)。 当时虽然实现出来,但是代码写的有点凌乱。所以回家后,重新整理了一下。 这个算法有几个小的注意点: 1、中文字符占两个字节,所以如果用C语言实现,需要用char数组的形式保存单个汉字。 2、如果数字中出现连续的
阅读全文
摘要:目录 队列的基本操作有初始化队列,判队列是否为空,入队,出队 栈可分为两种存储结构:顺序队和链队。 顺序队 /* 顺序队结构 */typedef struct {ElemType data[MAXSIZE];int front;int rear;} SqQueue; 顺序队四个要素: (1)队空条件
阅读全文
摘要:目录 要点 哈希表和哈希函数 在记录的存储位置和它的关键字之间是建立一个确定的对应关系(映射函数),使每个关键字和一个存储位置能唯一对应。这个映射函数称为哈希函数,根据这个原则建立的表称为哈希表(Hash Table),也叫散列表。 以上描述,如果通过数学形式来描述就是: 若查找关键字为 key,则
阅读全文
摘要:目录 要点 链表 单链表基本算法 插入结点 删除结点参考代码 基本操作 测试例部分 参考资料相关阅读 要点 在顺序表的算法文章中,我们讨论了线性表的顺序存储结构——顺序表。 顺序表是用一组地址连续的存储单元来保存数据的,所以它具有随机存取的特点。即查找快速,但是做插入或删除动作是,需要移动大量元素,
阅读全文
摘要:目录 顺序表 要点 基本算法 参考代码相关阅读 顺序表 要点 顺序表是在计算机内存中以数组的形式保存的线性表,是指使用一组地址连续的存储单元依次存储数据元素的线性结构。 顺序表的存储结构可表示如下: #define MAXSIZE 10 typedef int ElemType; typedef s
阅读全文
摘要:目录 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。 想写出精炼、优秀的代码,不通过不断的锤炼,是很难做到的。 开这个系列的目的是为了自我不断积累。不积跬步无以至千里嘛。 数据结构篇 线性表 顺序表的算法 单链表的算法 双链表的算法 循环链表的算法 栈 队列 算法篇 五大
阅读全文
摘要:目录 查找的基本概念顺序查找二分查找分块查找三种线性查找的PK参考资料相关阅读 查找的基本概念 什么是查找? 查找是根据给定的某个值,在表中确定一个关键字的值等于给定值的记录或数据元素。 查找算法的分类 若在查找的同时对表记录做修改操作(如插入和删除),则相应的表称之为动态查找表; 否则,称之为静态
阅读全文
摘要:目录 栈的基本操作有初始化栈,判栈是否为空,入栈,出栈,获取栈顶元素。 栈可分为两种存储结构:顺序栈和链栈。 顺序栈 顺序栈结构:typedef struct {ElemType data[MAXSIZE];int top;} SqStack; 顺序栈四个要素: (1)栈空条件:st.top ==
阅读全文
摘要:目录 概述 概念 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 排序分为内部排序和外部排序。 若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。 反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外
阅读全文
摘要:目录 要点算法分析 直接插入排序的算法性能 时间复杂度 空间复杂度 算法稳定性完整参考代码 JAVA版本参考资料相关阅读 要点 直接插入排序是一种最简单的插入排序。 插入排序:每一趟将一个待排序的记录,按照其关键字的大小插入到有序队列的合适位置里,知道全部插入完成。 在讲解直接插入排序之前,先让我们
阅读全文
摘要:目录 要点完整参考代码算法分析 基数排序的性能 时间复杂度 空间复杂度 算法稳定性相关阅读 要点 基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。 它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。 不妨通过一个具体的实例来展示一下,基数
阅读全文
摘要:目录 堆的概念要点算法分析 堆排序算法的总体情况 时间复杂度 算法稳定性完整参考代码 JAVA版本参考资料相关阅读 说明 堆的概念 在介绍堆排序之前,首先需要说明一下,堆是个什么玩意儿。 堆是一棵顺序存储的完全二叉树。 其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。 其中每个结
阅读全文
摘要:一 OSI与TCP/IP各层的结构与功能,都有哪些协议? 学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。 结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。 1.1 应用层 应用层(app
阅读全文