自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据库】MySQL性能分析和优化

本文主要介绍SQL查询语句的性能分析方法和优化方法。

2024-01-14 17:30:55 1006

原创 【数据结构】红黑树

本文主要介绍了红黑树的基本概念和基础操作(查找、插入、删除)。

2024-01-10 22:07:16 1038

原创 【数据库】MySQL锁

本文主要介绍了MySQL数据库锁机制,主要从表锁、行锁的类型、使用等方面进行分析。

2024-01-09 18:36:24 1127

原创 【数据库】mysql事务

本文主要介绍了mysql数据库事务的ACID特性及其实现原理、并发事务问题和事务的隔离级别以及事务控制语句。

2024-01-08 18:38:09 920

原创 【数据结构】平衡二叉树

本文主要介绍了平衡二叉树的基本概念及基础操作(查找、平衡、插入、删除)。

2024-01-04 00:37:33 1000

原创 【数据结构】二叉搜索(查找/排序)树

本文主要介绍了二叉搜索树的基本概念和操作(查找、插入、删除)

2024-01-02 13:27:50 983

原创 【Cmake】Cmake基础学习

本文主要介绍项目编译工具cmake的基本用法

2023-11-27 17:24:35 938

原创 【Shell】Shell基础学习

本文主要介绍shell脚本基本语法

2023-11-27 17:13:41 968

原创 【数据结构】排序算法系列

【数据结构】常见排序算法的比较_数据结构排序方法的区别_Jacky_Feng的博客-CSDN博客。

2023-08-04 16:41:41 1215

原创 【C++】多线程编程一(初识并发和多线程)

进程间的通信比较简单,但是速度慢,因为操作系统会在进程间提供一定的保护措施,以避免一个进程去修改另一个进程的数据(这些保护操作意味着可以编写更安全的并发代码)。第一种途径是每个进程只要一个线程,这就类似让每个开发人员拥有自己的办公室,而第二种途径是每个进程有多个线程,如同一个办公室里有两个开发人员。:指同一时刻只能有一条指令执行,但是多个进程指令被快速地轮换执行,使得在宏观上具有多个进程同时执行的效果,但实际在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。

2023-07-16 16:11:54 327

原创 【C++】设计模式-单例模式

单例模式单例模式(Singleton Pattern)是 一种属于创建型设计模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

2023-07-16 15:07:47 1346

原创 【数据结构】插入排序(二)——希尔排序

希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由1959年公布。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为递减增量排序算法。但希尔排序是非稳定排序算法。

2023-05-12 12:39:25 191 1

原创 【Linux系统】yum源安装技巧

一、yum工具被删除或无效使用1、安装yum① 查看Linux操作系统版本uname -a②卸载现有yum源rpm -qa yum //查看yum组件rpm -qa | grep yum | xargs rpm -e --nodeps/*注意:这一步一定要执行,而且要将所有的组件卸载掉,如果卸载不干净,后面安装会有问题*/rpm -qa yum //查看是否删除干净③下载yum的rpm包(可以是阿里云、腾讯等其他公司的)阿里云开源镜像站资源目录主要下载包有以下三个:

2022-03-22 15:49:39 2304

原创 【C++】PIMPL模式

一、PIMPL模式引入PIMPL是指pointer to implementation,又称作“编译防火墙”。它通过将类B放置在单独的类A中,使用B的不透明指针进行访问实现,从而隐藏了A类的实现细节。是实现“将文件间的编译依存关系降至最低”的方法之一。实例:常规实现book类book.h#pragma once#include <iostream>class book{public: book(std::string name,double price); ~

2022-01-05 18:22:19 4790 1

原创 【存储知识】NAS存储

NAS基础概念NAS(Network Attached Storage)网络附加存储,即将存储设备连接到现有的网络上,提供数据和文件服务,支持网络文件共享协议CIFS、NFS,NAS实际上就是一个专门优化了的文件服务器。NAS服务器一般由存储硬件(逻辑的、冗余的存储容器或RAID阵列)、操作系统以及其上的文件系统等几个部分组成。它基于TCP/IP协议实现文件级数据的存取服务。 NAS将存储设备通过标准的网络拓扑结构连接,可以无需服务器直接上网,不依赖通用的操作系统,而是采用一个面向用户设计的、专门用

2021-11-29 12:20:19 11899

原创 【存储知识】常见的存储格式(块、文件、对象)和对象存储介绍

​简要介绍文件、块和对象是三种不同数据的存储格式和对象存储相关内容。​

2021-11-27 15:44:54 8508

原创 【存储知识】快照

一、存储快照概念全球网络存储工业协会SNIA(StorageNetworking Industry Association)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。快照的作用主要是能够进行在线数据备份与恢复。① 当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据恢复某个可用的时间点的状态。② 为存储用户提供了另外一个数据访问

2021-11-15 17:19:08 2820 1

原创 【存储知识】存储基础知识(存储设备、HBA卡、硬盘接口类型、存储特性指标)

本文介绍了物理存储设备SDD和HDD及相关组件,并对硬盘接口进行梳理。同时也会给大家分析了存储特性指标和存储组网方式。

2021-11-11 13:40:26 7524

原创 【存储知识】RAID(磁盘冗余阵列)与 LVM(逻辑卷管理器)

一、RAID磁盘冗余阵列硬盘设备是计算机中较容易出现故障的元器件之一,加之由于其需要存储数据的特殊性质,不能像CPU、内存、电源甚至主板那样在出现故障后更换新的就好,所以在生产环境中一定要未雨绸缪,提前做好数据的冗余及异地备份等工作。1988年,美国加利福尼亚大学伯克利分校首次提出并定义了RAID技术的概念。RAID技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数

2021-11-09 16:50:11 4312 2

原创 【存储知识】文件系统与硬盘存储(分区、格式化、挂载、inode、软链接与硬链接)

一、Linux系统的文件存储结构在Linux系统中,目录、字符设备、套接字、硬盘、光驱、打印机等都被抽象成文件形式(“Linux系统一切皆文件”)。既然平时我们打交道的都是文件,那么又应该如何找到它们呢?在Windows操作系统中,想要找到一个文件,要依次进入该文件所在的磁盘分区(也叫盘符),然后再进入该分区下的具体目录,最终找到这个文件。但是在Linux系统中并不存在C、D、E、F等盘符,Linux系统中的一切文件都是从“根”目录(/)开始的,并按照文件系统层次标准(FHS)采用倒树状结构来存

2021-10-29 15:30:24 3944 4

原创 【C++】类默认函数的控制:=default 和 =delete

一、默认函数和已删除函数的引入C++的类中有四种特殊成员函数:默认构造函数、析构函数、拷贝构造函数及拷贝赋值运算符。C++11 引入了移动语义,并将移动构造函数和移动赋值运算符添加到编译器可自动生成的特殊成员函数的列表中。这对于简单类型非常方便,但是复杂类型通常自己定义一个或多个特殊成员函数,这可以阻止自动生成其他特殊成员函数。 具体规则: 如果显式声明了任何构造函数,则不会自动生成默认构造函数。 如果显式声明了虚拟析构函数,则不会自动生成默认析构函数。 如果显式声明

2021-10-22 13:26:31 1024

原创 【C++】Lamda表达式、仿函数(函数对象)

Lambda表达式的引入有的函数对象类只用来定义一个对象,而且这个对象只使用了一次,这样的函数对象类有点浪费。而且,定义函数对象类的地方和使用函数对象类可能相隔较远,想要查看其operator()成员函数到底做了什么会比较麻烦。对于只使用一次的函数对象类,能否直接在使用它的地方定义呢?Lambda表达式就能解决这个问题,使用Lambda表达式可以定义并创建匿名的函数对象,减少程序中函数对象类的数量,以简化编程工作。Lambda的语法格式如下:【捕获列表】捕获上下文的变量以供Lamb.

2021-10-21 18:35:59 588

原创 【C++】引用

一、引用的概念参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。对于像 char、bool、int、float 等基本类型的数据,它们占用的内存往往只有几个字节,对它们进行内存拷贝非常快速。而数组、结构体、对象是一系列数据的集合,数据的数量没有限制,可能很少,也可能成千上万,对它们进行频繁的内存拷贝可能会消耗很多时间,拖慢程序的执行效率。C/C++禁止在函数调用时直接传递数组的内容,而是强制传递数组指针。而对于结构体和对象没有这种限制,

2021-10-20 17:02:40 173

原创 【C++】动态对象创建

在C语言中提供了内存分配函数malloc()(或calloc()/realloc())和free(),这些函数在运行时从堆内存中分配存储单元。然而,在C++中这些函数将不能很好地运行。因为构造函数不允许我们向它传递内存地址来进行初始化。C++是如何保证正确的初始化和清理,又允许我们在堆上动态创建对象呢?malloc()和free()都是库函数,因此不在编译器控制范围为内。然而,如果有一个完成动态内存分配及初始化组合动作的运算符和另一个完成清理及释放内存组合动作的运算符,编译器就可以保证所有对象的

2021-10-20 11:35:22 5064

原创 【C++】虚函数及其内存布局

一、函数调用捆绑把函数体与函数调用相联系称为捆绑。当捆绑在程序运行之前(由编译器和连接器)完成时,称为早捆绑。C编译只有一种函数调用方式,就是早捆绑。早捆绑引起的问题:因为编译器在只有对象的地址时它并不知道要调用的正确函数。根据对象的类型,捆绑发生在运行时,这种捆绑方式称为晚捆绑,又称动态捆绑。二、虚函数对于特定的函数,为了引起晚捆绑,C++要求在基类中声明这个函数时使用virtual关键字,这样的函数称为虚函数。晚捆绑只对virtual函数起作用,而且只在使用含有virtual函.

2021-10-18 17:06:10 1736

原创 【C++】内联函数inline

引入内联函数的原因一个 C++程序的执行过程可以认为是多个函数之间的相互调用过程,它们形成了一个调用链条,这个链条的起点是 main(),终点也是 main()。当 main() 调用完了所有的函数,它会返回一个值(例如return 0;)来结束自己的生命,从而结束整个程序。函数调用是有时间和空间开销的。程序在执行一个函数之前需要做一些准备工作,要将实参、局部变量、返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码;函数体中的代码执行完毕后还要清理现场,将之前压入栈中的数据都出栈,才能接着执行

2021-10-13 17:39:40 488

原创 【C++】移动构造函数

在 C++ 11 标准之前,如果想用其它对象初始化一个同类的新对象,只能借助类中的拷贝构造函数。拷贝构造函数的实现原理是为新对象复制一份和其它对象一模一样的数据。而当类中拥有指针类型的成员变量时,拷贝构造函数中需要以深拷贝的方式复制该指针成员。#include <iostream>using namespace std;class demo{public: demo():num(new int(0)){ cout<<"construct!"<

2021-10-13 16:47:49 6899 3

原创 【C++】左值和右值、左值引用(&)和右值引用(&&)

本文主要介绍了左值和右值的区别,右值引用的引入和使用。

2021-10-13 16:20:16 14292 7

原创 【数据库】数据库安全性

目录前言:一、数据库安全概述1.数据库的不安全因素2.安全标准TCSEC/TDI安全级别划分:二、数据库安全性控制1.用户身份鉴定2.存取控制3.自主存取控制(1)GRANT(向用户授予对数据的操作权限)(2)REVOKE(回收用户对数据的操作权限)(3)数据库角色4.强制存取控制5.视图机制6.审计7.数据加密(1)存储加密(2)传输加密8.其他安全保护(1)推理控制(2)隐蔽通道(3)数据隐私前言:数据库的安

2021-04-21 23:26:19 4212

原创 【网络编程】服务器模型和I/O模型

目录一、服务器模型1、C/S(客户端/服务器)模型2、P2P(点对点)模型二、服务器基本框架①I/O处理单元②逻辑单元③网络存储单元④请求队列三、I/O模型①阻塞I/O②I/O复用③SIGIO信号④异步I/O一、服务器模型1、C/S(客户端/服务器)模型(1)C/S模型:所有客户端都通过访问服务器来获取所需的资源。具体如下图1所示:图1 C/S模型(2) C/S模型的TCP服务器和TCP客户端的工作流程。如图2所示:图2C...

2021-04-13 23:10:58 376

原创 【C++】智能指针

内存管理是C++中的一个常见的错误和bug来源。在大部分情形中,这些bug来自动态分配内存和指针的使用:当多次释放动态分配的内存时,可能会导致内存损坏或者致命的运行时错误;当忘记释放动态分配的内存时,会导致内存泄露。所以,我们需要智能指针来帮助我们管理动态分配的内存。

2021-04-08 15:51:41 302

原创 【网络编程】socket编程

目录前言一、socket介绍二、socket通信过程三、socket接口函数(1)创建socket——socket()(2)命名socket——bind()(3)监听socket——listen()函数(4)接受连接——accept函数(5)发起连接——connect()函数(6)关闭连接——close()函数(7)数据读写——read()、write()函数四、实例演示前言网间进程通信要解决的是不同主机进程间的相互通信问题。首先要解决的是网间进程标识

2021-04-06 22:31:02 413

原创 【C++】STL 序列式容器源码剖析

一、vectorvector 基本能够支持任何类型的对象,同时它也是一个可以动态增长(二倍)的数组,使用起来非常的方便。【问题】它是如何做到动态扩容的呢?1、vector 基本数据结构基本上,STL 里面所有的容器的源码都包含至少三个部分: 迭代器,遍历容器的元素,控制容器空间的边界和元素的移动; 构造函数,满足容器的多种初始化; 属性的获取,比如 begin(),end()等; vector 也不例外,其实看了源码之后就发现,vector 相反是所有容器.

2021-04-05 15:48:06 655

原创 【计算机网络】TCP协议

目录前言一、TCP服务的特点二、TCP头部结构1.TCP固定头部结构2.TCP头部选项三、TCP的建立和关闭(三次握手和四次挥手)(1)三次握手(2)四次挥手(3)TCP通信实例(4)TCP状态转移图(5)TIME_WAIT 状态四、复位报文段五、TCP超时重传六、拥塞控制前言TCP协议是TCP/IP协议族中另一个重要的协议,相比IP协议,TCP在应用程序中具有更强的可操作性。接下来通过四个方面讨论TCP协议:TCP协议头部信息。TCP

2021-04-04 23:38:27 1087

原创 【计算机网络】IP协议

前言IP协议是TCP/IP 协议族的核心协议,也是socket网络编程的基础之一。本文从两个方面深入探讨IP协议:IP头部信息。IP头部信息出现在每个IP数据报中,用于指定IP通信的源端IP地址、目的端IP地址,指导IP分片和重组,以及指定部分通信行为。 IP数据报的路由和转发。IP数据报的路由和转发发生在除目标机器之外的所有主机和路由器上,它们决定数据报是否应该转发以及如何转发。一、IP服务的特点IP协议是TCP/IP协议族的动力,它为上层协议提供无状态、无连接、不可靠的服务。无状.

2021-04-04 17:00:47 1088

原创 【C++】C++三大特性——封装、继承、多态

一、封装利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他对象只能通过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。1、封装的意义:封装的意义在于保护或者防止代码(数据)被我们无意中破坏。 保护成员属性,不让类以外的程序直接访问和修改; 隐藏方法细节,使代码

2021-03-22 14:52:30 1301

原创 【数据库】SQL语言

一、SQL语言概述SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言,SQL是一个通用的、功能极强的关系数据库语言。1、特点综合统一集数据定义语言 DDL(Data Definition Language),数据操纵语言 DML(Data Manipulation Language),数据控制语言 DCL(Data Control Language) 功能于一体。高度非过程化非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径SQL只

2021-03-21 13:31:10 1128

原创 【数据库】数据库系统

目录一、数据库系统四个概念1、数据(Data)2、数据库(Database)3、数据库管理系统(Database Management System )4、数据库系统(Database System)二、数据模型1、数据模型的组成2、常见的数据模型3、概念模型4、层次模型5、网状模型6、关系模型三、数据库系统的三级模式模式(Schema)外模式(External Schema)内模式(Internal Schema)三级模式结构图...

2021-03-20 12:44:11 3070 1

原创 【C++】STL相关容器的对比

目录一、序列容器(vector、list、deque)1、vector(向量容器)2、list(链表容器)3、deque(双端队列容器)二、关联容器(set、multiset、map、 multimap)1、set(集合)/multiset(多重集合)2、map(映射)/multimap(多重映射)3、unordered_set(无序集合)/unordered_multiset (无序多重集合) unordered_map( 无序映射)/unordered_...

2021-03-19 23:43:16 638

原创 【计算机网络】TCP/IP协议族(主要协议、封装、分用、与socket的关系)

目录前言一、TCP/IP协议族体系结构以及主要协议1)数据链路层2)网络层3)传输层4)应用层二、封装三、分用四、socket和TCP/IP协议族的关系前言因特网中使用的主流协议族是TCP/IP协议族,它是一个分层、多协议的通信体系。本文将简要讨论TCP/IP 协议族各层包含的主要协议,以及它们之间是如何协作完成网络通信的。一、TCP/IP协议族体系结构以及主要协议TCP/IP 协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层、应用层..

2021-03-18 17:54:09 2655 1

空空如也

空空如也

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

TA关注的人

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