- 博客(33)
- 收藏
- 关注
原创 MySQL库的操作
语法:CREATENOTSET说明:大写的表示关键字[]是可选项指定数据库采用的字符集COLLATE:指定数据库字符集的校验规则。
2025-06-05 22:46:12
934
原创 MySQL数据库基础
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的。:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如。的关系型数据库管理系统,它包含在一个相对小的。
2025-06-05 21:40:57
857
原创 社区交流平台自动化测试报告
为论坛系统实施自动化测试,并编写自动化测试用例,自动化测试是通过Selenium编写的自动化脚本,自动化测试用例覆盖了登录界面、注册页面、论坛列表页等核心功能,以来确保每个页面各个每个模块功能的稳定,使用户有流畅的论坛浏览和使用体验。
2025-03-30 15:34:53
1240
1
原创 个人日记系统自动化测试报告
定位web元素、对获取到的元素进行操作等,对日记系统进行测试,测试的内容有:登录页面的成功与失败登录,日记列表页的内容包括用户信息,日记内容详情页面的元素是否齐全,日记编辑页的交互功能是否能成功发布日记等重要功能。⑥ 测试内容包括:日记标题、日记内容、发布日记按钮等是否存在,以及不写标题写内容能发发布日记,写标题写内容不点击发布日记按钮是否能发布日记,写标题不写内容能否发布日记用例。基于SSM框架实现的个人日记系统,现有登录注销页面,日记列表页,日记内容页,日记编辑页面。
2025-03-21 21:37:37
824
原创 【C++】stack和queue
底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素。底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素。front():返回容器中第一个元素的引用。push_back():在容器尾部插入元素。
2024-12-20 21:51:33
804
2
原创 【C++】vector
1. memcpy是内存的二进制格式拷贝,将一段内存空间中内容原封不动的拷贝到另外一段内存。元素,并且自定义类型元素中涉及到资源管理时,就会出错,因为memcpy。, 获取最后一个数据的下一个位置的iterator/const_iterator。位置之后的元素会往前搬移,没有导致底层空间的改变,理。2. 如果拷贝的是自定义类型的元素,中,迭代器失效后,代码并不一定会崩溃,但是运行。中所有的偶数,请问那个代码是正确的,为什么?既高效又不会出错,但如果拷贝的是自定义类型。这个问题经常会考察,不要固化的认为,
2024-12-20 21:10:07
1009
12
原创 【C++】String类
就像一个家庭中有两个孩子,但父母只买了一份玩具,两个孩子愿意一块玩,则万事大吉,万一。增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变。写时拷贝就是一种拖延症,是在浅拷贝的基础之上增加了引用计数的方式来实现的。,说明该对象时资源的最后一个使用者,将该资源释放;的底层很简单,容器遍历实际就是替换为迭代器,这个从汇编层也可以看到。而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。个字符数组的固定空间,不需要通过堆创建,效率高。,自动迭代,自动取数据,自动判断结束。
2024-10-22 22:12:22
1209
79
原创 【C++】STL简介
任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原。的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。在惠普实验室完成的原始版本,本着开源精神,他们声明允许。中的优秀作品,有了它的陪伴,许多底层。采用,不能公开或修改,缺陷:可读。采用,不能公开或修改,可读性一。性比较低,符号命名比较怪异。,不仅是一个可复用的。始版本一样做开源使用。
2024-10-09 22:39:37
645
79
原创 【C++】模板初阶
重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增。如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。,那将会节省许多头发。巧的是前人早已将树栽好,我们只。代码的可维护性比较低,一个出错可能所有的重载均出错。类模板实例化与函数模板实例化不同,如何实现一个通用的交换函数呢?,对于字符类型也是如此。中,也能够存在这样一个。,对于模板函数的使用,
2024-10-09 22:06:59
952
38
原创 【C++】内存管理
申请空间成功就直接返回,否则执行用户提供的空间不足应对措施,如果用户提供该措施。中可以继续使用,但有些地方就无能为力,而且使用起来比较麻烦,因。的共同点是:都是从堆上申请空间,并且需要用户手动释放。用于程序运行时动态内存分配,堆是可以上增长的。在空间上执行析构函数,完成对象中资源的清理工作。在申请的空间上执行构造函数,完成对象的构造。只会开辟空间,不会调用构造函数与析构函数,而。在申请空间后会调用构造函数完成对象的初始化,申请空间时,需要手动计算空间大小并传递,申请和释放的是单个元素的空间,
2024-09-29 20:18:59
1163
77
原创 【C++】类和对象——下
尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其。友元提供了⼀种突破类访问限定符封装的⽅式,友元分为:友元函数和友元类,在函数声明或者类声明的前⾯加friend,并且把友元声明放到⼀个类的⾥⾯。
2024-09-24 19:26:08
1328
81
原创 【数据结构】链式二叉树
设⼆叉树的根结点所在层数为1,层序遍历就是从所在⼆叉树的根结点出发,⾸先访问第⼀层的树根结点,然后从左到右访问第2层上的结点,接着是第三层的结点,以此类推,⾃上⽽下,⾃左⾄右逐层访问树的结点的过程就是层序遍历。根结点的左⼦树和右⼦树分别⼜是由⼦树结点、⼦树结点的左⼦树、⼦树结点的右⼦树组成的,因此⼆叉树定义是递归式的,后序链式⼆叉树的操作中基本都是按照该概念实现的。回顾⼆叉树的概念,⼆叉树分为空树和⾮空⼆叉树,⾮空⼆叉树由根结点、根结点的左⼦树、根结点的右⼦树组成的。访问顺序为:根结点、左⼦树、右⼦树。
2024-08-24 09:38:21
958
115
原创 手撕⼆叉树——堆
因为堆是完全⼆叉树,⽽满⼆叉树也是完全⼆叉树,此处为了简化使⽤满⼆叉树来证明(时间复杂度本来看的就是近似值,多⼏个结点不影响最终结果)删除堆是删除堆顶的数据,将堆顶的数据根最后⼀个数据⼀换,然后删除数组最后⼀个数据,再进⾏向下调整算法。如果有⼀个关键码的集合 ,把它的所有元素按完全⼆叉树的顺序存储⽅ 式存储,在⼀个⼀维数组。在树形结构中,我们最常⽤的就是⼆叉树,⼀棵⼆叉树是结点的⼀个有限集合,该集合由⼀个根结。⼀个⼆叉树,如果每⼀个层的结点数都达到最⼤值,则这个⼆叉树就是满⼆叉树。
2024-08-22 13:57:28
1356
73
原创 【数据结构】栈和队列的实现
正文1.栈1.1概念与结构栈:⼀种特殊的线性表,其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。:栈的插⼊操作叫做进栈/压栈/⼊栈,⼊数据在栈顶。:栈的删除操作叫做出栈。。栈底层结构选型栈的实现⼀般可以使⽤数组或者链表实现,相对⽽⾔数组的结构实现更优⼀些。因为数组在尾上插⼊数据的代价⽐较⼩。1.2栈的实现stack.htest.c1.3。
2024-08-20 19:57:15
927
51
原创 【数据结构】教你如何实现单链表——结尾附源码
图中指针变量 plist保存的是第⼀个结点的地址,我们称plist此时“指向”第⼀个结点,如果我们希望plist“指向”第⼆个结点时,只需要修改plist保存的内容为0x0012FFA0。链表中每个结点都是独⽴申请的(即需要插⼊数据时才去申请⼀块结点的空间),我们需要通过指针变量来保存下⼀个结点位置才能从当前结点找到下⼀个结点。概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。据,也需要保存下⼀个结点的地址(当下⼀个结点为空时保存的地址为空)。
2024-08-15 21:40:19
1351
55
原创 【数据结构】顺序表——赋源码(结尾)
线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。线性表是⼀种在实际中⼴泛使 ⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...概念:顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构,⼀般情况下采⽤数组存储。在插入数据之前我们药判断顺序表中的空间是否充足 所以我们要写一个判断空间是否充足的函数。顺序表的底层结构是数组,对数组的封装,实现了常⽤的增删改查等接⼝。在相应的源文件中引入头文件。
2024-08-14 21:36:51
1322
52
原创 【数据结构】算法复杂度
实际中我们计算时间复杂度时,计算的也不是程序的精确的执⾏次数,精确执⾏次数计算起来还是很⿇烦的(不同的⼀句程序代码,编译出的指令条数都是不⼀样的),计算出精确的执⾏次数意义也不⼤,因为我们计算时间复杂度只是想⽐较算法程序的增⻓量级,也就是当N不断变⼤时T(N)的差别,上⾯我们已经看到了当N不断变⼤时常数和低阶项对结果的影响很⼩,所以我们。通过对复杂度的分析,可以选择更高效的算法,提高程序的执行效率,并在处理大规模问题时提供良好的扩展性和可维护性。随着数据量的增长,算法的空间消耗也会相应增加。
2024-08-13 14:37:32
3001
47
原创 预处理详解
(假定某个程序中声明了⼀个某个⻓度的数组,如果机器内存有限,我们需要⼀个很⼩的数组,但是另外⼀个机器内存⼤些,我们需要⼀个数组能够⼤些。当宏参数在宏的定义中出现超过⼀次的时候,如果参数带有副作⽤,那么你在使⽤这个宏的时候就可能出现危险,导致不可预测的后果。如果是加了分号的情况,等替换后,if和else之间就是2条语句,⽽没有⼤括号的时候,if后边只能有⼀条语句。每次使⽤宏的时候,⼀份宏定义的代码将插⼊到程序中。这⾥我们想想,写⼀个函数求2个数的较⼤值的时候,不同的数据类型就得写不同的函数。
2024-08-10 22:01:40
856
32
原创 【C++】类和对象 ——中
没有显式实现时,编译器会⾃动⽣成⼀个默认赋值运算符重载,默认赋值运算符重载⾏为跟默认拷⻉构造函数类似,对内置类型成员变量会完成值拷⻉/浅拷⻉(⼀个字节⼀个字节的拷⻉),对⾃定义类型成员变量会调⽤他的赋值重载函数。赋值运算符重载是⼀个默认成员函数,⽤于完成两个已经存在的对象直接的拷⻉赋值,这⾥要注意跟拷⻉构造区分,拷⻉构造⽤于⼀个对象拷⻉初始化给另⼀个要创建的对象。如果⼀个重载运算符函数是成员函数,则它的第⼀个运算对象默认传给隐式的this指针,因此运算符重载作为成员函数时,参数⽐运算对象少⼀个。
2024-08-10 21:28:25
1387
42
原创 【C++】类和对象 (上中篇)
再分析⼀下,对象中是否有存储指针的必要呢,Date实例化d1和d2两个对象,d1和d2都有各⾃独⽴的成员变量_year/_month/_day存储各⾃的数据,但是d1和d2的成员函数Init/Print指针却是⼀样的,存储在对象中就浪费了。这⾥需要再额外哆嗦⼀下,其实函数指针是不需要存储的,函数指针是⼀个地址,调⽤函数被编译成汇编指令[call 地址], 其实编译器在编译链接时,就要找到函数的地址,不是在运⾏时找,只有动态多态是在运⾏时找,就需要存储函数地址,这个我们以后会讲解。
2024-08-10 21:11:12
1227
38
原创 编译和链接
前⾯我们⾮常简洁的讲解了⼀个C的程序是如何编译和链接,到最终⽣成可执⾏程序的过程,其实很多内部的细节⽆法展开讲解。程序同时也可以使⽤静态(static)内存,存储于静态内存中的变量在程序的整个执⾏过程⼀直保留他们的值。处理#include 预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。将源代码程序被输⼊扫描器,扫描器的任务就是简单的进⾏词法分析,把代码中的字符分割成⼀系列的记号(关键字、标识符、字⾯量、特殊字符等)。链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。
2024-08-07 01:55:26
1153
45
原创 C语言⽂件操作
ANSIC 标准采⽤“缓冲⽂件系统” 处理的数据⽂件的,所谓缓冲⽂件系统是指系统⾃动地在内存中为程序中每⼀个正在使⽤的⽂件开辟⼀块“⽂件缓冲区”。每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件的名字,⽂件状态及⽂件当前的位置等)。通过该⽂件信息区中的信息就能够访问该⽂件。在编写程序的时候,在打开⽂件的同时,都会返回⼀个FILE*的指针变量指向该⽂件,也相当于建⽴了指针和⽂件的关系。⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,
2024-08-05 19:47:22
930
37
原创 初识C++ (下篇)
不论采取何种定义,在使⽤空值的指针时,都不可避免的会遇到⼀些⿇烦,本想通过f(NULL)调⽤指针版本的f(int*)函数,但是由于NULL被定义成0,调⽤了f(int x),因此与程序的初衷相悖。也是类似,在类型转换中会产⽣临时对象存储中间值,也就是时,rb和rd引⽤的都是临时对象,⽽C++规定临时对象具有常性,所以这⾥就触发了权限放⼤,必须要⽤常引⽤才可以。C++中指针和引⽤就像两个性格迥异的亲兄弟,指针是哥哥,引⽤是弟弟,在实践中他们相辅相成,功能有重叠性,但是各有⾃⼰的特点,互相不可替代。
2024-08-04 02:13:13
1085
25
原创 重生之我学编程
编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱?让我们一起探讨大学新生入门编程的最佳路径,为你的大学生活和未来职业发展打下坚实基础。通过以上详细的步骤和建议,你可以在大学期间逐步建立起坚实的编程基础,并朝着成为编程大神的目标迈进。记住,持续的学习、实践和探索是成长的关键!
2024-08-04 01:55:18
701
8
原创 初识C++ (上篇)
每个公司研发团队,有研发就有测试,测试主要分为测试开发和功能测试,测试开发⼀般是使⽤⼀些测试⼯具(selenium、Jmeter等),设计测试⽤例,然后写⼀些脚本进⾏⾃动化测试,性能测试等,有些还需要⾃⾏开发⼀些测试⽤具。使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要C++的流能更好的⽀持⾃定义类型对象的输⼊输出。在随后的⼏年中,C++在学术界和⼯业界的应⽤逐渐增多。
2024-08-02 16:28:43
1236
13
原创 常用快捷键整理
用加粗标注的是我个人使用时常用的,其实这个全凭个人喜好)跳出执行当前执行点所处函数的剩余行。这样就不用先将光标移到行首或行尾了)查找上次搜索文本的下一个匹配项。查找上次搜索文本的上一个匹配项。将选定文本更改为小写字符。清除项目中的所有断点。删除插入点右侧的单词。将插入点移动到行尾。将插入点移动到行首。
2024-08-02 13:34:58
724
13
原创 动态内存管理
包含柔性数组成员的结构⽤malloc ()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的。当是情况2 的时候,原有空间之后没有⾜够多的空间时,扩展的⽅法是:在堆空间上另找⼀个合适。栈内存分配运算内置于处理器的指令集中,效率很⾼,但是分配的内。有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的。如果我们的代码是在⼀个给别⼈⽤的函数中,你在⾥⾯做了⼆次内存分配,并把整个结构体返回给。了,并返回给⽤⼾⼀个结构体指针,⽤⼾做⼀次free就可以把所有的内存也给释放掉。
2024-07-30 15:23:15
1935
28
原创 ⾃定义类型:结构体
如果传递⼀个结构体对象的时候,结构体过⼤,参数压栈的的系统开销⽐较⼤,所以会导致性能的下降。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构。答案是不⾏的,因为Node是对前⾯的匿名结构体类型的重命名产⽣的,但是在匿名结构体内部提。仔细分析,其实是不⾏的,因为⼀个结构体中再包含⼀个同类型的结构体变量,这样结构体变量的。不是所有的硬件平台都能访问任意地址上的任意数据的;⾥使⽤位段,能够实现想要的效果,也节省了空间,这样⽹络传输的数据报⼤⼩也会较⼩⼀些,对。
2024-07-23 15:59:52
1169
17
原创 教你如何手撕双向链表
带头链表⾥的头结点,实际为“哨兵位”,哨兵位结点不存储任何有效元素,只是站在这⾥“放哨的”注意:这⾥的“带头”跟前⾯我们说的“头结点”是两个概念,实际前⾯的在单链表阶段称呼不严。这就完成了一个双向链表,如有不懂欢迎私信博主 ,诚信在线为大家解答!谨,但是为了同学们更好的理解就直接称为单链表的头结点。注:需调用1.7的方法找到相应位置后方可插入节点。注:需调用1.7的方法找到相应位置后方可插入节点。指定位置之后插入节点。
2024-07-22 14:55:58
496
12
原创 字符函数和字符串函数
如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 \0 的内容追加到destination。错误码都是 有对应的错误信息的。的,C语⾔程序启动的时候就会使⽤⼀个全局的变量errno来记录程序的当前错误码,只不过程序启。动 的时候errno是0,表⽰没有错误,当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会。将对应 的错误码,存放在errno中,⽽⼀个错误码的数字是整数很难理解是什么意思,所以每⼀个。C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。
2024-07-20 14:26:36
872
11
原创 C语言指针详解(进阶)
正片开始 ,在上一篇当中我们已经介绍了指针的基本概念以及一些基本的用法,让我们一起。去探讨一下指针中更为深奥的知识,学会指针,编程从此不再害怕!7. 指向函数指针数组的指针。9. 指针和数组面试题的解析。4. 数组传参和指针传参。
2024-07-17 14:30:46
2131
16
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅