自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer刷题笔记

如果是按照朴素做法的话,则需要循环k次时间复杂度为 O ( k ) ,则这个复杂度就比较高了,而如果是 采用快速幂时间复杂度是 O(logn)。题解 : 例如 ans[2] = A[0] x A[1] x A[3] x A[4], 删除原始链表中所有重复数字的节点,只留下不同的数字。3、将上面两个结果相加,即重复步骤1,2,直至进位的运算结果为0;我们可以简单的理解为,把老链表的节点一个个拆下来,放到新链表中。2、两个整数做与&,然后再左移一位,即得到进位的运算结果;给你一个链表,删除链表的倒数第。

2022-12-14 16:17:07 547

原创 LeetCode 101:和你一起你轻松刷题(C++)总篇章正在陆续更新

再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。在样例中,我们初始化糖果分配为 [1,1,1],第一次遍历更新后的结果为 [1,1,2],第二次遍历更新后的结果为 [2,1,2]在样例中,排序后的数组为 [[1,2], [1,3], [2,4]]。因此最终保留的区间为 [[1,2], [2,4]]。在这个样例中,我们可以移除区间 [1,3],使得剩余的区间 [[1,2], [2,4]] 互不重叠。

2022-11-01 22:37:36 1350 1

原创 qt中信号槽第五个参数

当信号发射时,槽函数立即直接调用。无论槽函数所属对象在哪个线程,槽函数总在发送者所在线程执行,即槽函数和信号发送者在同一线程。:槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。,当控制权回到接受者所在线程的事件循环时,槽函数被调用。槽函数在接受者所在线程执行,即槽函数与信号接受者在同一线程。可以看出:emit发射信号后立马执行槽函数,没有任何等待;,默认的连接方式,如果信号与槽,也就是发送者与接受者在同一线程,等同于。

2023-12-31 19:36:53 1636

原创 设计模式-简单工厂模式

简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

2023-07-14 16:31:19 625

原创 冒泡排序 + 快排

【代码】冒泡排序 + 快排。

2023-07-14 13:15:19 173

原创 P4-QML-states与transitions-动画效果制作

【代码】P4-QML-states与transitions-动画效果制作。

2023-07-13 22:19:47 216

原创 P3-实现自定义边框Rectangle

主程序:实现自定义长方形的调用。子程序:实现自定义长方形。

2023-07-13 20:08:17 285

原创 P2-QML-Item与Rectangle

【代码】QML-Item与Rectangle。

2023-07-12 23:10:19 99

原创 P1-QML-Window介绍

【代码】QML第一天。

2023-07-12 20:17:15 217

原创 Qt样式表Qss

Qss是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性它是用来美化UI界面。实现界面和程序的分离,快速切换皮肤。学习视频。

2023-07-09 21:12:57 681

原创 Json在Qt中的使用

关于 Qt 中 Json 数据对象以及字符串之间的转换的操作流程是固定的,我们在编码过程中只需要按照上述模板处理即可,相关的操作是没有太多的技术含量可言的。可以看出,通过构造函数就可以将实例化之后的 QJsonObject 或者 QJsonArray 转换为 QJsonDocument 对象了。对象,如何判断内部封装的到底是什么类型的数据呢?通过调用 toxxx() 方法就可以得到文本格式或者二进制格式的 Json 字符串了。中的对象,在里边可以存储多个键值对,为了方便操作,键值为字符串类型,值为。

2023-06-21 13:31:18 1723

原创 MySql行转列

【代码】MySql行转列。

2023-06-08 11:18:09 1096

原创 45道SQL题目

【代码】45道SQL题目。

2023-05-18 14:52:06 2599

原创 Qt中的互斥锁(QMutex和QMutexLocker)

表示尝试去加锁,timeout 为超时时间。如果互斥锁为可用状态,该函数会占用该互斥锁,并返回 true ,否则返回 false。如果互斥锁被另一个线程占用,该函数会等待 timeout 毫秒直到互斥锁为可用状态。

2023-05-17 16:59:15 4303

原创 Qt中的绘图事件

在显示窗口的时候,自动调用绘图事件。

2023-05-02 16:48:34 931

原创 Qt之定时器

【代码】Qt之定时器。

2023-05-02 16:36:32 1089 1

原创 QT多线程的两种写法

1.声明一个信号 2. 重写run方法 (注意是protected的)子线程做完复杂工作后,停止主线程里的lcd数字++主线程:使lcd数字++;子线程:处理复杂任务。

2023-05-02 13:46:41 128

原创 设计模式-单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。那么我们就必须保证:(1)该类不能被复制。(2)该类不能被公开的创造。那么对于C++来说,它的构造函数,拷贝构造函数和赋值函数都不能被公开调用。

2023-04-30 15:37:20 782

原创 Github 的使用

下次推送只需要输入git push即可。

2023-04-29 15:14:36 1218

原创 Git基础

版本管理是一种记录文件变化的方式,以便将来查阅特定版本的文件内容。

2023-04-28 23:32:26 1161

原创 QT中TCP的学习

QT中可以通过TCP协议让服务器和客户端之间行通信。服务器和客户端的具体流程。下方的信号都是系统提供的,我们只需要写相应的槽函数。

2023-04-24 20:31:25 488

原创 QMap和QVector

QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快。QMap中的数据都是成对出现的,第一个称为key(键),第二个称value(键值)QVector类是动态数组的模板类,顺序容器,它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们。使用前需要包含头文件 #include。

2023-04-23 18:02:21 679

原创 QString与基本数据类型的转换

【代码】QString与基本数据类型的转换。

2023-04-23 14:21:06 839

原创 QDialog两个显示函数show()和exec()的区别

QDialog的显示有两个函数show()和exec()。模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)下方代码,创建了模态和非模态对话框,并有详细注释,仔细阅读就能明白。

2023-04-23 13:18:33 913

原创 Qt 之按钮鼠标 悬浮、按下、松开后的效果

本文介绍了Qt中的按钮实现响应鼠标悬浮、按下、松开后的效果,在三种状态下,按钮改变不同的背景图片。方式1:通过修改样式表的方式去实现;方式2:通过继承QPushButton去实现一个自定义的按钮;方式3:在主界面中给按钮安装事件过滤器的方式去实现继承QPushButton类后,重写了event()方法break;break;case QEvent :: MouseButtonPress : this -> setIcon(QIcon(":/icons/images/暂停.png"));

2023-04-22 20:52:18 4045 1

原创 QT之UDP通信

udp通信相比于tcp较为简单,因为他的客户端和服务端代码实现是一样的。

2023-04-22 17:15:09 1202

原创 qt中信号和槽机制

返回void需要声明,不需要实现可以有参数写到signals 下返回void需要声明,也需要实现可以有参数,可以重载写到 public slot 下或者 public 或者 全局函数​ emit 自定义信号。

2023-04-22 11:48:39 527

原创 nginx线程池源码剖析

条件变量 - 一种同步机制,允许线程挂起,直到共享数据上的某些条件得到满足。任务队列 - 按顺序保存待处理的任务序列,等待线程中的线程组处理。网络上的请求和响应,互斥锁,等待同步方式调用的数据库响应。任务 - 待处理的工作,通常由标识、参数和处理函数组成。互斥锁 - 保证在任一时刻,只能有一个线程访问该对象。读取文件,但文件尚未缓存,从硬盘中读取较为缓慢。线程池 - 由多个已启动的一组线程组成。这个主要对,互斥锁和条件变量进行了一层封装。解决方案: 运用多进程或多线程技术解决。

2023-04-13 10:46:33 373

原创 线程同步-信号量-互斥量-条件变量

与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。

2023-04-11 21:45:01 449

原创 protobuf序列化

协议的模板所有的message必须定义到一个文件中,且文件的后缀名为.proto。例如我们定义的bike.proto文件required:必须填发送的数据bike.proto// 使用的版本 package tutorial;// 生成一个包把类放进去 // 申请短信请求 message mobile_request {// 按顺序写编号 }

2023-04-09 17:10:33 850 1

原创 TCP分包和粘包

相关的,路由器有一个MTU( 最大传输单元)一般是1500字节,除去IP头部20字节,留给TCP的就只有MTU-20字节。TCP是以段(Segment)为单位发送数据的,建立TCP链接后,有一个最大消息长度(MSS).如果应用层数据包超过MSS,就会把应用层数据包拆分,分成两个段来发送.b)服务端:先解析本次数据包,获取数据大小N,再读取N个字节,这N个字节就是一个完整的数据内容。当应用层数据超过1460字节时,TCP会分多个数据包来发送。a)客户端:先发送包表示和长度,再发送数据内容。

2023-04-08 19:12:03 2254

原创 Libevent学习之旅

libevent是一个轻量级的开源的高性能的事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。跨平台,支持Windows、Linux、BSD和Mac OS;支持多种I/O多路复用技术(epoll、poll、dev/poll、select和kqueue等),在不同的操作系统下,做了多路复用模型的抽象,可以选择使用不同的模型,通过事件函数提供服务;支持I/O,定时器和信号等事件;采用Reactor模式;

2023-04-08 14:39:54 372

原创 epoll之多路IO复用

epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。LT模式(水平触发)下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户程序去操作;而在ET(边缘触发)模式中,它只会提示一次,直到下次再有数据流入之前都不会再提示了,无论fd中是否还有数据可读。

2023-04-06 10:07:46 349

原创 select之多路IO复用

举一个简单地网络服务器的例子,如果你的服务器需要和多个客户端保持连接,处理客户端的请求,属于多进程的并发问题,如果创建很多个进程来处理这些IO流,会导致CPU占有率很高。所以人们提出了I/O多路复用模型:一个线程,通过记录I/O流的状态来同时管理多个I/O,需要的线程数大大减少,减少了内存开销和上下文切换的CPU开销。

2023-04-03 17:46:00 158

原创 linux之线程

类比:创建一个进程,类似于“克隆”一个家庭。该“家庭”与原来的家庭完全相同但是新“家庭”和原来的家庭完全独立。进程包含一个或多个线程。类似与一个家庭,包含一个或多个家庭成员。家庭内的各成员同时做各自的事情(父亲工作、母亲持家、小孩上学)而对于家庭外部的人来说,这个家庭同时在做多件事情。家庭内的每个成员,就是一个线程。各个家庭成员有自己的个人资源(线程有自己的局部变量)但是所有家庭成员都能共享这个家庭的资源:房子、汽车、家庭的公共资金。

2023-03-30 20:10:00 610

原创 进程间通信----共享内存机制

是允许两个或多个进程(不相关或有亲缘关系)访问同一个逻辑内存的机制。它是共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。addr:指向欲映射的内存起始地址,通常设为 NULL,代表让系统自动选定地址,映射成功后返回该地址。第一个程序向共享内存中写入数据,第二个程序向共享内存中读取数据。prot:映射区域的保护方式。length:代表将文件中多大的部分映射到内存。读取文件 也可以配合信号量,多个进程一起读取。一个小栗子:这两个进程需要在同一个目录下。

2023-03-29 21:31:34 517

原创 进程间通信----信号量

信号量,是一种特殊的变量:只能对信号量执行P操作和V操作P操作(要执行代码的时候): 如果信号量的值 == 0, 则挂起该进程,如果信号量的值 > 0, 则把该信号量减1V操作(执行完代码的时候): 如果有进程因该信号量而被挂起,则恢复该进程运行,如果没有进程因该信号量而挂起,则把该信号量加1注意:P操作、V操作都是原子操作,即其在执行时,不会被中断。注意:此指的“信号量”是指System V IPC的信号量,与线程所使用的信号量不同。该信号量,用于进程间通信。

2023-03-27 22:00:02 1000

原创 进程间通信---消息队列

消息队列,用于从一个进程向另一个进程发送数据。但仅把数据发送到一个“队列”中,而不指定由哪个进程来接受。消息队列,独立与发送消息的进程和接收消息的进程。(信号、管道、命名管道都不独立与发送和接收进程)消息队列,有最大长度限制:MSGMNB消息队列中的单条消息,也有最大长度限制:MSGMAX。

2023-03-26 22:12:42 439

原创 进程间通信----管道

注:单进程中的管道无实际用处,管道用于多进程间通信。一个进程实现管道通信(管道主要用于多进程通信)父子进程各有一个管道的读端和写端;这里的父子进程可以实现全双工。

2023-03-26 19:13:09 627

原创 进程间通信----信号

",父进程等待用户输入,如果用户按下字符A, 则向子进程发信号SIGUSR1, 子进程的输出字符串改为大写;如果用户按下字符a, 则向子进程发信号SIGUSR2, 子进程的输出字符串改为小写.当sa_mask包含某个信号A时,则在信号处理函数执行期间,如果发生了该信号A,则阻塞该信号A(即暂时不响应该信号),直到信号处理函数执行结束。参2:signal的参数2可去以下特殊值:SIG_IGN 忽略信号---------SIG_DFL 恢复默认行为。不能自定义信号,所有信号都是系统预定义的。

2023-03-26 15:17:01 499

空空如也

空空如也

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

TA关注的人

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