- 博客(37)
- 收藏
- 关注
原创 C++迭代器失效问题以及删除时迭代器失效解决方案
注:比较逗的是别人写的这个删除函数在他的功能迭代器是没有失效的,删除多个数据时能够正常删除.然后我在这个基础上开发时删除时就给我跳段错误,而且是删除多个时才报错.然后就想起来,对于vector而言,只有被删除元素之前的迭代器、指针和引用有效,被删除元素以及被删除元素之后的迭代器、指针和引用均会失效。
2024-09-03 11:48:26
385
原创 时间轮(定时器)
时间轮使用哈希表的思想,将定时器散列到不同的链表上.这样每条链表上的定时器数目豆浆明显少于原来一条排序链表上的定时器数目,插入操作的效率基本不受定时器数目的影响.对于时间轮而言,要提高定时精度,就要使SI值足够小,要提高执行效率,则要求N值足够大。此次表示一个简单的只有一个轮子的时间轮。
2024-08-05 09:25:40
164
原创 C++设计模式PIMPL模式
这种模式的核心思想是将类的实现细节从其接口中分离出来。想象一下,我们生活的世界中充满了这种分离:我们不需要知道电视是如何工作的,只需要知道如何使用遥控器。同样地,Pimpl模式允许我们仅展示类的功能,而隐藏其内部工作方式。在C++中,头文件依赖是一个普遍的问题。当一个头文件改变时,所有包含这个头文件的源文件都需要重新编译。如果我们把所有这些都放在头文件中,那么任何小小的修改都会触发大量的重新编译。Pimpl模式通过将实现细节移到源文件中,避免了这个问题,从而使得头文件变得轻量级和稳定。
2024-07-26 11:17:01
584
原创 Linux 将以root身份启动的进程切换为以一个普通用户身份运行 (C)
【代码】Linux 将以root身份启动的进程切换为以一个普通用户身份运行 (C)
2024-07-15 08:53:16
273
原创 QT获得本地IP以及MAC地址
getMacString() : 通过本地的ip地址获得该IP地址关联的网络接口的MAC地址。getIPSttring():连接的ip以及端口号来返回本地的ip地址。
2024-07-12 15:25:04
644
2
原创 Linux 在文件内读取时间段字符串并解析判断当前时间是否在时间段内 C语言
格式: 00:00-12:34|13:56-15:00(不确定几个时间段,每个时间段以|分隔)最近需要实现一个判断当前是否是上班时间段内,但是需要从文件中读取特定的格式时间时间段。读取特定格式时间并转化不难但是挺麻烦的。
2024-06-26 15:00:23
337
原创 linux 往文件中写日志函数 C语言
改完参数记得更改sprintf()中的参数。函数的参数:想往日志里写什么就加什么参数。时间|进程绝对路径|IP|端口|结果。
2024-06-26 14:43:16
325
原创 linux 代码获得当前中国时区时间(格式:年月日时分秒) C语言
生成日志时总要输出时间,这个函数将字符串格式的时间保存在bufTime中.第一个参数char 数组,第二个参数数组长度。
2024-06-26 14:36:58
315
原创 linux 获得打开指定文件进程的PID和该进程的绝对路径 C语言
下面代码效果是查出哪个进程打开了指定文件,可以查出打开文件进程的PID以及该进程所在linux的绝对路径(只能查出一个,想得出全部的需要小改一下代码),并且可以自己选择是否kill掉这个进程。
2024-06-26 14:31:23
287
原创 Linux 代码中获取命令行输出 C语言
下面代码是一个demo,效果是查出哪个进程打开文件,可以查出打开文件进程的PID以及该进程所在linux的绝对路径(只能查出一个,想得出全部的需要小改一下代码)执行shell命令并获取命令输出的代码为executeCMD(),需要的话直接复制函数即可。如果shell多行输出则会接在result后面。
2024-06-26 14:26:06
396
原创 Linux 相对路径转化为绝对路径 C语言 (realpath函数)
如果resolved_path为NULL,则该函数调用malloc分配一块大小为PATH_MAX的内存来存放解析出来的绝对路径,并返回指向这块区域的指针。事实上,我的代码中第一种用法absPath很有可能会越界,如果传入的第二参数 resolved 非 null 指针,一定要保证有足够的空间存放格式化的地址,可以使用PATH_MAX宏。将参数path所指的相对路径转换成绝对路径后存于参数resolved_path所指的字符串数组或指针中。但是有的系统可能会没有这个定义,所以还是建议使用第二种用法。
2024-06-26 09:47:17
1272
原创 可逐步调试的C++排序算法(快速,计数,归并,希尔,选择,冒泡,插入排序)
【代码】可逐步调试的C++排序算法(快速,计数,归并,希尔,选择,冒泡,插入排序)
2024-04-19 16:30:44
147
原创 QT6连接mysql数据库(亲测可用,包含32位编译器连接32位mysql,64位编译器连接64位mysql)
首先要查看自己QT是多少位的.笔者按照编译器位数来看的.例如笔者就32位和64位编译器都用过,所以 ODBC32位和64位都下载了.如果没试过github开源编译好的mysql驱动可以参考这篇博客:(因为这个方法是笔者试过的几个方法里最简单的了)(4)安装之后再电脑左下角搜索栏中输入ODBC即可查看安装后的ODBC。包括使用github开源的编译好的mysql驱动之后还显示编译失败.(3)下载完ODBC之后,双击安装一直点next即可完成安装.(8)回到Qt中测试连接数据库的代码:(函数形式)
2024-03-11 09:11:43
1163
原创 基于Qt,Mysql,百度识图的表格图像识别输出demo(优化后可作为期末项目)
在这里占个坑先,慢慢会更新这个项目的实现过程.具体演示如视频所示.本来想发布为软件的但是有bug需要优化.发出来是为了给一些需要实现大作业但是没思路不知道写什么的同学看.
2024-03-06 10:16:17
590
原创 设计模式C++代理(Proxy)
参考视频:【设计模式(完整版)】https://www.bilibili.com/video/BV1Zd4y1t7HK?
2024-02-08 15:20:08
497
原创 设计模式C++享元
注:原视频:【设计模式(完整版)】这个设计模式比较少用,因为这个问题出现需要这个设计模式时一般都会从别的层面解决,比如数据库层面.
2024-02-07 15:27:46
590
1
原创 设计模式C++外观
分类:(对象)结构型问题:有一套复杂的视频系统,以及一套复杂的音频系统.希望简化使用流程,提供简化的操作面板.解决方案:为子系统中一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得子系统更加容易使用.开放用户真正关心的功能.
2024-02-04 14:46:40
523
1
原创 VS中双击QT *.ui文件失败问题解决方案
将Qt Designer中的Run in Detached window改为True。拓展->Qt VS Tools->Options。之后点击General,如下图。此时双击便可以打开了。
2024-02-02 15:36:15
768
原创 设计模式C++装饰
分类:(对象)结构型问题:饮料店订单系统,饮料有多种,并且可以选择加牛奶,冰激凌,巧克力等配料.解决方案:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更加灵活.找出基本组件和可选层次.
2024-02-02 14:49:23
766
原创 设计模式C++组合
分类:(对象)结构型问题:复杂订单的计算,有两类对象:产品和盒子.一个盒子中可以包含多个产品或多个小盒子.这些小盒子中同样可以包含一些产品或更小的盒子,以此类推.解决方案:将对象组成树形结构以表示"部分-整体"的层次结构.使得用户对单个对象和组合对象的使用具有一致性.
2024-02-01 14:20:47
811
1
原创 设计模式C++桥接
分类:(对象)结构型问题:遥控器和控制的设备属于同一个商品的组成部分.需要一个类能描述这样的商品,描述不同的遥控器和设备.解决方案:将抽象部分(遥控器中的按钮)与它的实现部分(实现遥控器按钮功能的设备)分离,使他们都可以独立的变化.即使用组合的方式来代替继承,将一个类层次转化为多个相关的类层次,避免单个类层次的失控.在抽象和实现间架起一座桥梁.
2024-01-31 15:18:12
505
原创 设计模式C++适配器
分类:(类)结构型,(对象)结构型问题:开发一款股票市场检测程序,会从不同来源下载XML格式的股票数据,然后向用户呈现出分析图表.但是,分析函数库只兼容JSON格式的数据.解决方案:讲一个类的接口转换为客户希望的另一个接口.使得原本不兼容的一些类可以一起工作.即创建一个适配器.这是一个特殊的对象,能够转换对象接口.
2024-01-30 11:21:54
1489
1
原创 设计模式C++单例模式
分类:(对象)创建型问题:对于一些类来说,只有一个实例是很重要的.例如数据库或其共享资源的访问权限.并且这个实例需要易于被访问.解决方案:保证一个类只有一个实例,并提供一个访问它的全局访问点.
2024-01-29 15:36:09
365
原创 设计模式C++原型(类似C++拷贝构造函数)
分类:(对象)创建型问题:希望复制一个状态完全相同的对象.首先,新建一个相同类的对象.然后,复制所有成员变量.但是,有时候不知道具体类型,而且成员变量可能是私有的.(从外部复制对象并非总是可行的)解决方案:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.即复制已有对象,而无需使代码依赖他们所属的类.(调用拷贝构造函数)
2024-01-27 19:40:18
387
1
原创 设计模式C++生成器(建造者模式)
分类:(对象)创建型问题:1.构造一个房屋,需要考虑是否有车库,游泳池,花园,雕塑等,需要对诸多成员变量进行初始化工作.都写在构造函数里?每种都可能创建一个新的类?2.相同的步骤需要能够产生不同的产品,例如使用木头和玻璃盖出来的是普通住房.用黄金和水晶建造出来的是宫殿.解决方案:讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.即将对象构造代码从产品类中抽取出来,并将其放在一个名为Builder的独立对象中.
2024-01-25 14:41:18
1916
原创 设计模式C++抽象工厂
分类:(对象)创建型问题:家具城里有沙发,椅子,茶几等产品.产品有不同风格,如现代,北欧风,工业.希望客户收到的出产品风格统一,并可以方便的添加新产品和新风格.(这里不同风格相当于苹果手机搭配安卓充电线,我们想要苹果手机搭配苹果充电线这种统一风格的来使用)解决方案:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们确定的类.
2024-01-24 15:54:45
1509
1
原创 设计模式C++工厂方法
分类:(类)创建型这个工厂方法就是一个像工厂一样的方法,而方法则是类的成员函数.就像养宠物一样,我们不希望让宠物到处乱跑,哪里都是它,把它关起来,限制活动区域到一定的大小.我们这里学习的就是具体怎么做.原则:把new关起来,实现创造者和产品松耦合(把创建的过程延迟到对象)问题:一个物流公司最初只使用卡车运输,现需要增加轮船运输业务.目前的程序代码只与卡车关联.(需要改变现有代码,同时考虑增加以后的别的业务)解决方案:定义一个用于创建对象的接口,让子类决定实例化哪一个类.factoryMethod使
2024-01-23 16:12:21
372
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人