Matlab中的浮点数按照IEEE754约定,以有限的精度进行存储。因此,在进行浮点数的比较时,要特别小心,防止看不见的误差导致错误的结果。例如在Matlab中输入如下代码:
1 | testNum=0:0.1:1 |
最好采用如下方式比较两个浮点数是否相等:
1 | abs(testNum(4)-0.3)<eps |
static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。
我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定义一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制)。static 关键字则可以很好的解决这个问题。
另外,在 C++ 中,需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见时,可将其定义为静态数据。
一种最简单的方法就是在类静态函数的形参列表里面加入类指针,到时候直接传入实例的this指针就能操作类成员变量了。
1 | class A |
一开始定义的时候就把实例的this指针复制给一个静态的类指针,这样不用传入this指针直接操作,但是这样如果多个实例都需要操作的时候会出现问题,定义多个变量的时候需要注意静态指针指向的是哪个实例。
1 | class A |
最近有个视频剪辑的需求,以前用过会声会影,但感觉它安装包太大了。用了一下爱剪辑,发现该软件确实比较易用,但各种功能限制较多,广告太多,充值的坑太多。最后还是选择了开源的shotcut,基本也能满足简单的视频编辑要求。
函数的默认参数值,即在定义参数的时候同时给它一个初始值。在调用函数的时候,我们可以省略含有默认值的参数。也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值。
1 | void Func(int i = 1, float f = 2.0f, double d = 3.0) |
在C++中,参数传递的方式是“实虚结合”。
Simulink进行强化学习代理训练时,出现如下错误:
1 | Derivative of state '2' in block 'physicalModel/Nonlinear Second-Order Actuator/Integrator, Second-Order |
经过分析,导致该错误的原因是产生强化学习代理初始输入信号的Memory模块的初始值设为inf导致的。解决方法是修改Memory模块的初始值。
在软件测试中,自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行的一些重复但必要测试工作。也可以完成手动测试几乎不可能完成的测试。对于持续交付和持续集成的开发方式而言,测试自动化是至关重要的。
WinAppDriver(Windows Application Driver)是一个类似Selenium的UI自动化测试服务。
系统要求: Windows10或Windows Server 2016。支持应用程序: UWP, WPF, WinForms, Win32。
UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active Accessibility。UI Automation在某些方面超过了MSAA,UI自动化提供了Windows Vista中,微软Windows XP的全部功能,和Windows Server 2003。
Selenium 是为web浏览器的自动化提供了各种工具和依赖包。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现 Web 界面的测试。
当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。
智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的指针指向同一对象。
auto_ptr的实现原理其实是在构造的时候获取资源,在析构的时候释放资源,并进行相关指针操作的重载,使用起来就像普通的指针。
智能指针(smart_ptr)是Boost各组件中,应用最为广泛的一个。
Boost从很早就提供了如下的智能指针,并且功能一直保持稳定:
1 | template <typename T> |
c++ 11 提供了3种智能指针:std::shared_ptr、std::unique_ptr、std::weak_ptr,使用时引用头文件
开发某些自动化工具,第一步就是要获取目标窗口的句柄,然后通过该窗口句柄向该窗口发送消息,以实现自动输入等功能。而获取窗口句柄必然离不开Spy++工具。