注:本文示例环境

VS2017
XUnit 2.2.0 单元测试框架
xunit.runner.visualstudio 2.2.0 测试运行工具
Moq 4.7.10 模拟框架

什么是单元测试?

确保软件应用程序按作者的期望执行操作,其中最好的一种方法是拥有自动化测试套件。 可以对软件应用程序进行各种不同的测试,包括集成测试、Web 测试、负载测试等。 测试各个软件组件或方法的单元测试是最低级测试。

所谓单元测试(unit testing),就是开发者编写的一小段代码,用于对软件中的最小单元进行检查和验证,其一般验证对象是一个函数或者一个类。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

为什么要使用单元测试?

  • 大大节约了测试和修改的时间,有效且便于测试各种情况。
  • 能快速定位bug(每一个测试用例都是具有针对性)。
  • 能使开发人员重新审视需求和功能的设计(难以单元测试的代码,就需要重新设计)。
  • 强迫开发者以调用者而不是实现者的角度来设计代码,利于代码之间的解耦。
  • 自动化的单元测试能保证回归测试的有效执行。
  • 使代码可以放心修改和重构。
  • 测试用例,可作为开发文档使用(测试即文档)。
  • 测试用例永久保存,支持随时测试。

对于我个人来说,主要是防止自己犯低级错误的,同时也方便修改(BUG修复)而不引入新的问题。可以放心大胆的重构。简言之,这个简单有效的技术就是为了令代码变得更加完美。

既然单元测试有这些好处,为什么我们不去用呢?

可以归纳为以下几个理由。

  1. 对单元测试存在的误解,如:单元测试属于测试工作,应该由测试人员来完成,所以单元测试不属于开发人员的职责范围。

    答:虽然单元测试虽然叫做"测试",但实际属于开发范畴,应该由开发人员来做,而开发人员也能从中受益。

  2. 没有真正意识到单元测试的收益,认为写单元测试太费时,不值得。

    答:在开发时越早发现bug,就能节省更多的时间,降低更多的风险。单元测试先期要编写测试用例,是需要多耗费些时间,但是后面的调试、自测,都可以通过单元测试处理,不用手工一遍又一遍处理。实际上总时间被减少了。

  3. 项目经理或技术主管没有要求写单元测试,所以不用写。

    答:写单元测试应该成为开发人员的一种本能,开发本身就应该包含单元测试。

  4. 不知道有单元测试这回事,不知道如何用。经过这篇文档的说明,就基本知道如何处理单元测试。

框架选型

常用单元测试框架:MSTest (Visual Studio官方)、XUnit 和 NUnit。

  1. MS Test为微软产品,集成在Visual Studio 2008+工具中。
  2. NUnit为.Net开源测试框架(采用C#开发),广泛用于.Net平台的单元测试和回归测试中,官方网址(www.nunit.org)。
  3. XUnit.Net为NUnit的改进版。

(以下主要讲解MSTest 和NUnit的使用,XUnit操作和NUnit操作基本类似)

基础实践

开始创建你的第一个的单元测试项目吧

1)  我们先来用 VS2017 中自带的测试模块(MSTest)来写一个简单的单元测试吧。
  1. 新建一个Solution,并添加项目UnitTestDemo(用于编写被测试的项目)

  2. 在该工程中添加UnitTestClass类,并书写一个静态的GetTriangle(string[] sideArr) 函数用来返回一个三角形的类型。

namespace UnitTest
{public class UnitTestClass{/// <summary>/// 获取三角形类型./// </summary>/// <param name="sideArr">三角形三边长度数组.</param>/// <returns>返回三角形类型名称.</returns>public static string GetTriangle(string[] sideArr){string result = string.Empty;int a = int.Parse(sideArr[0]);int b = int.Parse(sideArr[1]);int c = int.Parse(sideArr[2]);if (a + b > c && a + c > b && b + c > a){if (a == b && a == c){result = "等边三角形";}if (a == b || a == c || b == c){result = "等腰三角形";}else{result = "一般三角形";}}else{result = "不构成三角形";}return result;}}
}
  1. 然后在solution中添加一个UnitTestDemoTests测试项目,如图所示,添加 => 新建项目之后选择 测试 => 单元测试项目。

新建好测试项目之后,你会得到一个UnitTest1测试类模板,即一个带有[TestClass] attribute标记的类和一个带有[TestMethod] attribute标记的空方法public void TestMethod1()

  1. 单元测试项目无法自动访问它正在测试的类库。 可以通过添加对类库项目的引用来提供测试库访问权限。 为此,请右键单击UnitTestProject1项目,然后依次选择“添加” > “引用”。在“引用管理器”对话框中,然后选择 UnitTestDemo项目,如下图中所示。

    

  在UnitTestDemoTests项目中添加UnitTestDemo项目的引用,现在我们的solution就具有了下图所示的目录结构。

    

  5. 在UnitTestDemoTests项目中的UnitTest1类中,将模板提供的样本单元测试代码替换为以下代码:

using UnitTest;
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestDemoTests
{[TestClass]public class UnitTest1{[TestMethod()]public void GetTriangle_Test(){string[] sideArr = {"5", "5", "5"};Assert.AreEqual("等边三角形", UnitTestClass.GetTriangle(sideArr));}}
}

  6. 生成UnitTestDemoTests测试项目,在生成项目后,测试项将出现在测试资源管理器中。 如果测试资源管理器窗口不可见,请选择顶级 Visual Studio 菜单上的“测试”,然后依次选择“窗口(Windows)”、“测试资源管理器(Ctrl + E,T9)”,如图所示。

 

  

  7. 在测试资源管理器上可以看到刚刚所写的测试方法,这样在GetTriangle_Test单击右键选择“运行所选定的测试”就可以在Test Explorer里看到单元测试的运行结果,如下图所示。  

  

可以看到,我们在单元测试中提供的例子的期望是输出“等边三角形”,运行结果却是“等腰三角形”。再看一看 GetTriangle() 函数的代码,原来是在对在判断三边数值是等边三角形之后没有使用 else if 又用 if 判断为等腰三角形了。通过这个简单的单元测试就能够发现一些意向不到的错误。不要以为这里的bug很低级,类似的情况确实会在现实中发生。

 

  8. 把上面的错误更正后,再次运行TestMethod1()就会得到测试已通过的结果,如图所示。

  

 

创建单元测试项目和测试方法,除了以上通过手动创建单元测试项目和根据你的要求进行编写测试用例之外,还可以从你的项目的方法上直接生成单元测试项目和单元测试存根,那样操作更加方便,速度也会更快一些。

2) 通过代码直接生成单元测试项目和单元测试存根
  1. 在代码编辑器窗口中,从上下文菜单右键单击并选择“创建单元测试”。

  

  1. 在创建单元测试窗口,选择默认值,或更改用于创建并命名单元测试项目和单元测试的参数值。 单击“确定”,创建单元测试项目。

  

这里涉及测试框架的选择,MSTest是VS自带的测试框架。新的MS TEST现在是通过Nuget的包发布了,目前MS发布了两个版本:

  • MS TEST V1:V1的版本依赖于一个包: MSTest.TestFramework
  • MS TEST V2:V2的版本依赖于两个包: MSTest.TestFrameworkMSTest.TestAdapter
    这两个版本使用起来还是大同小异的,MSTest v2 主要是为了.net core准备的,当然也可以在.net framework上运行,并且在v1上新加入了一些扩展。
  1. 在生成的测试项目中,将测试代码添加到对应单元测试方法中,以使单元测试有意义。
  2. 此后生成测试项目,并在测试资源管理器中运行测试方法,得到测试结果(与上方步骤一致)。

编写测试代码

你使用的单元测试框架和 Visual Studio IntelliSense 将指导你完成为代码项目的单元测试编写代码。 若要在测试资源管理器中运行,大多数框架要求你添加特定的属性来识别单元测试方法。 框架还提供了一种方法,通常通过断言语句或方法属性,来指示测试方法是否已通过或失败。 其他属性标识可选的安装方法,即在类初始化时和每个测试方法和每个拆卸方法之前的安装方法,这些拆卸方法在每个测试方法之后和类被销毁之前运行。

AAA(准备、执行、断言)模式是编写待测试方法的单元测试的常用方法:

  • 准备(Arrange),单元测试方法的准备部分初始化对象并设置传递给待测试方法的数据;
  • 执行(Act),执行部分调用具有准备参数的待测试方法;
  • 断言(Assert),断言部分验证待测试方法的执行行为与预期相同。
如示例中验证 UnitTest1.GetTriangle() 函数,我们编写了一个测试来验证方法的标准行为:
[TestMethod()]
public void GetTriangle_Test()
{// arrange  string[] sideArr = { "5", "5", "5" }; // 准备传给待测试方法的数据string expected = "等边三角形";// act  var actual = UnitTestClass.GetTriangle(sideArr); // 调用测试方法// assert  Assert.AreEqual(expected, actual); // 验证待测试方法的执行结果是否与预期相同
}
为单元测试设置超时值:

在某些情况下(例如通过网络获取数据),常常不希望程序卡住而占用太多时间,通过设置测试方法的超时时间,来测试一个方法是否在预期时间内执行。

[TestMethod()]
[Timeout(2000)] // 毫秒 要在单个测试方法上设置超时时间
public void GetTriangle_Test()
{   ... 
}
[TestMethod()] [Timeout(TestTimeout.Infinite)]
// 毫秒 将超时时间设置为允许的最大值 public void GetTriangle_Test() { ... }
MSTest参数化测试:

什么是参数化测试?

答:简单的说,就是同样的逻辑,根据输入参数不同给出不同的结果。因为只是参数不同,所以并不希望把测试方法写多遍,但是又希望对每个参数的测试成为一个独立的测试用例。举例说,假定我有一个数学计算的方法是把两个整数相加求和,我希望证明这个方法对于任意两个数都是通过的。

在MSTest中可以通过DataRow Attribute 来指定测试用例的参数,实现参数化测试:

/// <summary>
/// 相加(待测试方法)
/// </summary>
/// <param name="num1">数值1</param>
/// <param name="num2">数值2</param>
/// <returns>计算结果</returns>
public static int Add(int num1, int num2)
{return Math.Abs(num1 + num2);
}
/// <summary>
/// 测试方法
/// </summary>
[TestMethod()]
[DataRow(10, 20)]
[DataRow(-2, -5)]
[DataRow(1, -2)]
[DataRow(5, null)]
public void Add_Test(int num1, int num2)
{Assert.AreEqual(UnitTestClass.Add(num1, num2), num1 + num2);
}

测试了所有可能的情况,以达到更好的覆盖率。上方给出示例Add方法的单元测试运行测试结果如下图所示。

  

测试结果:测试结果指出对两个数相加操作的方法,目标方法还取了绝对值,与相应结果不符。

 

测试调试

可以使用测试资源管理器为你的测试启动调试会话。 使用 Visual Studio 调试程序可以无缝地逐句得使你在单元测试和所测试项目之间来回反复。 若要开始调试:

  1. 在 Visual Studio 编辑器中,在想要调试的一个或多个测试方法中设置断点

  2. 在测试资源管理器中,选择测试方法,然后点击右键从快捷菜单选择“调试选定的测试”。

    

  3. 进入调试模式

F5 继续。

F10 执行下一行代码,但不执行任何函数调用。

F11 在执行进入函数调用后,逐条语句执行代码。

Shift + F11 执行当前执行点所处函数的剩余行。

Shift + F5 停止运行程序中的当前应用程序。可用于“中断”模式和“运行”模式。

NUnit 测试框架

 1)下载安装NUnit插件

  我们在VS中选择工具菜单栏下的扩展和更新,选择联机并在搜索框中输入NUnit。有2个版本的Nunit适配器,分别为NUnit 3.x(最新版为3.4.1)和NUnit 2.x(最新版为2.6.4),都支持Visual Studio 2012+。若想在VS2010中集成,需要安装NUnit 2.6.4安装包(可在官网下载)与VS2010 NUnit整合插件下载,下载安装完毕就能在 VS2010 的视图=>其他窗口中看到 Visual Nunit (或使用快捷键Ctrl + F7),打开该视图,将之拖到合适的位置。

 2)创建NUnit单元测试项目

 未完待续..

 

使用 Visual Studio 2017进行实时单元测试

Live Unit Testing 是 Visual Studio 2017 版本 15.3 中提供的一项技术,可在我们更改代码,然后保存的时候,它会自动生成自动测试,最后得出结果。

1)实时单元测试:

  • 让你更有信心地对代码进行重构和更改。 Live Unit Testing 在编辑代码时自动执行所有受影响的测试,确保所做更改不会中断测试。

  • 指示单元测试是否充分覆盖代码,并显示未被单元测试覆盖的代码。 Live Unit Testing 以图形方式实时描绘代码覆盖率,以便一眼就能看到每行代码覆盖的测试数,目和未被任何单元测试覆盖的行。

2)进行实时单元测试:

  1. 在类库项目中创建一个待测试方法,如下:
/// <summary>
/// 相加(待测试方法)
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
/// <returns></returns>
public static int Add(int num1, int num2)
{return num1 + num2;
}

  2. 根据以上创建单元测试项目的过程,创建一个单元测试项目(测试框架可以使用 Live Unit Testing 的 MSTest 测试框架(默认)。 还可使用 xUnit 和 NUnit 测试框架)。在测试项目添加对被测试类库项目的引用来提供测试库访问权限。

  3. 在测试项目类中,将模板提供的样本单元测试方法代码替换为以下代码:

[TestMethod()]
[DataRow(10, 20)]
[DataRow(-2, -5)]
[DataRow(1, -2)]
[DataRow(5, null)]
public void Add_Test(int num1, int num2)
{Assert.AreEqual(UnitTestClass.Add(num1, num2), num1 + num2);
}

  4. 从顶级 Visual Studio 菜单中依次选择“测试” > “Live Unit Testing” > “启动” Visual Studio 启动 Live Unit Testing,使其自动运行所有测试。

   

  5.  完成运行测试后,“测试资源管理器” 显示整体结果和各个测试的结果。 此外,代码窗口以图形方式显示测试代码覆盖率和测试结果。 如下图所示,三项测试均已成功执行。 它还显示测试中已覆盖 Add() 方法中的所有代码路径,并已成功执行这些测试(用绿色复选标记“”指示)。 UnitTestClass.cs 中的其他方法有部分代码没有代码覆盖率(用蓝线“”指示)

  

  还可通过在代码窗口中选择一个特定的代码覆盖率图标来获得有关测试覆盖率和测试结果的更多详细信息。 若要查看此详细信息,请执行以下操作:

  单击行上的绿色复选标记“”, 如下图所示,Live Unit Testing 指示只有一个测试覆盖该行的代码,并且都已成功执行。

  

  Live Unit Testing 中“”标识的主要问题是代码覆盖率不完整,可以通过添加测试方法或改变测试参数,如下图,可以看到代码覆盖率已扩展到 GetTriangle() 的每一行代码。 

  在你修改源代码时,Live Unit Testing 将自动执行新增的和修改后的测试。

  

  6. 处理测试失败:

  将 Add() 做些许修改,修改为计算两数相加的绝对值,在保存后Live Unit Testing 指示 Add() 方法执行失败,如下图所示:  

  

7. 停止实时单元测试:

  

 

使用 IntelliTest 为你的代码生成单元测试

IntelliTest 浏览你的 .NET 代码,以生成测试数据和单元测试套件。 对于代码中的每个语句,将生成执行该语句的测试输入。 为代码中的每个条件分支执行案例分析。 例如,分析 if 语句、断言和可能引发异常的所有操作。 此分析用于为你的每个方法生成参数化单元测试的测试数据,从而创建具有较高代码覆盖率的单元测试。

当你运行 IntelliTest 时,你可轻松看到哪些测试会失败,并可添加任何必要的代码来修复它们。 你可选择要保存到测试项目中的已生成测试,以提供回归套件。 当你更改代码时,重新运行 IntelliTest,以使生成的测试与你的代码更改同步。

IntelliTest 仅可用于 C# 且不支持 x64 配置。

IntelliTest 入门

若要生成单元测试,你的类型必须是公共类。 否则,先创建单元测试,然后再生成它们。

  1. 在 Visual Studio 中打开解决方案。 然后打开包含你要测试的方法的类文件。

  2. 在代码中右键单击一种方法并选择“创建 IntelliTest”,为方法中的代码创建生成单元测试项目。

  

  接受默认格式以生成测试,或更改项目和测试的命名方式。 你可以创建新的测试项目或将你的测试保存到现有项目。

  

  3. 创建测试项目成功之后,选择上图中“运行 IntelliTest”,为方法中的代码运行IntelliTest单元测试项目。

  IntelliTest 使用不同的输入多次运行你的代码。 每次运行都会在表中表示出来,显示输入测试数据以及产生的输出或异常。

  

  要为一个类中的所有公共方法生成单元测试,只需右键单击类而不是特定的方法。 然后选择“运行 IntelliTest”。 使用“浏览结果”窗口中的下拉列表,显示类中每个方法的单元测试和输入数据。

  

  对于通过的测试,检查结果列中报告的结果是否与你对代码的预期要求匹配。 对于失败的测试,根据需要修复你的代码。 然后重新运行 IntelliTest 来验证修复。

转载于:https://www.cnblogs.com/anayigeren/p/10020811.html

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 进度条的实现(线程)

    1、理论:他是个循环的过程,一个进度数的累加,当到达一定值后,触发某个事件; 2、实现的过程: (1)、定义一个线程:操作的执行体;//定义一个线程Runnable progressBar = new Runnable() {int i = 0;@Overridepublic void run() {i = i + 5;Message msg = handler.obta…...

    2024/3/28 23:09:16
  2. 十六进制转十进制数算法

    十六进制转十进制数算法 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 十六进制中,ABCDEF分别表示10 11 12 13 14 15 (个位 * 16^0) +(十位 * 16^1) + (百位 * 16^2) …… 即:16的0,1,2……次方 例如: (5BB)16 (11*16^0) +(11*16^1)+(5*16^2) = 11 + 176 + 1280 =1467--------…...

    2024/3/28 23:09:12
  3. 读马老师的《Java自学之路》有感

    今天读了一份文档,是马士老师写的《马士兵Java自学之路》,感觉自己很受启发。其中很多的观点和意见不仅对想就业于IT的人士有指导作用,而且也对我们当代的大学生很有启发。我想如果是一名计算机专业的学生,毕业的时候才看到这篇文章的话,他应该会很后悔的,希望自己的大学…...

    2024/3/7 16:41:22
  4. MinGW-w64 C/C++编译器下载和安装

    目录1.安装包下载方法一:下载Installer在线安装(费时)方法二:下载离线包(较快)2.环境变量配置3.小试牛刀如果电脑没有安装MinGW-w64 C/C++编译器,在Windows的命令窗口键入gcc会提示 “"gcc"不是内部或外部命令,也不是可运行的程序或批处理文件”。1.安装包下…...

    2024/3/7 16:41:21
  5. SSM三大框架整合教程

    前言SSM就是Spring+SpringMvc+Mybatis,本文搭建一个基本的ssm框架本文所有源代码包含jar包下载点击:https://download.csdn.net/download/wcc27857285/10667045正文Eclipse新建web dynamic project一.项目结构图:二.mysql数据库创建好user表:(数据库名为firstdb)三.引入J…...

    2024/3/24 6:34:35
  6. CPP 中的8进制 10进制 16进制

    1、C和C++都没有提供二进制数的表达方法。 2、C,C++语言中,如何表达一个八进制数呢?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。所以,C,C++规…...

    2024/3/7 16:41:18
  7. C语言 10进制转16进制

    #include "stdio.h" int main() { int num=0;int a[100]; int i=0; int m=0;int yushu; char hex[16]={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F};printf("请输入一个十进制整数:"); scanf("%d",&num); while(num>0) { yushu=num%16; a[i++]=yu…...

    2024/3/7 16:41:17
  8. 编译器的自举原理是什么?

    转自知乎:https://www.zhihu.com/question/28513473?sort=created 你想创造一门V语言而且用V语言来写V编译器的话,你得按照下面的方法做: 1、用C++把那个编译器(A)写出来,顺便留下很多测试用例。 2、用V语言把那个编译器写(B)出来,用A.exe来编译B,修改…...

    2024/3/7 16:41:16
  9. Android文件下载进度条的实现

    main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:l…...

    2024/3/7 16:41:15
  10. BZOJ 3489 A simple rmq problem

    3489: A simple rmq problem Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 326 Solved: 85 [Submit][Status] Description因为是OJ上的题,就简单点好了。给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这个区间里只出现过一次的数,并且要求找的这个数尽可…...

    2024/3/26 22:36:19
  11. rgb颜色转换(16进制->10进制)

    rgbValue=#123456; // rgb颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF)…...

    2024/3/29 10:11:57
  12. 软件测试_单元测试和集成测试

    title: 软件测试_单元测试和集成测试 date: 2019-11-25 15:58:23 categories:软件测试 tags:单元测试和集成测试 什么是单元测试单元测试就是对已实现的软件最小单元进行测试,以保证构成软件的各个单元的质量。单元测试的目的单元实现其特定功能 单元的运行能够覆盖预先设定的…...

    2024/3/7 16:41:12
  13. java soap技术

    在博客园看到的这篇文章,觉得写的非常好,分享一下,也供自己学习。 原文链接 [url]http://www.cnblogs.com/mingzi/archive/2009/03/23/1419385.html[/url]开始之前,我想就本文即将讨论的主题和读者需要具备的起点知识做一些必需的描叙。本文的主题是讨论SOAP技术,我们将尽…...

    2024/3/20 12:00:44
  14. JavaScript单元测试入门

    首先要弄清楚什么是单元。单元就是一个相对独立的功能模块,可以是一个类,或是一个模块,或是一个方法。单元测试的目的,就是首先保证一个系统的基本组成单元(类、模块或方法)能正常工作。打个比方,你想一台机器能正常工作,首先要保证它的每一个零件和组件能正常工作。而…...

    2024/3/7 16:41:11
  15. NodeJS进制转换

    /**十六进制转字符串**/let data01 = 48656c6c6f20576f726c64//十六进制let newdata = new Buffer(data01,hex);//先把数据存在buf里面console.log(newdata.toString("utf-8"));//使用toString函数就能转换成字符串控制台输出结果:Hello World/**字符串转十六进制**…...

    2024/3/4 9:24:03
  16. 【JAVA自学路线图】

    JAVA自学之路 二:JAVA自学路线图[转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html]有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。 这个路线图是给那些为了就业…...

    2024/3/4 9:24:01
  17. 进度条实例

    <HTML><HEAD><TITLE>进度条实例</TITLE><!--进度条--><STYLE type=text/css>#loader_container { LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 30%; TEXT-ALIGN: center;}#loader { BORDER-RIGHT: #99cc00 1px solid; PADDING-RIGH…...

    2024/3/4 9:24:00
  18. 很不错的Html,Javascript,CSS在线编译器

    推荐一款很不错的Html,Javascript,CSS在线编译器,地址:http://jsfiddle.net/1.优点a.界面简洁,没有广告,看起来相当舒服:——如图所示,左边是一些选项,包含框架啊、html版本等信息;右边分为四个方框,分别是Html,Javascript,CSS输入框 以及 结果输出框;顶部是一些编译…...

    2024/3/4 9:23:59
  19. c预编译器内置宏定义

    c预编译器内置宏定义整理出来的常用的内置宏定义。MacroDefinition__STDC__表明全兼容ANSI C__FILE__当前源文件名__LINE__当前代码行数__DATE__编译此源文件的日期__TIME__编译此源文件的时间__FUNCTION__函数名...

    2024/3/28 23:09:20
  20. 寻找丑字

    From: http://www.cnblogs.com/mingzi/archive/2009/08/04/1538491.html题目:我们把只包含因子 2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。 分析:这是一道在网…...

    2024/3/28 15:36:30

最新文章

  1. Aurora IP的Framing帧接口和Streaming流接口

    本文介绍Aurora IP配置时要选择的接口类型以及两种接口类型之前的区别。 Aurora IP接口有两种模式&#xff1a;Framing帧接口&#xff0c;Streaming流接口 目前一直在用的都是Framing帧接口。 Framing帧接口和Streaming流接口的主要区别是什么呢&#xff1f; 顾名思义&#x…...

    2024/3/29 14:50:28
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 百度智能小程序源码系统简洁版 SEO关键词排名推广优化 带完整的安装代码包以及搭建教程

    移动互联网的快速发展&#xff0c;小程序以其轻量级、无需下载、即用即走的特点&#xff0c;迅速成为了各大平台争相推广的重要产品形态。百度智能小程序作为百度生态下的重要一环&#xff0c;凭借其强大的流量入口和丰富的功能组件&#xff0c;为开发者提供了广阔的创作空间。…...

    2024/3/29 14:18:52
  4. 无需插件就能实现异构数据库的互联互通?(powershell妙用)

    前两天在DBA群里有大佬分享了利用Oracle Database Gateway&#xff08;透明网关&#xff09;实现sqlserver和oracle 的数据交互&#xff0c;这里让我想到前些年写的一些powershell脚本用来做sqlserver和oracle的数据交互&#xff0c;powershell是windows自带的一个脚本工具&…...

    2024/3/28 22:00:02
  5. Python学习笔记03

    第五章、Python函数 函数介绍 函数 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段 name "itheima" length len(name) print(length) 输出结果&#xff1a;7 为什么随时都可以使用len()统计长度&#xff1f; 因…...

    2024/3/27 8:35:10
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/3/27 10:21:24
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/3/24 20:11:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/3/29 2:45:46
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/3/24 20:11:23
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/3/29 5:19:52
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/3/28 17:01:12
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/3/29 11:11:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/3/29 1:13:26
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/3/29 8:28:16
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/3/29 7:41:19
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/3/24 20:11:18
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/3/29 9:57:23
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/3/29 0:49:46
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/3/24 20:11:15
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/3/27 7:12:50
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/3/24 20:11:13
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/3/26 11:21:23
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/3/28 18:26:34
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/3/28 12:42:28
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/3/28 20:09:10
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57