- 博客(96)
- 资源 (6)
- 收藏
- 关注
原创 Qt应用的高分辨率适配
工作中需要面对触控大屏的4K分辨率场景,同时也有越来越多人开始使用高分屏,原来多基于1080p分辨率开发的Qt程序无法很好适配更高的分辨率。
2024-08-30 23:12:20
2499
原创 QT相关知识
所有继承于QObject的类可以 返回元对象系统为其生成的metaObject对象,可以通过该对象中的方法获取QMetaMethod、QMetaProperty、QMetaEnum对象,通过这些对象就可以通过方法名称、变量名称、枚举名称直接操作,而不需要知道类的具体定义。槽函数是普通的C++函数,可以用一般的方式被调用,也可以将槽函数定义为虚函数,唯一的特点是可以被信号函数连接。如果有对象对信号感兴趣,就使用connect函数绑定来处理这个信号,信号发出时被连接的槽函数会自动被调用。
2023-06-19 20:16:17
1143
原创 操作系统知识
一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问,其他所有试图访问此临界区的线程将被挂起,一直持续到进入临界区的线程离开。消息队列的本质就是存放在内存中的消息的链表,而消息本质上是用户自定义的数据结构。Linux系统中,一个进程可以在任何时候发送信号给另一进程,一旦有信号产生对信号的处理方式有几种:执行默认操作(例如终止进程)、处理信号、忽略信号。:系统独立调度和分派的基本单位,线程自己不拥有操作系统资源,但是该线程可与同属进程的其它线程共享该进程所拥有的全部资源。
2023-05-16 20:23:42
498
原创 C++基础
纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数,包含纯虚函数的类称为抽象类。C++11为C++标准库带来了三个智能指针,分别是shared_ptr、unique_ptr、weak_ptr,使用智能指针就不用去主动管理内存,智能指针会自动释放内存。存在虚函数的类会有一张虚函数表,每个虚函数的函数指针都会在这个虚函数表中,该类对象的前4字节(32位系统)/8字节(64位系统)会指向虚函数表的指针。其他相关:函数覆盖(实现了和继承类中一样的函数,但基类没有声明虚函数)
2023-04-19 21:56:29
498
原创 设计模式-原型模式
导览:开篇(23种设计模式)、面向对象设计的6大原则创建型结构型行为型工厂方法(Factory Method)<类>适配器(Adapter)<类, 对象>解释器(Interpreter)<类>抽象工厂(Abstract Factory)<对象>桥接(Bridge)<对象>模板方法(Template Method)<对象>建造者(Builder)<对象>组合(Composite)&
2021-06-20 22:03:59
281
1
原创 设计模式-建造者模式
导览:开篇(23种设计模式)、面向对象设计的6大原则创建型结构型行为型工厂方法(Factory Method)<类>适配器(Adapter)<类, 对象>解释器(Interpreter)<类>抽象工厂(Abstract Factory)<对象>桥接(Bridge)<对象>模板方法(Template Method)<对象>建造者(Builder)<对象>组合(Composite)&
2021-06-14 21:31:34
192
原创 设计模式-抽象工厂模式
导览:开篇(23种设计模式)、面向对象设计的6大原则创建型结构型行为型工厂方法(Factory Method)<类>适配器(Adapter)<类, 对象>解释器(Interpreter)<类>抽象工厂(Abstract Factory)<对象>桥接(Bridge)<对象>模板方法(Template Method)<对象>建造者(Builder)<对象>组合(Composite)&
2021-05-30 21:29:21
198
原创 设计模式-工厂方法模式
导览:开篇(23种设计模式)、面向对象设计的6大原则创建型结构型行为型工厂方法(Factory Method)<类>适配器(Adapter)<类, 对象>解释器(Interpreter)<类>抽象工厂(Abstract Factory)<对象>桥接(Bridge)<对象>模板方法(Template Method)<对象>建造者(Builder)<对象>组合(Composite)&
2021-05-24 09:51:16
258
原创 设计模式-面向对象设计的6大原则
导览:开篇(23种设计模式)、面向对象设计的6大原则创建型结构型行为型工厂方法(Factory Method)<类>适配器(Adapter)<类, 对象>解释器(Interpreter)<类>抽象工厂(Abstract Factory)<对象>桥接(Bridge)<对象>模板方法(Template Method)<对象>建造者(Builder)<对象>组合(Composite)&
2021-05-09 22:14:53
220
原创 设计模式-开篇(23种设计模式)
23种设计模式广为流传的23中设计模式来源于面向对象软件设计的经验总结,这些模式都是经常能用到的重复设计,了解这些模式能够让我们更加简单方便地复用已有的成功设计。本系列会一一介绍23中设计模式,主要内容从《设计模式-可复用面向对象软件的基础》中总结而来。设计模式分类按照目的进行分类,设计模式被分为创建型、结构型、行为型。创建型模式:创建对象相关结构型模式:处理类或对象的组合行为型模式:描述类或对象之间的交互和职责分配按照范围进行分类,设计模式被分为类模式、对象模式。类模式:处理类和子类
2021-05-05 22:03:58
226
原创 homebrew最新国内源安装方法(2020年3月)
前言因为一些原因卸载了homebrew,但是用官网的安装方法很慢且容易中断,想用国内的源进行安装。网上大部分的方法都是cd ~curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install然后修改源后,用ruby进行安装。但是这个地址已经被“取缔”了,在浏...
2020-03-09 01:02:56
33724
27
原创 python函数
函数定义和调用下面的代码是简单的函数定义例子,分别是无参数函数和有参数函数:def print_hello(): print("Hello world!") def print_string(string): print(string) print_hello()print_string("test")输出:Hello world!test多个参数的函数可...
2019-06-13 09:19:00
304
原创 python用户输入
接收用户输入input函数能够让程序暂停运行,等待用户进行输入,并获取输入的值:#hello.pymsg = raw_input("Please input: ")print(msg)终端结果:Please input: hellohello上面的例子用的是raw_input,在python2中该函数能更好的读取字符串输入,如果使用input就需要在字符串两边加上引号。inpu...
2019-05-12 22:00:29
1688
原创 python语句-if、while
if语句用if语言比较是否相等/不相等:a = 1if a == 1 : print("equal")else : print("not equal")b = "test"if b != "hello" : print("not equal")else : print("equal")输出:equalnot equalif语句多个条件的与/或判断:a = 90...
2019-05-12 17:25:43
415
原创 python字典
使用字典python的字典由一些列key和value构成,可以用于存放同类的数据,也可以用来存放同属的数据:scores = { "xiaoming": 60, "xiaohong": 70, "xiaohei": 80}infos = { "name": "xiaoming", "age": 20, "sex": "female"}print(scores)print(infos)...
2019-04-27 16:54:08
341
原创 python数据类型
变量message='hello world!'print(message)输出:hello world!以上代码中,message就是一个变量,在python中使用变量时,需要遵守一些规则:变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头变量名不能包含空格,但可使用下划线来分隔其中的单词。不要将Python关键字和函数名用作变量名,例如prin...
2019-03-09 21:09:10
218
原创 python环境搭建
Linux和MacOsX下的python环境搭建在Linux系统和MacOsX系统中,一般都默认安装了python。可以在终端中输入python或python3进行确认,如果已经安装会显示以下内容:Python 2.7.10 (default, Jul 30 2016, 18:31:42) [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0...
2019-02-24 15:02:40
254
原创 python彩蛋之The Zen of Python
python中有个很有趣的“彩蛋”,也是很重要的一个“彩蛋”——The Zen of Python。输入import this之后就会出现以下的内容:The Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than com...
2018-11-09 21:52:17
490
原创 《STL源码剖析》笔记-配接器adapters
上一篇:《STL源码剖析》笔记-仿函数(函数对象)配接器adapters在STL中起到转换、连接的作用,包括仿函数配接器(function adapter)、容器配接器(container adapter)、迭代器配接器(iterator adapter)。容器配接器在介绍序列式容器queue和stack时(https://blog.youkuaiyun.com/WizardtoH/article/de...
2018-11-03 12:57:13
333
原创 《STL源码剖析》笔记-算法
上一篇:《STL源码剖析》笔记-hash_multiset、hash_multimapSTL提供了很多算法,以下列出部分常用的算法:int main(int argc, char* argv[]){ std::vector&amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;gt; vec = {0,1,2,3,4,5,6,7,8,9}; // accumulate:计算指定容器区域中,以0
2018-10-31 23:03:45
347
原创 《STL源码剖析》笔记-hash_multiset、hash_multimap
上一篇:《STL源码剖析》笔记-hash_set、hash_maphash_multiset/hash_multimap与hash_set/hash_map特性一致,区别在于multiset/multimap的键值能够重复。也就是说,他们使用了hashtable的insert_equal而非insert_unique。hash_multiset和hash_set的区别:... templ...
2018-10-24 22:05:19
287
原创 《STL源码剖析》笔记-hash_set、hash_map
上一篇:《STL源码剖析》笔记-hashtablehash_sethash_set底层机制由hashtable提供,和set一样能够快速搜索元素,但是set元素插入后会自动排序,而hash_set是无序的。template &lt;class Value, class HashFcn = hash&lt;Value&gt;, class EqualKey = equal_to&lt;...
2018-10-22 09:13:42
403
原创 《STL源码剖析》笔记-map
上一篇:《STL源码剖析》笔记-setmap容器的特性是所有元素都会根据键值自动排序,并且所有元素都是pair,拥有键值和实值。pair的第一个元素为键值,第二个元素为实值。map当中不允许存在两个键值相同的元素。pair的定义pair定义了两个模板参数,并且访问权限为public。template &amp;lt;class T1, class T2&amp;gt;struct pair { ty...
2018-10-13 10:02:00
589
原创 《STL源码剖析》笔记-set
上一篇:《STL源码剖析》笔记-RB-treeset容器的特性就是所有元素都会根据键值进行自动排序,和map不同的是set的键值就是实值。并且通过set的迭代器无法改变set的键值,因为改变键值会打破set的排序。set排序的特性能够由rb-tree实现且所需接口rb-tree都已经提供,所以set底层采用了rb-tree。// 默认使用递增排序template &amp;amp;lt;class Key,...
2018-10-12 19:32:00
345
原创 《STL源码剖析》笔记-RB-tree
上一篇:《STL源码剖析》笔记-树的介绍除了上一篇说到的AVL-tree之外,另一个常用的平衡二叉搜索树是RB-tree(红黑树)。RB-tree满足二叉搜索树的规则之外,还遵循以下特性:每个节点不是红色就是黑色。根节点为黑色。如果节点为红色,其子节点必须为黑色。任意一个节点到到NULL(树尾端)的任何路径,所含之黑色节点数必须相同。第四个特性和第三个特性确保了没有一条路径会比其他...
2018-10-10 18:40:25
766
原创 《STL源码剖析》笔记-树的介绍
上一篇:《STL源码剖析》笔记-priority_queue、heap算法序列式容器介绍完后就是关联式容器,关联式容器内部数据结构大多是平衡二叉树以获得较好的搜寻效率,因此先对树进行大概的了解。树由节点(nodes)和边(edges)构成。整棵树有一个最上端节点,称为根节点(root)。每个节点可以拥有具有方向性的边(directed edges),用来和其他节点相连。相连节点之中,在上者称为...
2018-09-22 22:11:42
544
原创 《STL源码剖析》笔记-priority_queue、heap算法
上一篇:《STL源码剖析》笔记-stack、queuepriority_queue是一个带权值的队列,权值最高的自动排在最前面,默认排序从大到小,同时具有队列先进先出、没有迭代器的特性。priority_queue也是一种container adapter,底层容器默认为vector。stack定义完整列表// 排序方式less(从大到小),也能指定为greater(从小到大)templa...
2018-09-22 00:13:04
491
原创 《STL源码剖析》笔记-stack、queue
上一篇:《STL源码剖析》笔记-dequestack是一种先进后出的数据结构,它只有一个出口,只能够在顶端新增、移除、取得元素,没有其他方式进行操作。并且stack默认示意deque作为基础容器来实现的,因为vector在扩容的时候有较差的时间复杂度,而list虽然有平稳的时间复杂度,但是总体平均复杂度较高,所以折中使用deque作为stack的底层容器。另外stack没有迭代器,因为只支持先...
2018-09-16 09:58:16
396
原创 《STL源码剖析》笔记-list
上一篇:《STL源码剖析》笔记-vector相较于vector的连续线性空间,list就复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。list的节点template &amp;amp;amp;amp;amp;lt;class T&amp;amp;amp;amp;amp;gt;struct __list_node{
2018-09-11 17:21:11
647
原创 《STL源码剖析》笔记-vector
上一篇:《STL源码剖析》笔记-容器的分类vector的元素排列和操作方式与array很相似,不同的是vector是动态空间,能够随着元素的添加自动扩展空间。它的实现关键在于对大小的控制以及重新配置空间时移动元素的效率。vector的迭代器// alloc是SGI STL的默认空间配置器template &amp;amp;amp;amp;amp;lt;class T, class Alloc=alloc&amp;amp;amp;amp;amp;gt;cla
2018-09-09 22:03:41
1307
原创 《STL源码剖析》笔记-容器的分类
上一篇:《STL源码剖析》笔记-迭代器iterators任何特定的数据结构都是为了实现某种特定的算法,STL中的容器是将运用最广的一些数据结构进行实现,例如:数组array、链表list、树tree、堆栈stack、队列queue、散列表hash talbe、集合set、映射表map等。根据数据在容器中的排列特性,可以分为序列式容器和关联式容器。 序列式容器序列式容器,其中的元素都可...
2018-09-06 23:58:44
512
computerinfo:Duilib界面开发Window下的信息获取工具
2015-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人