数据库级操作主要负责命名空间、默认字符集与排序规则、备份恢复和连接观察。语法本身不难,真正容易出错的是字符集选择、危险删除、备份范围和恢复验证。
1. 创建数据库推荐显式写出字符集和排序规则:
123CREATE DATABASE IF NOT EXISTS shop CHARACTER SET utf8mb4 COLLATE utf8mb4_090 ...
数据库不是简单的“保存数据的文件”,而是一套负责数据组织、并发访问、权限控制、故障恢复和持久化的系统。本文从数据库基本概念出发,梳理 MySQL 的客户端/服务器模型、逻辑层级、SQL 分类和存储引擎,为后续学习表、索引和事务建立全局视角。
1. 为什么需要数据库直接用普通文件保存数据会遇到许多问题:
数据格式由每个程序自行定义,难以共享;
...
迷宫问题表面上是在二维网格中找路,本质上是图的遍历:每个可通行格子是顶点,相邻可达格子之间存在边。使用栈或递归进行深度优先搜索,可以寻找任意可行路径;使用队列进行广度优先搜索,则能在无权网格中找到步数最少的路径。
1. 把迷宫建模成图设迷宫是 $m\times n$ 的网格:
0 表示可通行;
1 表示墙;
每个可通行格子 (row, col) 是一个 ...
排序是把记录按一个或多个关键字重新排列的过程。插入、选择、交换、分治等不同思想,会带来不同的时间、空间、稳定性和数据适应性。本文系统梳理直接插入、希尔、选择、堆、冒泡、快速和归并排序,并给出选择算法时真正需要考虑的边界。
1. 排序的基本概念1.1 内部排序与外部排序
内部排序:待排序数据可以全部放入内存;
外部排序:数据规模超过内存,需要在内存与外部存 ...
树用于表达一对多的层次关系,文件目录、组织架构、语法树和索引结构都离不开它。二叉树则把每个节点的孩子数限制为最多两个,却由此衍生出堆、二叉搜索树、AVL 树和红黑树等重要结构。本文从术语与性质入手,重点理解四种遍历及其代码实现。
1. 树的定义树是由 $n;(n\ge0)$ 个节点组成的有限集合。非空树满足:
有且仅有一个根节点;
除根外,其余节点可分 ...
栈和队列都是操作位置受到限制的线性表。栈遵循后进先出,适合保存尚未完成的上下文;队列遵循先进先出,适合按照到达顺序处理任务。理解它们的关键不仅是记住 LIFO 与 FIFO,还要掌握空满状态、底层实现和边界不变量。
1. 栈:后进先出栈(Stack)只允许在栈顶插入和删除:
push:把元素压入栈顶;
pop:删除栈顶元素;
top/peek ...
线性表描述“一对一”的前后关系,顺序表和链表则是它的两种典型存储方案:前者把元素连续地放进数组,后者用指针把分散的节点串起来。二者没有绝对优劣,真正的选择依据是访问模式、插入删除位置、内存开销和缓存局部性。
1. 线性表线性表是由 $n$ 个具有相同性质的数据元素组成的有限序列。除首元素和尾元素外,每个元素有且仅有一个直接前驱和一个直接后继。
线性表是逻 ...
分析算法时,我们通常不关心某台机器上恰好运行了多少毫秒,而关心输入规模增长后,时间和额外空间会按什么速度增长。渐进复杂度帮助我们忽略机器、编译器和常数差异,比较算法的可扩展性。
1. 为什么不用秒表代替复杂度分析实测时间会受到 CPU、编译器优化、缓存、操作系统负载和测试数据分布影响。同一个算法换一台机器,绝对时间可能完全不同;但当输入规模从 $n$ 扩 ...
数据结构并不是一份需要死记硬背的名词表,而是一套解决问题的方法:先确认数据之间的关系,再选择合适的存储方式,最后围绕这些数据设计高效、可靠的操作。本文从数据结构与算法的基本概念出发,建立后续学习顺序表、链表、栈、队列、树和图所需要的整体框架。
1. 什么是数据结构数据结构(Data Structure)是具有一种或多种特定关系的数据元素的集合,以及这些元 ...
HTTP 明文传输时,链路上的恶意节点可能读取或篡改内容。HTTPS 通过 TLS 为 HTTP 提供机密性、完整性和身份认证。
理解 HTTPS 不能只背“非对称加密交换对称密钥”一句话。现代 TLS 1.3 会进行版本与算法协商、临时密钥交换、证书链验证、握手签名、密钥派生和完成消息校验。
一、HTTPS 是什么可以把 HTTPS 理解为:
1234 ...
