2023全国大学生软件测试大赛开发者测试练习题满分答案(PairingHeap2023)
2023全国大学生软件测试大赛开发者测试练习题满分答案(PairingHeap2023)
- 题目详情
- 题解代码(直接全部复制到test类中即可)
提示:该题只需要分支覆盖得分即可,不需要变异得分
题目详情


题解代码(直接全部复制到test类中即可)
package net.mooctest;import static org.junit.Assert.*;import java.lang.reflect.Method;import java.lang.reflect.InvocationTargetException;import org.junit.Before;import org.junit.Test;public class Heap_ItemTest {@Testpublic void test() {Heap_Item<String> heap_Item0 = new Heap_Item<String>(",");Heap_Item<String> heap_Item1 = new Heap_Item<String>(",");heap_Item1.setLeftSon(heap_Item0);heap_Item0.setLeftSon(heap_Item1);heap_Item0.setRightSon(heap_Item1);heap_Item1.replaceChild("$", heap_Item0);heap_Item0.getSonByData(",");heap_Item0.getSonByData("");assertTrue(heap_Item0.hasLeftSon());}@Testpublic void test1() {Heap_Item<String> heap_Item0 = new Heap_Item<String>(",");Heap_Item<String> heap_Item1 = new Heap_Item<String>(",");heap_Item1.setLeftSon(heap_Item0);heap_Item0.setLeftSon(heap_Item1);heap_Item0.setRightSon(heap_Item1);heap_Item1.replaceChild(",", heap_Item0);heap_Item0.getSonByData(",");heap_Item0.getSonByData("");assertTrue(heap_Item0.hasLeftSon());}@Testpublic void test2() {Heap_Item<String> heap_Itema=new Heap_Item<String>("a");Heap_Item<String> heap_Itemb=new Heap_Item<String>("b");Heap_Item<String> heap_Itemc=new Heap_Item<String>("c");Heap_Item<String> heap_Itemd=new Heap_Item<String>("d");Heap_Item<String> heap_Iteme=new Heap_Item<String>("e");Heap_Item<String> heap_Itemk=new Heap_Item<String>("k");Heap_Item<String> heap_Itemp=new Heap_Item<String>("p");Heap_Item<String> heap_Itemq=new Heap_Item<String>("q");heap_Itema.setLeftSon(heap_Itemb);heap_Itema.setRightSon(heap_Itemc);heap_Itemb.setRightSon(heap_Itemd);heap_Itemb.setLeftSon(heap_Iteme);heap_Itemb.replaceChild("e", heap_Itemk);heap_Itemb.replaceChild("d", heap_Itemk);heap_Itemb.itIsLeftSon(heap_Itemk);heap_Iteme.setLeftSon(heap_Itemp);heap_Itemq.setLeftSon(heap_Itemq);heap_Iteme.removeLeftSon();heap_Iteme.removeRightSon();heap_Itemb.removeChild("k");heap_Itemb.removeChild("k");heap_Itemb.removeChild("a");Heap_Item <String> heap_Itema1= heap_Itema.getLeftSon();assertSame(heap_Itema1,heap_Itemb);heap_Itemb.setAncestor(heap_Itema);Heap_Item <String> heap_Itemn= heap_Itemb.getAncestor();assertSame(heap_Itema,heap_Itemb.getAncestor());assertEquals(heap_Itema,heap_Itemn);//设置节点c的祖先为aheap_Itemc.setAncestor(heap_Itema);//节点a无祖先,于是返回nullHeap_Item <String> heap_Itemanull=heap_Itema.getMultiWayAncestor();assertNull(heap_Itemanull);//节点b有祖先a,同时又是它的左孩子,于是返回他的祖先aHeap_Item <String> heap_Itembnull=heap_Itemb.getMultiWayAncestor();assertNotNull(heap_Itembnull);assertSame(heap_Itema,heap_Itembnull);}@Testpublic void testMul() {Heap_Item<String> heap_Itema=new Heap_Item<String>("a");Heap_Item<String> heap_Itemb=new Heap_Item<String>("b");Heap_Item<String> heap_Itemc=new Heap_Item<String>("c");Heap_Item<String> heap_Itemd=new Heap_Item<String>("d");Heap_Item<String> heap_Iteme=new Heap_Item<String>("e");Heap_Item<String> heap_Itemk=new Heap_Item<String>("k");Heap_Item<String> heap_Itemp=new Heap_Item<String>("p");Heap_Item<String> heap_Itemq=new Heap_Item<String>("q");heap_Itema.setLeftSon(heap_Itemb);heap_Itema.setRightSon(heap_Itemc);heap_Itemb.setRightSon(heap_Itemd);heap_Itemb.setLeftSon(heap_Iteme);heap_Itemb.replaceChild("e", heap_Itemk);heap_Itemb.replaceChild("d", heap_Itemk);heap_Itemb.itIsLeftSon(heap_Itemk);heap_Iteme.setLeftSon(heap_Itemp);heap_Itemq.setLeftSon(heap_Itemq);heap_Iteme.removeLeftSon();heap_Iteme.removeRightSon();heap_Itemb.removeChild("k");heap_Itemb.removeChild("k");heap_Itemb.removeChild("a");Heap_Item <String> heap_Itema1= heap_Itema.getLeftSon();assertSame(heap_Itema1,heap_Itemb);heap_Itemb.setAncestor(heap_Itema);Heap_Item <String> heap_Itemn= heap_Itemb.getAncestor();assertSame(heap_Itema,heap_Itemb.getAncestor());assertEquals(heap_Itema,heap_Itemn);//设置节点c的祖先为aheap_Itemc.setAncestor(heap_Itema);//节点a无祖先,于是返回nullHeap_Item <String> heap_Itemanull=heap_Itema.getMultiWayAncestor();assertNull(heap_Itemanull);//节点b有祖先a,同时又是它的左孩子,于是返回他的祖先aHeap_Item <String> heap_Itembnull=heap_Itemb.getMultiWayAncestor();assertNotNull(heap_Itembnull);assertSame(heap_Itema,heap_Itembnull);//先给a设置右祖先Heap_Item <String> heap_Items1 = new Heap_Item<String>("s1");heap_Itema.setAncestor(heap_Items1);heap_Items1.setLeftSon(heap_Itema);//检查a的祖先是否为s1assertSame(heap_Items1,heap_Itema.getAncestor());//检查c的祖先是否为aassertSame(heap_Itema,heap_Itemc.getAncestor());//给s1复制左孩子为s2Heap_Item <String> heap_Items2 = new Heap_Item<String>("s2");heap_Items2.setAncestor(heap_Items1);heap_Items1.setRightSon(heap_Items2);//节点c有祖先a,但是a的右孩子,于是返回a的最近的以a作为左子孙的祖先,即s1Heap_Item <String> heap_Itemcnull=heap_Itemc.getMultiWayAncestor();assertSame(heap_Itemcnull,heap_Items1);}@Testpublic void testpair() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException{Class<Pairing_Heap> c = Pairing_Heap.class;Heap_Item<String> a1=new Heap_Item<>("a1");Heap_Item<String> a2=new Heap_Item<>("a2");Heap_Item<String> b1=new Heap_Item<>("b1");a1.setLeftSon(b1);b1.setAncestor(a1);Pairing_Heap<String> p1=new Pairing_Heap<>(a1);Pairing_Heap<String> p2=new Pairing_Heap<>(a2);Method pair = c.getDeclaredMethod("pair", Pairing_Heap.class, Pairing_Heap.class);pair.setAccessible(true);//情况3Pairing_Heap<String> k=new Pairing_Heap<>();Object invoke = pair.invoke(k, p1, p2);//情况1Pairing_Heap<String> null1=new Pairing_Heap<>();Object invoke1= pair.invoke(k, null1,p2);//情况2pair.invoke(k, p1,null1);//情况4Heap_Item<String> d1=new Heap_Item<>("d1");Heap_Item<String> d2=new Heap_Item<>("d2");Pairing_Heap<String> pd1=new Pairing_Heap<>(d1);Pairing_Heap<String> pd2=new Pairing_Heap<>(d2);pair.invoke(k, pd1,pd2);//情况5Heap_Item<String> e1=new Heap_Item<>("e1");Heap_Item<String> e2=new Heap_Item<>("e2");Heap_Item<String> be1=new Heap_Item<>("be1");e1.setLeftSon(be1);be1.setAncestor(e1);Pairing_Heap<String> pe1=new Pairing_Heap<>(e2);Pairing_Heap<String> pe2=new Pairing_Heap<>(e1);pair.invoke(k, pe1,pe2);//情况6Heap_Item<String> f1=new Heap_Item<>("e1");Heap_Item<String> f2=new Heap_Item<>("e2");Pairing_Heap<String> pf1=new Pairing_Heap<>(f2);Pairing_Heap<String> pf2=new Pairing_Heap<>(f1);pair.invoke(k, pf1,pf2);}@Testpublic void testpop_heap_item() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {Class<Pairing_Heap> fun = Pairing_Heap.class;//情况1Pairing_Heap<String> null1=new Pairing_Heap<>();Method pair =fun.getDeclaredMethod("pop_heap_item");pair.setAccessible(true);pair.invoke(null1);//情况2Heap_Item<String> b=new Heap_Item<>("b");Pairing_Heap<String> pb=new Pairing_Heap<>(b);pair.invoke(pb);//情况3Heap_Item<String> c=new Heap_Item<>("c");Heap_Item<String> cb=new Heap_Item<>("cb");c.setLeftSon(cb);cb.setAncestor(c);Pairing_Heap<String> pc=new Pairing_Heap<>(c);pair.invoke(pc);//情况四Heap_Item<String> d=new Heap_Item<>("d");Heap_Item<String> db=new Heap_Item<>("db");Heap_Item<String> dbc=new Heap_Item<>("dbc");Heap_Item<String> dbc0=new Heap_Item<>("dbc0");d.setLeftSon(db);db.setAncestor(d);db.setRightSon(dbc);db.setLeftSon(dbc0);dbc0.setAncestor(db);dbc.setAncestor(dbc);Pairing_Heap<String> pd=new Pairing_Heap<>(d);pair.invoke(pd);}@Testpublic void testpush() {//根为空的情况Pairing_Heap<String> null1=new Pairing_Heap<>();Heap_Item<String> d=new Heap_Item<>("d");null1.push(d);//根不为空的情况Heap_Item<String> c=new Heap_Item<>("c");Pairing_Heap<String> pc=new Pairing_Heap<>(c);Heap_Item k=pc.push(d);}@Testpublic void testcheckPriority1_2() {//情况1,2Heap_Item<String> a=new Heap_Item<>("a");Heap_Item<String> b=new Heap_Item<>("b");Heap_Item<String> c=new Heap_Item<>("c");Heap_Item<String> k=new Heap_Item<>("k");Pairing_Heap<String> p=new Pairing_Heap<>();c.setLeftSon(a);a.setAncestor(c);a.setRightSon(b);b.setAncestor(a);b.setRightSon(k);k.setAncestor(b);p.checkPriority(b);}@Testpublic void testcheckPriority3() {//情况3Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> b1=new Heap_Item<>("b1");Heap_Item<String> b2=new Heap_Item<>("b2");Pairing_Heap<String> p=new Pairing_Heap<>();k.setLeftSon(b1);k.setRightSon(b2);b1.setAncestor(k);b2.setAncestor(k);p.checkPriority(k);}@Testpublic void testcheckPriority4() {//情况4Heap_Item<String> a=new Heap_Item<>("a");Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> b1=new Heap_Item<>("b1");Heap_Item<String> b2=new Heap_Item<>("b2");Pairing_Heap<String> p=new Pairing_Heap<>();a.setLeftSon(k);k.setAncestor(a);k.setLeftSon(b1);k.setRightSon(b2);b1.setAncestor(k);b2.setAncestor(k);p.checkPriority(k);}@Testpublic void testcheckPriority5() {//情况5Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> z=new Heap_Item<>("z");k.setLeftSon(z);z.setAncestor(k);Pairing_Heap<String> p=new Pairing_Heap<>();p.checkPriority(k);}@Testpublic void testcheckPriority6() {//情况6Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> z=new Heap_Item<>("z");z.setLeftSon(k);k.setAncestor(z);Pairing_Heap<String> p=new Pairing_Heap<>();p.checkPriority(k);}@Testpublic void testcheckPriority7() {//情况7Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> z=new Heap_Item<>("z");k.setLeftSon(z);z.setAncestor(k);Pairing_Heap<String> p=new Pairing_Heap<>();p.checkPriority(z);}@Testpublic void testcheckPriority8() {//情况8Heap_Item<String> a=new Heap_Item<>("a");Heap_Item<String> z=new Heap_Item<>("z");Heap_Item<String> b=new Heap_Item<>("b");a.setLeftSon(z);z.setAncestor(a);z.setLeftSon(b);b.setAncestor(z);Pairing_Heap<String> p=new Pairing_Heap<>();p.checkPriority(z);}@Testpublic void testcheckPriority9() {//情况9Heap_Item<String> a=new Heap_Item<>("a");Heap_Item<String> b=new Heap_Item<>("b");Heap_Item<String> c=new Heap_Item<>("c");Heap_Item<String> d=new Heap_Item<>("d");a.setLeftSon(b);b.setAncestor(a);b.setLeftSon(c);c.setAncestor(b);c.setRightSon(d);d.setAncestor(c);Pairing_Heap<String> p=new Pairing_Heap<>();p.checkPriority(b);}@Testpublic void testgetData() {Heap_Item<String> null2=new Heap_Item<>();null2.getData();}@Testpublic void testgetSonByData() {Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> z=new Heap_Item<>("z");Heap_Item<String> z2=new Heap_Item<>("z2");Heap_Item<String> z1=new Heap_Item<>("z1");k.setLeftSon(z);k.setRightSon(z2);z2.setAncestor(k);z.setAncestor(k);k.removeChild("z1");}@Testpublic void testgetSonByData1() {Heap_Item<String> k=new Heap_Item<>("k");k.getSonByData(null);Heap_Item<String> z2=new Heap_Item<>("z2");k.setRightSon(z2);z2.setAncestor(k);k.getSonByData("z2");}@Testpublic void testreplaceChild1() {Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> z2=new Heap_Item<>("z2");k.setRightSon(z2);z2.setAncestor(k);k.replaceChild("z1", z2);}@Testpublic void testgetMultiWayAncestor2() {Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> c=new Heap_Item<>("c");Heap_Item<String> a=new Heap_Item<>("a");Heap_Item<String> b=new Heap_Item<>("b");c.setLeftSon(k);k.setAncestor(c);k.setRightSon(a);a.setAncestor(k);a.setRightSon(b);b.setAncestor(a);b.getMultiWayAncestor();}@Testpublic void testpop() {Heap_Item<String> k=new Heap_Item<>("k");Heap_Item<String> z=new Heap_Item<>("z");k.setLeftSon(z);z.setAncestor(k);Pairing_Heap<String> p=new Pairing_Heap<>();Pairing_Heap<String> p1=new Pairing_Heap<>(k);p.pop();p1.pop();}
}
相关文章:
2023全国大学生软件测试大赛开发者测试练习题满分答案(PairingHeap2023)
2023全国大学生软件测试大赛开发者测试练习题满分答案(PairingHeap2023) 题目详情题解代码(直接全部复制到test类中即可) 提示:该题只需要分支覆盖得分即可,不需要变异得分 题目详情 题解代码(…...
介绍一下tokens
“Tokens” 是一个计算机科学和自然语言处理领域常用的术语,通常用于表示文本中的最小单位。在这个上下文中,我将解释一下 “tokens” 的含义以及它们在不同领域中的用途: 自然语言处理 (NLP): 在自然语言处理中,“token” 是指文…...
机器学习、深度学习相关的项目集合【自行选择即可】
【基于YOLOv5的瓷砖瑕疵检测系统】 YOLOv5是一种目标检测算法,它是YOLO(You Only Look Once)系列模型的进化版本。YOLOv5是由Ultralytics开发的,基于一阶段目标检测的概念。其目标是在保持高准确率的同时提高目标检测的速度和效率…...
百面机器学习书刊纠错
百面机器学习书刊纠错 P243 LSTM内部结构图 2023-10-7 输入门的输出 和 candidate的输出 进行按元素乘积之后 要和 遗忘门*上一层的cell state之积进行相加。...
vue2安装cesium并使用
一、安装 1.安装cesium npm install cesium1.95.0 -S 2.安装所需 npm install copy-webpack-plugin10.2.4 -D 二、配置 1.配置vue.config.js vue 中引入cesium 需要用copy-webpack-plugin 把一些文件拷贝到打包目录 // vue.config.js const CopyWebpackPlugin require…...
基于Docker来部署Nacos的注册中心
基于Docker来部署Nacos的注册中心 准备MySQL数据库表nacos.sql,用来存储Nacos的数据。 最终表结构如下: 在本地nacos/custom.env文件中,有一个MYSQL_SERVICE_HOST也就是mysql地址,需要修改为你自己的虚拟机IP地址: …...
黑马JVM总结(三十一)
(1)类加载器-概述 启动类加载器-扩展类类加载器-应用程序类加载器 双亲委派模式: 类加载器,加载类的顺序是先依次请问父级有没有加载,没有加载自己才加载,扩展类加载器在getParent的时候为null 以为Boots…...
【C++】list基本接口+手撕 list(详解迭代器)
父母就像迭代器,封装了他们的脆弱...... 手撕list目录: 一、list的常用接口及其使用 1.1list 构造函数与增删查改 1.2list 特殊接口 1.3list 排序性能分析 二、list 迭代器实现(重点难点) 关于迭代器的引入知识:…...
PowerShell pnpm : 无法加载文件 C:\Users\lenovo\AppData\Roaming\npm\pnpm.ps1
1、右键点击【开始】,打开Windows PowerShell(管理员) 2、运行命令set-ExecutionPolicy RemoteSigned 3、根据提示,输入A,回车 此时管理员权限已经可以运行pnpm 如果vsCode还报该错误 继续输入 4、右键点击【开始】,打…...
mysql面试题33:Blob和text有什么区别
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Blob和text有什么区别 Blob和text是数据库中存储大文本数据的两种数据类型&#…...
docker版jxTMS使用指南:4.6版升级内容
4.6版jxTMS已经发布,升级了多个重大能力,本系列文章将逐一进行讲解。 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4.2版jxTMS的说明,请查看&…...
java最优建树算法
建树算法 树的数据结构 {"code": "1111","name": "","parentcode": "0000","children": null }, {"code": "2222","name": "","parentcode": &q…...
mysql面试题30:什么是数据库连接池、应用程序和数据库建立连接的过程、为什么需要数据库连接池、你知道哪些数据库连接池
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是数据库连接池? 数据库连接池是一种用于管理和复用数据库连接的技术。它是在应用程序和数据库之间建立一组数据库连接,并以池的形式存储起…...
【Vue】vscode格式刷插件Prettier以及配置项~~保姆级教程
文章目录 前言一、下载插件二、在项目内创建配置文件1.在根目录创建,src同级2.写入配置3.每个字段含义 总结 前言 vscode格式刷,有太多插件了,但是每个的使用,换行都不一样。 这里我推荐一个很多人都推荐了的Prettier 一、下载插…...
.NET 8 中的调试增强功能
作者:James Newton-King 排版:Alan Wang 开发人员喜欢 .NET 强大且用户友好的调试体验。您可以在您选择的 IDE 中设置断点,启动已经附加上调试器的程序,逐步执行代码并查看 .NET 应用程序的状态。 在 .NET 8 中,我们致…...
1310. 数三角形
知识点:(a, b)与(c, d)两点连线上点的个数为:gcd(x, y) 1(包括端点) (设横坐标差的绝对值为x, 纵坐标差的绝对值为y ) 思路:先算出选三个点的所有情况,再减去三点共线的情况 共线的斜率为0时特判 当共线…...
数据库基础(一)
数据库面试基础 注,本文章内容主要来自于JAVAGUIDE,只是结合网上资料和自己的知识缺陷进行一点补充,需要准备面试的请访问官方网址。 一、范式 参考链接 函数依赖:一张表中,确定X则必定能确定Y,则X->…...
Factory-Method
Factory-Method 动机 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具…...
【C++】神奇字符串(力扣481)
神奇字符串的规律: 神奇字符串 s 仅由 ‘1’ 和 ‘2’ 组成,并需要遵守下面的规则: 神奇字符串 s 的神奇之处在于,串联字符串中 1 和 2 的连续出现次数可以生成该字符串。 s 的前几个元素是 s “1221121221221121122……” 。如果…...
elasticsearch索引的数据类型以及别名的使用
在上篇文章写了关于elasticsearch索引的数据类型,这里就详细说下索引的增删改查以及其他的一些操作吧。 1、索引的增、删、改、查 先新建一个索引结构,代码如下 PUT test-3-2-1 {"mappings": {"properties": {"id": {&…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
