Visual Unit 简明教程

2023-10-27

 

载自:http://www.vckbase.com/index.php/wv/1270

 

VU1.0 简介

Visual Unit,简称VU,是新一代单元测试工具,功能强大,使用简单,完全可视化,不需编写测试代码。VU的测试结果使程序行为一目了然,有助于整理编程思路,提高编程效率和正确性,并能快速排错;VU还增强调试器功能(如自由后退、用例切换),提高调试的效率;VU能达到空前的测试完整性,轻松完成语句、条件、分支及路径覆盖;VU提供详尽的测试报告...... VU不仅是单元测试工具,更是一种使程序开发变得更高质更高效更舒适的工具。VU目前版本适用于C++语言。

在现有开发队伍和管理水平的基础上,使用VU进行充分的单元测试,可以使项目或产品的质量较大幅度地提高,同时开发成本还要较大幅度地下降。

使用VU,黑盒方面,可以轻松完成功能测试、边界测试、速度测试,白盒方面,可以轻松完成语句覆盖、条件覆盖、分支覆盖、路径覆盖。这种空前的测试完整性,使代码中的缺陷无所循形。

使用VU,随时可以用回归测试检验修改是否引入新的错误,因此,随时可以对项目的设计进行或大或小的修改,轻松进行螺旋式的迭代开发,或边开发边设计,甚至“以开发代替设计”,使项目或产品真正符合用户的需求。

VU功能强大但使用简单,学习资料丰富,一天时间就能轻松上手;在VU的支持下编程,程序行为一目了然,感觉舒适有趣,很受程序员的喜爱,决不会受到开发人员的抵制;VU提供详尽的测试报告,测试部门可以依据测试报告对测试结果进行审核,保证测试质量。

运行环境与安装卸载

操作系统:

Windows2000, Windows XP, Windows Server 2003。

内存:

64M,推荐128M。

硬盘空间:

50M。

开发环境:

VC6.0、VC.NET、VC.Net 2003、C++ Builder6.0。

安装VU:

解包后运行Setup.exe文件,按提示完成安装。

VU是绿色软件,安装时不写注册表,除两个DLL文件拷贝到系统目录下外,全部文件均在安装目录下。

启动VU:

安装完后,从开始菜单启动VU。

卸载VU:

从开始菜单卸载。

VU1.0 主要界面

控制窗口

 

主窗口

 

信息窗口及其菜单

 

数据窗口及其菜单

 

代码窗口及其菜单

 

路径窗口及其菜单

 

测试用例编辑器

 

测试用例设计器

 

测试报告

 

建立与配置测试工程

建立测试工程:

测试工程使用与产品工程相同的开发环境建立和编译,运行测试工程即可执行测试,例如,产品工程的开发环境是VC6.0,则同样用VC6.0建立、编译测试工程。

对测试工程的要求是:能编译被测试文件,且编译链接的结果是可直接执行的文件,在符合这些条件的前提下尽可能简单,例如,产品工程是VC6.0的MFC Multiple Document工程,则可以采用MFC Dialog Base作为测试工程,它比较简单,并且可以编译MFC文件,但不能使用Win32 Application,因为它不能编译MFC文件,也不能使用MFC DLL,因为它的编译链接的结果不是可直接执行的文件。

多个产品工程可以使用一个测试工程,因此,建议采用较高适应性的工程类别,例如,产品工程是Win32 Application,测试工程还是采用MFC Dialog Base为好,如果以后项目中要开发一个MFC工程,可以附加进来一起测试。

测试工程的命名建议采用"Test"+产品工程名,如TestDemo。特别提醒:测试工程不能命名为:xxxTester,因为这是测试文件的专用命名格式。

配置测试工程:

测试工程与普通的产品工程具有两个不同之处:

1)定义编译条件_VUNIT。VU提供的支持代码中凡是要用在产品文件中的宏,都只在定义了编译条件_VUNIT时才编译,在产品工程中不编译。

2)执行VuxRunTest()函数。在测试工程最早执行的代码中调用这个函数,这个函数执行完毕,测试也就结束。

除上述两点外,测试工程与产品工程区别不大,在不同的开发环境,具体的配置略有区别,请按照帮助系统的说明进行。

生成测试文件

生成测试文件:

在控制窗口中选择要测试的文件。

VU会自动弹出“生成测试文件”窗口,点击“确定”即可生成测试文件。

生成测试文件后,将被测试文件及其引用的文件、刚生成的测试文件加入到测试工程。

在被测文件中添加代码:

在被测试文件中添加代码并不是必须的,但这些代码将提供重要的功能:

UINT_TEST宏:功能是定义友元,使测试代码可以访问类的私有或保护成员。

TEST_DUMP宏:这是一组宏,格式与VC60的消息映射宏相似,功能是为自定义数据类型输出成员变量的数值。

VU提供了自动生成这些代码的工具,只需将生成的代码拷贝到指定位置即可:

(控制窗口)“定义数据输出”按钮,弹出“定义数据输出”属性表,在“自定义数据类型”页,左边的输入框中输入类名/基类名/成员变量,将右边生成的代码拷贝到被测试文件,如下图。

 

只有基类也是自定义类型并且已定义了TEST_DUMP宏,才需输入基类名。

生成测试函数

选择了被测试文件后,文件中包含的需要测试的函数会出现在函数列表中,可以选择任一个要测试的函数。

如果选中的被测试函数不存在对应的测试函数,自动弹出“生成/匹配测试函数”对话框,可以选择是否生成边界测试代码和速度测试代码,建议采用默认值。点击“确定”,VU在测试文件中生成测试函数。

生成测试函数后,会自动弹出测试用例编辑器。绝大多数情况下,通过测试用例编辑器即可处理测试用例的建立与编辑等工作,无须查看或编辑测试函数的代码。

编辑功能测试用例

根据函数最典型的功能,在测试用例编辑器中编辑第一个测试用例并编译执行测试工程,即可运行测试。

 

输入数据和预期输出可以用点操作符访问成员变量,甚至调用成员函数。

 

VU只生成第一个测试用例。由于不同的测试用例之间,往往变化很小,例如只有一个输入数据和一个预期输出不同,所以,在现有的测试用例的基础上进行修改是新建更多测试用例的最高效的方法。点击“新建”按钮,VU就会生成当前选中用例的拷贝,并选中新生成用例,这时即可进行修改以获得新的测试用例。

 

点击“代码模式”按钮,会转换成代码模式,显示测试用例代码。可以对代码进行编辑,有些测试用例比较特殊,例如连续操作的测试用例,即重复调用被测试函数的测试用例,或异常测试用例,可以通过编辑测试用例的代码来获得。

 

一边编写代码一边测试

编写函数声明与定义后就可以生成测试代码:

在头文件编写函数声明,在源文件编写空的函数实现,有返回值可以随便加一个返回语句,通过编译后就可以生成对应的测试函数。

生成测试代码和编辑第一个测试用例:

从函数列表选中被测试函数,生成测试函数,VU会自动弹出测试用例编辑器。
根据函数最典型的功能,填写第一个测试用例的输入数据与预期输出,编译并运行测试工程,VU主窗口会自动弹出,显示测试结果。

一边编码,一边测试,完成功能覆盖:

为函数的每个功能点新建测试用例。

编写函数代码使所有测试通过。

也可以先编写代码,每完成一个功能点即添加测试用例来测试它。

程序员在编码时当然需要了解程序的功能,也就是说,要了解程序在不同的输入时应该产生什么样的输出,这些就是功能测试用例。

随时观察程序的行为:

随时可以通过运行测试来观察程序的行为,例如,编写了计算某一个变量VAR的几行代码,可以用TEST_TRACE(VAR)宏来输出它的数值,看看结果对不对。观察程序行为对整理编程思路,提高编程效率和正确性具有重要意义,后面会进一步描述。

快速排错:

测试通不过时,大部分情况下都无须单步调试即可找出错误原因,后面会进一步描述。

高效调试:

需要单步调试时,在VU的支持下调试,可以大幅度提高调试效率,后面会进一步描述。

代码优化:

代码编写完成并进行功能测试后,阅读代码,修改可读性不强的代码、重复的代码、意图不清晰的代码、或其他不满意的代码。给代码添加必要的注释。

每完成一个小的改动,就重新运行测试,以确认代码的功能未改变。

全面测试:

完成白盒覆盖:语句覆盖、条件覆盖应达到100%,删除不可达分支后,分支覆盖也要达到100%,删除安全的分支或分支树后,路径覆盖也要达到100%。

打开边界测试开关,运行边界测试,可在数据窗口观察输入边界值时函数的输出。

打开速度测试开关,运行速度测试。

关于白盒覆盖测试用例的设计、边界测试与速度测试,后面会进一步描述。

观察程序行为

程序的行为,无非就是在一定的输入时,产生了什么输出、执行了哪些代码、执行的路径是什么,这些,都可以一目了然地从主窗口的各子窗口观察到。对程序行为了然于胸,不但有助于整理编程思路,提高编程效率和正确性,也会使编程工作变得更有趣和更舒适。

 

快速排错

观察程序行为还可以实现快速排错。对比预期输出与实际输出,阅读执行代码,很容易找到错误原因。对某些关键数据,还可以使用TEST_TRACE宏输出中间结果。在很多时候,预期输出本身是错的。下例中把result = 0; 改为result = 1;后,测试仍然是失败的,因为预期输出不是625而是3125。

快速排错可以节约很多时间,但它是事后的静态分析,如果找不到错误所在,仍然需要进行单步调试。

 

高效调试

开始调试:

(控制窗口)点击“调试”开关,用调试方式运行测试工程。如下图(VC60)

 

自动断点:

程序自动中断时,执行调试器的“Step Into”(VC)或“Trace Into”(C++Builder)命令两次或三次。C++Builder可能会弹出CPU窗口,直接关掉。自动断点可以关闭:(控制窗口)->选项->扩展,在“忽略自动断点”前打上勾。

后退与重复:

使用调试器的“Run to Cursor”功能,可以实现真正的后退。跟踪时过了头或到了函数结束还没有找到错误所在,可以单击函数开始处的代码,然后点击“Run to Cursor”,即可重新跟踪,可以多次重复,一直到调试结束才退出调试。

后退是由VU的测试代码控制的,实现的原理是“重来”,参数和成员变量的值会重新设置,可算是真正的后退。

后退也使调试器的“编辑继续”功能真正有效,修改代码后,从函数入口处重新单步执行,看到的就是修改后的执行结果。

用例切换:

通过切换用例,可以比较不同输入时代码的行为或变量的值。在VU的主窗口中切换当前用例,然后执行调试器的“Run to Cursor”回到函数的入口,即可切换用例。

完成调试后,要关闭VU的调试开关,才能继续进行测试。

灵活运用VU提供的调试增强功能,可以大幅提高调试效率。

完成白盒覆盖

功能测试常常是不够充分的,例如:真的是所有功能点都测试了吗?程序的功能点是人为的定义,常常是不全面的;各个输入数据之间,有些组合可能会产生问题,怎样保证这些组合都经过了测试?难于衡量测试的完整性是功能测试的主要缺陷,所以,完成功能测试后,要从白盒角度,即从逻辑覆盖的角度检查测试完整性,对于未覆盖的逻辑目标,要设计测试用例覆盖它,这样,可以最大限度地揪出程序中隐藏的“臭虫”。

VU可以很轻松地完成语句覆盖、条件覆盖、分支覆盖与路径覆盖。

代码窗口显示未覆盖语句和未覆盖条件,选中后可用快捷菜单打开测试用例设计器。

 

路径窗口显示未覆盖分支和未覆盖路径,选中后可用快捷菜单打开测试用例设计器。

 

测试用例设计器计算出一个近似用例,并生成修改提示,依据修改提示对近似用例进行简单修改,即可获得可覆盖预期逻辑目标的测试用例。

 

上图中,待满足条件是 A==2 || X>1,两个条件的关系是逻辑或,即可以任选一个。如果选择条件A==2,A==2与已满足条件A>1并不冲突,因此,只需把输入数据中的A的值改为2,即可得到可覆盖预期逻辑目标的测试用例;如果选择X>1作为修改条件,由于依赖关系中出现了变量X,这时应点击“代码”按钮查看代码的依赖关系,如下图。从下图可看出,由于X被语句X=X/A重新赋值,且A的值为3,要使待满足条件X>1成立,X的输入值必须大于等于6。因此,把近似用例中X的值改为6或大于6的数,就可以得到符合预期的测试用例。修改后点击“新建用例”按钮,新用例就会保存到测试文件中,重新运行测试,就会看到逻辑目标已被覆盖。

 

使用测试用例设计器设计白盒覆盖测试用例,无须象传统的方法一样分析程序的逻辑结构。在很复杂的情况下,也只需要对程序代码有基本的理解。例如下图,如果对所测试的程序有基本的理解,那么很容易看到,在strlen(head) != false,即head不是空串的前提下,不进入循环是不可能的,因此逻辑目标(分支或路径)是不可覆盖的,应在路径图中删除。

 

边界测试与速度测试

边界测试,是指使用预先定义的边界值,如最大值、最小值、空值、或其他特殊值作为输入数据来运行测试。所有数据类型都可以定义边界值,包括自定义的类型,具体方法参考帮助系统。边界测试是功能测试的有效补充,通过检查程序是否对边界输入作了适当处理,可有效增强程序的健壮性。

速度测试,通过轮流执行现有的测试用例多次(默认为共1000次)来计算函数的平均速度。

要运行速度测试和边界测试,只需要打开开关。

 

查看测试报告

测试报告记录函数测试的详细结果数据。

菜单->测试报告,打开测试报告窗口。

测试报告含有十多项数据,不过常用的只有失败断言、逻辑覆盖率、速度等几项。可以使用“设定”功能选择显示哪些项。

逻辑覆盖率是测试是否充分的重要指标,如果程序集成后发现不明错误,测试不充分的函数包含错误的可能比较大。

如果程序性能不理想,可以将函数耗时由大到小排列,速度比较慢的函数可能就是性能瓶颈。

 

回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试包括两部分:函数本身的测试、其他代码的测试。在对被修改的函数重新测试。如果函数的设计功能没有变化,直接运行函数测试就可以了。如果修改了设计功能,则要根据增减的功能点,增加或删除测试用例。另外,还要完成白盒覆盖。

函数代码的修改可能导致调用该函数的代码产生错误,所以需要测试其他代码。如果函数是私有函数并且未涉及到全局变量,应运行类测试,否则应运行工程测试。在函数列表中选择类测试或工程测试,编译运行测试工程,即可执行对其他代码的回归测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Unit 简明教程 的相关文章

  • 软件测试开发/全日制/测试管理丨接口测试抓包与 Mock/接口自动化测试

    在软件开发中 接口测试是确保系统各个组件之间协同工作的重要环节 接口测试抓包与Mock以及接口自动化测试相结合 能够更全面 高效地验证接口的正确性 性能和稳定性 从而打造一个稳健的接口生态系统 接口测试抓包 接口测试抓包是一种通过监控和记录
  • Python 如何安装Selenium(推荐)

    一 Selenium的定义 Selenium 是一个 Web的自动化测试工具 最初是为网站 自动化测试而开发的 Selenium 可以直接调用浏览器 它支持所有主流的浏览器 包括PhantomJS 这些无界面的浏览器 可以接收指令 让浏览器
  • 【软件测试】学习笔记-高效提交Bug

    本篇文章介绍如何才能写出一份高效的软件缺陷报告 测试工程师需要利用对需求的理解 高效的执行力以及严密的逻辑推理能力 迅速找出软件中的潜在缺陷 并以缺陷报告的形式递交给开发团队 缺陷报告是测试工程师与开发工程师交流沟通的重要桥梁 也是测试工程
  • 软件测试|Windows系统配置pytest+allure环境教程

    前言 allure可以输出非常精美的测试报告 也可以和pytest进行完美结合 不仅可以渲染页面 还可以控制用例的执行 本文我们将介绍Windows系统中如何配置allure环境 第一步 配置Java环境 因为 allure 的运行依赖于J
  • 最佳利用Mock提升测试效率的7个技巧!

    再聊这个问题之前 我们先了解一下公司技术架构的演变过程 这样我们才能真正体会到我们为什么要使用 Mock功能 单体应用 在早期 大部分公司的应用技术栈主要可以分为两大类 LAMP Linux Apache MySQL PHP 和 MVC S
  • 2种方法,教你使用Python实现接口自动化中的参数关联

    通常在接口自动化中 经常会参数关联的问题 那么什么是参数关联 参数关联就是上一个接口的返回值会被下一个接口当做参数运用 其中Python中可以实现参数关联的方法有很多种 今天小编给大家介绍下 如何通过Python来实现接口自动化中的参数关联
  • Python自动化操作:简单、有趣、高效!解放你的工作流程!

    今天跟大家分享一套自动化操作流程解决方案 基于 Python语言 涉及 pyautogui pyperclip pythoncom win32com 依赖包 安装命令为 pip install pyautogui pip install p
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • Jmeter 性能-阶梯负载最终请求数

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • msyql 异常,别干着急,70%的问题都在这里!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 摸爬滚打多年的打工人,总结了三条职场真理,绝不假大空!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 开眼了,自动化测试还能这样用?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试中的白盒测试,这些技巧你知道吗?

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO
  • Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候 当时 看了一下官方的文档 大概是类似Sikuli的一个工具 主要用来做游戏自动化的 通过截图的方式用来解决游戏自动化测试的难题 最近 移动端测试的同事尝试用它的poco库来做自动化 看样子还不错
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它

随机推荐

  • visibility 与 overflow

    display 3 属性描述 设置或获取对象是否及如何显示 版本变更 是 语法模板 display none inline block list item inline block table inline table table capt
  • 如何高效的进行版本管理,版本管理的方法

    如何进行高效的版本管理 版本管理的方法 云效Projects版本管理为不同的产品线 模块建立版本 对集成版本进行相关活动的管理 在Projects版本管理中规划发布内容 可以关联需求 任务 缺陷 立即体验 开启版本管理 项目管理员和项目拥有
  • 【Hyper-v 管理器虚拟机配置内网外网固定ip】

    1 Default Switch Hyper v默认虚拟网卡 无法设置固定ip Hyper V自带一个不能删除的Default Switch虚拟交换机 虚拟机使用该网络可以自动获取IP直接上网 但这个网络的网关地址每次重启后都会改变 所以你
  • 原生Servlet与Spring Controller性能比较

    在实际项目工作 有同事提出 Java原生的Servlet性能 响应速度与并发数 要比封装过的Spring Controller高 基于这点 楼主用Apache的ab工具 对两个简单的应用做1000并发压力测试 查看两者的响应速度与并发数 平
  • 元旦过后

    今天是13号了 自从元旦过后 就一直没有做什么事情 觉得好空虚啊 一心只盼望着过年放假回家 哎 感觉熬日子啊 本来就觉得日子过得好快 却还不懂得珍惜 不能这样了哈 在回家之前先做点有用的事情吧 讲一个小故事吧 一天 有一个姑娘去买红薯 本来
  • 解决video标签播放m3u8格式视频失败问题

    前言 什么是m3u8 效果 效果地址 m3u8视频切换 效果图片 解决方法 采用video js插件 引入 引入videoJS插件样式文件 引入videoJS插件JS文件 引入videoJS插件播放m3u8格式视频的HLS功能 HTML代码
  • 定时检测接口是否正常飞书告警脚本

    第一版 支持多个接口地址 循环检测 定时每分钟执行一次脚本 告警效果 脚本 飞书机器人创建忽略跳过 各大协作平台大同小异拿出机器人hook地址 bin bash URL LIST https gatewaxxxxxxxxxxxxxxxxxx
  • 笔记本电脑键盘失灵一键修复_笔记本部分按键失灵的键盘可以用了,省下键盘的钱...

    情况 笔记本曾经拆装 清理灰尘之类 也重装过系统 键盘可以使用 就是部分按键失灵 触控板正常使用 驱动也安装了 最初判断 键盘坏了 但笔记本电脑键盘拆卸比较麻烦 没有动手 实际原因 驱动问题 处理方法 更新驱动即可 具体操作如下 右击此电脑
  • python逻辑判断

    1 if语句 info my name is xiaomu info list info split print info list if info list 0 xiaomu info list 0 dewei if info list
  • 【Matlab】二维图绘制及填色总结(basic)

    编程渣的艰难探索之Matlab绘图 个人需求 用matlab绘制多条曲线并在指定不规则区域填色 为什么一定要用Matlab呢 因为我觉得图形便于修改 看起来较为正规 代码量较少 1 同时绘制多条曲线 1 1 基本代码 真的很基础 x 0 0
  • redis在springboot中如何配置并启动

    在Spring Boot中配置和启动Redis非常简单 首先你需要安装Redis 然后添加一个Redis的配置文件 然后在Spring Boot的配置文件中添加相关的Redis配置信息 最后通过Spring Boot启动Redis即可
  • linux搭建FTP服务器步骤

    linux搭建FTP服务器 在linux操作系统中搭建ftp服务器 ftp服务器会提供三种远程登录方式 分别是匿名登录方式 本地用户方式和虚拟用户方式 这里我将把这三种搭建ftp服务器的操作步骤分享出来 供大家参考 一 匿名搭建 1 安装F
  • 22年字节跳动飞书人力套件二面面经

    前言 前文链接 https www hengy1 top article c956b8c6 html 简单介绍本次面试 波澜起伏吧 面试完自己心里没有啥底 24届本科菜鸡 没网上问的那么难 八股偏少 话不多说了直接来个复盘 二面 70min
  • logging模块学习

    logging 基础知识 logging的基础知识 logging basicConfig 参数介绍 filename 创建一个 FileHandler 使用指定的文件名 而不是使用 StreamHandler filemode 如果指明了
  • go socket编程

    8 1 Socket编程 在很多底层网络应用开发者的眼里一切编程都是Socket 话虽然有点夸张 但却也几乎如此了 现在的网络编程几乎都是用Socket来编程 你想过这些情景么 我们每天打开浏览器浏览网页时 浏览器进程怎么和Web服务器进行
  • kafka查询指定消费Group未消费的数据

    最近线上出现kafka生产者发送成功了 但是消费者没有拉取到 出现这种现象是偶发的 就是在几分钟内有几个消息没消费到 后面就没再出现过 首先先去卡夫卡上确认是否有消息堆积 下载kafka 不是src版的哦 http kafka apache
  • SQl CASE WHEN 语句的嵌套使用方式

    select id userid ys case when pj ys is NULL then case when pj ys1 is NUll then ys else pj ys1 end else pj ys end t from
  • 技巧分享篇---如何从GitHub上下载某个项目中单个文件的方法

    前言 梦想就是一种让你感到坚持就是幸福的东西 技巧分享篇 如何从GitHub上下载某个项目中单个文件的方法 一 Github项目里的单个js文件下载实例演示 1 点击查看文件 2 点击源码 Raw 3 通过 ctrl s 保存即可 二 Gi
  • Obsidian利用插件Remotely-save实现超低成本全平台云笔记

    Obsidian作为一个笔记软件 是目前最满足我需求的了 本地存储文件 Markdown格式作为基础 双链支持 以及好用的搜索等功能 基本实现了我对一款文字笔记软件的要求 但是Obsidian的收费价格确实不低 虽然软件本身的所有功能基本免
  • Visual Unit 简明教程

    载自 http www vckbase com index php wv 1270 VU1 0 简介 Visual Unit 简称VU 是新一代单元测试工具 功能强大 使用简单 完全可视化 不需编写测试代码 VU的测试结果使程序行为一目了然