- 博客(16)
- 收藏
- 关注
原创 重新梳理Qt当中的重要概念
从机制上将,发送信号的对象,确实持有一个连接列表,连接列表中列出来接收信号的对象,然后可以通过元对象系统直接调用接收者的槽函数,这不就是观察者模式吗?当遇到跨线程通信的需求时,Qt会把信号转化为事件,放到接受者所在的线程中的事件循环中,这样,当接受者事件循环到该信号时,才会处理该信号。1.元对象系统,继承自QObject的类,区别于普通cpp类的核心点。信号槽不是依靠函数指针实现的,他是通过元对象系统,找到槽函数列表来实现的,本质上是观察者模式,实现上也不是依赖于函数指针,而是依靠元对象索引实现的。
2025-10-26 14:04:36
162
2
原创 成了面向对象的拥趸
1.发现别管是对业务系统建模,还是对底层API的封装,还是cpp中的容器,还是Qt的界面,还是线程和socket,全都是对象思想。技术上的对象,大佬们封装好了。我们在编码时,利用现有的技术对象,例如qwidget、qgrouobox、qtablewidget。业务中的对象,则需要自己发明发现。对象思想无处不在,处处都是对象,这就是各种编程框架都隐含的思想。对象思想是现代编程的基础思想。
2025-10-25 07:43:49
96
1
原创 Qt做界面的一种方法
将复杂的界面,拆解成多个独立的类,每个类负责一部分模块的显示,最终将这些类组装起来,放到主界面中,这样就按照面向对象的原则,把多个类组合到一个类中,统一管理了。做界面遵循由小到大,由内到外的方法。组合的方法,可以在代码中通过addwiget的方式,添加到上级界面类中。更好的方法是在界面中提升的方法,提升为自定义类。
2025-10-25 06:55:18
72
5
原创 编程多年,遇到的最奇葩的问题
在一个类A中头文件中声明了数组、成员变量,还包含了很多其他类B、C、D、E的指针声明,在A的构造函数中实例化这些类。运行软件,奇葩的事出现了。每当调用B类指针的时候,程序就崩溃了。原来B类的指针是数组后第一个类,它的内存空间被数组挤占了。把类B的声明放到最后,b类调用没问题了。最后把数组改为vector,问题彻底解决。
2025-10-25 06:25:35
66
原创 成功将matlab生成的机械臂源码用Qt只做成动态库,并使用成功
然后就是解析符号了,Qt导出的是一个类,采用resolve()的方式,无法解析类名。因此,又回到制做动态库的工程,定义一个函数。今天,用了将近6个小时的时间,将matlab生成的,包含上百个头文件、源文件的c源码,只做成动态库,并成功使用该动态库。只做动态库的过程:创建Qt动态库项目,然后将导出的源码,添加进入工程。使用动态库时,才是隐式链接的方式,包含头库的头文件,则提示,xxx未定义,又出现了未定义的问题,搜索在头文件中能找到。模仿只做时的处理方法,使用extern c的方式,还是找不到定义。
2025-10-21 16:02:14
329
4
原创 如何准备算法面试题
2.一个是按照数据结构类型准备。也就是说,按照数组、字符串、链表、栈、队列、树、图这种方式,分类准备。书上也是按照这种分类进行布局的,每一种数据结构常考的算法是什么。比如链表有哪些常考的题目,这是中规中矩的准备方式。3.也可以按照算法类型,算法思想准备。比如,按照递归、迭代、贪心这种算法思想准备。快排用到了分治思想和递归,二叉树也用到递归,这也是一种方式。不过这种方式貌似有点乱。还是建议按照第一种方式准备。1.最近在准备面试,所以又学习了一遍数据结构,当初学的不好,面试问题也没回答好。
2025-01-13 13:48:32
160
原创 大公司为何注重数据结构?
大公司对数据结构的重视程度,似乎有点过于执着了,以前我是很不理解。有很多封装好的数据结构,还有很多现成的算法,直接拿来用不就行了吗?哪个客户也没有这么底层的需求吧。现在想想,数据结构是很多课程的基础,像操作系统的文件系统、数据库都会用到二叉树、b+树、还有进程调度时,会用到队列,这就是基础,理解了数据结构,有助于理解计算机运作的原理,有助于理解程序执行的过程。数据结构的使用如此广泛,以至于在各种基础软件中,随处可见它们的身影。还有就是,数据结构就像数学一样,可以区分一个人的智力水平,可以筛选出来聪明的人。
2025-01-10 19:57:32
247
原创 软件行业的技术与业务思考
2.技术也有分类,技术可以分为原理、客观类的,例如网络的原理、数据库原理、编译原理、语言特性、操作系统原理、各种框架的机制。对于那些客观技术,原理机制类的技术,大家都在认真学习,大学时也学的是这个。但第二种技术,却是更具有价值的,也是普通程序员常常忽略的,看不上的,觉得是花拳绣腿。要明白,在国内,哪怕是互联网大厂,都是做技术的应用而已,没有高精尖、没有高科技可言,而不是做技术的发明创造。技术服务于业务,哪怕是新技术出来了,也要有应用领域、应用场景,这样才有价值,不然只是研究作用,发挥不了商业价值。
2025-01-01 16:32:02
288
原创 如何学习数据结构与算法个人观点
一、首先要掌握链表、栈、队列、二叉树的属性和基本操作,从无到有的创建这几类数据结构,并封装好添加元素、查询元素、插入、删除等操作。对于链表就是添加节点、删除节点等。栈就是入栈、出栈,对于队列就是出队、入队。对于二叉树就是,插入节点、删除节点、查找节点。还有它们的遍历方法。这样就掌握了基本数据结构的基本操作。二、在掌握了基本数据结构的操作后。开始学习算法,排序、查找算法。重要的是找到算法背后的思想,例如分治、递归等,学会了这些思想,就算是入门了。
2025-01-01 09:37:33
245
原创 程序员的知识与能力
外企例如亚马逊、微软、苹果,在面试求职者时,更多的考察的是能力,具体来说是数据结构与算法能力,面向对象软件设计能力。知识是指可以阅读获取的,八股文就是最典型的,他们也不会关注框架的运用,还有那些死记硬背就可以掌握的知识点。知识的获取相对容易,能力的获取则要难的多。能力需要不断的模仿学习、实践思考,然后自己领悟其中的奥妙,才能获得。因此,他们虽然不问那么多八股文,但是他们的面试难度却很大。包括算法问题,软件设计问题。希望能把握住重点,提升能力,而不是记忆知识,不要把八股文当作重点,那样就本末倒置了。
2024-12-31 22:35:57
222
原创 数据结构与算法学习笔记
感觉学习算法和学习数学是一个模式。都是在学习解题思路,只不过算法学习的是逻辑问题的解题思路,数学学习的是数值计算方面的解题思路。算法竞赛和数学竞赛也很像。都有固定的题型,都有固定的解法。因此,面试考察算法就像高考考察数学一样,都体现了一个人的智力水平,理解能力,方法的迁移能力,变通能力。最后,数学解题思想是永不过时的,算法的解题思路,也是永不过时的。可以说,学会了有一种题型,这一类题目,都可以运用同样的思路,进行处理了。算法学家和数学家,都是高智力人群,而我们普通人只有跟随的份。
2024-12-31 16:16:20
453
1
原创 单向链表栈二叉树的c语言实现
(https://img-blog.csdnimg.cn/02e7492e27fa45d6bb7f4e2927158afb.jpg)(https://img-blog.csdnimg.cn/2dc8d9797d324043b7439bfa5ccdfe02.jpg)(https://img-blog.csdnimg.cn/a9577aa87b6340029fe7750d552ea971.jpg)(https://img-blog.csdnimg.cn/198bf80701a5449e85b4618b1e048
2024-12-27 10:54:45
162
原创 数据结构学习
最近开始学习数据结构与常用算法。用c语言实现各种数据结构与算法。有的算法感觉比刚接触数据时理解起来更加自然顺畅了。重要的是认识到,一个指针就可以代表一种数据结构。这个指针指向链表,该指针就可以代表链表,指向一棵树,就代表这棵树。有了指针,就可以对链表、二叉树,做任何操作了。学习了快速排序算法,链表和二叉树的创建和增删改查操作。这也是数据结构最基础的能力要求了吧。看了程序员面试金典这本书,继续学习数据结构和算法。
2024-12-23 13:38:51
114
1
原创 数据结构的不变性
1960年左右就有了二叉树了,1970年就有了红黑树,这么多年了,这些d数据结构还在大量使用,可见在日新月异的计算机领域,数据结构是多么重要核心的知识。有的算法几十年了,还在大量使用,还在面试时经常遇到。学会了数据结构与算法,就有了计算机思维,知道如何组织数据,处理数据的步骤了。因此,算法是计算机科学的基石,也是永恒的主题。
2024-12-21 16:57:34
178
4
原创 数据结构与算法学习笔记
一、遇到问题,首先考虑,用什么样的数据结构来描述业务数据,根据问题的场景来选择数据结构。如果是少量数据简单的查询、存储,可以用线性结构,vector,如果是高效的查询,插入删除,则需要用二叉树,排序的话,也要用二叉树,因此就需要用关联容器,而不是顺序容器了。有了容器了,接下来就是用什么样的算法了。
2024-12-21 15:51:58
117
3
原创 linux下找不到动态库,编译时
问题在于,ld默认搜索路径下,这个库存在,但ld仍然提示找不到,usr/lib和usr/local/lub下都有。考虑到目录下库文件的名字为lib hired us.so.13与程序中的名字libhiredis不一致,我怀疑名字不完全一致你原因,复制了13版本的库,改名字为libhiredis.so还是不行,后来通过建立软链接的方式,就可以了。首先名字要完全一致,其次,必须通过建立软链接的方式,自己改名字不行。
2024-11-13 11:44:03
302
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅