- 博客(137)
- 收藏
- 关注
原创 【高级IO-4】I/O多路转接 之 epoll(概念及代码实例)
本文详细介绍了IO多路转接的epoll工作模式,包括:优缺点、工作原理、使用过程、工作模式、惊群问题、代码实例等
2024-08-23 20:56:35
759
原创 【高级IO-3】I/O多路转接 之 poll【概念及代码实例】
在使用套接字(Socket)进行网络编程时,套接字的就绪条件表示可以进行某种操作的条件,主要用于异步 I/O 操作,例如通过。:套接字缓冲区有足够的空间可以写入数据,即发送缓冲区有足够的空间可以发送数据,可以调用。对于客户端套接字来说,连接就绪表示连接成功建立,可以进行数据交换。函数会在指定的一组文件描述符上等待指定的事件发生,并将发生的事件保存在。等)来监视,当套接字处于就绪状态时,这些函数会通知应用程序执行相应的操作。:套接字缓冲区中有数据可供读取,即接收缓冲区中有数据到达,可以调用。
2024-08-23 09:37:28
656
原创 【高级IO-2】IO多路转接之Select(概念及代码实例)
在使用套接字(Socket)进行网络编程时,套接字的就绪条件表示可以进行某种操作的条件,主要用于异步 I/O 操作,例如通过。对于服务器套接字来说,连接就绪表示已经有客户端连接请求到达,可以调用。:套接字缓冲区有足够的空间可以写入数据,即发送缓冲区有足够的空间可以发送数据,可以调用。对于客户端套接字来说,连接就绪表示连接成功建立,可以进行数据交换。等)来监视,当套接字处于就绪状态时,这些函数会通知应用程序执行相应的操作。,通常设置为需要监视的文件描述符中最大的描述符值加1。
2024-08-22 16:59:04
617
原创 【高级IO-1】探索五种 I/O 模型及其高级I/O技术:基于 fcntl() 的代码应用
本文首先介绍了五种IO模型的概念,以及高级IO的重要概念:如同步异步通信、阻塞与非阻塞;其他高级IO的概念;并使用fcntl函数编写实例代码
2024-08-21 14:45:43
567
原创 【Linux多线程】线程控制与分离线程(POSIX库的理解与相关函数的使用)
对于Linux多线程,本文介绍POSIX库以及相关接口函数的使用,在不同的部分有相应的接口使用,以及分离线程的意义和接口函数。
2024-08-21 12:29:07
970
原创 【Linux多线程】线程安全的单例模式
这个模式适用于那些只需要一个实例来控制整个系统的场景,如配置管理、日志记录等。是一种单例模式的实现方式,它在第一次需要实例时才创建对象。这种方式的特点是推迟实例化,从而避免不必要的资源消耗。:吃完饭, 先把碗放下, 然后下一顿饭用到这个碗了再洗碗(节省了不必要的操作,优化速度):吃完饭,立刻洗碗;这种方式的特点是实例创建时机早,通常用于资源不多且创建实例开销较小的情况。是面向对象设计中的一种标准化、经过验证的解决方案,用于解决常见的设计问题。:关注对象之间的交互和责任分配。关注对象的创建过程。
2024-08-20 19:40:38
863
原创 【Linux多线程】线程互斥 与 常见的锁(无锁化编程)
文章介绍了线程互斥的相关内容:互斥锁(接口、代码实例)、可重入与线程安全(各种可重入不可重入情况、线程安全情况、联系区别)、死锁(必要条件、避免死锁)、其他锁;
2024-08-20 16:46:08
816
原创 【网络基础】HTTP协议的基本知识与服务器实现
HTTP状态码是服务器对客户端请求的响应结果的标识,采用三位数字代码的形式。每个状态码表示服务器对请求处理的结果,并帮助客户端了解请求的处理状态。
2024-08-20 16:37:48
1143
原创 【Linux多线程】线程同步 与 生产者消费者模型(无锁化模型)
本文介绍了四个章节:线程同步,生产者消费者模型、读者写者问题、无锁化模型;每章节都包括其组成,概念,与相关的条件变量函数与示例代码。
2024-08-17 11:28:16
1036
原创 深入探讨 Linux 信号:产生、阻塞与捕捉(信号集、可重入函数、原子操作)
信号(Signal)是操作系统提供的一种有限的、异步的通信机制,用于向进程传递事件通知。信号在 Unix 系统中首次引入,是进程间通信(IPC)的一部分。它们可以由内核、用户或进程本身发出,用于通知进程发生了某些事件,例如硬件异常、非法内存访问、终止请求等。
2024-08-12 10:22:12
591
原创 【进程间通信原理2】SystemV 共享内存、消息队列、信号量详解与代码实例
本文提到了System V共享内存的概念、结构、函数与相关示例代码;system V 消息队列的主要API函数、使用示例;system V信号量的概念与操作
2024-07-29 09:48:59
796
原创 进程互斥的概念 与 如何实现进程互斥(代码实例)
进程互斥是并发编程中确保安全访问共享资源的重要机制,通过适当的同步工具(如信号量、锁、自旋锁等)可以有效地避免竞态条件,保证系统的稳定性和数据的一致性。
2024-07-28 10:20:41
365
原创 【进程间通信原理1】进程间通信与管道(匿名管道与命名管道)详解
进程间通信原理:介绍了进程间通信的目的、发展、分类与相关命令;管道的概念、读写规则、特点,命名管道与匿名管道。
2024-07-28 10:09:11
911
原创 【动态规划】C++解决01背包问题(模板01背包、分割等和子集、目标和、最后一块石头的重量)
本文主要涉及动态规划解题(01背包类问题):包括【模板】01背包、分割等和子集、目标和、最后一块石头的重量
2024-06-04 10:14:02
1249
原创 【动态规划】C++解决回文串类算法题(最长/回文子串、分割回文串、回文子序列、最少插入次数)
本文讲解关于用动态规划解回文串类算法题:包含回文子串、最长回文子串、 分割回文子串Ⅲ/Ⅳ、最长回文子序列、让字符串成为回文串的最少插入次数
2024-05-30 18:30:18
1166
原创 【贪心算法】C++解决回文串、增减字符串匹配、分发饼干、跳跃游戏、加油站问题
本文介绍了用贪心算法解决一系列算法题:包括最长回文串、增减字符串匹配、分发饼干、跳跃游戏Ⅰ、Ⅱ,以及加油站问题;
2024-05-29 19:38:26
1028
原创 【贪心算法】C++ 解决算法题:买卖股票 / K次取反 / 按身高排序 / 优势洗牌
贪心算法在每一步选择中都采取当前状态下最优决策的算法。贪心算法通常用来解决最优化问题,其在贪心算法中,我们并不总是考虑到未来可能发生的情况,而是只关注当前的最优选择。这种贪心选择性质使得贪心算法特别适合解决那些具有最优子结构性质的问题,即局部最优解能够推导出全局最优解的问题。需要注意的是,贪心算法并不适用于所有的问题,因为并非所有问题都具有最优子结构性质。在某些情况下,贪心算法得到的结果可能并不是全局最优解,而只是一个较好的解。因此,在应用贪心算法时,需要仔细分析问题的特性,以确定贪心算法是否适用于该问题。
2024-05-28 16:55:44
1135
原创 【贪心算法&指针】C++ 解决子数组 / 子序列的相关问题(最大数、数组和减半的最小操作数、连续/递增序列)
贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最优决策的算法。贪心算法通常用来解决最优化问题,其核心思想是通过局部最优解逐步推导出全局最优解。在贪心算法中,我们并不总是考虑到未来可能发生的情况,而是只关注当前的最优选择。这种贪心选择性质使得贪心算法特别适合解决那些具有最优子结构性质的问题,即局部最优解能够推导出全局最优解的问题。贪心算法的基本思路可以总结为以下几步:确定问题的最优子结构:问题的最优解可以通过子问题的最优解逐步推导得到。构造贪心选择。
2024-05-27 19:15:10
746
原创 【Linux】套接字的理解 & 基于TCP协议的套接字编程(单/多进程 / 线程池|英汉互译 / C++)
网络基础 - 预备知识(协议、网络协议、网络传输流程、地址管理)套接字(Socket)是计算机网络中用于实现进程间通信的一种机制。它允许在不同计算机之间或同一计算机的不同进程之间进行数据传输和通信。套接字可以看作是网络通信中的一个端点,它由IP地址和端口号组成,用于唯一标识网络中的通信实体点。套接字提供了一组接口(通常是API)用于创建、连接、发送、接收和关闭连接等操作,以实现数据的传输和通信。套接字可以分为两种类型(了解)流套接字(Stream Socket)和。
2024-05-23 22:42:13
964
原创 【linux】深入了解线程池:基本概念与代码实例(C++)
线程池是一种并发编程的解决方案(线程使用模式),它由一组工作线程和一个任务队列组成。工作线程在初始化时被创建并持续运行,等待从任务队列中获取任务并执行。当任务执行完成后,线程不会退出,而是继续保持运行状态,等待下一个任务的到来。线程池不仅能够保证内核的充分利用,还能防止过分调度。
2024-05-23 14:59:34
913
原创 【Linux】套接字的理解 & 基于UDP协议的套接字编程(多版本)
网络基础 - 预备知识(协议、网络协议、网络传输流程、地址管理)套接字(Socket)是计算机网络中用于实现进程间通信的一种机制。它允许在不同计算机之间或同一计算机的不同进程之间进行数据传输和通信。套接字可以看作是网络通信中的一个端点,它由IP地址和端口号组成,用于唯一标识网络中的通信实体点。套接字提供了一组接口(通常是API)用于创建、连接、发送、接收和关闭连接等操作,以实现数据的传输和通信。套接字可以分为两种类型(了解)流套接字(Stream Socket)和。
2024-05-17 15:45:40
738
原创 【网络基础】网络层 之 IP协议与分片、网段划分、IP地址分类、子网掩码与路由
文章介绍了网络层与IP协议路由的相关内容:包括IP协议段格式、分片的详细解释、网段划分的理解(国际间通信)、IP地址的分类、子网掩码的概念、私有IP地址与公有IP地址、路由器的两套IP(WAN口IP与LAN口IP)、路由的概念,网络通信的过程
2024-05-11 14:05:44
2034
1
原创 【网络基础2】深入理解TCP协议:协议段、可靠性、各种机制(握手挥手)
文章介绍了TCP协议的相关内容:如TCP协议段格式、TCP的各种字段、如何解包/向上交付、可靠性的理解、各种机制、TCP全双工的原因、理解链接、实现可靠性的方式、理解TCP面向字节流、TCP与UDP对比、TCP的相关实验、对listen的第二个参数理解、基于TCP的应用层协议
2024-05-01 22:09:41
850
原创 【网络基础1】深入理解UDP协议:从报文格式到应用本质
首先我们知道,什么是Udp协议是一种无连接的传输协议,它位于OSI模型的传输层,用于在计算机网络上发送数据。在之前所写的进程间通信套接字编程的代码都是在应用层的,接下来的Udp、Tcp协议在传输层。
2024-04-27 21:12:52
2756
原创 【动态规划】C++ 子序列问题(递增子序列、数对链、定差子序列、斐波那契子序列...)
本文介绍了动态规划中的子序列问题,通过一系列例题对此类动态规划问题有较好的了解。
2024-04-24 09:00:39
865
原创 【动态规划】C++ dp子数组问题(最大/最长:环形/子数组和、乘积最大/为正数、单词拆分、子串)
文章介绍了子数组类的dp问题,并通过一系列算法题加深对该类问题的解法理解。
2024-04-22 11:25:11
998
原创 【动态规划】dp 路径问题(不同路径、路径最小和、地下城游戏...)
本文首先通过一篇文字理解动态规划与使用dp数组,最后用一些算法题详解解决动态规划中的路径问题
2024-04-19 15:18:20
750
原创 【动态规划】C++解决斐波那契模型题目(三步问题、爬楼梯、解码方法...)
动态规划是一种解决复杂问题的算法设计技术,通常用于解决具有和性质的问题。它将问题分解成较小的子问题,通过解决这些子问题并保存其结果,最终构建出原问题的解。:问题可以被分解为相同的子问题,并且这些子问题在求解过程中会被多次重复计算。:问题的最优解可以由其子问题的最优解来构造。
2024-04-18 14:45:11
926
原创 【Qt学习】了解Qt文件系统 + 利用QFile类实现记事本功能
文件操作是应⽤程序必不可少的部分,Qt作为一个通用开发库,提供了丰富的文件操作类,使得应用程序能够方便地进行文件系统操作。QIODevice是 Qt 中用于处理输入输出操作的抽象基类,它为文件、网络套接字、串口等设备提供了统一的接口。下面是QIODevice的子类QIODevice 子类描述QFile用于读写文件QBuffer在内存中创建缓冲区进行数据读写QProcess用于启动外部进程并进行通信处理网络请求响应数据QTcpSocket用于 TCP 网络套接字通信。
2024-03-28 09:03:49
832
原创 网络基础 - 预备知识(协议、网络协议、网络传输流程、地址管理、OSI七层模型 与 TCP / IP四层模型)
本文介绍了网络基础内容,预备知识:认识协议;了解网络协议,包括协议分层的引入与OSI七层模型和TCP/IP四层模型;以及网络传输的流程:包括流程图,报头的概念,以及封装解包的传输过程;最后是网络中的地址管理。
2024-03-14 19:36:14
979
原创 【Qt学习】QProgressBar的使用(进度条的实现)
详细的 QProgressBar 内容可以通过查阅Qt官方文档,这里进行简要的总结:可以水平或垂直显示,可以根据需要设置最小值和最大值,以及当前的数值,从而控制进度条的显示。提供了一些方法来控制进度条的外观和行为,比如设置进度条的最小值和最大值、设置进度条的文本显示格式、设置进度条的样式表等。属性名描述value表示当前进度的数值minimum表示进度的最小值maximum表示进度的最大值表示是否显示进度条上的文本alignment表示文本对齐方式format。
2024-03-07 10:02:18
1542
原创 【Qt学习】QDial 与 QSlider 的 介绍与使用(利用控件 控制窗口透明度 / 窗口大小)
本文介绍了Qt的两个控件:QDial与QSlider,分别介绍了其核心属性,以及相关实例应用(用QDial控制窗口不透明度、用QSlider控制窗口大小)
2024-03-06 19:35:51
1167
原创 【Qt学习】QSpinBox 与 QDateTimeEdit 控件 的介绍与实例()
对于QSpinBox,我们可以查阅Qt的官方文档进行了解:这里简单进行总结:QSpinBox,即微调框,用于提供一个用于输入整数值的微调控件。通常用于需要用户输入特定范围内整数值的界面。QSpinBox提供了一个带有箭头按钮的文本字段,用户可以通过点击箭头按钮或手动键入来增加或减少值。它还提供了一些附加功能,如设置最小值、最大值和步长。下面是QSpinBox的属性描述value当前SpinBox中显示的整数值minimum允许输入的最小整数值maximum允许输入的最大整数值。
2024-03-02 15:08:40
1091
原创 【Qt学习】QTextEdit 与 QComboBox 的 属性与实例(槽函数的使用、读取本机内容到控件)
我们可以查阅官方文档,对QTextEditQTextEdit 是 Qt 框架中用于显示和编辑富文本内容的组件。QTextEdit有以下属性描述documentQTextEdit 中的文本内容存储在一个 QTextDocument 对象中。plainText获取或设置 QTextEdit 中的纯文本内容。textCursor返回当前 QTextEdit 中的光标位置。设置 QTextEdit 是否接受富文本格式的输入。readOnly设置 QTextEdit 是否为只读状态。
2024-03-01 16:08:35
1371
原创 【Qt学习】QLCDNumber的介绍与实例使用(倒计时功能)
QLCDNumber是Qt框架中用于显示数字的控件,它模拟了一个液晶数字显示屏。有以下属性描述intValue获取或设置QLCDNumber显示的整数值。获取或设置QLCDNumber显示的浮点数值。mode获取或设置QLCDNumber的显示模式。获取或设置QLCDNumber的段样式。frameShape获取或设置QLCDNumber的框架形状。获取或设置QLCDNumber的框架阴影效果。digitCount获取或设置QLCDNumber显示的数字位数。
2024-03-01 15:24:24
838
原创 【Qt学习】多元素控件:QListWidget、QTableWidget 的介绍与使用
是 Qt 框架中用于显示列表项的控件,它支持显示文本、图标等信息,并且可以允许用户通过交互选择其中的项。有以下核心函数(方法)函数描述addItem在列表中添加新的数据项insertItem在指定位置插入新的数据项takeItem从列表中移除指定的数据项并返回该数据项clear清空列表中所有的数据项sortItems根据指定的方式对列表中的数据项进行排序滚动列表以确保指定的数据项可见设置列表中的选择模式,可以为单选、多选等设置列表中的拖放功能是否启用。
2024-02-29 12:44:51
2972
原创 【Qt学习】QRadioButton 的介绍与使用(性别选择、模拟点餐)
这里简单对QRadioButton类进行介绍继承自,用于创建单选按钮;对于父类的属性和⽤法, QRadioButton 同样适⽤。由于QRadioButton继承自QAbstractButton类,因此拥有了一些与按钮相关的属性和方法。其中一个重要的属性就是check属性,用于判断按钮是否被选中。有以下三属性属性说明检查是否允许被选中checked()检查是否已被选中是否排他:即当选中该按钮后是否会取消对其他按钮的选择(QRadioButton默认排他)
2024-02-24 23:02:20
1122
原创 【Qt学习】QPushButton添加图标 并通过快捷键控制该图标
我们知道:QPushButton表示一个按钮用于响应用户的点击事件。QPushButton可以显示文本、图标或同时显示两者,也可以设置按钮的样式和状态。用QPushButton设置图标,并设置快捷键控制该图标。
2024-02-23 20:33:50
1632
原创 【Qt学习】QWidget的styleSheet属性与实例(日/夜间模式、RGB颜色的表示)
我们以此对styleSheetstyleSheet 样式表是一种可以通过文本描述来自定义控件外观的强大工具,它类似于网页开发中的CSS(层叠样式表)。在Qt中我们称为QSS。
2024-02-23 19:01:04
607
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人