自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++面经

const定义的叫做常量,编译方式为把常量名字出现的地方,用常量的值进行替换,还可以定义常成员方法,将this指针 =》const Test *this 普通对象和常对象都可以调用。异常是try catch,try里面放的是可能会抛出异常的代码,catch捕获想要异常类型对象,进行处理,完成后,代码继续向下运行,避免代码异常终止。C++支持函数重载,引用,new/delete,const,带默认值的参数,模板,类和对象=》就可以存在设计模式了,STL,异常。纯虚函数 =》抽象类,派生类必须重写纯虚函数。

2025-06-04 09:14:22 798

原创 抖音客户端训练营--day2

布局的选择依赖于对性能的需求,其中约束布局的效果最好,但是学习成本高帧布局是最简单的布局容器,将所有的子元素堆叠在一起,默认放置在左上角,新添加的元素会覆盖在之前元素的上方,形成层叠效果线性布局这是最基本的布局方式,适用于简单的线性排列需求约束布局每个视图都有八个约束锚点:如图所示包含上下左右四边以及四个角,可以与其他视图的锚点或者父容器建立约束关系 链和屏障chain:将多个视图以链的形式连接,控制它们的排列方式barrier:为一组视图创建虚拟屏障,其余视图可以依赖此屏障定位 是 Android 开发中

2025-06-01 17:36:20 433

原创 软件工程期末速成--附带几道题

层次图层次图(也称H图)是在总体设计阶段最常使用的图形工具之一,它常用于描绘软件的层次结构。矩形代表一个模块,连线表示调用关系,适于在自顶向下设计软件的过程中使用;与层次方框图类似HIPO图是IBM公司发明的“层次图加输入/处理/输出图”的缩写;为了能使HIPO图具有可跟踪性,在H图例除了最顶层的方框之外,每个方框都加了编号:和H图中的每个方框相对应,有一张IPO图描述这个方框代表的模块的处理过程。IPO图能够方便地描述数据输入、数据处理和数据输出之间的关系。结构图。

2025-05-28 20:19:52 1077

原创 抖音客户端训练营--first

Pascal 命名法是指一种命名惯例,采用这种命名法时,复合词中每个单词的首字母大写。Pascal 命名法与驼峰命名法之间的区别在于:在 Pascal 命名法中,所有单词的首字母都大写;这是 Compose 中的一种常见且推荐的做法,因此您需要熟悉代码的格式。或者使用in,使用某个范围内的值,添加一个表示范围起点的数字,后跟两个不含空格的点,然后使用另一个表示范围终点的数字作为结尾。形参进行缩放时,系统会均匀缩放图片以保持宽高比不变,进而使图片的宽度和高度等于或大于屏幕的相应尺寸。

2025-05-27 10:45:01 766

原创 C++树的迭代遍历

在C++中,对于树的遍历分为层次遍历,前序遍历,中序遍历,后序遍历下面是Lee在C++中,对于树的遍历分为层次遍历,前序遍历,中序遍历,后序遍历下面是LeetCode上面的三道题对于前序遍历,中序遍历,后序遍历,这种遍历如果使用递归的话非常简单,但是使用迭代遍历的话似乎没有那么容易,这里深入讲讲一下C++书的迭代遍历在遍历中,遍历的叫法是根据根的位置进行命名的,前序遍历是根左右,中序:左根右,后序:左右根在迭代遍历中,实际上我们就是在模拟递归中栈的过程。

2025-05-23 21:47:09 224

原创 C++11语言级别的多线程

可以使用lock_guard<std::mutex> lock(mtx)代替mtx,这个会在出作用域的时候析构。note:lock_guard只能用在简单的临界区代码段的互斥操作中,构造时立即锁定互斥量,析构时自动解锁,​。unique_lock //不仅可以在简单临界区代码段的互斥操作中,还能用在函数调用过程中。std::thread传入一个线程所需要的函数,然后后面为传入的参数,线程自动挡开启。多线程程序执行的结构是一致的,不会随着CPU对线程的调用顺序而产生不同的结果。代码实现生产者消费者模型。

2025-05-21 19:10:36 352

原创 操作系统强化

对于信号量的问题,我们具体应该如何处理常见共五类问题,1.生产者-消费者问题,2.理发师问题,3.读者写者问题,4.哲学家就餐问题5.单纯的同步问题。

2025-05-19 15:37:57 458

原创 C++高级用法--绑定器和函数对象

如果希望function使用类内的成员函数,但是成员函数的调用又依赖于对象。bind1st :operator() 的第一个形参变量绑定为一个确定的值。bind2st :operator() 的第二个形参变量绑定为一个确定的值。void(*)() 函数指针类型:表示指向返回值为空,无参数的函数的指针。绑定器,函数对象,lambda表达式,都只能使用在一条语句中。因为对于类内的成员函数,都存在一个this指针,也就是类*我们通过定义function来获取绑定器的返回的函数对象。void() 函数类型。

2025-05-18 21:35:32 454

原创 C++中的容器

基于键(Key)有序存储,支持快速查找(通常用红黑树实现)。基于哈希表实现,键无序但查找更快(平均 O(1))。存储元素的线性序列,支持按顺序访问。基于其他容器实现的特定数据结构接口。

2025-05-18 10:54:08 636

原创 感受一下智能指针的强大

/ 可以进行提升,提升为强智能指针使用,随着程序的运行,可能其资源已经释放了,那么就提升失败,返回空。我们的指针其实默认应该指向的是同一个资源,那么就不能使用深拷贝,将当前资源拷贝一份。auto_ptr:这个的做法拷贝构造是直接将自己的资源给了另一个,而自己置为空。// 弱智能指针只是一个观察者,不能访问资源,知识观察资源是否存在。多个智能指针管理一个资源,给每一个对象资源,添加一个引用计数。推荐使用:unique_ptr:将拷贝构造和赋值删除。智能指针:资源的自动释放。实现引用计数的智能指针。

2025-05-17 18:56:51 174

原创 操作系统知识总结

所谓打开,其实就是当系统检索到某个目录项的时候,将该目录项从外存复制到内存打开文件表的一个表目中,并将该文件的索引号返回给用户,当用户再次访问该文件的时候,直接通过该索引号(也叫做文件描述符)来访问文件,当文件关闭的时候,调用close系统调用,系统将从打开文件表中删除这一表目。每当要访问的页面不存在于内存的时候,就产生一个缺页中断,请求操作系统的缺页中断处理程序处理,缺页的进程阻塞,放到阻塞队列,如果内存存在空闲页框,就为内存分配一个页框,将所缺页面装入页框中,并修改页面对应表项。

2025-05-16 10:19:23 1027

原创 数据库原理期末考试速成--最后附带两套题

本文概述了数据库系统的核心概念和操作,包括关系数据库的基本操作(如选择、投影、连接等)、数据库独立性、SQL语言的使用、数据库安全性和完整性、关系规范化、数据库设计与编程、日志系统、数据库恢复技术、并发控制以及MySQL集群的主从复制与读写分离。文章还涉及了数据库设计中的ER图转换、关系模型结构的建立、候选码的确定,以及通过关系代数、元组关系演算和SQL进行数据检索的方法。此外,文章还讨论了函数依赖集的计算、关系范式的判定和分解过程,以及如何通过封锁协议和意向锁来解决并发控制中的问题。整体上,本文为数据库学

2025-05-12 20:30:40 755

原创 计算机网络--2

1. 由于网络情况复杂,可能会出现丢包现象,如果第二次握手的时候服务器就认为这个端口可用,然后一直开启,但是如果客户端未收到服务器发送的回复,那么就会重新发送请求,服务器就会重新开启一个端口连接,这样就会浪费一个端口。syn cookie:服务器根据该数据包的源地址和端口计算出一个cookie作为自己的synack包的序列号,回复后,不为其分配资源,等收到发送方的ack包后,重新计算,如果序列号正确,那么连接建立,否则丢弃。半连接队列存放的就是三次握手未完成的队列,同时全连接队列存放的就是完成连接的队列。

2025-05-11 15:24:16 1148

原创 操作系统--文件的基本概念

所谓打开,其实就是当系统检索到某个目录项的时候,将该目录项从外存复制到内存打开文件表的一个表目中,并将该文件的索引号返回给用户,当用户再次访问该文件的时候,直接通过该索引号(也叫做文件描述符)来访问文件,当文件关闭的时候,调用close系统调用,系统将从打开文件表中删除这一表目。有结构文件:也成为记录式文件,就是由记录构成的文件(记录:是一组相关数据项的集合,用来描述一个对象在某方面的属性),根据各个记录的长度是否相等,分为定长记录和变长记录。基本信息:文件名称,文件物理位置,文件逻辑结构,文件物理结构。

2025-05-11 09:34:06 255

原创 redis八股--1

redis是一种基于键值对的NoSQL存储数据库value支持hash,string,list,set,zset,bitmaps等等多种数据结构。

2025-05-10 21:21:38 968

原创 计算机网络八股文--day1

端口号位443,加入了SSL/TSL协议,使得报文可以加密传输,TCP握手后,还需要进行SSL/TSL握手包含以下机制:信息加密:保证信息不被窃取校验机制:无法篡改信息内容身份证书:证明自己是自己HTTPS的工作流程:1.客户端发出HTTPS请求,连接服务器443端口2.服务器由一套数字证书,发送给客户端3.客户端收到证书以后,验证证书合法性,如果安全,就会生成一个随机的对称密钥,用证书的公钥加密4.客户端将公钥加密后的密钥发送给服务器。

2025-05-10 19:51:43 1165

原创 虚拟存储管理

每当要访问的页面不存在于内存的时候,就产生一个缺页中断,请求操作系统的缺页中断处理程序处理,缺页的进程阻塞,放到阻塞队列,如果内存存在空闲页框,就为内存分配一个页框,将所缺页面装入页框中,并修改页面对应表项。在程序执行过程中,仅将程序当前运行要用到的少数页面装入内存,而其余部分暂时留到外存,有需要再调入内存,当内存空间不够时,再将用不到的信息换出内存。实际上,我们考虑b算法,一共有四种状态,(0,0)(0,1)(1,0)(1,1)包括:状态位(是否调入内存),访问字段(一段时间被访问的次数)

2025-05-10 09:30:05 378

原创 B树和B+树

B树的插入,如果一个结点插入后关键字个数为m,那就需要进行分裂,如果影响到了根节点,会使得B树高度加一。3.叶子结点包含全部关键字,叶子结点包含信息,非叶子结点索引只包含对应子树最大关键字和指向该子树的指针。B+树的非叶子结点仅起到索引作用,查找成功需要查找到叶子结点,即每次查找长度都相同(保证查找公平性)2. 破坏了,兄弟够借,就是将兄弟的一个元素放到父亲,然后父节点的一个元素降落下来。B树的删除,如果一个结点删除后关键字个数小于最少个数,那么就需要进行合并。一棵m阶B树,或者是空树,或者满足如下特性。

2025-05-09 20:41:40 343

原创 操作系统 == 内存管理

看到这个名字,相比你就知道其与上面的区别了,虽然装入模块被装入到内存,但是只有运行的时候才会发生地址转换,存在一个重定位寄存器来实现动态运行时装入‘分段管理的方式考虑到了程序员和用户,将用户进程逻辑地址空间划分为若干大小不等的段,并分配一段连续的地址空间。地址转换在进程装入时就完成,缺点是一个作业装入内存,必须给它分配足够的存储空间,且运行期间无法移动。地址转换,内存分配和回收,内存空间的扩充(虚拟存储技术),内存共享,存储保护。思想:将内存分为若干固定大小的分区,称为页框,页帧,物理块。

2025-05-09 15:23:48 944

原创 进程与线程的基本概念

进程:为了使得参与并发执行的每个程序独立运行,引入进程控制块的概念,作为专门的数据结构来描述进程的基本情况和运行状态,创建进程转为创建PCB,撤销进程转为撤销PCB。允许一个进程创建另一个进程,创建者称为父进程,被创建者称为子进程,子进程可以继承父进程所有资源,当子进程终止,需要将从父进程获得资源全部还给父进程。也就是说进程是进程实体的运行过程,是系统资源分配的一个基本单位。注意程序和进程的区别,进程是动态的,但是程序是静态的。进程之间的通信:这个是面试考察的重点。谈完进程,那就得对线程有一些了解。

2025-05-07 09:34:21 213

原创 操作系统基础知识介绍

看了上面那么多,你肯定在疑惑特权指令不允许用户使用,那么用户如何使用操作系统中的各类资源呢,那就是系统调用,一个操作系统提供给应用程序使用的接口,凡是和共享资源相关的,就需要通过系统调用方式向操作系统提出请求,由操作系统代为完成,结果返回用户。但是CPU只有一个,我这边占着,老大哥就用不了,那么我只能先退下来(得告诉老大哥一声我下来了,它该上了),那么这个通知手段叫做陷入指令,也就是上面提到的软件中断,记住:老大哥很仗义,只有陷入指令才会让其抢夺我的控制权。

2025-05-06 10:58:28 1313

原创 C++专业面试题

select原理: select是一种IO多路(多个TCP连接)复用技术,具体实现原理是—— 1.select会维护一个文件描述符列表fd_set,用来存放需要监听的文件描述符fd,其本质是一个1024bit的bitmap数组,1代表需要检测的fd,0代表不需要检测的fd,初始时bitmap的元素全为1;在这种做法中,内核检测到一个文件描述符就绪了,然后可以对这个就绪的 fd 进行 IO 操作,如果不作任何操作,内核还是会继续通知。8.请你介绍一下死锁,产生的必要条件,产生的原因,怎么预防死锁。

2025-05-04 16:13:22 631

原创 C++八股--6--mysql 日志与并发控制

2.幻读:同一个事务多次查询同一范围内的数据,结果集的行数不同(别的事务插入或者删除了数据导致,这个事务觉得自己眼睛花了,所以叫幻读)锁在作用范围上分为表锁和行锁,表锁就是对表加锁(这实际上会造成效率低下),行级锁是mysql的innodb支持的锁,相较于表锁效率更高。这张表中的数据没有被获取过X锁!排它锁(写锁 X锁):事务T对对象A上锁后,只允许T读取和修改A,其余事务不允许再加锁了,直到T释放锁。共享锁(读锁 S锁):事务T对对象A上锁后其余人也可以继续加X锁,但是不能加X锁,知道所有事务的锁释放。

2025-05-04 15:01:03 461

原创 C++八股--5--设计模式--适配器模式,代理模式,观察者模式

/通过代理对象的freeMovie,来访问真正委托类对象的freeMovie。主要关注对象的一对多关系,也就是多个对象都依赖于一个对象,当该对象状态改变时,其余对象都能得到对应的通知。观察者模式实际上就是创建一个主题类,然后当有消息来到的时候,主题负责通知各个观察者,也就是函数调用。实际上上述代理模式的原理在于创建一个代理类,在代理类中定义委托类指针,不同的代理类指行不同的函数。//这个是我们的网站,实现看vip电影和free电影,也就是我们的委托类。cout<<"VGA接口"<<endl;

2025-05-03 21:50:29 1133 1

原创 计算机网络八股文--day4 --传输层TCP与UDP

服务器收到请求,发送响应,转为关闭等待(close-wait),此时服务器仍然可以向客户端发送没有发完的数据。数据部分不足,补0,如果校验和结果为0,那么用全1填充,不想使用校验和,该段为全0。8B首部:包含源端口,目的端口,UDP长度,16位校验和(二进制反码求和),每个16位。这个内部包括源IP,目的IP,一字节0,自己使用的端口17,以及UDP长度。然后进行二进制反码求和再取反,(三部分一起,包括伪首部,首部,数据部分)2. TCP:面向连接服务,面型字节流,开销大,可靠,可以保证按序的交付。

2025-05-03 19:00:26 910

原创 C++八股--three day --设计模式之单例和工厂

工厂方法:提供了一个纯虚函数创建产品,定义派生类负责创建对应的产品,可以做到不同产品在不同工厂创建,实现对现有工厂和产品修改封闭。static Singleton * getInstance()//获取唯一实例对象的接口方法。static Singleton * getInstance()//获取唯一实例对象的接口方法。static Singleton * getInstance()//获取唯一实例对象的接口方法。

2025-05-02 19:40:41 1381

原创 C++日更八股--day2

loop:事件循环:​​事件循环​​是一个持续运行的循环结构,负责监听和分发事件。1.快速排序:作为主要算法,它通过选择一个pivot元素,将序列划分为两个子序列,一个子序列元素小于枢轴,另一个大于,随后递归排序,时间复杂度达到O(nlogn).vector,这个容器为动态数组,相信学过操作系统分区分配的朋友一定知道,我如果在连续的存储空间中扩容的做法为再找一片空间,当前内容复制过去,再插入。epoll(事件通知):当有文件描述符需要服务的时候,才会通知,且返回的为需要服务的文件描述符,避免遍历。

2025-04-30 12:14:19 269

原创 C++日更八股--first

这里简单介绍一下:count计数私有化,随后构造函数中需要在参数列表中对其初始化,再有就是=运算符重载,实现所有权的共享,但是要注意的是这里需要实现对原有资源的释放,不然会造成内存泄露的(-_-)。首选每个进程维护一个进程打开文件表,这个里面记录了进程打开的文件,同时表中的每个条目(文件描述符),注意打开文件最初是使用文件名去找寻文件对应的inode,找到后就可以使用文件描述符访问文件了<br>不增加引用计数,不拥有资源所有权,用于解决shared_ptr的循环引用问题,经常用于转换this指针<br>

2025-04-29 21:04:07 738

原创 C++的四种类型转换

静态类型转换:用于基本类型之间的转换,有继承关系之间的转换,void* 与其他指针类型转换。编译时候检查,无运行时开销,不保证安全性,继承体系可能因类型不匹配导致未定义行为。动态类型转换:note:如果发生多态,那么类型转换必定是安全的。运行时检查类型有效性,只有转换时安全的,那么才会进行转换。常量类型转换:用于移除或者添加const限定符。高度不安全,依赖平台和编译器实现,不推荐使用。不修改底层数据,仅仅修改编译器对类型的解释。note:不能对非指针类型或者引用使用。低层次的位模式重新解释。

2025-04-05 22:34:43 250

原创 一文了解MADDPG算法

这仅仅是一个我为了答辩准备的一个介绍:如有错误,请勿批评MADDPG算法(Multi-agent Deeep Deterministic Policy Gradient):多智能体深度确定性策略梯度是在DPG算法改进的DDPG算法上的分布式强化学习算法在了解MADDPG之前,我们需要先具备一些基础知识。

2025-03-29 08:53:14 550

原创 Linux常用命令

find的功能及其强大,可以按照大小查找-size +-代表大于小于,可以查找空的文件加-empty,可以根据用户名和用户id查找-user,也可以根据组和组id查找-group,根据时间查找。cp命令:cp 1,2可以用来复制路径1到路径2,路径可以是文件,也可以是目录,选项-n 不覆盖,-i文件存在给出用户提示信息,表示是否覆盖,-R递归复制。mv命令:移动文件,把一个文件移动到另一个位置,可以修改名称,-n表示不覆盖,-i给出提示信息,实现原理就是更改虚拟文件系统和物理文件系统之间的映射。

2025-03-22 20:09:47 464

原创 mysql

获取当前使用的字符集: const char *mysql_character_set_name(MYSQL *mysql)c. 建立连接. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd,const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag);

2025-03-21 18:43:37 910

原创 github使用

如果提交出现问题,需要更改git里面的config文件,在末尾添加上这个,后面为你的账户和密码。到你的项目文件里面,右键,使用git bash here打开。然后输入 git remote add origin 网址。note:这个是使用git上传的,需要先下载git。git commit -m “这个是上传的备注”git push -u origin 分支名字。首先在github上面创建一个库。然后复制自己的https链接。然后是git add *

2025-03-08 17:14:05 189

原创 shell学习-第四天

语法命令[return 返回值]调用函数:funname 传递参数1 传递参数2...return 如果不加,将以最后一条命令运行结果作为返回值,(范围为0~255)有参函数shell程序与函数区别shell程序在子shell中运行,会开启独立的进程运行shell函数在当前shell的进程中运行。

2025-03-08 16:54:48 672

原创 Linux学习--第三天

yum:RPM包软件管理器,用于自动化安装配置Linux软件,并且可以自动解决依赖问题。选项:-b,可选,后台下载,会将日志写入当前工作目录的wget-log文件。在Linux中,可以通过env命令查看环境变量,是一种keyvalue结构。wget命令:wget是非交互式的文件下载器,可以在命令行内下载网络文件。选项:-O,用于下载文件,当url是下载链接时,可以使用此选项保存文件。-c 检查次数,不使用就会无限次检查,通过ctrl + c停止。分别对应开始,关闭,查看状态,开启开机开启,关闭开机开启。

2025-03-06 11:33:43 487

原创 Linux的用户与权限--第二天

认知root用户(超级管理员)root用户用于最大的系统操作权限普通用户的权限,一般在HOME目录内部不受限制。

2025-03-04 20:48:06 1043

原创 Linux知识-第一天

Linux的目录机构为一个树型结构其没有盘符这个概念,只有一个根目录,所有文件均在其之下在Linux系统中,路径之间的层级关系 使用开头表示根目录,后面的表示层级关系。

2025-03-03 21:43:54 1306

原创 QT中的事件

ev-> button() 可以判断左右键,Qt::LeftButton,Qt::RightButton。声明一个画家对象:QPainter painter(this) this指定绘图设备。painter.drawpixmap(x,y,QPixmap("路径"))按照行读 file.readline() atend()判断是否读到文件尾。ev->buttons() 判断组合按键,判断move。启动定时器 timer->start(毫秒)事件:void paintEvent()

2025-02-26 22:16:59 562

原创 QT入门--QMainWindow

从上向下依次是菜单栏,工具栏,铆接部件(浮动窗口),状态栏,中心部件。

2025-02-25 23:15:44 277

原创 QT入门--信号和槽

自定义槽函数,需要声明,也需要实现自定义信号,返回值为void,只需要声明,不需要实现,可以有参数,可以重载。自定义信号需要写到signal下,自定义槽函数写到public下即可此时如果需要进行连接,我们需要指定地址来避免二义性需要定义函数指针,并且声明作用域将string转为char *简略写法创建按钮QPushButton* myt = new QPushButton("下课",this);也可以用信号连接信号,这样前面第一个信号发出就会传递到最后一个接收者断开信号连接。

2025-02-23 20:29:11 319

C++跨平台线程池,面向对象编程

C++跨平台线程池,面向对象编程

2025-03-09

QT实战小游戏-翻金币

QT实战小游戏--翻金币

2025-02-28

大学生期末课程设计+C++

大学生课程设计的机房预约系统,使用c++语言编写 本机房预约系统共有三种用户,包括校长,老师,学生 1.学生实现的功能 申请预约,显示我的预约,显示所有预约,取消预约 2.老师实现的功能 查看所有预约,预约审核 3.校长实现的功能 添加账号,查看账号,查看机房信息,清空预约记录 身份文件为identity.h 其余三个身份分别引入该文件 全局文件添加:由于不同身份会用到不同的文件,将所有文件名定义到一个全局文件中 在头文件添加global.h 机房为room.h 预约为order.h 校长的账号和密码需要在文件master.txt添加

2025-02-18

空空如也

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

TA关注的人

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