自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络通信中的五种IO模型

在介绍网络通信中的IO模型之前,先介绍一下阻塞和非阻塞,同步与异步的区别典型的一次IO的两个阶段:1:数据就绪2:数据读写阻塞和非阻塞:数据就绪阶段:调用IO 该线程是否阻塞阻塞:如果没有数据就绪 函数阻塞在原地非阻塞:立即返回比如使用read recv select poll 默认都是阻塞的 数据没准备好 阻塞在那里注意Epoll 使用et模式 要设置文件描述符 为非阻塞同步和异步的区别:在数据准备好之后,要把数据从内核文件描述符对应的缓冲区拷贝到用户程序同步:用户

2022-04-03 16:11:59 612 1

原创 io多路复用中的epoll函数详解

epoll介绍epoll提供了三个函数,epoll_create、epoll_ctl和epoll_wait。1 首先创建一个epoll对象,2 然后使用epoll_ctl对这个对象进行操作(添加、删除、修改),把需要监控的描述符加进去,这些描述符将会以epoll_event结构体的形式组成一颗红黑树3 接着阻塞在epoll_wait,进入大循环,当某个fd上有事件发生时,内核将会把其对应的结构体放入一个链表中,返回有事件发生的链表。epoll的三个函数介绍 int epoll_create

2022-04-02 21:03:40 1542

原创 io多路复用中的poll函数详解

poll函数poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数主旨思想:首先要构造一个关于pollfd数组,将文件描述符和要检测的时间加入数组中调用一个poll函数,监听pollfd数组中的文件描述符,直到这些描述符中的一个或者多个进行I/O操作时,该函数才返回。a.这个函数是阻塞b.函数对pollfd数组的文件描述符的检测的操作是由内核完成的在返回时,它会告诉进程有多少个描述符要进行I

2022-04-02 11:43:35 1205

原创 io多路复用中的select函数详解

selectLinux下如果要与多个客户端通信 需要使用多线程或者多进程的方式。然而I/O 多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能,Linux 下实现 I/O 多路复用的系统调用主要有 select、poll 和 epoll。select主旨思想:首先要构造一个关于文件描述符的列表(fd_set类型 最大1024位 位数组128字节),将要监听的文件描述符添加到该列表中。调用一个系统函数,监听该列表中的文件描述符,直到这些描述符中的一个或者多个进行I/O操作时,该函数

2022-04-02 10:20:24 1516

原创 C++中使用信号量实现交替执行三个线程

信号量的相关函数 信号量的类型 sem_t int sem_init(sem_t *sem, int pshared, unsigned int value); - 初始化信号量 - 参数: - sem : 信号量变量的地址 - pshared : 0 用在线程间 ,非0 用在进程间 - value : 信号量中的值 int sem_destroy(sem_t *sem);

2022-03-14 20:28:49 1072

原创 Linux C中互斥量的使用

代码环境Ubuntu18.04+vscode C标准 gnu11/* 互斥量的类型 pthread_mutex_t int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); - 初始化互斥量 - 参数 : - mutex : 需要初始化的互斥量变量 - attr :

2022-03-14 19:08:21 704

原创 Linux C中的读写锁使用

读写锁的特点读的时候不可以写 可以读 写的时候不可以读读写锁写的优先级高代码环境Ubuntu18.04+vscode C标准gnu11/* 读写锁的类型 pthread_rwlock_t int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr); int pthread_rwlock_destroy(pthread_rw

2022-03-14 19:05:29 1582

原创 Linux环境下 C++实现生产者消费者模型

开发环境虚拟机:ubuntu18.04vscode远程连接mingw C++14代码如下#include<iostream>#include<queue>#include<thread>#include<mutex>#include<condition_variable>#include<unistd.h>using namespace std;int maxSize=20;//生产者消费者队列最大值que

2022-03-14 16:32:25 2240

原创 解决VMware虚拟机ip地址127.0.0.1 无法上网问题

输入ifconfig 显示127.0.0.01输入 sudo dhclient -v命令再次查看ifconfig 看到已经有的ip地址,在火狐查看百度已经可以访问了

2021-09-15 16:21:45 859 1

原创 C++开发学习路线05:数据库篇

0x01:数据库(18个问题)1、 什么是数据库索引?对数据库表中的一列或者多列排序的结构叫做索引。能够很快地查到特定的行列信息,唯一不为空 经常查询的字段适合建立索引2、 MySQL数据库索引有哪些实现方式?哈希表 红黑树 B+树 B树等3、 B+树和哈希索引各自的应用场景?哈希索引:等值查询 没有排序 数据存储重复性较小 用在普通索引B+树 有排序 范围查询 用于绝大多数 用在主键索引4、 什么是回表查询?非聚簇索引找聚簇索引,找主键索引找到要查询的行5、什么是事

2021-09-08 10:33:05 683

原创 C++开发学习路线04:操作系统篇

0x01:操作系统(12个问题)1、 进程和线程的区别?1:一个线程属于一个进程,一个进程可以包括多个线程2:一个线程挂掉,对应的进程挂掉;一个进程挂掉,不会影响其他进程。3:进程是系统资源调度的最小单位;线程CPU调度的最小单位。4:进程在执行时拥有独立的内存单元,多个线程共享进程的内存,如代码段、数据段、扩展段;但每个线程拥有自己的栈空间。5:进程切换时需要刷新TLB并获取新的地址空间,然后切换硬件上下文和内核栈,线程切换时只需要切换硬件上下文和内核栈。2、进程地址空间里面有什么东西?代

2021-09-07 10:08:29 764

原创 C++开发学习路线02:计算机网络篇

0x01:计算机网络(19个问题)1、 四层模型是哪四层,各自负责什么功能?应用层:应用进程的交互完成特定的应用传输层:两台主机间进程的通信提供通用的数据传输服务网络层:为分组交换的网上的不同主机提供通信服务数据链路层:两台主机间的数据传输 需要在一段一段的链路上进行 需要专门的数据链路层协议2、 ping命令是什么原理?判断主机和其他的主机能否连接 IP报头(20字节)+ICMP报文基于ICMP协议(Internet控制报文协议)发送主机发送echo报文,接收主机回复echo报文3、

2021-09-06 17:43:32 326

原创 C++开发学习路线01:C/C++语言篇

0x01:C/C++语言(22个问题)1、 谈谈你对C和C++的编程差异理解1:C++引入面向对象的机制 同时键入C语言2:三大特新 封装 继承 多态3:复用性高 引入模板的概念4:不断发展 有新特性 C++11nullptr auto lambda表达式 右值引用 智能指针2、 static关键字在C语言和C++中各自有哪些不同用法?C/C++ 隐藏,保持变量的永久性 默认初始化为0修饰类成员变量和成员函数(属于类的,共享这一静态存储区域)C++独有Static成员函数只

2021-09-06 17:32:25 387

原创 C++开发学习路线03:数据结构与算法篇

0x03数据结构与算法部分1、 二叉树的四种遍历方式前序 中序 后序 层序2、 哈希表工作原理,如何解决哈希冲突?链地址法:相同的key通过链表相连接线性探测法:到的哈希地址冲突(该位置上已存储数据)的话 ,我们就是将这个数据插到下一个位置二次探测法:哈希函数:除余留数法,平方取中法,关键字法3、编程实现一个二分查找4、常用的排序算法,各自的时间复杂度是什么?常见排序算法的情况如下5、快排非递归6、一个一维数组,先单调递增,后单调递减,如何找到这个拐点?二分查找,判断

2021-09-05 22:18:19 396

原创 leetcode中3个面试常考的图的算法

leetcode中图的算法克鲁斯卡尔算法(无向图)用于最小生成树的计算: n个点 找到n-1个边 边的权重和最小思路:1:计算每两个点之间的距离 并且按照从小到大的顺序排序2:然后通过并查集的方法 依次寻找不可替代的边3:一直到找到边的个数为n-1 即找到了最小生成树[https://leetcode-cn.com/problems/min-cost-to-connect-all-points/]迪杰斯特拉算法(有向图)用于计算单源点到某一点的最短路径问题,无负权边思路:

2021-05-30 18:48:53 238

原创 C++中 取余和取模的区别

C++中 取余和取模的区别取余函数mod(x,y) 表示x对y取余 和x%y 一样余数的符号和x一致 商向0取整数-2%3 商为-0.67 向0取整数为0 余数为-2-3*0=-22%-3 商为-0.67 向0取整数为0 余数为2-(-3)*0=2;所以余数和被除数的符号一致取模取模一般用不到向负无穷大取整数-1对256取模商为-1 -1-(256*-1)=255...

2021-05-30 18:25:09 341

原创 Qt给给软件添加背景音乐

首先pro中添加 Qt+=multimedia头文件添加QMediaPlayer#include <QMediaPlayer>QMediaPlayer *player = new QMediaPlayer(this);//设置背景音乐player->setMedia(QUrl::fromLocalFile("E:/test.mp3路径名"));player->s...

2019-11-12 19:24:30 9989 8

原创 把应用程序打包成setup.exe,别人的电脑安装

HM NIS Edit2.03NSIS 2.46

2019-11-12 19:04:21 696

转载 new创建对象,对象保存在堆还是栈?

new创建对象,对象保存在堆还是栈?–>堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆内存–>栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量例子:局部变量存放在栈;new函数和malloc函数申请的内存在堆;函数调用参数,函数返回值,函数返回地址存放在栈堆和栈的区别1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数...

2019-11-11 16:05:42 4247 2

原创 按钮转到槽无响应

按钮转到槽无响应,可以尝试改变按钮的名称,关闭项目再重启

2019-11-05 20:19:59 320

原创 Qt回车快捷键

在widget下1.设置按钮焦点。加入下面语句则使焦点在设定的button1按钮上,此时按下space空格键可关闭当前窗口。ui->button1->setFocus();2.显示默认选中状态。只加入这条语句,则button1会显示选中状态,但是敲空格键没有反应,不会关闭窗口。ui->button1->setDefault(1);3.显示选中状态并且按回车会关闭窗...

2019-11-05 16:56:10 2008

原创 Qt打包成可执行文件exe并且修改应用程序的图标

Qt把代码打包成可执行文件exe代码编译时候选择release。最后运行会在程序所在目录下生成release文件夹,然后进入release文件夹下找到对应exe文件。把那个exe拷贝到一个空白文件夹(这个文件夹可以建在任何地方),然后打开Qt的控制台。黑色的,然后输入cd /d +新建的文件夹路径,比如我自己新建的文件夹路径的:C:\Users\Administrator\Deskto...

2019-10-30 21:22:29 838

原创 用C++实现最小二乘法,最小区域法,最小包容圆拟合圆的算法和在Qt中的运行结果

用C++实现最小二乘法,最小区域法,最小包容圆拟合圆的算法和在Qt中的运行结果我们工科生经常要处理数据,大家在处理数据的过程中遇到圆拟合的问题,一般会用到最小包容圆,最小外接圆,最小二乘拟合圆,最小区域法(遗传算法,粒子群算法),这里为了方便大家参考,提供C++实现最小二乘法,最小包容圆法,最小区域法(粒子群算法)的算法。话不多说,先上在Qt中的运行结果:如图红色的点是随机生成的,图一中随机...

2019-10-27 10:51:03 5412 12

Fitting Circle.zip

用最小二乘法,最小包容圆法和最小区域法拟合圆的三种算法 用c++实现

2019-10-27

空空如也

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

TA关注的人

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