TCP和UDP的区别
TCP和UDP的区别
TCP是一种可靠的面向连接的协议,这意味着,在发送数据之前,TCP会建立一种叫做连接的特殊通信通道,他还会在数据传输过程中检查错误,如果发现错误就会要求重新发送,此外,TCP还会负责数据的排序,保证接收到的数据是按照发送的顺序排列的,这种机制使得TCP在需要可靠传输的情况下非常有用,比如在网页浏览和电子邮件等应用中。
相反,UDP是一种不可靠的无连接的协议,它不会建立特殊的通信通道,也不检查错误或要求重新发送数据,因此UDP通信速度更快,但可能会出现数据丢失和乱序的情况,正因为如此,UDP主要用于那些对数据完整性要求不高,但需要快速传输的应用,比如视频流和语音通话等。
C++关联型容器-map映射
std::map 是 C++
标准库中的关联容器,基于红黑树实现,存储键值对并按键自动排序。以下是
std::map 的 API 参考。
1. 构造函数
方法
描述
时间复杂度
map<K,V> m
创建空 map
O(1)
map<K,V> m(comp)
使用自定义比较器创建空 map
O(1)
map<K,V> m(begin, end)
用迭代器范围初始化
O(n log n)
map<K,V> m(begin, end, comp)
用迭代器范围和比较器初始化
O(n log n)
map<K,V> m(initializer_list)
用初始化列表初始化
O(n log n)
map<K,V> m(other_map)
拷贝构造函数
O(n)
map<K,V>...
C++关联型容器-set集合
std::set 是 C++
标准库中的关联容器,基于红黑树实现,存储唯一键并按键自动排序。以下是
std::set 的 API 参考。
1. 构造函数
方法
描述
时间复杂度
set<T> s
创建空 set
O(1)
set<T> s(comp)
使用自定义比较器创建空 set
O(1)
set<T> s(begin, end)
用迭代器范围初始化
O(n log n)
set<T> s(begin, end, comp)
用迭代器范围和比较器初始化
O(n log n)
set<T> s(initializer_list)
用初始化列表初始化
O(n log n)
set<T> s(other_set)
拷贝构造函数
O(n)
set<T> s(move(other_set))
移动构造函数
O(1)
2....
C++顺序容器-deque双端队列
std::deque(双端队列)是 C++
标准库中的双向开口的动态数组,结合了 vector 和
list 的优点,支持高效的首尾插入删除操作。以下是
std::deque 的 API 参考。
1. 构造函数
方法
描述
时间复杂度
deque<T> d
创建空 deque
O(1)
deque<T> d(n)
创建包含 n 个默认初始化元素的 deque
O(n)
deque<T> d(n, value)
创建包含 n 个 value 的 deque
O(n)
deque<T> d(begin, end)
用迭代器范围 [begin,end) 初始化
O(n)
deque<T> d(initializer_list)
用初始化列表初始化
O(n)
deque<T> d(other_deque)
拷贝构造函数
O(n)
deque<T>...
C++容器适配器-priority_queue优先队列(堆)
std::priority_queue 是 C++
标准库中的优先队列容器适配器,基于堆数据结构实现,默认提供最大堆功能(最大元素始终位于顶部)。以下是
std::priority_queue 的完整 API 参考。
1. 构造函数
方法
描述
时间复杂度
priority_queue<T> pq
创建空优先队列(使用
less<T> 比较器)
O(1)
priority_queue<T, Container, Compare> pq
指定底层容器和比较器
O(1)
priority_queue<T> pq(comp)
使用自定义比较器
O(1)
priority_queue<T> pq(begin, end)
用迭代器范围初始化
O(n)
priority_queue<T> pq(begin, end, comp)
用迭代器范围和比较器初始化
O(n)
2....
C++实现十大排序算法
以下是 C++ 实现的十大排序算法 及其详细介绍,包括
时间复杂度、空间复杂度、稳定性、适用场景 等。
1. 冒泡排序(Bubble
Sort)
思想:重复比较相邻元素,如果顺序错误就交换,直到没有交换发生。
特点:简单但效率低,适合小规模数据。
void bubbleSort(vector<int>& arr) { int n = arr.size(); for (int i = 0; i < n - 1; i++) { bool swapped = false; for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); swapped = true; }...
C++容器-vector
std::vector 是 C++
中最常用的动态数组容器,提供高效的随机访问和动态扩容功能。
1. 构造函数
方法
描述
时间复杂度
vector<T> v
创建空 vector
O(1)
vector<T> v(n)
创建包含 n 个默认初始化元素的
vector
O(n)
vector<T> v(n, value)
创建包含 n 个 value 的 vector
O(n)
vector<T> v(begin, end)
用迭代器范围 [begin,end) 初始化
O(n)
vector<T> v(initializer_list)
用初始化列表初始化
O(n)
vector<T> v(other_vector)
拷贝构造函数
O(n)
vector<T>...
Hexo 博客文章发布步骤
创建文章
使用命令行创建
在博客根目录下,使用以下命令创建新文章:
hexo new post "文章标题"
这将在 source/_posts 目录下创建一个新的 Markdown
文件,文件名格式为:年-月-日-文章标题.md
手动创建
你也可以直接在 source/_posts 目录下手动创建 Markdown
文件,但需要确保文件格式正确。
文章结构
每篇文章都包含两个主要部分:
Front-matter: 文章头部配置
正文内容:文章主体内容
Front-matter 配置
Front-matter 是文章开头的配置部分,使用 ---
包裹。常用配置包括:
---title: 文章标题date: 年-月-日 时:分:秒tags: - 标签1 - 标签2categories: 分类cover:...