- 博客(37)
- 收藏
- 关注
原创 Docker——初识
物理机:实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。
2025-12-17 21:40:19
1111
原创 Selenium常用方法
如果通过安装驱动的方式来启动浏览器,每次浏览器更新后对应的驱动也需要更新,为了解决这个问题,selenium中提供了驱动管理工具webdriver-manager,有了webdriver-manager无需手动安装浏览器驱动,即使浏览器更新也不会影响自动化的执行。
2025-10-29 21:21:05
479
原创 C++11
C++11是C++的第二个主要版本,并且是从C++98起的最重要更新。它引入了大量更改,标准化了既有实践,并改进了对C++程序员可用的抽象。在它最终由ISO在2011年8月12日采纳前,人们曾使用名称“C++0x”,因为它曾被期待在2010年之前发布。C++03与C++11期间花了8年时间,故而这是迄今为止最长的版本间隔。从那时起,C++有规律地每3年更新一次。
2025-10-27 20:45:59
770
原创 Linux进程信号
/执行的程序叫做前台进程,它就是目标进程且必须只有一个,键盘等设备只有一个要确定是给确定的进程,前台进程的本质就是要从键盘获取数据的。./ &执行的叫做后台进程,它无法从标准输入种获取内容,但可以向标准输出打印。在一个父子进程中,父进程先退了,子进程就变成了孤儿进程会被操作系统回收在后台。jobs可以查看所有的后台任务,fg 任务号,把这个进程提为前台进程。ctrl+z:把进程切换到后台,bg 任务号,让后台进程恢复运行。
2025-08-10 21:47:35
1173
原创 进程间的通信
通信的本质是先让不同的进程看到同一份资源,然后才有通信的条件,这个条件是由操作系统提供的,在操作系统里面设置了通信接口。进程间通讯的目的:1、数据传输:一个进程需要将它的数据发送给另一个进程。2、资源共享:多个进程之间共享同样的资源。3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件(如进程终止时要通知父进程)。4、进程控制:有些进程希望完全控制另一个进程的执行(如debug进程),此时控制进程希望能够拦截另一个进程的所有消息,并能够及时知道它的状态发生改变。
2025-08-06 18:43:36
963
原创 库的制作与原理
库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,比如C语言中的printf函数,他就是在C语言的“sidio.h”里面。本质上来说库是一种可执行的二进制形式,库有两种:在Linux中命名特征,动态库(libxxxx.so)、静态库(libxxxx.a)。windows中命名特征,动态库(xxxx.dll)、静态库(xxxxx.lib)。
2025-08-01 10:32:11
874
原创 编译器-gcc/g++和自动化构建-make/Makefile
程序翻译需要经过4个过程:预处理(进行宏替换/去注释/条件编译/头文件展开等)、编译(生成汇编)、汇编(生成机器可识别代码)、链接(生成可执行文件或者库文件):把.o文件与库文件进行链接,生成可执行文件。
2025-07-25 14:53:46
444
原创 Qt网络编程
Qt为了支持跨平台,对系统网络编程的API(socket API)也进行了重新分装。实际Qt中进行网络编程也不一定使用Qt封装的网络API,也有可能使用的是系统原生API或者其他第三方框架的API。若要使用Qt中的网络编程的API,则要在项目中的.pro文件中添加network模块。我们学过的Qt的各种控件等常用的功能都是包含在QtCore模块中的,系统默认添加了,为啥Qt要和划分出这些模块呢?
2025-05-22 20:52:18
1148
原创 Qt多线程
Qt中的多线程API参考了Java中的线程库API的设计方式,针对系统提供的线程API重新封装了。要Qt的对线程,就需要创建一个继承自QThread的子类,通过多态重写其中的run函数,起到指定入口函数的方式。
2025-05-21 15:34:54
1242
原创 基于QT的仿QQ音乐播放器
分析:①"推荐"文本提示,即QLabel②"今日为你推荐"文本提示,即QLabel③具体推荐的歌曲内容,点击左右两侧翻页按钮,具有轮番图效果,将光标放到图上,有图片上移动画④"你的歌曲补给站"文本提示,即QLabel具体显示音乐,和③实际是一样的,不同的是③中音乐只有一行,⑤中的音乐有两行因为页面中元素较多,直接摆到一个页面太拥挤,从右侧的滚动条可以看出,整个页面中的元素都放置在QScrollArea中。
2025-04-26 14:56:09
3224
3
原创 基础的 IO
缓冲区是内存空间的一部分,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。通过一个现象了解缓冲区int main()close(1);close(fd);return 0;(代码6-1)代码6-1执行完成后生成了log.txt文件,但是它里面是0KB,没有任何内容;close(fd);return 0;
2025-04-24 15:51:51
767
原创 进程的控制
一个父进程希望复制自己,使父子进程创建一个新进程,新进程为子进程,原进程为父进程进程调⽤fork,当控制转移到内核中的fork代码后,内核做:1、分配新的内存块和内核数据结构给子进程2、将父进程部分数据结构内容拷贝至子进程3、添加子进程到系统进程列表当中4、Fork返回,开始调度器调度写时拷贝父子代码共享,父子在不写入时数据也是共享的,当任意一方试图写入时,便以写时拷贝的方式生成一份副本,这样就保证了进程的独立性。
2025-01-25 10:01:44
787
原创 深度理解进程的概念
进程=PCB+自己代码和数据PCB是存放进程的状态,代码地址,数据地址,id,优先级等信息的,里面包含进程的所有属性,通过PCB提供的属性来对辰戌进行管理,在Linux操作系统中PCB是task_struct.我们历史上执行的所有指令,工具,自己的程序,运行起来,全部都是进程。
2024-11-27 21:05:30
1131
原创 二叉搜索树
二叉搜索树又称二叉排序树,因为它的中序遍历可按大小打印数据若它的左子树不为空,则左子树上面的所有结点都小于或等于根结点的值;若它的右子树不为空,则右子树上所有结点的值都大于根结点的值;它的左右子树也分别为二叉搜索树;二叉搜索树中可以支持插入相等的值(如multimap/multiset),也可以不支持插入相等的值(如map/set)
2024-11-17 17:21:31
594
原创 二叉树(c语言)
树是⼀种非线性的数据结构,它是由 n(n>=0)个有限结点组成⼀个具有层次关系的集合,把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,而叶朝下的。树型结构中子数不能有交集,否则就不是树形结构子树是不相交的除了根节结外,每个结点有且仅有一个父结点一棵N个结点的树有N-1条边。
2024-11-11 21:13:25
1015
原创 多态(c++)
多态分为编译时多态(静态多态)和运行时多态(动态多态),函数重载和函数模板就是编译时多态,它们传不同的类型的参数就可以调用不同的函数,通过参数不同达到多种形态,因为它们实参传给形参的参数匹配是在编译时完成的,所以叫编译时多态运行时多态,在完成某个行为(函数),可以传不同的对象就会完成不同的行为,达到多种形态。
2024-11-09 12:51:25
997
原创 继承(c++)
类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员派生类的protected成员派生类的private成员基类的private成员在派生类中不可见在派生类中不可见在派生类中不可见1、基类private成员在派生类中无论以什么方式继承都是不可见的。
2024-11-08 19:30:29
1165
原创 list(c++)
list是STL容器中的容器,且元素在容器中的位置是分散的并与大小无关。list的底层是双向链表,其优势是在任意位置插入和删除元素的时间复杂度为O(1),但无法通过“下标[ ]”直接访问元素,需要通过从头(尾)遍历元素找到元素,多用于需要大量数据的插入和删除,且对数据的随机访问比较少。 二、list 的iterator的使用 三、list capacity 接口说明 empty 检测list是否为空,是返回true,否则返回false size
2024-10-30 10:58:25
1356
原创 string类(c++)
sting类是c++标准库的一个重要部分,主要用于字符串处理。在c语言中,字符串是以“\0”结尾的一些字符的集合,为了方便操作,c标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象)的思想,而且底层空间需要用户自己管理,稍不留神哈可能会越界访问。
2024-10-19 17:18:51
1307
原创 类和对象(初始化列表、隐式类型转换、static成员和友元)
1、前面实现的构造函数,初始化成员变量主要使用函数体内赋值,除此之外,构造函数初始化还有一种方式,就是初始化列表,其使用方式是以一个冒号开始,接着是以一个逗号分隔的数据成员列表,每个成员变量后面可以跟一个放在括号中的初始值或表达式。(图1)2、每个成员变量在初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。引用成员变量,const成员变量必须在定义的时候初始化,所以必须放在成员列表。
2024-10-05 18:50:25
721
原创 模板(了解类模板和函数模板)
泛型编程:编写与类型无关通用代码看,是代码复用的一种手段,模板是泛型编程的基础。利用函数重载实现一个通用的交换函数函数重载的劣势1、重载的函数仅仅是形参类型不同,逻辑是一样的,只要有新的类型出现时,就需要再重载对应的函数。2、代码的可维护性比较低,一个出错可能导致所有的重载均出错但是如果再c++中存在一个模具,我们告诉编译器一个模子,让编译器自己根据不同的类型利用该模子来生成代码,就事半功倍。
2024-10-05 18:50:04
813
原创 类和对象(实例化和this指针)
1、定义格式(代码1)C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是struct中可以定义函数,⼀般情况下我们还是推荐⽤class定义类。2、访问限定符public、private和protected访问权限作⽤域从该访问限定符出现的位置开始直到下⼀个访问限定符出现时为⽌,如果后⾯没有 访问限定符,作⽤域就到 }即类结束。class定义成员没有被访问限定符修饰时默认为private,struct默认为public。
2024-09-12 08:40:11
937
原创 类和对象(类的默认成员函数)
构造函数一般都需要自己写,自定义初始化析构、构造时有资源申请(如malloc或者fopen)等,就需要显示写析构函数拷贝构造和赋值重载,显示了析构,内部管理资源,就需要显示实现深拷贝自定义类型凡事想要用运算符都要掺重载运算符。
2024-09-12 08:39:48
969
原创 C++新手入门
在项目中会有大量的变量和函数的命名,当这些变量和函数存在于全局变量中会引起命名的冲突,命名空间就可以解决这个问题,因为namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量。定义命名空间:namespace只能定义在全局,当然他还可以嵌套定义。项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。C++标准库都放在⼀个叫std(standard)的命名空间中。使用命名空间1、指定命名空间使用2、
2024-08-04 16:19:59
955
原创 【C语言】结构体和共用体(联合体)在内存中的大小
1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。3、结构体总体最大对齐数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的整数倍。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。在vs中默认的值为8。
2024-06-24 09:35:54
395
原创 【C语言】二分查找法
二分查找法也叫做折半查找法,在生活中我们猜数字,不可能是1,2,3,……这样的猜,一般都会是取中间的数字猜,再看是大了还是小了,再继续在排除的范围内猜中间数,这样就快的多,但是二分查找法只限于在有序序列中查找。
2024-06-23 09:04:53
719
原创 浮点数在内存中的存储
资料来源于毕业就业课。根据国际标准IEEE(电⽓和电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式:表⽰符号位,当S=0,V为正数;当S=1,V为负数。M 表⽰有效数字,M是⼤于等于1,⼩于2的。表⽰指数位。比如:十进制5.0,写成二进制为101.0,写成科学计数法就是1.01*2^2套进公式S=0,M=1.01,E=2。对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。
2024-06-22 10:10:38
354
原创 【C语言】深入理解关于数据在内存中存储的7个题目
以上代码的运行结果:解析对a:-1在内存中源码反码补码a是char类型 只能存1个字节即8个比特位,存最低位的一个字节11111111-a存的a整形提升后的(因为以%d形式打印要整形提升,提升 的是符号位,即补码前面补1,无符号的整形提升前面补的是0)取反加1得到源码,所以a打印出来的就是-1对b:b与a同理。11111111b在内存中存的-1b整形提升后内存中存的补码取反加一得到源码,答应出来也是-1对c。
2024-06-22 09:33:13
2030
原创 辗转相除法求最大公因数和最小公倍数(C语言)
原则:较大的数a除以较小的数b,将除数b赋给原来的被除数a,将余数赋给原来的除数b,当余数为0时,得到最大公约数为b。
2024-06-20 21:41:16
371
1
原创 C语言中的分支和循环语句
语法格式如下:注意点:1、在C语言当中表达式成立的话为“非0”,若不成立则表达式就为“0”,而只有当表达式为“非0”时if语句才会执行,否则不会执行该if语句。如下:图中应为if里面的a是0,所以控制台没有打印任何东西;而当a的值为“非0”是,控制台就会打印相应的值。
2023-10-28 20:04:40
318
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅