自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】Socket网络套接字

通过理解和掌握这些基础概念和接口,我们可以构建出高效、稳定的网络应用程序。无论是选择UDP还是TCP,重要的是理解它们的特点和适用场景,以及如何根据实际需求设计合适的通信模型。希望本文能够帮助你深入理解UDP和TCP的通信设计,并在实际的网络编程中发挥作用。

2024-05-10 23:21:41 975

原创 【Linux】网络基础篇(一)

人们在利用计算机工作时,通常都需要多人协作,所以免不了要进行数据交互。没有网络的话数据就需要人来拷贝,这样效率大大降低,所以慢慢的网络就出来了。

2024-05-06 20:47:37 593

原创 【算法详解】位运算

在计算机内部,数是以「二进制(Binary)」的形式来进行存储。位运算就是直接对数的二进制进行计算操作,在程序中使用位运算进行操作,会大大提高程序的性能。

2024-04-29 12:08:58 769

原创 【算法模板】数学基础算法模版

数基础算法模版,总结用来了解和记忆

2024-04-28 21:49:04 888

原创 【数据结构】二叉树(带图详解)

链表和数组都是线性结构,而树是非线性的结构。树是依靠分支关系定义出的一种层次结构。社会亲缘关系和组织结构图都可以用树来形象地表示。

2024-04-27 12:39:09 1599

原创 【Linux】基础指令

使用Linux系统的第一步就是先熟悉Linux的各种指令,之后才能谈Linux的系统编程和网络编程。

2024-04-27 11:48:01 752

原创 【算法模版】数据结构模版

数据结构常用模版,用来学习与记忆

2024-04-24 17:34:21 339

原创 C++ 智能指针

智能指针是 C++ 中用于管理动态分配内存的强大工具。它们旨在解决原生指针可能导致的内存泄漏和悬挂指针等问题。智能指针的核心思想是在其生命周期结束时自动释放所管理的内存,从而避免了手动管理内存时可能出现的问题。然而,尽管智能指针是强大而方便的工具,但在使用过程中仍然需要注意一些陷阱,以避免出现意外的错误。

2024-04-23 13:48:29 1015 2

原创 【算法模板】图论基础算法

总结了基本的图论算法模板,用来记忆和背诵,非常实用

2024-04-23 12:54:20 1147

原创 【算法模版】基础算法

总结了一些基础算法模版总结,用来记忆和背诵,非常实用

2024-04-22 14:53:56 716

原创 多态的底层实现原理

在面向对象编程中,多态是一个核心概念,它允许使用父类类型的指针或引用来引用子类对象,并通过这种方式实现在运行时选择适当的方法。本文将深入探讨多态的底层实现原理,包括虚函数、虚函数表、派生类和虚函数覆盖、多态的运行时行为以及动态绑定与静态绑定。

2024-04-20 23:59:14 146

原创 C++ 异常

异常是程序在执行期间产生的问题,任何事物,任何情况都可以当做异常,错误算是异常的一种 。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。

2024-04-20 21:42:11 599

原创 C++11(下篇)

本文将介绍C++11中一些最具代表性的新特性,包括模板的可变参数、lambda表达式、包装器(如function和bind)、以及线程库中的thread、mutex、atomic和condition_variable类。通过深入了解这些特性,我们可以更好地利用现代C++编程的优势,提高代码的可读性、可维护性和性能。

2024-04-16 22:07:16 930 1

原创 C++11(上篇)

在C++11标准中,引入了许多重要的语言特性,这些特性极大地改进了C++的表达能力和编程体验。其中,列表初始化、变量类型推导、右值引用和移动语义、默认成员函数等特性为C++编程带来了全新的可能性和效率提升。本文将介绍C++11中最重要的特性,并探讨它们的用途和优势。

2024-04-15 17:48:20 638

原创 C++ 多态

virtual修饰的、非静态的成员函数称为虚函数。虚函数可以像普通函数一样调用,但虚函数的作用主要是实现多态。虚继承也用到virtual关键字,但虚函数和虚继承没有任何关系。子类重新定义父类中的虚函数,就叫做子类重写/覆盖了父类的虚函数。具有继承关系的两个类中,返回类型、函数名、参数列表完全相同的虚函数构成重写,不构成隐藏。概念要求1要求2要求3重载在同一作用域函数名相同,参数列表不同重定义/隐藏在父子类作用域函数名相同重写/覆盖在父子类作用域函数名、参数、返回值完全相同(协变例外)

2024-04-10 17:05:21 979

原创 【算法详解】双指针

双指针(Two Pointers):指的是在遍历元素的过程中,不是使用单个指针进行访问,而是使用两个指针进行访问,从而达到相应的目的。如果两个指针方向相反,则称为「对撞指针」。如果两个指针方向相同,则称为「快慢指针」。如果两个指针分别属于不同的数组 / 链表,则称为「分离双指针」。在数组的区间问题上,暴力算法的时间复杂度往往是On2O(n^2)On2。而双指针利用了区间「单调性」的性质,可以将时间复杂度降到OnO(n)On。

2024-04-08 16:31:01 1018

原创 【算法详解】二分查找

二分查找算法(Binary Search Algorithm)」:也叫做「折半查找算法」「对数查找算法」。是一种在有序数组中查找某一特定元素的搜索算法。基本算法思想:先确定待查找元素所在的区间范围,在逐步缩小范围,直到找到元素或找不到该元素为止。每次查找时从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。

2024-04-08 16:05:15 972 1

原创 C++ 继承

对于具有一定关系的一类群体,将其抽象成一类对象后,这些对象必然会具有重复的属性。比如学生老师都属于人,他们都有名字、年龄等共有属性,不同的是学生有学号,教师有职工号。因此可将共有属性放到人这个类,将二者独有属性放入各自的类。避免代码冗余,也更能体现出类的层次设计。//中间用:间隔原有类称为基类或父类,继承而来的类叫派生类或子类。继承后子类也拥有了父类的成员变量和函数,使得子类可以使用父类的成员,这便是继承的意义。

2024-04-06 22:29:11 642

原创 不一样的同步

同步和异步以及同步和互斥都是计算机领域中重要的概念,它们描述了不同任务之间的协调和交互方式,以确保程序的正确性和一致性。

2024-04-01 18:57:11 231

原创 MySQL中count(*) 和 count(1)区别

对于Oracle数据库,虽然我没有找到官方的解释,但通过观察它们的执行计划,我认为 count(*) 和 count(1) 的执行计划是一样的。对于 count(*) 和 count(1),在MySQL的官方文档中已明确说明,InnoDB存储引擎对它们的处理方式是一样的,因此它们之间没有区别。虽然这种方法提高了查询效率,但需要注意额外维护计数表的成本,特别是在新增和删除操作频繁的情况下,需要确保计数表的数据与实际数据表中的数据保持一致。函数,而是直接查询计数表中的值,从而避免了对大表进行全表扫描的开销。

2024-04-01 18:51:20 1052 1

原创 Redis的基本操作

redis基础操作

2024-03-30 21:15:24 478

原创 MySQL 数据库基础操作详解

本文将详细介绍 MySQL 数据库的基础操作,包括库的操作和表的操作,并提供了一些实用的 SQL 示例。通过以上示例,我们可以看到 MySQL 数据库的基本操作方式,包括创建表、插入数据、查询数据、更新数据和删除数据。这些操作是数据库开发中最基础、最常见的操作,掌握好这些操作对于开发者来说是非常重要的。最底层是磁盘文件系统,往上是存储引擎,存储引擎是系统文件的封装,帮助我们进行文件操作。MySQL中,创建数据库本质就是创建一个目录,创建表本质就是在目录中创建文件,增删查改也就是访问该文件。

2024-03-30 21:02:52 701

原创 详解TCP的三次握手和四次挥手

带你理解三次握手和四次挥手的过程解析

2024-03-29 18:40:57 1014

原创 Redis数据结构的基础插入操作

在Redis中,数据结构的插入基础操作

2024-03-27 23:16:00 291

原创 Redis过期时间的删除策略

Redis过期键的定期删除策略

2024-03-27 16:34:26 695

原创 C++ 如何去认识模板

C++模板是一个非常强大的工具,它提供了一种抽象和复用代码的方式,使得我们可以编写出高度泛型的代码。通过对模板的深入理解和灵活运用,我们可以大大提高代码的质量和效率。当然,模板也不是万能的。过度使用模板可能会导致代码复杂度的增加,编译时间的延长。

2024-03-25 16:43:49 824

原创 C/C++中的Static关键字

Static关键字用于声明变量或函数的存储期为整个程序的执行期间,即使它们的作用域是局部的。在C++中,static还可以用来定义类的静态成员。静态关键字在C++中提供了强大的工具,用于控制对象的可见性、生命周期和初始化。通过正确使用它们,可以写出更健壮、更易于维护的代码。然而,也需要注意静态成员可能引入的全局状态,这可能会影响程序的可测试性和线程安全性。

2024-03-25 16:09:06 641

原创 C++动态内存管理:new/delete与malloc/free的对比

当谈到C++中的动态内存管理时,new和delete与malloc和free是两个经常讨论的主题。虽然它们的目的相似,但在使用、安全性和灵活性方面存在显著差异。

2024-03-23 22:23:42 589

原创 详解const关键字

在C++编程中,const关键字是一个强大的工具,不仅可以用于定义常量,还能够在函数、类中发挥关键作用。本篇博客将带您深入探索const关键字的魅力,教您如何利用它来提升代码的安全性和可维护性。

2024-03-22 00:39:09 786

原创 C++入门基础知识

C++入门基础知识详解

2024-03-20 15:57:44 401

原创 探讨C++中的拷贝构造函数和深浅拷贝问题

在C++编程中,拷贝构造函数和深浅拷贝是两个至关重要的概念。

2024-03-20 15:20:57 329

原创 Visual Studio相关的常用快捷键

Visual Studio项目、编辑、导航、调试和搜索相关的常用快捷键

2024-03-18 14:08:47 437 1

原创 【数据结构】带你认识队列--Queue(带图详解)

通过以上介绍,我们了解了队列的基本概念和实现方法,并实现了队列的初始化、判断是否为空、入队、出队、遍历等基本操作。队列作为一种常见的数据结构,在计算机科学中有着广泛的应用,特别是在广度优先搜索、任务调度等场景。希望这篇文章能够帮助你更好地理解和使用队列。

2023-11-11 23:56:23 1178 1

原创 【数据结构】顺序栈和链栈(带图详解)

栈是一种线性数据结构,它的元素按照特定的顺序进行插入和删除操作。栈的插入操作称为入栈(push),删除操作称为出栈(pop)。栈可以看作是一种具有限制访问的线性表,只能在表的一端进行插入和删除操作,称为栈顶(top), 而另一端则称为栈底(bottom)。栈是计算机科学中非常重要的数据结构,它具有简单且高效的特点。我们深入了解了栈的概念、用途、基本操作和实现细节。通过掌握栈的原理和应用,我们可以更好地理解和使用它,从而在解决实际问题时发挥其优势。

2023-11-11 00:10:14 1253 1

原创 【数据结构】双向链表及其基本操(带图详解)

双向链表是一种常见的线性数据结构,它与单向链表相比具有双向遍历的优势。除了拥有指向后继节点的指针外,双向链表还拥有指向前驱节点的指针。这使得在双向链表中可以更有效地实现从后往前的遍历,而不像单向链表那样需要重新遍历整个链表。在某些场景下,双向链表能够更加高效地解决问题。

2023-11-10 12:58:42 465 1

原创 【数据结构】单链表(带图详解)

概念:链表是一种物理存储结构上非连续非顺序的存储结构,但链表在逻辑上是连续的,顺序的,而数据元素的逻辑顺序是通过链表中的指针连接次序实现的。

2023-05-12 18:31:51 9376

原创 【数据结构】手把手带你搞懂顺序表(带图详解)

在本篇博客中,我会概述顺序表、讲解链表的概念和结构分类、以及使用C语言实现单链表。话不多说,我们这就开始。

2023-02-04 11:56:41 1249 10

原创 【算法模板】高精度模板(带图详解)

高精度模板(加减乘除)

2022-11-04 15:27:22 1223 1

原创 【c语言】指针进阶

指针的进阶用法

2022-10-25 19:47:18 325 2

原创 【c语言】预处理详解

预处理详解

2022-10-18 10:14:10 421

空空如也

空空如也

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

TA关注的人

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