自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux指令--sed

sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

2024-06-08 19:22:18 831 1

原创 Qt基于SQLite数据库的增删查改demo

首先获取输入框中对应的内容;在user表中,id字段设置为自增,所以不需要输入id的内容来进行添加。添加:在右边的QLineEdit标签上输入需要添加的内容,包含id,name,age三个字段,然后点击添加按钮,即可将数据添加至数据库。查询:从数据库中查找所有数据的所有内容,并显示在左边的QListWidget控件上。删除:根据在id控件输入框中输入的id,删除数据库中指定那一行内容。更新:根据输入的id号,对指定行数据的name字段内容进行修改。先获取输入框中的内容,然后进行编写修改的sql语句,使用。

2024-06-08 19:14:08 799 1

原创 select 、poll、epoll的区别

多路: 指的是多个socket套接字网络连接;复用: 指的是复用一个线程、使用一个线程来检查多个文件描述符的就绪状态多路复用主要有三种技术:select,poll,epoll。目前epoll是使用最多的一种。I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程。

2024-05-16 14:52:42 531

原创 僵尸进程与孤儿进程

孤儿进程是指一个父进程退出后,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。(2)可以通过杀死父进程,让子进程由僵死进程变为孤儿进程,然后孤儿进程再由init进程(1号进程)回收。(17)信号,而父进程收到这个信号会忽略处理,进而父进程并不会回收子进程的退出状态,从而导致。所以僵死进程的概念:子进程先于父进程退出,退出的子进程就会变为僵死进程,为。,并且子进程的资源并没有被系统回收,然后。

2024-05-16 14:33:21 420

原创 const关键字不同使用场景

在类的成员函数声明后面加上 const 关键字(称该函数为常函数),表示该函数不会修改类的任何成员变量(除非这些变量被声明为 mutable)。这样的指针的值(即它所指向的地址)在初始化后不能更改,但可以通过该指针修改它所指向的值(除非该值本身也是常量)。这样的指针不能修改它所指向的值,但可以更改指针本身所指向的地址。这种指针既不能修改它所指向的值,也不能更改它所指向的地址。const 可以用于数组的声明,表示数组的内容不能被修改。缺点:不能用于定义复杂的常量表达式,只能定义简单的常量。

2024-03-09 19:36:40 472 1

原创 TCP的三次握手、四次挥手

允许窗口内多个分组(MSS)不需要前一个分组的确认数据包,就可以丢到网络中传输,提高TCP的发送数据量。先理解一下什么是TCP缓冲区:当调用send()函数时,会将数据先写入到TCP的发送缓冲区,然后再将数据通过网络发送到对方的接收缓冲区当调用recv()函数时,会从接收缓冲区读取数据:如何理解滑动窗口的窗口发送缓冲区的结构:如图被框起来的部分就是窗口的部分(已发送未收到ACK、可以发送但未发送)。注:滑动窗口是动态变化的,可大可小。

2024-03-09 16:30:58 1578 1

原创 线程池设计---C++

一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。需要大量的线程来完成任务,且完成任务的时间比较短。WEB服务器完成网页请求这样的任务,使用线程池技术是非常合适的。因为单个任务小,而任务数量巨大,你可以想象一个热门网站的点击次数。

2024-02-06 17:17:02 1100 1

原创 进程间的通信方式之【管道】

进程间的通信方式主要分为三类:管道、共享内存、消息队列;但实际上进程的通信方式可以分为六类:管道、共享内存、消息队列、信号量、信号、socket套接字编程。

2024-02-06 15:13:46 916 1

原创 Linux下MySQL用户管理、权限、密码

MySQL的用户管理实质上是对用户表的管理,系统中的数据库mysql存在一张用户表(user),所有的用户都在该表内,对用户的管里也就是对该表进行增删查改的操作。如图中的mysql数据库,所有的用户信息都存在这个数据内的user表中。进入该数据库后,查看user表中的内容:如图显示了当前系统下的所有用户信息,root就是超级用户,剩下两个是系统自带的,由于没有创建普通用户,所有只有此三项。host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆user: 用户名。

2024-01-15 21:22:54 1305 1

原创 智能指针介绍

四种常用智能指针介绍,auto_ptr, unique_ptr, shared_ptr, weak_ptr内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。危害:长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。如下例子:人为原因导致忘记释放;代码逻辑原因抛出异常使内存释放执行不了。

2023-12-31 20:31:40 978 1

原创 条件变量--使两个线程实现交替打印

什么是条件变量?条件变量(Condition Variable)是多线程编程中用于线程间通信和同步的一种机制。它通常与互斥锁(Mutex)一起使用,用于解决线程竞争和避免忙等待的问题。(条件变量不能单独使用)条件变量解决的主要问题是当一个线程需要等待某个条件变成真时,它可以释放互斥锁,让其他线程有机会执行。当条件变成真时,线程可以重新获得互斥锁并继续执行。能提高线程的效率,避免了一些不必要的忙等待。初始化条件变量。在等待条件变为真的同时释放互斥锁,将线程挂起。用于通知等待条件变为真的线程。

2023-12-14 14:47:38 1020 4

原创 自定义日志打印功能--C++

日志是计算机程序中用于记录运行时事件和状态的重要工具。通过记录关键信息和错误情况,日志可以帮助程序开发人员和维护人员追踪程序的执行过程,排查问题和改进性能。事件信息:记录程序执行过程中的重要事件,如启动和关闭,特定操作完成等。错误信息:记录发生的错误和异常情况,包括错误类型、位置和可能的原因。警告信息:记录潜在问题或需要注意的情况,但不是严重到导致程序崩溃的程度。调试信息:记录用于调试程序的详细信息,方便追踪程序状态和流程。日志的记录一般包括时间戳、事件类型、事件描述等信息。

2023-12-12 22:18:26 1624

原创 【简易版】Linux下Protobuf 实现网络版通讯录--C++

该项目的主要目的是用于熟悉protobuf的使用,体验数据在网络中序列化反序列化的形式,并非一个完整的项目。该通讯录只实现了增加联系人的功能。服务器端接收到请求后会将联系人的信息打印。

2023-12-11 22:07:26 1474

原创 ProroBuf C++笔记

protobuf简单语法讲解。Protocol Buffers是Google的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数据存储等。Protocol Buffers 类⽐于XML,是⼀种灵活,⾼效,⾃动化机制的结构数据序列化⽅法,但是⽐XML更⼩、更快、更为简单。你可以定义数据的结构,然后使⽤特殊⽣成的源代码轻松的在各种数据流中使⽤各种语⾔进⾏编写和读取结构数据。你甚⾄可以更新数据结构,⽽不破坏由旧数据结构编译的已部署程序。C++/Java/Python等多种语言都支持

2023-12-11 22:01:29 1100

原创 protobuf安装教程v21.11

protobuf安装教程,Windows、Linux环境下安装,版本v21.11

2023-12-10 20:37:34 2790

原创 linux下CentOS安装mysql-5.7

linux下安装mysql只需要在root用户下安装,普通用户也能使用。

2023-09-20 21:45:24 476 7

原创 xshell---git上传文件到gitee远程仓库配置

xshell下配置git,上传到gitee远程仓库

2023-09-14 15:52:09 985 6

原创 HTTPS协议加密原理

HTTP 协议:是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。HTTPS 协议:可以理解为HTTP+SSL/TLS, 也就是在HTTP协议的基础下加入了 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。SSL(安全套接字层):SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。TLS(传输层安全性协议):其前身安全套接字层(SSl)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。

2023-08-26 19:09:15 1055 6

原创 C++11特性详解

在了解右值引用前,需要先知道什么是左值引用?左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址+可以对它赋值,左值可以出现赋值符号的左边,右值不能出现在赋值符号左边。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左值取别名。左值引用的语法:&比如:// 以下的p、b、c、*p都是左值int b = 1;// 以下几个是对上面左值的左值引用。

2023-08-24 18:28:50 822 7

原创 红黑树深入剖析【C++】

红黑树的概念,插入操作的详解,插入的源码1.红黑树插入的节点一定为红色2.处理三种可能的情况关键在于叔叔节点u3.u存在且为红(情况一),将p和u节点变黑,g节点变红,若g为根节点就将g变为黑色4.情况二和情况三都是由情况一经过变化后得来的4.u不存在或存在且为黑,插入的节点cur在p的外侧(情况二),若p是左子树就进行右旋+交换p、g颜色;若p是右子树,反之,左旋+交换颜色。5.u不存在或存在且为黑,插入节点cur在p的内侧(情况三),若p是左子树就先进行左旋变为情况二,再进行右旋+交换颜色。

2023-07-28 15:36:57 465 7

原创 如何解决VScode远程下载插件不了的问题?如何手动安装插件?

当我们在使用VScode进行远程操作时,在安装我们所需要的一些插件时,可能会出现如下图,一直卡在安装中....明明只有小几十MB,却一连好几个小时都一动不动。下载完成后,通过Xshell脚本将文件上传到linux上,在xshell命令行中输入 rz 可以从本地传文件到linux中。接下来打开VScode,登录上远程服务端,点击扩展,然后点插件列表右上角的三个小点... ,再选择从VSIX安装。找到后点进去,稍微往下面翻一点点,然后在右侧有一个download,点击就可以进行下载。

2023-07-18 15:58:26 5213 9

原创 平衡二叉搜索树--AVL详解剖析

平衡二叉搜索树--AVL树关于概念、作用、源码实现等操作。以及对左旋、右旋、左右旋、右左旋的代码讲解和图画讲解

2023-07-16 16:03:56 767 9

原创 map和set介绍及使用

在了解map、set之前,你肯定已经使用过vector、list、deque、forward_list(C++11)等这些容器,而他们统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。而关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器的效率更高。键值对:用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。

2023-07-10 17:35:58 915 7

原创 数据结构课设---C语言为主体+引用

数据结构课程设计,主要实现语法以C语言实现,但结合了c++的引用。实现了链栈、链队列的相关应用操作,如:小猫钓鱼、括号匹配、前缀表达式变后缀表达式、队列实现栈的代码实现

2023-07-07 16:42:06 431 3

原创 vim的使用方法及相关按键

进行复制操作,在可视化模式下,通过 hjkl 左下上右 进行选取内容,然后按y将所选取的内容复制下来,再按ESC键退出可视化模式,在命令模式下按p就可以将刚才复制的内容进行粘贴。当我们用vim打开文件后,就会直接进入到命令模式,在该模式下我们可以通过快捷键对文本内容进行一些操作,如:复制、粘贴、撤销、删除、注释和多行注释等操作。在命令模式中,直接按ctrl + v(可视块)或V(可视行)或v(可视)就进入了可视化模式,在可视化模式中可以进行复制,和多行注释(上面已经讲过)。就可以保存并退出vim了。

2023-07-04 17:49:03 4777 7

原创 二叉搜索树详解及代码实现

二叉搜索树代码详解 增删查操作 递归非递归的实现--c++二叉搜索树K模型 KV模型

2023-05-18 13:27:46 1346 5

原创 C++多态相关知识的理解

C++重写 重载 重定义 虚表多态常见面试问答题

2023-05-04 14:23:21 82 3

原创 继承的相关介绍---C++

C++继承的介绍 单继承 多继承 菱形继承

2023-05-02 12:36:31 693

原创 stack、queue和priority_queue的使用介绍--C++

C++的STL stack、queue和priority_queue的使用介绍优先级队列 栈和队列 模拟实现

2023-05-02 10:10:27 1004

原创 容器适配器---deque和STL ---stack queue priority_queue的模拟实现 C++

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。stack和queue中也可以存放元素,但在STL中并没有将其划分在容器的行列,而是将其称为容器适配器,这是因为stack和queue只是对其他容器的接口进行了包装,STL中stack和queue默认使用deque。

2023-05-02 10:09:36 740

原创 list的使用介绍---C++

c++ STL中list的使用 各种方法接口 构造 迭代器失效问题

2023-05-01 14:00:09 998

原创 linux--进程程序替换

所谓进程程序替换,顾名思义,就是使用一个新的程序替换原有的程序,进程将执行新程序的代码,而不再执行原有程序的代码,前面我们已经学习了如何创建一个进程,一般情况下,进程程序替换都不会使用父进程直接进行进程程序替换,而是让父进程调用fork()函数创建一个子进程,让子进程去执行一个新的程序即可。

2023-05-01 12:24:54 886

原创 PTA 团体程序设计天梯赛-练习集--L1-006 连续因子

PTA 团体程序设计天梯赛-练习集--L1-006 连续因子 C++

2023-02-26 21:03:24 410 9

原创 vector迭代器失效问题

迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针或者是对指针进行了封装,比如:vector的迭代器就是原生态指针T*。因此迭代器失效,实际就是迭代器底层对应指针所指向的空间被销毁了,而使用一块已经被释放的空间,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃)。

2023-02-23 16:16:06 722 12

原创 vector的使用介绍

1. vector是表示可变大小数组的序列容器。2. 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。3. 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。vector的基本使用reverse与resize的比较

2023-02-23 14:55:44 1198 5

原创 C++string类介绍

C++ string类的使用及方法一、string类介绍二、string类对象的构造string类有如下构造方法:string类对象的容量操作string类对象访问及遍历string对象的修改操作:std::string::insertstd::string::erasestd::string::c_strstd::string::findstd::string::substr

2023-01-02 15:02:00 854 16

原创 彩色圣诞树圣诞树

用c语言写一棵彩色的圣诞树,颜色可随自己喜好更换

2022-12-31 11:04:46 1048 3

原创 C++-----模板

c++ 函数模板相关概念及其使用方法,含义,格式

2022-12-25 17:19:11 372 8

原创 C++ new delete 的使用(初阶)

new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间外还会调用构造函数和析构函在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。operator new operator delete 常见一些内存问题:内存泄漏、内存泄漏种类、malloc new的区别c++ 中new和delete

2022-12-17 11:44:47 174 9

原创 C/C++ 内存分布---变量所在哪个内存区域以及变量所占空间大小是多少?

c++内存区域划分 说明变量所在哪个内存区域以及变量所占空间大小是多少?

2022-12-16 17:26:20 536 1

C语言-数据结构课程设计+实验报告

基于数据结构中顺序表和链表的实验设计,包括顺序表和链表的增删查改的实现及相关的应用案例。 编译器:C-Free 5.0 语言:C语言 主要内容: 1.顺序表 (1)要求从文件中读取数据,进行基本的增删改查,简单的排序操作等。 (2)顺序表的应用——制作简易的学生信息管理系统。 2.单链表 (1)要求实现对单链表的建立、查找、插入和删除操作。 (2)单链表的应用——实现约瑟夫环、猴子选王的问题。 3. 双向链表 (1)要求实现对双向链表的建立、查找、插入和删除操作。 (2)双向链表的应用——实现长整数的相加

2023-07-08

C语言课程设计----食品仓库管理系统

这是我大一刚学C语言是自主完成的课程设计,最后得到了老师的赞许,功能较多,代码也较多,希望对大家有所帮助。

2022-06-20

空空如也

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

TA关注的人

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