avatar
文章
79
标签
21
分类
15
Home
Archives
Categories
Tags
Hymns
搜索
Home
Archives
Categories
Tags

Hymns

029_计算机网络网络层
发表于2024-11-11|计算机网络
网络层(Network Layer)在计算机网络中扮演着关键的角色,负责数据在网络中的传输路径选择和数据包的路由。以下是网络层的主要功能: 网络层的主要功能1. 路由选择网络层负责确定数据包从源地址到目标地址的最佳路径。路由器(Routers)使用路由协议(如 OSPF、BGP)来动态更新和维护路由表,并根据网络拓扑的变化调整路径。 2. 数据包转发网络层将数据包从一个网络节点转发到下一个节点,直到数据包到达目标地址。这个过程涉及查找路由表,并根据表中的信息确定数据包的下一跳地址。 3. IP 地址编址网络层使用 IP 地址来唯一标识网络中的每个设备。IP 地址分为 IPv4 和 IPv6 两种格式,网络层通过 IP 地址来确定数据包的源和目的地。 4. 分段与重组网络层将较大的数据包分割成适合传输的较小片段(分段),并在到达目标后重新组装(重组)这些片段。这对于跨越不同网络的传输尤为重要,因为不同网络可能对数据包大小有不同的限制。 5. 差错处理与流量控制虽然主要的差错检测和流量控制功能在传输层,但网络层也具备一定的错误检测机制。例如,IPv4...
028_计算机网络传输层
发表于2024-11-11|计算机网络
在计算机网络中,传输层(Transport Layer)负责在网络端点之间传输数据。它是 OSI 模型中的第四层,提供了关键的功能,以确保数据在网络中能够有效、可靠地传输。以下是传输层的一些主要功能和作用: 传输层的主要功能1. 数据分段和重组传输层将应用层传递下来的数据分割成更小的段(segments),每个段包含必要的控制信息。接收方传输层会将这些段重组成原始的数据流。 2. 传输控制传输层确保数据可靠传输。常见协议如 TCP(传输控制协议)提供了数据包的确认(acknowledgment)、序号(sequence numbering)、超时重传(retransmission)、流控制(flow control)和拥塞控制(congestion control)等机制。 3. 端到端通信传输层建立并管理端到端的通信连接。TCP 协议通过三次握手(three-way handshake)建立连接,确保通信双方准备就绪,而 UDP(用户数据报协议)则是不可靠的连接,通常用于实时应用如视频流和在线游戏。 4....
027_GOF设计模式分类
发表于2024-11-07|设计模式
GOF 设计模式是经过总结、优化的代码设计经验,用于解决软件设计中的特定问题。设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。以下是每个分类中的常见设计模式: 创建型模式这些模式处理对象的创建问题,并提供更灵活、可复用的创建机制。 单例模式(Singleton Pattern): 确保一个类只有一个实例,并提供全局访问点。 工厂方法模式(Factory Method Pattern): 定义一个创建对象的接口,但由子类决定要实例化的类。 抽象工厂模式(Abstract Factory Pattern): 提供一个创建一系列相关或依赖对象的接口,而无需指定具体类。 生成器模式(Builder Pattern): 将对象的构建过程与表示分离,使得同样的构建过程可以创建不同的表示。 原型模式(Prototype Pattern): 通过复制现有对象来创建新对象,避免了对象的重复初始化。 结构型模式这些模式关注类和对象的组合关系,解决系统的结构问题。 适配器模式(Adapter Pattern):...
026_gitignore
发表于2024-11-04|git
Git 忽略文件的规则 语法.gitignore 文件是用来告诉 Git 哪些文件或目录在版本控制中应该被忽略的。这对于排除编译生成的文件、临时文件、日志文件以及敏感数据等非常有用。下面是一些编写 .gitignore 文件的基本规则和示例: 文件名匹配规则: *:匹配零个或多个字符。 ?:匹配任意一个字符。 []:匹配方括号内的任意一个字符。 !:在模式前加上感叹号表示取反,即排除匹配的文件或目录。 注释:以 # 开头的行表示注释,Git 会忽略这些行。 示例: 忽略所有 .a 文件: 1*.a 但是跟踪 lib.a,即使在忽略 .a 文件的规则下: 1!lib.a 忽略所有以 .o 结尾的文件: 1*.o 忽略所有以 ~ 结尾的临时文件: 1*~ 忽略 TODO 文件: 1TODO 忽略 build/ 目录下的所有文件: 1build/ 忽略 doc/notes.txt 文件,但不包括 doc/server/arch.txt 文件: 1doc/notes.txt 忽略 doc/ 目录下的 .pdf 文件: 1doc/*.pdf 忽略 doc/...
025_PR和MR的区别
发表于2024-11-04|git
PR(Pull Request)和 MR(Merge Request)是代码版本控制系统中的两个概念,它们主要用于在多人协作开发项目时合并代码变更。这两个术语在功能上非常相似,但在不同的代码托管平台上有不同的称呼。 PR(Pull Request) 定义: Pull Request 是 GitHub、Bitbucket、GitLab 等平台上用于代码合并的一种请求机制。当开发者在自己的分支上完成了一组代码更改后,他们可以创建一个 Pull Request 请求,将这些更改合并到主分支(例如 main 或 master)或者其他目标分支。 使用场景: 开发者完成功能或修复后,创建 PR 并向代码库的维护者或团队成员发出请求,要求对这些更改进行审查。 审查通过后,维护者可以批准并合并 PR,将这些更改合并到目标分支中。 平台: PR 这个术语主要用于 GitHub 和 Bitbucket 等平台。 MR(Merge Request) 定义: Merge Request 是 GitLab 上使用的术语,功能上与 Pull Request 类似。MR...
024_cpp初始化
发表于2024-10-31|c++
介绍下 c++ 的初始化 一. 自动初始化为 0 的情况在 C++中,初始化为 0 的情况取决于变量的类型、存储位置和初始化方式。以下是 C++中会自动初始化为 0 的几种情况: 1. 全局变量和静态变量 全局变量(包括命名空间作用域的变量)和静态变量(static)在定义时会被自动初始化为 0。 这种自动初始化包括整型初始化为 0,浮点型初始化为 0.0,指针初始化为nullptr,类对象会调用默认构造函数。 示例: 1234567int globalVar; // 自动初始化为0static int staticVar; // 静态变量自动初始化为0int main() { static int funcStaticVar; // 函数内部的静态变量自动初始化为0 return 0;} 2. 类中的非静态成员变量(使用值初始化) 如果对象的非静态成员变量没有显式初始化,在值初始化时这些成员变量会被自动初始化为...
023_c++折叠表达式
发表于2024-10-31|c++
C++中的折叠表达式(Fold Expressions)是一种简化变参模板函数编写的语法,从 C++17 开始引入。折叠表达式可以对可变参数模板进行自动折叠,从而简化代码。 基本概念折叠表达式可以将可变参数模板中的所有参数,通过特定的运算符折叠为一个结果。常见的运算符包括加法+、乘法*、逻辑与&&、逻辑或||等。折叠表达式主要有四种形式: 一元左折叠:从左到右依次折叠,例如:(args + ...) 一元右折叠:从右到左依次折叠,例如:(... + args) 二元左折叠:用于指定初始值,从左到右依次折叠,例如:(init + ... + args) 二元右折叠:用于指定初始值,从右到左依次折叠,例如:(args + ... + init) 示例以下是每种折叠表达式的代码示例: 1. 一元左折叠123456789template<typename... Args>auto sum(Args... args) { return (args + ...); // 将参数依次相加}int main() { ...
022_c++结构化绑定
发表于2024-10-31|c++
介绍下 c++ 的结构化绑定 结构化绑定(Structured Binding)是 C++17 引入的新特性,允许我们将结构体、数组或元组中的多个元素同时绑定到多个变量上。 以下是几个常见的使用场景: 绑定 tuple: 12std::tuple<int, std::string, double> tuple{1, "hello", 3.14};auto [id, name, value] = tuple; // 自动解包到三个变量 绑定 pair: 1234std::map<std::string, int> map{{"one", 1}};for (const auto& [key, value] : map) { // 遍历map时直接获取键值 std::cout << key << ": " << value <<...
021_主题皮肤推荐
发表于2024-10-30
好用的主题皮肤推荐 工具 主题皮肤 备注 vscode Night Owl fav One Dark Pro foggy typora Vue fav Github Juejin
020_如何修改 Linux 栈区大小
发表于2024-10-29|Linux
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。和堆相比,栈通常很小。在 Linux 系统中,栈区的大小是固定的,通常为 8 MB。然而,在某些情况下,我们可能需要修改栈区的大小。本文将介绍如何修改 Linux 栈区大小。 1. 查看当前栈区大小1ulimit -s // 一般为8192KB, 即8MB 注:线程栈大小默认为 8M,8192 KB。 2. 修改栈区大小临时修改1ulimit -s 102400 // 改为100MB 注:ulimit -s ulimited 不限制。 永久修改有两种方法: 方法一:可以在/etc/rc.local 内加入 ulimit -s 102400 则可以开机就设置栈空间大小,任何用户启动的时候都会调用 方法二:修改配置文件/etc/security/limits.conf 手动添加: 1* soft stack 102400 自动添加: 1echo -ne "* soft stack...
1…5678
avatar
Hymns
文章
79
标签
21
分类
15
Follow Me
公告
This is my Blog
最新文章
079-ClouDNSandCloudflare_mailtransfer2025-03-20
078-vscode搜索最大显示19999+2025-03-06
077-cpp类成员变量的声明顺序2025-02-28
076-格式化字符串参数2025-02-26
075-排序算法2025-02-12
分类
  • Linux4
  • c++25
  • docker1
  • git3
  • learning5
  • vscode1
    • cursor1
  • 博客4
标签
现代c++ 计算机网络 域名 博客 c++11 图床 Linux 编译 工具 git c++17 rss debug wsl2 vscode rust docker c++ 操作系统 设计模式 开箱即用
归档
  • 三月 2025 2
  • 二月 2025 6
  • 一月 2025 4
  • 十二月 2024 8
  • 十一月 2024 35
  • 十月 2024 11
  • 九月 2024 2
  • 六月 2024 11
网站信息
文章数目 :
79
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2024 - 2025 By Hymns
框架 Hexo|主题 Butterfly
搜索
数据加载中