自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-05-20 23:39:41 128

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

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

2024-05-20 23:30:06 310

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

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

2024-05-19 22:29:39 173

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

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

2024-05-19 22:27:59 614

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

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

2024-05-16 22:45:21 535

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

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

2024-05-16 22:38:27 1095

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

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

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

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

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

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

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

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

2024-05-13 16:15:19 280

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

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

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

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

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

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

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

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

2024-05-10 21:12:00 587

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

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

2024-05-08 22:54:50 1235

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

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

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

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

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

2024-05-07 22:53:30 1326

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

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

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

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

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

2024-05-06 23:43:38 386

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

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

2024-05-06 23:34:03 1378

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

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

2024-05-05 22:15:44 643

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

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

2024-05-05 21:59:15 1282

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

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

2024-05-04 22:41:27 418

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

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

2024-05-04 22:33:47 254

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

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

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

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

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

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

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

tcp和udp的特点总结

2024-05-02 23:56:42 1043

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

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

2024-05-02 23:40:52 6105

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

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

2024-05-01 23:06:55 6267

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

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

2024-05-01 22:36:21 6125

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

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

2024-04-29 23:41:06 1443

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

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

2024-04-29 23:29:18 2493

原创 并发编程中的各类锁

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

2024-04-28 20:18:24 671

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

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

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

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

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

2024-03-26 18:15:47 2909

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

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

2024-03-25 22:29:12 537

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

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

2024-03-25 22:00:22 1647

原创 【c/c++指针】初学者必看,学好指针的重要性,指针都有哪些应用

指针,在C/C++编程中是一个重要且基础的概念。尽管初学者可能会觉得它们有些复杂,但是深入理解和熟练使用指针是每个程序员必须掌握的技能之一。在本文中,我们将探讨学好指针的重要性,以及指针在程序设计中的广泛应用。

2024-03-22 22:09:37 332

原创 【什么是多态】从用c语言实现多态开始,解剖多态的核心

多态性源自希腊语,意为“多种形态”。在编程领域,多态性表示同一操作或消息可以应用于不同类型的对象,而产生不同的行为。这种行为基于对象的类型和方法的实现方式而异,但对于调用方来说,它们统一表现为同一种调用方式。虚函数表是一种数据结构,它存储了对象的虚函数的地址。每个包含虚函数的类都有一个对应的虚函数表。当创建一个对象时,编译器会在对象的内存布局中添加一个指向虚函数表的指针(通常称为虚函数指针或 vptr)。这个指针指向类的虚函数表。

2024-03-22 21:44:42 807

原创 c++常用设计模式(单例,工厂,代理,建造者)

设计模式是在软件设计过程中,针对特定问题所形成的解决方案。它们提供了一种经过验证的方法来解决常见的设计问题,同时也提高了代码的可维护性、可复用性和可读性。在C++中,有一些设计模式被广泛应用于实际开发中。本文将介绍其中一些常用的设计模式:单例模式、工厂模式、代理模式和建造者模式。

2024-03-05 17:01:23 1052

原创 B树、B+树及B*树的原理、作用及区别

B树、B+树及B*树的原理、作用及区别

2024-03-05 14:43:54 998

原创 C++单例模式:懒汉和饿汉

在C++编程中,单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供全局访问点。在本文中,我们将探讨单例模式的基础概念,以及其两种常见变体:懒汉模式和饿汉模式。

2024-02-26 17:34:09 319

空空如也

空空如也

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

TA关注的人

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