自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STL和泛型编程

以STL为目标探讨泛型编程。

2024-03-25 14:17:17 637

原创 面向对象高级编程下

设计一个类Fraction表示分数,包含分子和分母。我们希望它能自动转换为double类型,并参与运算。当编译器执行到这一行的时候,发现Fraction类型和一个整型或浮点型相加,首先找有没有重载+运算符,发现没有。然后找4能不能转换为Fraction类型,不能。最后找到转换函数,f可以转换为double类型。转换函数的定义如下:特点:考虑将Fraction转化为其它类型,如string。当编译器执行到这一行的时候,发现Fraction类里重载了+运算符,但是+右边应该是Fraction类型的对象。由于Fr

2024-03-09 11:24:48 790

原创 面向对象高级编程上

如果不重写拷贝构造或者拷贝赋值,那么编译器默认的拷贝构造和拷贝赋值函数,是简单的将一个对象的值赋值给另一个对象,也就是说,在有指针成员的情况下,两个对象最后指针指向同一块内存空间,这就是浅拷贝问题。如图,创建一个子类的对象myDoc,调用父类的函数OnFileOpen(),在OnFileOpen函数的执行过程中,发现Serialize函数被子类重写了,因此转过去执行子类重写的该函数,最后再回到父类的OnFileOpen中执行。因此不同的对象调用real,传入的this是各自的对象,不同的。

2024-03-05 16:17:27 835

原创 文本按行读取

有些文本每行结尾是\r\n,有些文本是\r。如果用getline读取,会导致\r的文本全都读成一行,影响后续操作。因此只能一个字符一个字符判断,无论哪种文本,都是先出现\r,因此当遇到\r的时候,再查看下一个字符,进行后续操作。

2024-03-05 10:44:59 359

原创 宽字符窄字符的相互转化

当step文件的存放路径有中文时,会导致读取失败。

2024-03-05 10:39:18 473

原创 LeetCode刷题

给定一个增序的整数数组和一个值,查找该值第一次和最后一次出现的位置。输入输出样例:输入是一个数组和一个值,输出为该值第一次出现的位置和最后一次出现的位置(从0开始);如果不存在该值,则两个返回值都设为-1。给定一个增序的整数数组和一个值,查找该值第一次和最后一次出现的位置。输入输出样例:输入是一个数组和一个值,输出为该值第一次出现的位置和最后一次出现的位置(从0开始);如果不存在该值,则两个返回值都设为-1。[外链图片转存中…(img-7A3J7YKO-1709605102902)]

2024-03-05 10:19:49 758

原创 项目管理工具git

集中式版本控制系统集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,那就GG了.分布式版本控制系统分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。

2024-02-26 21:03:40 1137

原创 项目部署和介绍

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。

2024-02-24 23:33:20 799

原创 STEP格式处理器

STEP格式越来越广泛地用于各种软件之间的数据交换,其中涉及CAD、PDM、Analysis等软件。STEP格式远远不止是一个“交换标准”而已,它提供了一种可升级的模块化数据交换方法。对于OCCT,这主要适用于CAD数据,但这不是限制,针对特定应用的其他类型数据也可以处理。按照最新的定义和规则,为技术应用提供数据交换;根据特定需求或一般业务用途的演变,扩展案例覆盖范围;应用程序数据架构方面的专业知识,从STEP 定义中获得经验,并更容易地映射到它们,以实现与外部世界更好的互操作性。

2024-02-21 14:47:07 349

原创 mysql数据库

注意 :mysql默认语言集是latin1,每次在创建数据库的时候应指定字符集。Oracle是在安装时,即指定了字符集。注意,在mysql中对表进行操作前,必须先选择所使用的数据库。对表本身进行的操作:创建,查看,修改,删除。可以修改数据库的字符集,不能修改数据库名。查看mysql的服务状态。会对存入的数据进行检查。

2024-02-19 17:11:59 917

原创 Oracle数据库

小括号( )主查询和子查询可以是不同表,只要子查询返回的结果主查询可以使用即可可以在主查询的where、select、having、from后都可以放置子查询不可以在主查询的group by后面放置子查询 (SQL语句的语法规范)一般先执行子查询(内查询),再执行主查询(外查询);但是相关子查询除外一般不在子查询中使用order by, 但在Top-N分析问题中,必须使用order by单行子查询只能使用单行操作符;多行子查询只能使用多行操作符子查询中的null值。

2024-02-02 18:48:08 1866

原创 深入理解条件变量

条件变量什么是条件变量为什么用条件变量?为什么pthread_cond_wait需要加锁?保护共享数据防止竞态条件条件变量的具体用法初始化条件变量阻塞当前线程,等待条件成立解除线程的“阻塞”状态销毁条件变量条件变量的实际应用什么是条件变量条件变量是线程的另外一种同步机制,这些同步对象为线程提供了会合的场所,理解起来就是两个(或者多个)线程需要碰头(或者说进行交互——一个线程给另外的一个或者多个线程发送消息),我们指定在条件变量这个地方发生,一个线程用于修改这个变量使其满足其它线程继续往下执行的条件,其它

2024-01-26 18:01:36 827

原创 C/C++读写文件和stringstream类

本文主要详解C/C++对文件的所有常见方法汇总以及stringstream类用法。

2024-01-23 11:05:28 965

原创 Ubuntu无网络解决办法

将第五行 managed=False 改为 managed=True。注意看桌面右上角状态来会自动恢复网络连接的,会出现图标。用vim打开NetworkManager.conf。2.更新NetworkManager的配置。3.删除NetworkManager配置。如果本身就是True就不用改了。1.进入root并输入密码。

2024-01-03 21:17:45 674 1

原创 Linux高并发服务器开发之网络编程

Linux网络编程

2023-12-31 15:01:35 528

原创 哈希三道题

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

2023-12-24 21:38:46 422

原创 算法学习——动态规划

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。这是标准的背包问题,以至于很多同学看了这个自然就会想到背包,甚至都不知道暴力的解法应该怎么解了。

2023-12-24 10:09:02 1513

原创 算法学习——二叉树

我们来看看链式存储的二叉树节点的定义方式。int val;

2023-12-22 06:42:08 1205

原创 算法学习——回溯算法

从下图中红线部分可以看出,在集合[1,2,3,4]取1之后,下一层递归,就要在[2,3,4]中取数了,那么下一层递归如何知道从[2,3,4]中取数呢,靠的就是startIndex。第一次取1,集合变为2,3,4 ,因为k为2,我们只需要再取一个数就可以了,分别取2,3,4,得到集合[1,2] [1,3] [1,4],以此类推。示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]

2023-12-19 21:24:27 897

原创 算法学习——栈与队列

如果还记得编译原理的话,编译器在词法分析的过程中处理括号、花括号等这个符号的逻辑,就是使用了栈这种数据结构。再举个例子,linux系统中,cd这个进入目录的命令我们应该再熟悉不过了。这个命令最后进入a目录,系统是如何知道进入了a目录呢 ,这就是栈的应用。这在leetcode上也是一道题目,编号:71. 简化路径,大家有空可以做一下。

2023-12-18 22:06:51 828

原创 算法学习——双指针法

原地移除数组上的元素,不能真正的删除,只能覆盖。i++) {这个代码看上去好像是O(n)的时间复杂度,其实是O(n^2)的时间复杂度,因为erase操作也是O(n)的操作。所以此时使用双指针法才展现出效率的优势:通过两个指针在一个for循环下完成两个for循环的工作。

2023-12-17 20:37:04 1001

原创 Linux高并发服务器开发之系统编程

Linux高性能服务器开发之系统编程

2023-12-16 23:23:09 961

原创 算法学习——字符串

说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP。匹配过程:在对主字符串(通常称为 “text”)和模式字符串(通常称为 “pattern”)进行匹配时,我们从主字符串的开始位置和模式字符串的开始位置开始匹配。当出现不匹配的情况时,我们利用 next 数组跳过那些不可能匹配的位置。写过KMP的同学,一定都写过next数组,那么这个next数组究竟是个啥呢?

2023-12-16 23:22:22 794

原创 算法学习——哈希表

一般来说哈希表都是用来快速判断一个元素是否出现集合里。对于哈希表,要知道哈希函数和哈希碰撞在哈希表中的作用。哈希函数是把传入的key映射到符号表的索引上。哈希碰撞处理有多个key映射到相同索引上时的情景,处理碰撞的普遍方式是拉链法和线性探测法。接下来是常见的三种哈希结构:数组set(集合)map(映射)在C++语言中,set 和 map 都分别提供了三种数据结构,每种数据结构的底层实现和用途都有所不同。

2023-12-15 21:44:28 707

原创 MFC项目训练

软件开发工具包(Software Development Kit),一般都是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。在Windows98以及以前的版本使用8位ANSI字符集,它类似于我们程序员熟悉的ASCII字符集。应用程序类的一个虚函数,MFC应用程序的入口。//给tab控件添加对话框//IDD_DIALOG1为dlg1资源IDm_tabCtrl.AddPage(TEXT("系统管理"), &dlg1, IDD_DIALOG1);

2023-11-29 20:41:39 910

原创 C++Primer(9-10章)

vector:可变大小数组。支持随机访问。deque:双端队列。支持随机访问。list:双向链表。只支持双向顺序访问。forward_list:单向链表。只支持单向顺序访问。array:固定大小数组。支持随机访问string:支持随机访问。

2023-08-28 11:32:40 38

原创 C++Primer(4-8章)

/将rhs的成员加到this对象的成员上//返回调用该函数的对象其中,return语句解引用this指针以获得执行该函数的对象。我们既可以在类的内部也可以在外部定义静态成员函数。在类的外部定义时,不能重复static关键字,该关键字只出现在类内部的声明语句。

2023-08-24 16:22:23 41

原创 C++Primer(1-3章)

C++11中的列表初始化vector对象创建指定数量的元素。

2023-08-21 11:15:04 34

原创 C++后端学习路线

很多同学 是看视频做项目,但有担心项目重复率太高,其实这样的项目重复率一定是高的,但跟着视频学完,绝对不能 代码和视频里一样一样的,而是要有自己的理解,然后找一些可以优化的地方,不断优化,这就体现出和别人的差别了。看github上的项目,首先要学会用,要把这个项目用起来,跑起来,然后再去看代码,很多录友都反过来了,项目都没运行都没跑起来,然后就开始专研代码,那是绝对看不懂的。《操作系统导论》概念讲的蛮清晰,然后还有配套作业可以写代码,之后拿《深入理解操作系统》按照目录看,这本书把计算机组成原理也包含了。

2023-08-16 10:16:10 111

原创 C++set与map

set和map都是关联式容器,与序列式容器(vector、list、deque等)不同的是,关联式容器里面存储的是<key,value>结构的键值对,在数据检索时比序列式容器效率高。set容器set是 C++ STL 中提供的容器,set是数学上的集合,其具有唯一性,即每个元素只出现一次,而 multiset 则是可重复集合,两者的内部实现是一棵红黑树,它们支持的函数基本相同。set是按照一定次序存储元素的容器。在set中,元素的value标识它(value就是key,类型为T),并且

2023-08-11 09:30:02 26

原创 算法学习——链表

int data;ListNode(int val) : data(val) , next(NULL) //节点的构造函数 {} };定义构造函数是为了方便我们创建节点的时候能够直接给节点初始化。如果我们不定义构造函数,使用编译器默认生成的构造函数,需要这两行代码。我们首先需要掌握链表的增删改查等基本操作。其次,为了对链表进行方便的操作,我们一般使用虚拟头结点。反转链表是高频题目,主要有迭代法和递归法。在删除倒数N个节点的题目中,使用了双指针法。最后的环形链表主要是数学证明。

2023-08-09 14:56:26 33

原创 C++枚举类型

enum :枚举类型的关键字enum_name:定义的枚举类型的名称{enum_table}:仅能使用元素表中的枚举元素。enum_val:声明枚举类型后,可以紧跟着一个枚举对象。

2023-08-07 11:19:45 34

原创 Qt图形化界面学习之翻金币案例

点击start按钮,进入下层界面,选择关卡。

2023-08-04 09:41:01 91

原创 Qt图形化界面学习之文件读写操作

我们首先拖动相应控件至布局中。将路径放入lineEdit中。QFileDialog::getOpenFileName函数的返回值是一个QString字符串,值为打开文件的路径,我们可以接受它然后返回。读取文件,放入textEdit中。我们需要用到file.open这个函数,其中的参数OpenMode的类型如下。接着我们可以设置只读参数,然后用readall函数将文件内容全读出来。默认读取编码格式是utf-8,可以利用QTextCodeC读取gbk格式。

2023-07-31 15:41:24 241

原创 Qt图形化界面学习之绘图事件

在事件分发中,如果返回的是true,代表用户要处理这个事情,不向下分发这个事件了。鼠标按下,在事件分发器中做拦截。

2023-07-29 17:41:49 118

原创 Qt图形化界面学习之定时器

接下来,我们想要设置两个计时器,一个每秒加1,一个每两秒加1。我们发现,startTimer是有返回值的,返回的是计时器的id。我们首先创建两个int类型的成员变量id1、id2。接着将两个计时器的id赋给它们。

2023-07-28 16:28:55 94

原创 Qt图形化界面学习之鼠标事件

但是这里有个问题,鼠标移动并没有显示坐标,因为button只能记录瞬间的结果,因此我们需要使用buttons。接下来我们实现点击鼠标,显示点击位置的坐标。然后在主窗口中提升该自定义窗口控件,但是发现基类是QLabel,所以我们需要去修改一下继承对象。最后,我们想要鼠标不用点击任何按键就能实时获取位置,设置鼠标追踪,只要鼠标移动就能捕获。要求实现鼠标进入label后打印鼠标进入,移出打印鼠标离开。我们在QLabel的重新实现函数中找到了与鼠标相关的函数。然后在.cpp中实现我们想要鼠标进入和移除实现的功能。

2023-07-28 15:18:01 271

原创 Qt图形化界面学习之自定义控件

该类名为widget,可以看作smallwidget实例化的一个对象,因此可以调用smallwidget中的函数。首先,我创建了两个widget,一个是主窗口,一个是我用来实现自定义空间的窗口。1.我先创建一个widget控件,然后将SmallWidget的控件加入进来。4.最后我们需要实现拖动按钮计数器增加,以及计数器增加,按钮自动拖动。2.我们选择提升为,然后将SmallWidget的控件提升到全局。在这里,我设计了一个自定义控件,通过拖动滚动条来实现计数器加减。最后让我们实现一个功能。

2023-07-28 10:59:05 75

原创 Qt图形化界面学习之控件按钮组

这样可以多行一次性放入listWidget,但是没办法设置居中。只有在设计界面才有切换的按钮。所以需要设计按钮来切换页面。Tool Box类似于分组,每一页可以有不同的内容。栈控件中,需要设置按钮来切换不同的页面。不分组的话这四个按钮只能有一个被选中。与上面的功能一样,不过是网页的样式。先创建一个空tableWidget。首先设置列数,然后才能添加列表头。利用QLabel显示动态图片。工具按钮,常用来显示图片。利用QLabel显示图片。设置单选按钮的默认值。点击按钮,选中拖拉机。

2023-07-28 09:14:43 106

原创 Qt图形化界面学习之登录窗口布局

现在空间可以随着窗口大小改变来改变大小了,可是又引出一个新的问题,我们想要界面好看的话,登录和退出,用户名密码对应输入这块,应该尽可能居中,并且登录和退出之间需要有空隙,那么就该使用弹簧了。但是我们发现,上下两部分widget之间空隙很大,并且不能通过拖动来改变widget大小,因此我们更改widget策略。现在用户名和对应输入框没有平行,并且用户名、密码也没有垂直,我们需要调整布局。最后,我们想要输入密码的时候不显示输入的密码,只需要改一个参数。菜单栏,工具栏,状态栏用不上,全部移除。

2023-07-26 13:10:02 121

空空如也

空空如也

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

TA关注的人

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