自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 【网络】为什么SCTP四次握手可以抵御SYN攻击

在网络通信的世界中,安全性和可靠性是至关重要的。传统的TCP(传输控制协议)在建立连接时使用三次握手,但这种机制存在一些安全漏洞,比如SYN攻击。而SCTP(流控制传输协议)作为一种新兴的传输层协议,通过引入四次握手机制,有效地提升了安全性。本文将详细总结SCTP的安全性优势,并对比TCP的三次握手机制,探讨SYN攻击的原理及其防御策略。

2024-07-10 22:15:58 644

原创 【网络】SCTP协议概念

SCTP(Stream Control Transmission Protocol)是一种传输层协议,设计用于提供可靠的数据传输服务,同时具备一些类似UDP(User Datagram Protocol)的属性。SCTP协议因其独特的特性,在某些特定场景下(如VoIP、移动通信网络中的信令传输等)具有优势。然而,由于其复杂性和资源消耗,它可能不适用于所有应用场景。

2024-07-10 22:14:53 375

原创 【网络】socket套接字结合IO多路复用

这种多线程与 I/O 多路复用相结合的方式,可以提高服务器的并发处理能力,充分利用多核 CPU 的性能,是实现高性能网络服务器的一种有效方法。在一个单独的线程中使用 I/O 多路复用来监视所有的文件描述符。结合多线程和 I/O 多路复用,可以实现高性能的网络服务器和客户端。函数返回就绪的套接字后,主线程将新的客户端连接或已就绪的客户端套接字加入任务队列,并通知工作线程池处理这些套接字。多个工作线程从任务队列中获取套接字,并处理 I/O 操作,如读取数据、发送响应和关闭连接。

2024-05-25 16:35:40 477 1

原创 【网络】为什么udp协议报头有长度字段,而tcp没有

TCP是一种面向连接的协议,它在连接建立之后,通过序号和确认号等机制来保证数据的可靠传输,并通过流量控制和拥塞控制来调节发送端和接收端的数据传输速度。TCP的传输是基于字节流的,而不是报文,其边界问题是使用tcp协议的上层需要关心的,如http协议有规范的形式和content-length字段。UDP需要一个明确的长度字段来确定报文的边界,而TCP则不需要,因为它是一种面向连接的协议,数据传输是基于字节流的。UDP首部包含一个16位的长度字段,用于指示UDP数据报的长度,包括首部和数据部分。

2024-05-25 15:46:54 479

原创 【网络】网络编程中的粘包问题

粘包问题指的是在基于流的协议中,接收方收到的数据不是按照发送方发送的消息边界来划分的,而是多个消息粘在一起,或者一个消息被分割成多个部分接收。在发送方和接收方的应用程序中,如果没有合适的处理机制来区分不同的消息,也会导致粘包问题的出现。在消息头部添加消息长度字段,接收方首先读取消息长度,然后根据消息长度来接收和处理消息体。在消息中添加特定的分隔符或者长度字段来标识消息的边界,接收方根据这些标识来分割消息。确保每个消息的长度都是固定的,这样接收方就可以按照固定长度来接收和处理消息。

2024-05-25 15:36:08 305

原创 【c++】为什么static和virtual不能同时出现

由于静态成员函数不依赖于对象实例,因此在静态函数中不会涉及到继承链的动态绑定。而虚函数则依赖于对象实例的类型信息,以动态绑定的方式调用适当的函数版本。因此,在 C++ 中,静态成员函数和虚函数是两种不同的概念,它们的特性和用途也不同,因此不能同时出现在同一个成员函数声明中。两个关键字在语义上具有冲突,因此不能同时用于同一个成员函数。,那么在调用时将存在歧义:是使用静态绑定还是动态绑定?这会使代码的行为变得不明确和混乱。同时应用于同一个成员函数是没有意义的,也会导致语义上的混淆。

2024-05-20 23:39:41 317

原创 【c++】菱形虚拟继承的虚函数表如何继承

此时,若A对foo进行重写,D的foo会继承谁的虚表呢。根据我的测试结果得知,此时D会继承A的虚表。同理,若B对foo进行重写,D会继承自B的虚表。也就是谁重写了就继承谁的。由于子类都没有对父类进行重写,因此A,B,Driverd的虚函数表都是相同的,都继承自Base,如图。编译器会直接报错,因为此时foo的访问不明确,编译器要求你的Derived类要对foo进行重写。

2024-05-20 23:30:06 366

原创 【c++】哪些操作符不能重载 | explicit关键字的作用

哪些操作符不能重载 | explicit关键字的作用

2024-05-19 22:29:39 212

原创 【c++】面向对象的三大特性 | this指针存放在哪

什么是封装、继承、多态,this指针存放在哪里

2024-05-19 22:27:59 635

原创 【MySQL】全文索引的原理和使用

InnoDB存储引擎使用倒排索引来实现全文索引,这种数据结构特别适合高效地处理全文搜索查询。理解其工作原理和实现细节,有助于更好地利用全文索引提升MySQL数据库的文本查询性能。在实际应用中,合理设计和维护全文索引,可以大幅提升复杂文本搜索的效率。

2024-05-16 22:45:21 603

原创 【MySQL】索引:提升查询效率的利器

索引类似于一本书的目录,通过索引可以快速定位数据,而不需要扫描整个数据表。索引在数据库中存储了一个数据结构,这个数据结构以某种顺序存储了表中的一部分数据,从而提高查询速度。索引是MySQL中不可或缺的一部分,通过合理地设计和使用索引,可以显著提升数据库的查询性能。然而,索引的设计需要考虑到具体的业务需求和数据特性,避免盲目建立索引而带来的负面影响。希望本文能帮助你更好地理解和应用MySQL索引,使你的数据库查询更加高效。

2024-05-16 22:38:27 1142

原创 【网络】tcp如何保证可靠 总结

每个TCP数据包都有一个唯一的序列号,接收方通过确认号告知发送方已经接收到的数据包序列号。通过这些机制,TCP能够保证数据在传输过程中的可靠性,确保数据的有序传输、流量控制、拥塞控制和重传等功能。接收方通过TCP报文中的窗口大小告知发送方自己的接收能力,发送方根据窗口大小来调整发送速率。通过四次挥手可以安全的断开连接,保证了发送数据的完整性,确保已经发送和接收的数据都能够完整地被对方接收到。通过三次握手让通信双方知道对方的意图和通信能力,同步双方的序列号,保证连接的安全性和可靠性。

2024-05-13 17:14:32 4344 1

原创 【进程间通信】管道如何实现全双工,原理与实践

在操作系统中,管道(Pipe)是一种重要的进程间通信机制,它可以实现进程之间的数据传输。在本文中,我们将介绍如何使用管道实现全双工通信,让两个进程能够同时进行双向数据传输。

2024-05-13 16:28:07 3600 2

原创 【网络】客户端拔掉网线后,tcp连接还存在吗

当客户端将网线拔掉后,服务端和客户端的tcp连接都有哪些状态。

2024-05-13 16:15:19 349

原创 【网络】为什么TCP需要四次挥手?

本文将深入探讨TCP挥手过程为何需要四次。

2024-05-11 23:40:48 1309 5

原创 【数据库】为何选择B+树作为索引?与红黑树、B树的对比

数据库索引是数据库系统中至关重要的组成部分,影响着数据检索的效率和性能。本文将探讨为何数据库选择B+树作为索引的原因,并分别分析红黑树和B树在此场景中的劣势。

2024-05-11 15:16:46 513 2

原创 【数据库】SELECT 语句的完整指南

本文将介绍 MySQL 中 SELECT 语句的各种用法,包括基本语法、条件筛选、聚合函数、排序、分组、多表连接和结果限制等。

2024-05-10 21:12:00 668

原创 【网络】滑动窗口和拥塞窗口

滑动窗口和拥塞窗口是TCP协议中两个重要的窗口概念,它们分别用于流量控制和拥塞控制,在功能和作用上有所不同。

2024-05-08 22:54:50 1287

原创 【网络】tcp的初始化序列号为什么要随机生成

序列号和确认序列号是TCP协议中的两个关键概念,本文将对其进行介绍,并讲解初始化序列号为何要随机生成的原因。

2024-05-08 22:33:08 1246 1

原创 【网络】深入了解端口,一个端口能否被多个进程绑定

在计算机网络中,端口是一项关键概念,它在网络通信中扮演着重要的角色。本文将深入介绍端口的作用、分类,并分析一个端口能否被多个进程绑定的问题。

2024-05-07 22:53:30 1790

原创 【网络】IP层分片和TCP分段,有MTU为什么还需要MSS

在网络通信中,IP层分片和TCP分段是两个重要的概念,它们分别在网络层和传输层发挥着关键作用。本文将介绍IP层分片的作用和缺陷,解释为何TCP需要分段而不是让IP层进行分片。

2024-05-07 22:31:11 1335 1

原创 【网络】什么是NAT技术

在当今互联网的环境中,NAT(Network Address Translation)技术扮演着至关重要的角色,它是网络通信中的一项核心技术,为我们的网络连接提供了便利、安全性和灵活性。本文将介绍NAT技术,探讨其原理、不同类型以及在实际应用中的广泛应用场景。

2024-05-06 23:43:38 409

原创 【网络】网站打开的全过程:网络通信与协议解析

在我们日常的网络浏览中,打开一个网站似乎是理所当然的事情,但其中涉及了复杂的网络通信过程和多种协议的配合。本文将从上至下,逐层解析打开一个网站的完整过程,并介绍每个层次可能涉及的协议和技术。

2024-05-06 23:34:03 1449

原创 【操作系统】Linux 系统中的 Load Average(负载均衡)是如何计算的

在 Linux 系统中,Load Average(负载均衡)是一个重要的性能指标,它反映了系统在一段时间内的负载情况。本文将讲解 Load Average 的含义、计算方法以及如何解读 Load Average。

2024-05-05 22:15:44 952

原创 【网络】TCP的长连接是如何实现的

TCP长连接是一种在网络通信中常见的技术,它可以有效地减少连接建立和关闭的开销,提高数据传输的效率,特别是在需要频繁通信的场景下。本文将介绍实现TCP长连接的方法和注意事项,帮助开发者更好地理解和应用这一技术。

2024-05-05 21:59:15 1636

原创 【编译原理】程序运行的四个阶段,从源代码到可执行文件的完整过程解析

程序的运行过程经历了多个阶段,从源代码到最终的可执行文件,涉及了预处理、编译、汇编和链接等步骤。本篇博客将深入解析程序运行的四个主要阶段,并结合一个简单的示例来说明每个阶段的作用。

2024-05-04 22:41:27 1565

原创 深入理解 Makefile:从创建到使用的完整指南

Makefile 是一个强大的自动化构建工具,它可以帮助开发者管理复杂的项目,提高代码的可维护性和可移植性。本篇博客将从头开始,深入探讨如何创建、编写和使用 Makefile。

2024-05-04 22:33:47 282

原创 【网络】TCP为什么采用三次握手?而不是两次,四次

TCP(Transmission Control Protocol)是一种可靠的、面向连接的通信协议,它在建立连接时采用了三次握手的机制。这种设计并非偶然,而是为了确保连接的可靠性、安全性和效率。下面我们详细解释为什么TCP要采用三次握手。主要就是看两次握手会有什么问题

2024-05-03 00:30:31 2618 1

原创 【网络】tcp协议如何保证可靠性

TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,为网络通信提供了可靠性和连接稳定性。本文将详细介绍 TCP 协议如何保证数据的可靠传输和连接的稳定性,并分析其优缺点。

2024-05-03 00:05:14 1363 1

原创 【网络】传输层的特点总结

tcp和udp的特点总结

2024-05-02 23:56:42 1100

原创 【编译链接】为什么使用thread头文件时编译需要加上-lpthread

当使用 `` 头文件时,编译时需要加上 `-lpthread` 参数,这是因为线程库并不是默认链接到 C++ 标准库中的。在大多数系统中,线程库是一个单独的库,通常名为 `libpthread`,需要显式地链接到你的程序中。

2024-05-02 23:40:52 6998

原创 【锁和信号量】为什么有信号量还需要锁

在多线程和多进程编程中,选择合适的同步机制是至关重要的。锁和信号量作为两种常见的同步机制,各有优缺点,在不同的场景下有着不同的应用。通过深入理解它们的原理和用法,以及分析它们之间的异同,我们可以更好地应用这两种同步机制,提高程序的并发性能和可靠性。

2024-05-01 23:06:55 7136

原创 【进程间通信】常用通信方法的概念,区别及优缺点

进程间通信是计算机中非常重要的一个主题,尤其在多任务处理和分布式系统中。这篇博客可以详细介绍几种常用的进程间通信方法

2024-05-01 22:36:21 6964

原创 【HTTP协议】了解http需要学习哪些内容

HTTP(Hypertext Transfer Protocol)是超文本传输协议,互联网上应用最广泛的一种协议,它负责在客户端和服务器之间传输数据。本文将从HTTP协议的基本原理、请求-响应模型、常见特性以及应用场景等方面进行总结。

2024-04-29 23:41:06 1475

原创 深入理解静态库和动态库在Linux系统中的应用

在软件开发中,静态库和动态库是常用的代码复用方式,它们在Linux系统中发挥着重要的作用。本文将详细介绍静态库和动态库的概念、特点以及在Linux系统中的应用。

2024-04-29 23:29:18 2509

原创 并发编程中的各类锁

探讨几种常见的锁,包括互斥锁、自旋锁、读写锁、悲观锁和乐观锁,并对它们进行详细总结和比较。

2024-04-28 20:18:24 715

原创 HTTPS安全通信:客户端与服务端协商过程详解

梳理HTTPS通信中客户端与服务端之间的协商过程,以及其保障通信安全的关键作用。

2024-04-28 20:00:31 6864 1

原创 深入理解 C++ 中的 IO 流【iostream篇】

C++ 中的输入输出流(iostream)是非常重要的一部分,它们提供了与用户交互以及与文件系统进行数据交换的功能。本文将深入探讨 C++ 中的cin和cout,介绍它们的使用方法、缓冲区以及常用的成员函数等相关知识。

2024-03-26 18:15:47 3243

原创 用户态和内核态:操作系统权限与运行模式解析

在现代计算机操作系统中,用户态(User Mode)和内核态(Kernel Mode)是两种重要的运行模式,用于区分用户程序与操作系统核心之间的权限和特权级别。深入理解这两种模式对于理解操作系统的工作原理至关重要。

2024-03-25 22:29:12 597

原创 为什么静态成员函数不能是虚函数

在面向对象编程中,静态成员函数和虚函数都是常见的概念,但它们之间存在着本质上的差异。由于其特性上的差异,静态成员函数不能声明为虚函数。下面我们来探讨一下为什么静态成员函数不能是虚函数。

2024-03-25 22:00:22 1734

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除