- 博客(33)
- 收藏
- 关注
原创 常见面试题目
回调函数是一种通过函数指针调用的函数,允许你将一个函数作为参数传递给另一个函数,并在特定事件发生时调用该函数。它广泛应用于各种编程任务中,包括异步编程、事件处理、数据处理等。异步编程中:回调函数常用于处理异步操作的完成通知或结果返回。当一个耗时的操作完成后,系统会调用预先注册的回调函数来处理操作的结果。这样可以避免阻塞程序的执行,提高程序的响应性。菱形继承是一种在多继承中可能出现的情况,它指的是一个派生类同时继承了两个不同的父类,而这两个父类又有一个共同的基类。用一个例子来说明菱形继承的情况。
2024-09-23 08:11:30 1161
原创 高精度计时器项目学习笔记
在.h文件中声明了类、类内的成员函数、成员变量等;而在.cpp文件中进行具体实现;比如.h文件中声明了类StopWatch,并且声明了类内的方法Start(),则cpp文件中,通过来写方法的具体实现;// .h文件声明public:// .cpp文件实现// 具体实现通过域作用符来访问类内的公有方法;对于不同平台,引入的头文件,和实现的方式都不同,所以可以使用条件编译宏来实现不同平台执行不同语句引入不同头文件;
2024-09-23 08:10:51 597
原创 基础八股文:操作系统
基础八股文:操作系统操作系统操作系统是什么?是一个系统软件,介于应用程序和底层硬件资源之间;能够控制和管理整个计算机系统的硬件和软件资源,调度计算机的工作和资源分配;是计算机系统中最基本的系统软件;什么是并发?什么是并行?二者的区别是什么?并发:并发指的是两个或多个事件在同一时间间隔内发送;(不是同时发生,而是交替执行)并行:并行指的是两个或多个事件在同一时刻发送;并发是同一时间间隔,并行是同一时刻;在实际的操作系统中:单个处理核在很短时间内分别执行多个进程,称为并发;多个处
2024-09-23 08:10:22 853
原创 使用 C++11 实现的动态线程池项目学习
因为当线程池要关闭的时候,可能还有任务需要执行,我们最好让任务都执行完之后再关闭线程池,所以唤醒所有线程去任务队列中找任务执行;在上面的代码示例中,而且,即使作用域内部发生了异常,只要退出了作用域,就会自动解锁,避免了作用域异常导致解锁操作没有执行,从而阻塞所有线程;头文件定义的一个模板类,它封装了一个可调用对象(例如函数、lambda 表达式或函数对象),并提供了异步执行的能力。如此一来,线程不需要等待条件变量,只要任务队列中有任务,或者要销毁线程池,就立刻返回, 然后根据对应逻辑执行任务;
2024-09-23 08:09:50 913
原创 Webserver学习笔记详解
Webserver详解基础知识什么是RAII机制?Resource Acquisition is Initialization,即资源获取即初始化;在C++中可以理解为在构造函数中申请分配资源,在析构函数中释放资源;C++中的语言机制:当一个对象创建的时候(new一个对象)自动调用构造函数;当对象超出作用域时,自动调用析构函数;ThreadPool(size_t threads); // 线程池构造函数;~ThreadPool(); // 线程池析构函数;什么是信号量?信号量可以看成一
2024-09-23 08:08:23 1180
原创 Typecho复选框无法选中问题(Handsome主题)
虽然没有彻底解决复选框丢失的Bug,但是通过在代码中直接设定复选框对应项目有效,使得页面外观至少设置成功了;在后台外观设置中复选框依旧没有用,如果想要选择复选框中内容,需要手动到代码中修改添加复选框的id到数组中;
2024-09-23 08:07:25 940
原创 八股文——网络篇
(首先解释集中式系统有什么不好)如果DNS是集中式系统单点故障、远距离集中式数据库、维护成本巨大;单点故障:单个DNS服务器要处理所有的DNS服务,一旦故障,整个网络都会瘫痪;远距离集中式数据库:只有单个DNS服务器,不同计算机到达服务器的距离不同,只有邻近DNS服务器的用户可以快速查询,远距离的用户势必势必有很大的时延;(甚至为了避免远距离,有些网站开启了CDN服务)维护成本巨大:单个DNS服务器会导致低俗和拥堵的链路,造成严重时延。单个DNS服务器维护成本巨大,要频繁更新。
2024-09-23 08:06:27 1263
原创 基于SegNet的无人驾驶场景理解研究与实现
SegNet是一种基于卷积神经网络的图像分割技术,广泛用于场景理解领域。在无人驾驶技术中,需要对道路场景进行实时分割以提取车辆、路面、道路标识等关键信息,进而支持车辆决策和控制。SegNet通过对图像进行特征提取、编码、解码等操作,来识别图像中不同的场景元素。在实现过程中,需要选择合适的数据集、设计合理的网络结构,并通过不断的训练和评估来提高模型的分割准确度。具体来说,就是对一张道路图片,逐像素分析为每一个像素点分配语义标签,并用不同颜色标出;最终对图片中的各个类别物体涂上不同的颜色。
2024-09-22 19:05:57 1211
原创 MyTinySTL项目学习笔记04
迭代器有多种类型,在之前的实现中,我们使用的迭代器类型包括:输入迭代器,输出迭代器,正向迭代器,双向迭代器,随机访问迭代器;可以看出,正向迭代器继承了输出迭代器,双向迭代器继承了正向迭代器,随机访问迭代器又继承了双向迭代器;operator[]
2024-09-22 19:01:43 681
原创 MyTinySTL项目学习笔记03
/ 自定义的哈希函数实现(注意有两个括号)intint// 传入PairHash这种形式的调用是函数调用运算符的使用,它调用了类型的默认构造函数来创建一个临时的对象,然后使用这个对象来调用operator()。这种写法有时被称为 “函数调用括号” 模式。另一种等价的写法是使用,它利用了 C++11 引入的列表初始化语法来创建临时对象;// 定义了 string, wstring, u16string, u32string 类型#endif //!
2024-09-22 19:00:58 905
原创 MyTinySTL项目学习01——Vector实现
/ 所有类的定义都写在里面 }#ifdef max#pragmamessage// #define max # ifdef max # pragma message("#undefing marco max") # undef max // 取消已经定义的宏 # endif // max # ifdef min # pragma message("#undefing marco min") # undef min # endif // min#undef max // 取消已经定义的宏。
2024-09-22 18:58:59 1460
原创 数据结构:数组和链表
/ 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数(没有的话编译器会给一个默认构造函数)// 初始化这个构造函数的写法是使用了C++的初始化列表(initializer list)。这种写法允许我们在构造函数中直接初始化成员变量,而不是在函数体内赋值。
2024-09-22 18:55:56 1028
原创 数据结构:字符串
字符串类类型的题目,往往想法比较简单,但是实现起来并不容易,复杂的字符串题目非常考验对代码的掌控能力。字符串算法一般都要求是原地算法;双指针法是字符串处理的常客,KMP算法、数组扩容之后的处理,都使用了双指针法;KMP算法是字符串查找最重要的算法,如何求next数组,以及next数组的原理要清楚;同时KMP算法的思想要知道,用之前的经验来减少比较次数;
2024-09-22 18:54:58 757
原创 数据结构:栈和队列
C++中栈stack、队列queue、优先级队列都是容器适配器而不是容器,其底层结构可以选择不同的容器;容器适配器不存储元素,但是容器适配器提供了受限操作元素的接口,容器适配器的底层结构容器才存储元素。正因为如此,栈、队列、优先级队列中的元素未必是连续的,要看其底层容器选择了什么,如果底层容器选择了deque,则元素是不连续的;栈和队列都是受限访问的,而这一受限访问的原因在于底层容器是private的,而元素存储在底层容器中,只能通过栈和队列定义在public中的特定的成员函数进行操作;
2024-09-22 18:54:06 716
原创 数据结构:贪心算法
贪心法没有固定套路,在做题时,要有贪心的思想,如果不能用贪心做出了也正常,甚至用模拟做出来发现是贪心也正常;注意“两个维度权衡问题在分发糖果中,顺序遍历是一个维度,逆序遍历又是一个维度,然后最终结果取顺序遍历和逆序遍历的结果中较大值;在根据身高重建队列中,也又两个维度,分别是身高和排在前面的人的数量;先处理身高,将身高按顺序排序,然后遍历处理第二个维度;切莫瞻前顾后,既要还要,一次性处理多个维度,最后导致顾此失彼;确定一个维度的结果之后,再确定另一个维度;对于处理区间重叠、区间覆盖。
2024-09-22 18:53:21 1127
原创 数据结构:双指针法
在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。双指针法一直是一个强大的工具,目前应用:数组中,二分查找、链表、移除元素、串、数组扩容、KMP算法的next数组、滑动窗口(之前在数组中已经有过了解,是双指针的一种具体实现)暴力算法是最简单的思想,而双指针是暴力算法的改进,改进方向。双指针法不限于某一个具体的数据结构,是一种算法思想。
2024-09-22 18:51:54 313
原创 信息物理系统-Rijndael加密算法的实现
AES标准的Rijndael算法是一种分组加密算法,本次实验通过PtolemyII软件,实现了明文长度为128位,密钥长度为128位的Rijndael加密算法。实验的完成采取自底向上的,即先细分实现Rijndael算法的每个功能模块,通过一级一级地组合各个功能模块,从而实现整体的Rijndael加密算法;
2023-02-18 10:23:34 1185 1
原创 西电微机系统课程设计——步进电机开环控制系统设计
西电微机系统课程设计——步进电机开环控制系统设计一、课程设计目的1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。2.加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。3.搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。二、课程设计的内容手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50 米,CPU收到水位信号后,根据水位高度控制步进电机(水闸)进行调节。三、系统功能与设计要求基本功能要求手
2022-05-20 10:47:59 5063
原创 数据挖掘实验二 :聚类技术—复杂网络社团检测
实验二 :聚类技术—复杂网络社团检测实验内容导入karate.gml中的空手道网络数据;根据网络结构特征给出节点相似性度量指标;采用层次聚类过程对网络数据进行聚类;计算模块性指标Q值,当Q值最大时输出聚类结果;采用Cytoscape工具,可视化聚类结果。分析及设计导入数据包:用python的networks包中的read_ gml方法读取“图”的数据;观察图的信息:34个顶点、78条边的无向图;构建节点相似度矩阵:无向图的节点相似度
2022-02-23 21:15:16 2019 1
原创 数据挖掘实验一:分类技术——二分网络上的链路预测
实验一:分类技术——二分网络上的链路预测实验内容采用二分网络模型,对ml-1m文件夹中的“用户—电影”打分数据进行建模,考虑将用户信息、电影详细信息、以及打分分值作为该网络上的边、点的权重;根据网络结构特征给出节点相似性度量指标;基于相似性在二分网络上进行链路预测;画出ROC曲线来度量预测方法的准确性。分析及设计导入数据并初步分析处理数据:观察所给的文件类型为.dat格式,即纯文本格式,python中有专门处理该类型文件的包和函数;观察源数据包中
2022-02-23 21:12:45 1165 1
原创 基于Nginx的负载均衡实验
基于Nginx的负载均衡实验Nginx介绍及安装:Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Mac下安装Nginx:安装Homebrew如何检测Homebrew安装?终端输入brew输出各种brew命令说明安装成功终端输入brew list查看已安装工具列表检测软件Nginx是否可以brew:brew search nginx,返回==>Formulae nginx安装Nig
2022-02-23 21:00:05 2116
原创 《算法》作业
《算法》第一次作业:Q1: Show the contents of the id[] array and the number of times the array is accessed for each input pair when you use quick-find for the sequence 9-0 3-4 5-8 7-2 2-1 5-7 0-3 4-2.QuickFindUF(10):[]0123456789id[]01234
2022-02-23 20:50:26 528
原创 操作系统——银行家算法
银行家算法一种解决死锁的方案基本思想:计算机银行系统资源贷款申请资源的进程借款人操作系统银行家模拟银行贷款,银行家不可能满足所有借款人所要求的借款总额,所以当某借款人提出借款时,银行家必须判断如果将款借出,会不会导致资金周转不灵。若会,则不借;否则,就借。算法过程:对每一个资源申请进行检查,看如果满足该申请是否会导致不安全状态。若是则不满足该申请,否则满足。单项资源的银行家算法:系统状态如下表:进程名已有数目最大需求尚需
2021-06-29 00:26:19 1182
原创 操作系统实验三:线程共享进程数据
实验三:线程共享进程数据一、 实验目的:了解线程和进程之间的数据共享关系,创建一个线程,在线程中更改进程中的数据;二、 实验内容:在进程中定义全局共享数据,在线程中直接引用该数据进行更改并输出该数据;三、实验要求显示和输出共享数据;四、实验设计与实现:设计思路:定义一个全局共享变量并在进程中输出全局变量,然后在进程中通过 pthread_create函数 创建线程,在线程函数中读取全局变量的值并修改全局变量的值,然后在进程中输出全局变量的值,若输出的值是修改后的值,说明共享
2021-05-29 17:37:11 1425
原创 操作系统实验二:用PV操作实现司机售票员进程同步
实验二:进程间的同步一、 实验目的:理解进程同步和互斥模型及其应用;二、 实验内容:利用通信API实现进程之间的同步;建立司机和售票员进程,并实现他们的同步;三、实验要求显示司机和售票员进程的同步运行轨迹;四、实验设计与实现:设计思路:问题的关键在于 进程的同步 。在如何实现进程同步上,我选择了信号量的方法来实现。因为司机和售票员是两个进程,且有很多相似的部分,所以直接采用了 父子进程 来模拟这两个司机和售票员进程。用信号量的 PV操作 来实现对输出信息的加锁,最
2021-05-29 17:34:26 7850 1
原创 操作系统实验一:父子进程通信
操作系统实验一:进程的建立一、 实验目的:创建进程及子进程;在父子进程之间实现进程通信;二、 实验内容:创建进程并显示标识等进程控制块的属性信息;显示进程的通信信息和相应的应答信息;三、实验要求显示创建的进程及控制块参数;显示进程之间的关系参数;实现父子进程之间通信模拟;四、实验设计与实现:设计思路:实验要求在 父子进程 之间实现进程通信,所以可以采用 fork() 函数来通过一个进程创建他的一个子进程。关于父子进程之间通信可以采用 无名
2021-05-29 17:27:41 4443 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人