自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 串的模式匹配算法

KMP算法它是有Knuth、Morris和Pratt三个人同时发现的,所以我们称之为KMP算法。它是一个很优秀的算法,通过对模式串的一个预处理,将我们的时间复杂度减少到了一个线性的水平。KMP算法精髓:利用已经匹配过的模式串的信息,求出next数组→利用next数组进行匹配(主串指针不回溯)

2024-09-03 22:25:46 1154

原创 C++基本语法——零基础新手入门教程

在我们正式开始学习C++之前,需要对计算机的一些理论的基础有一定的认知。而进制就是这样的基础,因此我们需要先学习进制。我们知道在计算机的世界中,只有0和1两个数字,那么其他的数据该如何去表示呢?进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。

2024-09-03 22:12:40 4601 1

原创 qt项目:TCP网络实时通讯工具——跨平台(C++)

基于C++ qt开发,可跨平台的,TCP内网实时通讯工具,有服务器端和客户端。

2024-09-03 22:06:49 1864

原创 Linux系统编程—I/O缓冲区(C语言实现)

定义:I/O缓冲区是指在内存里开辟的一块区域,用来存放接收用户输入和用于计算机输出的数据,以减小系统开销和提高外设效率。作用平滑I/O需求峰值:通过缓冲区,可以使得数据的传输更加平滑,避免因为I/O设备的速度差异而导致的数据传输瓶颈。提高系统速度:使用缓冲区可以使得用户进程在下一数据块读取的同时,处理已读入的数据块,从而提高系统的整体速度。

2024-10-08 22:53:16 1637

原创 C语言— exec系列函数

exec系列函数的行为大体相同,区别在于传递参数的方式和是否使用环境变量。不返回:如果调用成功,这些函数不会返回,而是用新程序替换当前进程映像。如果失败,它们会返回 -1,并设置errno以指示错误类型。参数传递:这些函数允许将参数列表传递给新程序,通常包括程序路径和命令行参数。execve是exec系列函数中最底层的一个,它提供了最大的灵活性,因为它允许直接指定程序路径、参数列表和环境变量。pathname:要执行的程序文件的路径。argv:传递给新程序的参数列表,其中argv[0]

2024-10-08 22:29:02 1002

原创 C++11新特性—引用折叠

引用折叠是C++11引入的一项重要特性,它使得模板编程中的类型推导更加灵活和强大。通过理解引用折叠规则,你可以编写出能够完美转发参数的模板函数,这对于编写高效和通用的C++代码至关重要。

2024-10-08 19:54:54 936 2

原创 计算机网络—大端序和小端序

大端序(Big-endian)将高位字节存储在低地址,低位字节存储在高地址的方式。在内存中,数据的高位字节位于低地址,而低位字节位于高地址。这种排列方式与数据用字节表示时的书写顺序一致,符合人类的阅读习惯。小端序(Little-endian)将低位字节存储在低地址,高位字节存储在高地址的方式。在内存中,数据的低位字节位于低地址,高位字节位于高地址。小端序与人类的阅读习惯相反,但更符合计算机读取内存的方式,因为CPU读取内存中的数据时,是从低地址向高地址方向进行读取的。

2024-10-05 14:10:01 1043

原创 C++并发编程实战—单例模式与线程池实现

定义:线程池是一种设计模式,它预先创建并维护一定数量的线程,这些线程可以重复执行多个任务。当有任务需要执行时,线程池会选择一个可用的线程来执行任务,任务执行完毕后,线程会返回线程池,等待下一个任务的到来。功能降低线程创建和销毁的开销:线程的创建和销毁是比较耗费资源的操作,使用线程池可以避免频繁地创建和销毁线程,从而提高程序的性能。提高系统的响应速度:线程池中的线程可以立即执行任务,而不需要等待线程的创建和启动时间。

2024-10-04 16:37:21 1898

原创 C++11新特性总汇

C++11新特性总汇

2024-09-29 14:11:05 709

原创 C++11新特性—emplace_back成员函数

是 C++ 标准库中,特别是容器提供的一个非常有用的成员函数。它的主要用途是在向vector的末尾添加元素时,直接在容器的内存位置构造该元素,而不是先构造一个元素,然后复制或移动到vector中。这样做可以显著提高性能,特别是当元素是大型对象或需要复杂初始化时。

2024-09-27 08:01:54 1876

原创 C++11新特性—std:function模板类

是 C++ 标准库中的一个头文件,它提供了对函数对象(也称为仿函数或函子)和可调用实体的支持。这些功能主要用于泛型编程中,特别是在与算法(如中定义的那些)和标准容器(如等)的交互中。头文件定义了几个模板类和函数,这些模板类和函数可以帮助你创建和使用可调用实体。

2024-09-26 23:03:56 947

原创 C++动态规划问题—状态转移方程

​ 状态转移方程是动态规划(Dynamic Programming, DP)中的一个核心概念,它描述了从一个状态转移到另一个状态时的变化规则。在解决优化问题时,特别是当问题可以分解为重叠的子问题时,动态规划通过存储子问题的解来避免重复计算,从而提高效率。状态转移方程就是用来描述这种“状态”如何根据“决策”转移到下一个“状态”的数学表达式。​ 在经典的爬楼梯问题中,状态转移方程是。

2024-09-26 17:57:11 1104

原创 C++动态规划问题—使用最小花费爬楼梯

给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。

2024-09-26 17:56:41 264

原创 C++动态规划问题—爬楼梯

假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?

2024-09-26 17:56:09 698

原创 C++动态规划问题—斐波拉契数

(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。给定n,请计算F(n)。

2024-09-26 16:43:48 500

原创 C++动态规划问题—第 N 个泰波那契数

泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数n,请返回第 n 个泰波那契数 Tn 的值。

2024-09-26 16:42:56 459

原创 C++动态规划问题—不同路径

一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?2 * 109。

2024-09-26 16:42:20 353

原创 C++动态规划问题—打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。

2024-09-26 16:41:17 447

原创 C++—单例设计模式

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。

2024-09-26 16:11:42 1589

原创 C++特性—左值与右值

左值和右值是C++中重要的概念,它们区分了表达式在赋值操作中的作用。左值代表内存中的持久对象,可以被重新赋值;而右值代表临时值,通常不能被修改。随着C++11及以后版本的发展,左值和右值的概念得到了扩展,引入了新的术语和特性,如右值引用、移动语义和完美转发等,这些特性使得C++在资源管理、性能优化等方面更加灵活和高效。

2024-09-22 18:48:35 528

原创 C++智能指针入门教程(C++11)

​ C++中的智能指针是一种用于自动管理动态分配的内存的模板类,它们通过封装原始指针来提供自动的内存管理功能,从而避免了内存泄漏和悬挂指针等问题。C++标准库中提供了几种智能指针类型,其中最常用的是和。​ C++智能指针是在C++11版本中引入的。C++11及以后版本废弃了C++98中的auto_ptr,并从Boost标准库中引入了shared_ptrunique_ptrweak_ptr三种智能指针,以提供更强大和灵活的内存管理机制。

2024-09-21 23:07:32 627

原创 Linux线程同步—竞态条件与互斥锁、读写锁(C语言)

当多个线程并发访问和修改同一个共享资源(如全局变量)时,如果没有适当的同步 措施,就会遇到线程同步问题。这种情况下,程序最终的结果依赖于线程执行的具体时序, 导致了竞态条件。竞态条件(race condition)是一种特定的线程同步问题,指的是两个或者以上进 程或者线程并发执行时,其最终的结果依赖于进程或者线程执行的精确时序。它会导致程 序的行为和输出超出预期,因为共享资源的最终状态取决于线程执行的顺序和时机。为了 确保程序执行结果的正确性和预期一致,需要通过适当的线程同步机制来避免竞态条件。

2024-09-20 23:51:41 1989

原创 Linux线程同步—竞态条件和互斥锁(C语言)

当多个线程并发访问和修改同一个共享资源(如全局变量)时,如果没有适当的同步 措施,就会遇到线程同步问题。这种情况下,程序最终的结果依赖于线程执行的具体时序, 导致了竞态条件。竞态条件(race condition)是一种特定的线程同步问题,指的是两个或者以上进 程或者线程并发执行时,其最终的结果依赖于进程或者线程执行的精确时序。它会导致程 序的行为和输出超出预期,因为共享资源的最终状态取决于线程执行的顺序和时机。为了 确保程序执行结果的正确性和预期一致,需要通过适当的线程同步机制来避免竞态条件。

2024-09-19 23:41:34 1226

原创 Linux线程处理—线程终止

1当某个线程调用 pthread_exit 方法后,该线程会被关闭(相当于 return)。线程 可以通过 retval 向其它线程传递信息,retval 指向的区域不可以放在线程函数的栈内。其他线程(例如主线程)如果需要获得这个返回值,需要调用 pthread_join 方法。需要注意的是,pthread_detach 不会等待子线程结束,如果在后者执行完毕之前主 线程退出,则整个进程退出,子线程被强制终止。

2024-09-18 21:19:33 1146

原创 Linux线程处理—线程终止

当某个线程调用 pthread_exit 方法后,该线程会被关闭(相当于 return)。线程 可以通过 retval 向其它线程传递信息,retval 指向的区域不可以放在线程函数的栈内。其他线程(例如主线程)如果需要获得这个返回值,需要调用 pthread_join 方法。

2024-09-18 10:59:06 577

原创 Linux线程处理—线程终止

当某个线程调用 pthread_exit 方法后,该线程会被关闭(相当于 return)。线程 可以通过 retval 向其它线程传递信息,retval 指向的区域不可以放在线程函数的栈内。其他线程(例如主线程)如果需要获得这个返回值,需要调用 pthread_join 方法。

2024-09-17 22:49:47 579

原创 Linux线程处理—线程创建

每个线程都有一个唯一的标识符(即线程 ID),这个标识符是通过 pthread_t 类型 的变量来表示的,当 pthread_create 成功创建一个线程时,它会将新线程的标识符存储 在 thread 参数指向的位置。是 POSIX 线程(也称为 pthreads)库中一个重要的函数,它用于等待一个线程的终止。当一个线程被创建后,它可能会并行地执行自己的任务,而主线程(或其他线程)可能需要等待这个线程完成其任务后才能继续执行。函数就提供了这样的同步机制。

2024-09-16 23:34:43 1163

原创 Linux进程通讯—信号处理

signal系统调用是 UNIX 和类 UNIX 系统(如 Linux)中用于处理信号的一个基础机制。信号是软件中断,它们可以被系统或者进程发送给另一个进程或线程,以通知它们发生了某个事件。这些事件可以是硬件中断(如外部设备请求服务)、软件异常(如除零错误)、用户请求(如用户请求停止进程)等。

2024-09-16 03:52:29 264

原创 Linux进程通讯—消息队列

消息队列生产者是指产生消息并将消息发布到消息队列或主题中的应用程序。它负责构建或生成消息,这些消息可以是简单的文本、复杂的结构化数据或二进制数据,具体内容、格式和结构取决于应用程序的需求和消息中间件的设计。消息队列消费者(Message Consumer)是消息队列系统或消息中间件中的另一个关键角色,它负责从消息队列中取出(或订阅并接收)消息,并对这些消息进行进一步的处理。

2024-09-16 01:44:41 2886

原创 进程通讯—共享内存对象

共享内存是指允许多个不相关的进程访问同一个逻辑内存区域。这种内存区域在物理上通常是同一段内存,但在虚拟地址空间中,不同进程通过各自的页表将其映射到这一共同的物理内存区域。

2024-09-15 13:17:14 847

原创 Linux进程通讯——共享内存对象

进程通讯—共享内存,可以开启一块内存共享对象,我们可以像使用一般文件描述符一般使用这块内存对象。truncate 和 ftruncate 都可以将文件缩放到指定大小,二者的行为类似:如果文件 被缩小,截断部分的数据丢失,如果文件空间被放大,扩展的部分均为\0 字符。缩放前后 文件的偏移量不会更改。缩放成功返回 0,失败返回-1。 ​ 不同的是,前者需要指定路径,而后者需要提供文件描述符;ftruncate 缩放的文件 描述符可以是通过 shm_open()开启的内存对象,而 truncate 缩放的文件

2024-09-12 01:20:22 811

原创 Linux进程通讯—有名管道FIFO

FIFO 和 Pipe 一样,提供了双向进程间通信渠道。但要注意的是,无论是有名管道还 是匿名管道,,否则可能出现通信混乱(进程读到自己发的 数据)采用库函数创建。

2024-09-11 21:31:39 607

原创 C++实现转置矩阵

给你一个二维整数数组matrix, 返回matrix的。矩阵的是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。

2024-09-10 23:15:28 817

原创 Makefile快速入门教程

定义方式# = := ::= 变量名区分大小写,可以是任意字符串,不能含有":", “#”, “=”使用方式# $() 或者 ${}main.o : $(files) # 或者 ${files}...如果变量名只有一个字符,使用时可以不用括号,如$a, $b, 但不建议这样用,不管是否只有一个字符都写成$(a), $(b)这种形式前面定义的变量都是单行的。变量值有多行,多用于定义shell指令语法。

2024-09-08 01:56:35 1242

原创 蓝桥杯——幸运数(C语言)

小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 是一个幸运数字,因为它有 4个数位,并且2+3-1+4。现在请你帮他计算从1至100000000 之间共有多少个不同的幸运数字。

2024-09-04 09:39:02 859

原创 蓝桥杯——奇怪的捐赠(C语言)

1.100 万元必须被正好分成若干份(不能剩余)。每份必须是了的若干次方元。比如:1元:7元,49元,343 元,地产大亨 Q 先生临终的选愿是:拿出 100 万元给 X社区的后民抽奖,以稍忘藉心中愧疚。3.在满星上述要求的情况下,分成的份数越多越好请你帮忙计算一下,最多可以分为多少份?2.相同金额的份数不能超过5 份。

2024-09-04 09:38:49 402

原创 蓝桥杯——压缩字符串(C语言)

压缩字符串 题目描述 实现一个算法来压缩一个字符串。压缩的要求如下: 1.需要判断压缩能不能节会空间,仅在压缩后字符昌比原字符串长度更短时进行缩。2.压缩的格式是将连续相同字符替换为字符 +数字形式,列如"AAABCCDDDD"变为"A3BC2D4" 输入描述 输入一行字符串,长度不超过 500 输出描述 输出一行。若输入的字符串可压缩,则输出压缩后的字符否则输出 0。

2024-09-04 09:38:35 647

原创 力扣题——罗马数字转整数(C++)

罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给定一个罗马数字,将其转换成整数。s[1, 3999]

2024-09-04 09:37:59 480

原创 力扣题——删除有序数组中的重复项(C++)

给你一个的数组nums,请你**** 删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsnumsk如果所有断言都通过,那么您的题解将被。

2024-09-04 09:36:48 1068

原创 C++数据结构实现转置矩阵

给你一个二维整数数组matrix, 返回matrix的。矩阵的是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。

2024-09-04 09:34:14 350

空空如也

空空如也

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

TA关注的人

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