自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 condition_variable---C++条件变量

线程仅在 pred 返回 false 时被阻塞,并且如果在超时前 pred 变为 true 或线程被唤醒,则返回 true;wait 方法用于阻塞当前线程,直到另一个线程调用同一 condition_variable 对象的 notify_one() 或 notify_all() 方法来唤醒等待的线程。这是一个带谓词的版本,线程仅在 pred 返回 false 时被阻塞。wait_for 方法用于阻塞当前线程,直到另一个线程调用 notify 方法唤醒它,或者直到指定的超时时间到达。

2024-07-07 21:29:57 752

原创 基于boost::beast的http服务器(上)

是一个基于Boost库的C++网络库,特别用于开发高性能的网络应用程序。它提供了一组易于使用的API,主要用于处理和协议,并支持异步操作和多线程处理。

2024-06-30 14:50:09 1133

原创 lambda函数

捕获所有变量的拷贝作为副本,不可以修改。其实就是匿名函数,和匿名对象有异曲同工之妙。(c,&d) 捕获c的值,d的引用。exception 可以抛出异常。mutable 可以修改副本。& 捕获所有变量的引用。&b 捕获b的引用。

2024-06-23 20:39:21 274

原创 qt基本窗口类(QWidget,QDialog,QMainWindow)

这些函数一般都是类的成员函数,匿名函数,或者静态函数,全局函数因为是自定义的,qt提供的类并不知道什么时候调用它,所以要先将标准信号函数与自定义的信号函数关联起来,当标准的信号函数触发就会调用自定义的信号函数,自定义的信号函数又和自定义的槽函数关联着,就会触发自定义的槽函数。

2024-06-22 19:33:47 384

原创 单例模式---线程安全实现

1.全局只有一个类的static实例存在;2.不允许直接实例化,构造函数为私有的,只通过一个类的静态方法获取该实例;

2024-06-21 16:10:46 713

原创 软件测试--性能测试

时间:响应时间资源:资源的消耗情况。

2024-06-17 22:46:17 375

原创 nginx安装环境部署(完整步骤)

在部署nginx前,我们需要进行环境的部署。

2024-06-17 22:11:57 912

原创 system与excel族函数区别

comand是命令的路径,一般我们用绝对路径system函数会创建新的进程,新的进程执行完返回原来的进程,原来的进程则继续执行后面的代码段。如我们创建一个sys.cpp文件,在其中去执行另一个sys1可执行文件同目录下创建一个sys1.cpp文件,然后将其编译链接为可执行文件可以看出先执行完sys1后又返回原来的进程执行了。

2024-06-16 21:31:37 610

原创 Problem with MergeList /var/lib/dpkg/status(不说废话直接解决)

Problem with MergeList /var/lib/dpkg/status(不说废话直接解决) 1.先备份,免得全没了sudo mv /var/lib/dpkg/status /var/lib/dpkg/status.old

2024-06-16 12:24:42 482

原创 僵尸进程与孤儿进程

僵尸进程:子进程执行完毕,父进程没有对其资源进行回收从而使子进程PCB遗留在内存,从而产生僵尸进程。僵尸进程积累过多会导致无法创建新的进程孤儿进程:指子进程还在运行中,父进程已经退出,那么该进程会被守护进程init收养,由守护进程来回收其资源。

2024-06-13 12:12:37 258

原创 动态规划算法

可以看到动态规划的时间复杂度是O(N),比递归好了不少,虽然空间复杂度是O(N),但是实际只需要两个变量存放前面的两个值,所以空间复杂度还可以优化到O(1)这道斐波那契数列,很多同学直接一手递归就解决,但是递归的时间复杂度O(2^n)明显要高,但是我们今天重点是动态规划。F(n) = F(n - 1) + F(n - 2),其中 n > 1。开始,后面的每一项数字都是前面两项数字的和。1.确定dp数组以及下标含义。表示)形成的序列称为。3.dp数组如何初始化。

2024-06-09 11:29:17 429

原创 什么是协程(一次性讲清)

正如网络上大家都在讲的“用户态的线程,更轻量级”,

2024-06-07 15:06:21 4363

原创 enable_shared_from_this

它能让一个已被智能指针管理的对象安全的生成其他的std::shared_ptr实例,该实例与原智能指针共享对象的所有权。因为在使用智能指针的场景下,如果再传入this指针,会导致出现其他的问题,智能指针的优势也就体现不出来了。当一个类对象A被shared_ptr管理,且类A的成员函数需要把本对象作为参数传递给其他的函数时。使用前需要继承类enable_shared_from_this。enable_shared_from_this是一个模板类。2.为什么不生成一个shared_ptr<this>

2024-05-23 21:42:39 171

原创 回溯法---Leecode每日一题

在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。该列表不能包含相同的组合两次,组合可以以任何顺序返回。所有可能的有效组合的列表。没有其他符合的组合了。没有其他符合的组合了。

2024-05-13 20:40:39 265

原创 Sylar服务器框架---线程同步模块

1.sylar的线程同步模块使用了pthread线程库的互斥量,读写锁,自旋锁。原子锁是使用的c++的2.使用了RALL的方法,即资源构造即初始化,出作用域就析构。避免了我们手动进行资源申请和释放的相关操作。这里具体的操作是Mutex类创建一个对象时通过构造初始化锁,析构时销毁锁;加锁,解锁两个方法(用户不可自己调用)交由ScopedLockImpl<Mutex>类来调用,构造时就加锁,析构时解锁。和muduo中的基本一样。

2024-05-12 21:58:05 435

原创 UDP套接字

1.包总量较少的通信,如DNS,SNMP等。2.主要应用于视频,音频等多媒体通信。头部字节总共8个字节。

2024-05-03 17:47:28 355 2

原创 new delete 与malloc free的区别

执行过程:new,delete执行会。,malloc需要计算分配空间,本质:new delete是。,而malloc free是。返回类型:new返回的是我们。void*,再通过强制转换。调用类的构造函数,析构函数。计算分配空间方式:new。通过sizeof()计算。,malloc 返回的是。,malloc失败返回。异常:new申请失败。

2024-05-01 17:46:52 163

原创 i/o多路复用(一次认清select,poll,epoll的区别)

关键词:线性结构存储 用户态到内核态频繁拷贝 文件描述符最大限制1024 每次轮询所有描述符1.select是底层原理是基于一个线性结构fd_set来存储文件描述符集合2.每次select都会将文件描述符集合从用户态拷贝到内核态,由内核来检测对应的文件描述符是否有事件发生,3.内核检测到文件描述符有对应事件发生,就将对应的标志位置为1,检测完毕将修改后的集合拷贝回用户态。4.然后再由用户遍历每个文件描述符是否有事件就绪,有事件就绪则执行相关的事件。

2024-05-01 17:36:37 1026

原创 互斥锁 读写锁 条件变量 信号量

线程同步中的四种方式:互斥锁 读写锁 条件变量 信号量

2024-04-09 18:46:23 340 1

原创 主机字节序与网络字节序

所谓主机字节序,就是数据在内存中的存储顺序,一般的cpu字节序都是小端字节序,如我们的x86,即低地址存低位字节,高地址存放高位字节。例如一个十六进制数0406H,在内存中存储的顺序就如下。

2023-12-29 16:44:38 475 1

原创 简单TCP通信网络编程

简单TCP通信的案例,通过流套接字实现。建立连接的过程包括三次握手,即客户端发送SYN请求,服务器响应SYN-ACK,客户端再次确认ACK。断开连接的过程包括四次挥手,即客户端发送FIN请求,服务器响应ACK,服务器发送FIN请求,客户端响应ACK。

2023-12-29 16:14:09 1404 4

原创 动态内存分配(new,delete,malloc...)

动态内存分配的相关操作详细解释

2023-11-09 16:08:42 122 1

原创 C++函数模板

C++中函数模板的实现给程序的泛型化提供了极大的便利

2023-10-25 17:47:14 90 1

原创 C++类中的构造函数

知道C++中定义的对象初始化可以通过成员函数进行初始化,但是每一个对象在初始化的时候就应该有对应的初值,否则就失去对象的意义了。所以C++提供了构造函数来处理对象的初始化。

2023-10-21 14:47:45 114 1

原创 哈夫曼树及其应用

哈夫曼编码是一种压缩数据的算法,它通过将出现频率较高的字符用较短的编码表示,而将出现频率较低的字符用较长的编码表示,从而达到压缩数据的目的。哈夫曼编码常用于数字信号处理、通信系统、数据传输和存储等领域,可以大幅减小数据存储和传输的成本,并提高数据传输的效率。同时,哈夫曼编码也可以用于加密和解密,在保护信息安全方面发挥重要作用。

2023-10-09 17:33:24 1671 1

原创 head,tail操作广义表

已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是()?//取除了首元素以外的元素,不去除括号,所以有两个括号。取广义表除了首个元素以外的元素,但是不去除括号。取广义表首个元素并去除外层括号。

2023-10-03 16:16:19 818 2

原创 二叉树的创建与遍历

N个节点的有限集合。该集合由一个根节点和两颗互不相交被分别称为“左子树”和“右子树”的二叉树组成。其实这些定义并不重要,我们清楚知道它到底是什么就够了,不要被所谓的“形”绑住了。

2023-09-06 17:45:36 89 1

原创 C++运算符重载

如果按照C语言的方式我们需要写几个不同函数名的函数,但是c++提供了函数的重载方法,只需要。都可以进行输出,但对于我们自己定义的一些数据类型,如类对象(让你直接输入或者输出一个复数),如果想直接输出他们,则需要对流插入,流提取运算符进行重载。,我们在主函数只需要调用sum函数就可以,系统会根据你传递实参的类型,个数自动寻找到所需要的函数,这就是重载。等等,如果想实现两个复数的相加,仅仅用+我们无法实现,但是通过重载运算符+,我们可以直接实现两个复数的相加。下面为了方便,我们只写函数的声明,函数体内容省略。

2023-05-07 14:14:14 79

原创 变量的存储类型(全局,局部,静态,动态)

存储类型是指变在内存中的存储方式,有静态存储和动态存储方式。静态存储方式的变量存储在内存的静态区,在程序编译时就已经分配好了内存空间。在整个程序运行时,该变量一直占有固有的内存空间,程序结束后才释放该部分内存空间。其中静态局部变量和全局变量存储在静态存储区。动态存储方式的变量存储在内存的动态区,在程序运行过程中,只有当变量所在的函数被调用时候,该变量才会被分配内存空间,当被调函数调用结束时候,该变量内存空间就会被释放,值就会消失。局部变量存储在动态区。

2023-04-06 15:40:29 5003 2

原创 描述小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。

小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。

2023-04-04 23:26:10 215

原创 随机输入一个整数,将其各个位的数按顺序(或倒序)分别输出

简单递归

2023-04-04 21:53:57 469

原创 不用临时变量交换两个数-常见面试题

实用的方法,适用大部分情况,但是当a+b的和超过了int的范围,此法便不在适用。通用的方法,利用位操作符(很明显,这个方法属于投机取巧了。按位与&,按位或|,按位异或^,

2023-04-03 14:18:28 91

原创 鼠标光标变成选中单个字符,而不是竖线,insert切换

我们有时侯在写代码会遇到鼠标光标变成选中单个字符,而不是空隙插入竖线

2023-04-03 11:37:09 3954

原创 C beginning

我是来自陕西西安邮电大学通信工程的大二学生,已经学习了C语言将近一年,目前算是小白级别。

2023-04-02 23:07:57 73

原创 简单冒泡排序

简单冒泡排序

2022-10-08 17:16:53 117 1

原创 PTA求整数段和

C语言PTA例题

2022-06-03 13:34:12 1331 1

原创 简单冒泡不完全排序

C语言PTA冒泡排序

2022-06-03 13:01:36 199

空空如也

空空如也

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

TA关注的人

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