- 博客(110)
- 资源 (1)
- 问答 (4)
- 收藏
- 关注
原创 MySQL数据库——复合查询
实际开发中往往数据来自不同的表,所以需要多表查询。我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询。多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。在实际应用中,为了合并多个select的执行结果,可以使用集合操作符union,union all。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用。子查询是指嵌入在其他sql语句中的selecti语句,也叫嵌套查询。返回多行记录的子查询。
2024-12-13 11:16:57
589
1
原创 MySQL数据库——内置函数
interval后的数值单位可以是:year minute second day。interval后的数值单位可以是:year minute second day。返回substring在string中出现的位置,没有返回0。在str中用replace_str替换search_str。从str的postion开始,取length个字符。从string2中的左边起取length个字符。返回datetime参数的日期部分。在date中添加日期或时间。在date中减去日期或时间。两个去日期的差,单位是天。
2024-12-13 11:15:25
677
原创 测试开发基础——测试分类
肉眼看到的任何元素都需要进行测试界面测试(简称U测试),指按照界面的需求(一般是U设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试和检查,一般包括如下内容:功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场
2024-09-12 19:15:53
1271
原创 测试开发基础——测试用例的设计
测试环境、操作步骤、测试数据、预期结果等要素。设计测试用例原则一:测试用例中一个必需部分是对预期输出或结果进行定义笔试的时候编写测试用例题,需要按照Excel表格的方式来答题面试的时候回答测试用例,按照思维导图一一道出即可什么是要素?我们在编写测试用例的时候,每个用例需要给出这些要素对应的信息。用例编号test-01标题成功注册网易邮箱测试方式手工测试功能模块注册登录重要性重要测试前提系统运行正常,邮件服务器已开启测试环境。
2024-09-12 19:15:30
1940
原创 测试开发基础——软件测试中的bug
一个计算机bug指在计算机程序中存在的一个错误(error)缺陷(flaw)疏忽(mistake)或者故障(fult),这些bug使程序无法正确的运行。Bug产生于程序的源代码或者程序设计阶段的疏忽或者错误。当且仅当规格说明是存在的并且正确程序与规格说明之间的不匹配才是错误。当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
2024-09-11 18:38:20
1364
原创 测试开发基础——概念
在敏捷模型中,需求被分解成许多可以增量开发的小部分。敏捷模型采用迭代开发。:一个功能开发一个部分,然后再去开发另一个功能的一部分,会先上线一个基础版本,但是基础版本所有的功能都有只不过功能比较简陋,后期再继续迭代优化上线。用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。因此,敏捷模型的主要目的是促进项目的快速完成。宣言中主要运用了对比的手法,然而,在每对比对中,后者并非全无价值,但我们更看重前者。增量模型可看做瀑布模型地一个变体,具有瀑布模型的所有优点。
2024-09-11 18:36:38
1092
原创 MySQL数据库——表的CURD(结果查询)
案例:雇员信息表(oracle 9i的经典测试表)删除表中的重复记录,重复的数据只能有一份。返回查询到的数据的平均值,不是数字没有意义。返回查询到的数据的最大值,不是数字没有意义。返回查询到的数据的最小值,不是数字没有意义。返回查询到的数据的总和,不是数字没有意义。返回查询到的数据的数量。(在mysql中操作)
2024-08-19 15:54:12
485
5
原创 MySQL数据库——表的CURD(Delete)
truncate [table] table_name注意:这个操作慎用1.只能对整表操作,不能像DELETE一样针对部分数据操作;2.实际上MySQL不对数据操作,所以比DELETE更快,但是TRUNCATE在删除数据的时候,并不经过真正的事务,所以无法回滚3.会重置AUTO_INCREMENT项
2024-08-19 15:54:05
349
原创 MySQL数据库——表的CURD(Update)
原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个环节。一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。隔离性(Isolation):并发执行的事务之间不会互相影响。持久性(Durability):一旦事务提交,它对数据库的改变就是永久性的即使系统发生故障也不会丢失。
2024-08-16 20:33:59
1010
原创 MySQL数据库——表的CURD(Retrieve)
子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序。在日常开发中不建议使用全列查询,因为数据会很多。如果是option中的任意一个,返回。表示任意多个(包括0个)任意字符;大于,大于等于,小于,小于等于。DESC 降序 (从大到小)ASC 升序(从小到大)的结果是TRUE(1)
2024-08-16 20:33:43
415
原创 MySQL数据库——表的约束(二)
但是这个学生的其他信息诸如电话和社交账号,这些也都是唯一的,但是不是必须填写的,所以也需要确保在表中不会有两个人填写相同的电话(在现实情况中就是每个人都有自己专属的电话),类似的信息也有身份证等,这时候,需要确保该信息的唯一性,但是又不像主键一样是必须填写的,就需要用到唯一键了。在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。,得到一个新的不同的值。,数据不能重复,但是。
2024-08-15 10:14:12
781
原创 MySQL数据库——表的约束(一)
表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的!,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。:如果设置了,用户插入的时候,有具体的数据就用用户的,如果没有就用默认的。不冲突,而是相互补充的。
2024-08-14 14:58:55
517
原创 MySQL数据库——数据库的数据类型(二)
当您插入一个数值时,实际上是在设置对应于该数值的位。类型,它可以存储列中列出的一个或多个值(在这种情况下,是 '代码'、'羽毛球'、'乒乓球'、'足球'、'游泳' 中的一个或多个)。(即 00001 | 00010,结果是 00011),这表示 '代码' 和 '羽毛球' 都被选中了。所以,在你的数据表中,只有那些。该设定只是提供了若干个选项的值,最终一个单元格中,该设定只是提供了若干个选项的值,最终一个单元格中,类型的列在存储时会将选中的值转换为一个数字,字符串,L是可以存储的长度,单位为字符,
2024-08-13 20:22:20
1015
原创 MySQL数据库——数据库的数据类型(一)
如果我们向mysql特定的类型中插入不合法的数据,MySQL一般都是直接拦截我们的操作,如果我们的数据成功插入到mysql中了,一定插入的时候是合法的。所以在mysql中,一般而言,数据类型本身也就是一种约束(约束使用者,保证数据插入的合法性),这样就能保证数据库中的数据是可预期的、完整的。但是在C/C++中,如果较大的数存入范围较小的数据类型中(如char中存入1234567),这种情况下一般不会报错,顶多会警告,这时候存入了数据,但是数据会被截断或发生了隐式类型转换。,显示为不同的数值。
2024-08-13 20:19:33
898
原创 MySQL数据库——数据库的基本操作
如果备份一个数据库时,没有带上-B参数,在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用。-- utf8_general_ci 不区分大小写。因为在配置mysql的时候配置了默认的存储引擎(-- utf8_bin 区分大小写。因为使用不同的存储引擎,所以。4. 同时备份多个数据库。5. 查看数据库连接情况。
2024-08-05 21:55:02
1160
原创 MySQL数据库——数据库基础
各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等。MySQL是一个可移植的数据库,几乎能在当前所有的操系统上运行,如。(在我的本机上安装了两个不同版本的MySQL)左侧选项可以停止、暂停、重启动进行服务管理。:连接端口号,如果没有写默认是连接端口号。:连接到MySql服务器时使用的用户名。:连接地址,如果没有写默认是连接本地。MySQL的核心就是。
2024-08-04 00:17:23
567
原创 C++客户端Qt开发——多线程编程(二)
这种情况下,线程会很自然地使用锁的机制来阻塞其他线程,因为这只是线程的轮流使用,并且该线程等待某些特定条件,人们会认为需要等待条件的线程,在释放互斥锁或读写锁之后进入了睡眠状态,这样其他线程就可以继续运行。方法就可以将一个任务添加到线程池中,这个任务就可以被线程池内部的线程池处理掉了,使用线程池比自己创建线程的这种多种多线程方式更加简单和易于维护。给线程池添加任务, 任务是一个 QRunnable 类型的对象,如果线程池中没有空闲的线程了, 任务会放到任务队列中, 等待线程处理。得到线程池对象之后,调用。
2024-08-04 00:12:39
1175
原创 C++客户端Qt开发——多线程编程(一)
当信号发出时,槽函数会被插入到接收对象所属的线程的事件队列中,等待下一次事件循环时执行。直接复制了上边示例的项目,所以这里的类名还是一致的,但是这种方法是从QObject中派生的,命名在这里用于区分代码就好。类似,但是发送信号的线程会被阻塞,直到槽函数执行完毕,这种连接类型适用于需要等待槽函数执行完毕再继续的场景,但。Qt提供的第二种线程的创建方式弥补了第一种方式的缺点,用起来更加灵活,但是这种方式写起来会相对复杂一些。代表一个在应用程序中可以独立控制的线程,也可以和进程中的其他线程共享数据。
2024-08-03 00:20:16
1661
原创 Qt项目——文本编辑器(Bug/疑问)
如果有需要学习该项目的人,觉得看文档较为困难,可以加我联系方式,本篇是针对我在做项目的时候遇到的bug和一些疑问的总结,综合前几部分看另外在github上我会进行一些后续bug的修复更新,如有其他bug可在github上查看。
2024-08-03 00:19:42
806
原创 Qt项目——文本编辑器(功能模块④)
文档打印操作,在.ui界面对printPreviewAction转到槽,选triggered信号,然后将功能封装为docPrintPreview将打印预览功能封装,实现该函数时需要添加头文件
2024-08-02 00:01:30
552
原创 Qt项目——文本编辑器(功能模块③)
文档内容的剪切、复制、粘贴,撤销(上一步)、重写(下一步)等操作,同上,在.ui界面对这些Action转到槽,选triggered信号,关于这几种功能,在Qt中有已实现的函数,直接调用即可文字的加粗、倾斜、下划线操作,同上,在.ui界面对这些Action转到槽,选triggered信号,关于这几种功能,是需要对选中的文字进行设置
2024-08-02 00:01:09
628
原创 Qt项目——文本编辑器(功能模块②)
在.ui文件的各个Action选项右击选择转到槽,选择triggered信号,调用对应的方法(均已封装好,可以直接调用)这里有新建、关闭、关闭所有、平铺、层叠、下一个、上一个
2024-08-01 00:48:45
711
1
原创 Qt项目——文本编辑器(功能模块①)
MDI(Multiple Document Interface,多文档界面)是一种允许用户同时打开多个文档窗口的界面模式。在这种模式下,每个文档窗口都可以独立操作,并且可以缩放、移动和关闭。在.ui添加MDI控件,然后创建ChileWnd类,父类选择QTextEdit在.ui界面对newAction转到槽,选triggered信号,我们将新建操作进行封装,命名为docNew,并在主窗口头文件声明接着在新建好的子窗口头文件中进行功能函数和全局变量的声明,实现子窗口需要的功能
2024-08-01 00:48:21
1414
原创 Qt项目——文本编辑器(菜单栏)
在创建项目文件的时候,选中创建.ui文件,项目类型为QMainwindown,在.ui界面添加菜单栏选项添加的时候会发现,无法输入中文,这是QTCreator一项不太合理的设计,我们需要事先在文本文件中写好所有需要添加的菜单项,然后逐一复制(复制过后记得按回车才能保存),这样就可以创建中文形式的菜单栏另外需要一并设置快捷键的,创建的时候需要添加取地址符号,例如:编辑(&E)
2024-07-31 00:48:20
546
原创 Qt项目——文本编辑器(需求设计)
Qt Creator 版本:4.11.0基于的 Qt 版本:5.14.0编译器:MSVC 2017(微软视觉工作室 2017)编译位数:32位编译日期:2019年12月10日 12:27:13(注意:这里的日期可能存在笔误,通常日期格式为月/日/年)源代码修订版本:017ed74400版权信息:2008-2019 The Qt Company Ltd(Qt 公司)法律声明:程序提供“按原样”(AS IS),不提供任何形式的保证,包括设计、适销性和特定用途的适用性保证。
2024-07-31 00:45:45
658
原创 C++客户端Qt开发——界面优化(美化登录界面)
用布局管理器管理元素:用户名LineEdit,密码LineEdit,记住密码ComboBox,登录Button。无法设置背景图片,套上一层。所有的属性设置都集中放在。
2024-07-30 00:37:22
501
原创 C++客户端Qt开发——界面优化(绘图)
因此,如果把绘图 API 放到构造函数中调用,那么一旦出现上述的情况,界面的绘制效果就无法确保符合预期了。width:所绘制矩形的宽度;Qt提供了画图相关的APL,可以允许我们在窗口上绘制任意的图形形状,来完成更复杂的界面设计。的时候其实就是把上述记录的事件再一条一条的执行一遍即可还原之前的游戏场景了。在绘制时,是有一个默认的画笔的。的子类,用来处理颜色深度为l的图像,即只能显示黑白两种颜色;这样的经典游戏,即使是一场60分钟的膀胱局,生成的。所谓的"控件",本质上也是通过画图的方式画上去的。
2024-07-30 00:37:10
1079
1
原创 C++客户端Qt开发——界面优化(QSS)
除此之外,如果全局和指定控件分别设置两种不同的样式(例如pushbutton_2),那么这两种样式会叠加起来,都给该控件进行设置属性(层叠性)由于设置样式太灵活,有很多地方都能设置,就导致当某个控件样式不符合预期的时候,排查起来就比较麻烦。设置子控件的图片,像QSpinBox,QComboBox等可以使用这个属性来设置子控件的图片。设置子控件的图片,像QSpinBox,QComboBox等可以使用这个属性来设置子控件的图片。设置子控件宽度,对普通控件无效(普通控件使用geometry方法设定尺寸)
2024-07-29 00:13:07
1361
原创 C++客户端Qt开发——系统相关(多媒体音频)
是一个静态成员函数,直接调用它不会创建新的对象,因此也不需要担心内存释放的问题。由于它是静态成员函数,它是由类本身调用的,而不是某个对象,因此不涉及对象的内存管理问题。智能指针可以自动管理对象的生命周期,当智能指针超出作用域时,它会自动删除所指向的对象。wav是一种无损格式,能够提供比其他格式更高质量的音频,wav文件的质量比较高,从而文件大小也相对会大一点。对象生命周期较长,而声音播放不频繁,可能会占用一些不必要的内存。对象,如果不释放这些对象,内存会不断增长,最终可能会耗尽内存。
2024-07-29 00:12:46
1100
原创 C++客户端Qt开发——系统相关(文件操作)
是Qt提供的一个用于获取文件和目录信息的类,如获取文件名、文件大小、文件修改日期等。类似于这样的功能,在C/C++标准库中本来都没有,所以想使用类似的功能往往要使用系统api,不过在C++17引入了模块。,简称I/O设备)的基础类,I/O设备就是能进行数据输入和输出的设备,例如文件是一种I/O设备,网络通信中的socket是I/O设备,串口、蓝牙等通信接口也是I/O设备,所以它们也是从。访问一个设备之前,需要使用open()函数打开该设备,而且必须指定正确的打开模式,在Qt中,文件读写的类为。
2024-07-28 00:06:24
754
原创 C++客户端Qt开发——系统相关(事件)
一些事件是在用户操作时发出,如键盘事件、鼠标事件等,另一些事件则是由系统本身自动发出,如定时器事件。事件本身是操作系统提供的机制.Qt也同样把操作系统事件机制进行了封装,拿到了Qt中,但是由于事件对应的代码编写起来不是很方便,Qt对于事件机制又进行了进一步的封装,就得到了信号槽。实际Qt开发程序过程中,绝大部分和用户之间进行的交互都是通过"信号槽”来完成的,有些特殊情况下,信号槽不一定能搞定(某个用户的动作行为,Qt没有提供对应的信号),此时就需要通过重写事件处理函数的形式,来手动处理事件的响应逻辑。
2024-07-28 00:06:08
1210
原创 C++客户端Qt开发——Qt窗口(对话框)
对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。QFiledialog(文件对话框)QColorDialog(颜色对话框)QFontDialog(字体对话框)QInputDialog(输入对话框)和QMessageBox(消息框)(1)用代码的方式创建创建好MainWindow的项目后,添加按钮并转到槽clicked,然后新建C++->class继承父类:QDialog。
2024-07-27 00:02:18
1615
原创 C++客户端Qt开发——Qt窗口(浮动窗口)
浮动窗口一般是位于核心部件的周围,可以有多个。在Qt中,浮动窗口也称之为铆接部件。浮动窗口是位于中心部件的周围。
2024-07-27 00:00:04
486
原创 C++客户端Qt开发——Qt窗口(状态栏)
状态栏是应用程序中输出简要信息的区域。一般位于主窗口的最底部,一个窗口中最多只能有一个状态栏。在Qt中,状态栏是通过。
2024-07-26 23:59:44
421
原创 C++客户端Qt开发——Qt窗口(工具栏)
如果一个QAction既是QMenu的子元素,又是QToolBar的子元素,释放的时候,是否会重复delete?表示工具栏对象,一个窗口可以有多个工具栏,也可以没有,工具栏往往也可以手动移动位置。在创建工具栏的同时指定其停靠的位置,指的是程序运行时工具栏默认所在的位置;设置停靠位置,指的是工具栏允许其所能停靠的位置。不会,qt的对象树机制处理好了这样的释放。设置工具栏的移动属性可以通过。工具栏允许停靠的区域由。
2024-07-24 13:19:52
591
Qt实现文本编辑器源码
2024-08-02
Postman-测试开发
2024-08-02
关于cpp的移位运算符
2023-01-15
学习数据结构与算法只看书可以吗
2022-07-24
Python求各列表最大值的平均数
2022-06-30
有什么推荐的java自学资源,零基础开始,免费最好
2022-06-12
Python类的方法实现复数四则运算
2022-06-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人