Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

CPlusPlus父类子类构造函数的初始化过程

发表于 2021-12-18

创建子类对象时,子类构造函数和父类构造函数的调用过程值得好好研究。

参考链接

  1. c++ 子类构造函数初始化及父类构造初始化,by sevencheng798.
  2. C++ 类构造函数 & 析构函数,by runoob.

JavaScript代码混淆方法

发表于 2021-12-17

JavaScript代码混淆就是将JavaScript源代码,通过一系列的转换,例如变量/函数/参数重命名、字符串删除等,转换成不可读的东西,同时还能像以前一样工作。

JavaScript Obfuscator Tool是一个免费且高效的 JavaScript 混淆器(包括对 ES2019 的部分支持)。使您的代码更难以复制并防止人们窃取您的工作。例如:

混淆前:

1
2
3
4
5
// Paste your JavaScript code here
function hi() {
console.log("Hello World!");
}
hi();

使用该工具混淆后:

1
(function(_0x70aa38,_0x6395e8){var _0x57099e=_0x192f,_0x7c1cc7=_0x70aa38();while(!![]){try{var _0x56bcff=-parseInt(_0x57099e(0xf0))/0x1*(-parseInt(_0x57099e(0xee))/0x2)+-parseInt(_0x57099e(0xef))/0x3+parseInt(_0x57099e(0xeb))/0x4+parseInt(_0x57099e(0xf3))/0x5+-parseInt(_0x57099e(0xf2))/0x6+-parseInt(_0x57099e(0xf4))/0x7*(-parseInt(_0x57099e(0xea))/0x8)+parseInt(_0x57099e(0xed))/0x9*(-parseInt(_0x57099e(0xf1))/0xa);if(_0x56bcff===_0x6395e8)break;else _0x7c1cc7['push'](_0x7c1cc7['shift']());}catch(_0x5a9257){_0x7c1cc7['push'](_0x7c1cc7['shift']());}}}(_0x4312,0xd7ab0));function _0x192f(_0x596bfb,_0x95be29){var _0x43126e=_0x4312();return _0x192f=function(_0x192fed,_0x3ed7b3){_0x192fed=_0x192fed-0xe9;var _0x49c785=_0x43126e[_0x192fed];return _0x49c785;},_0x192f(_0x596bfb,_0x95be29);}function hi(){var _0x445057=_0x192f;console[_0x445057(0xec)](_0x445057(0xe9));}function _0x4312(){var _0x4f3249=['Hello\x20World!','9485888XtUGcp','2200444wypUiR','log','99CDZgzo','29822AbjrMy','403245avFbPY','43uwDKOW','2388280NXrOlo','134622vvoFuf','6451580kiRbTs','7mxMQdg'];_0x4312=function(){return _0x4f3249;};return _0x4312();}hi();

打开Chrome浏览器控制台,将混淆后的代码粘贴并运行,会发现结果是一样的。

参考链接

  1. JavaScript Obfuscator Tool,by obfuscator.

Matlab浮点数比较方法

发表于 2021-12-17

Matlab中的浮点数按照IEEE754约定,以有限的精度进行存储。因此,在进行浮点数的比较时,要特别小心,防止看不见的误差导致错误的结果。例如在Matlab中输入如下代码:

1
2
testNum=0:0.1:1
testNum(4) == 0.3 % 结果将表示两者不相等

最好采用如下方式比较两个浮点数是否相等:

1
abs(testNum(4)-0.3)<eps

参考链接

  1. While comparing the equality of two floating numbers(a,b), we use abs(a – b) < tolerance. Could anyone let me know if there’s anyway that this function may yield bad results or errors ?,by mathworks.

CPlusPlus静态变量

发表于 2021-12-14 | 更新于 2024-04-25

static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。

我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定义一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制)。static 关键字则可以很好的解决这个问题。

另外,在 C++ 中,需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见时,可将其定义为静态数据。

c++类静态成员函数调用成员变量

方法一

一种最简单的方法就是在类静态函数的形参列表里面加入类指针,到时候直接传入实例的this指针就能操作类成员变量了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A
{
public:
static void test(A *a)
{
a->m_a += 1;
}
void hello()
{
}
private:
static int m_staticA;
int m_a
};

方法二

一开始定义的时候就把实例的this指针复制给一个静态的类指针,这样不用传入this指针直接操作,但是这样如果多个实例都需要操作的时候会出现问题,定义多个变量的时候需要注意静态指针指向的是哪个实例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class A
{
public:
A()
{

}
static void test()
{
m_gA.m_a += 1;
}
void hello()
{
}
private:
static int m_staticA;
static A *m_gA;
int m_a
};

A* A::m_gA=NULL;

参考链接

  1. C/C++ 中 static 的用法全局变量与局部变量,by runoob.
  2. C/C++ 中的static关键字,by Arkin.
  3. c++类静态成员函数调用成员变量,by xxwtiancai.
  4. C++类里面定义一个指向自己的静态成员函数,by JJ_S.

shotcut视频编辑软件使用帮助

发表于 2021-12-06

最近有个视频剪辑的需求,以前用过会声会影,但感觉它安装包太大了。用了一下爱剪辑,发现该软件确实比较易用,但各种功能限制较多,广告太多,充值的坑太多。最后还是选择了开源的shotcut,基本也能满足简单的视频编辑要求。

参考链接

  1. Shotcut视频剪辑软件使用,by 清风草原.
  2. 开源视频处理工具Shotcut的用法: 剪切、合并、增加背景音乐、添加字幕、 插入视频、图片转视频并加背景音乐、制作电子相册,by lggirls.

CPlusPlus默认参数

发表于 2021-11-21 | 更新于 2021-12-14

函数的默认参数值,即在定义参数的时候同时给它一个初始值。在调用函数的时候,我们可以省略含有默认值的参数。也就是说,如果用户指定了参数值,则使用用户指定的值,否则使用默认参数的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
void Func(int i = 1, float f = 2.0f, double d = 3.0)
{
cout << i << ", " << f << ", " << d << endl ;
}

int main(void)
{
Func() ; // 1, 2, 3
Func(10) ; // 10, 2, 3
Func(10, 20.0f) ; // 10, 20, 3
Func(10, 20.0f, 30.0) ; // 10, 20, 30
return 0 ;
}

参考链接

  1. C++默认参数,by 滴水瓦.

CPlusPlus之Lambda表达式

发表于 2021-11-20

参考链接

  1. C++ 11 Lambda表达式,by 滴水瓦.

CPlusPlus函数设计技巧

发表于 2021-11-15 | 更新于 2021-11-17

在C++中,参数传递的方式是“实虚结合”。

  • 按值传递(pass by value)
  • 地址传递(pass by pointer)
  • 引用传递(pass by reference)

参考链接

  1. C语言函数设计的一般原则和技巧,by C语言中文网.
  2. 设计C++函数传参时如何决定使用指针还是引用?,by zhihu.
  3. C++中函数调用时的三种参数传递方式详解,by CC丶Z.
  4. C++ 函数可以直接返回一个对象吗?,by nettee.
  5. 数组作为函数参数,by LiHongxi.
  6. C++类对象作为函数参数传递详解,by c语言中文网.
  7. C++引用10分钟入门教程,by c语言中文网.
  8. C++中类成员对象与指针的区别,by PengStrongLee.
  9. C++中using的三种用法,by 算法集市.
  10. 10、【C++】前向声明/嵌套类/局部类(内部类),by 阿慕路泽.
  11. C++11 noexcept 关键字用法学习,by CNBLOG.

Simulink的强化学习代理开始无输出结果的解决方法

发表于 2021-11-14

Simulink进行强化学习代理训练时,出现如下错误:

1
2
3
Derivative of state '2' in block 'physicalModel/Nonlinear Second-Order Actuator/Integrator, Second-Order
Limited' at time 0.0 is not finite. The simulation will be stopped. There may be a singularity in the solution. If not, try reducing the step size
(either by reducing the fixed step size or by tightening the error tolerances)

经过分析,导致该错误的原因是产生强化学习代理初始输入信号的Memory模块的初始值设为inf导致的。解决方法是修改Memory模块的初始值。

参考链接

  1. Simulink扩展卡尔曼滤波输出无结果的解决,by 渣渣丰.

软件自动化测试工具简介

发表于 2021-11-14

在软件测试中,自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行的一些重复但必要测试工作。也可以完成手动测试几乎不可能完成的测试。对于持续交付和持续集成的开发方式而言,测试自动化是至关重要的。

GUI自动化测试工具

WinAppDriver

WinAppDriver(Windows Application Driver)是一个类似Selenium的UI自动化测试服务。
系统要求: Windows10或Windows Server 2016。支持应用程序: UWP, WPF, WinForms, Win32。

Microsoft UI Automation

UI Automation是Microsoft .NET 3.0框架下提供的一种用于自动化测试的技术,是在MSAA基础上建立的,MSAA就是Microsoft Active Accessibility。UI Automation在某些方面超过了MSAA,UI自动化提供了Windows Vista中,微软Windows XP的全部功能,和Windows Server 2003。

Web自动化测试工具

Selenium

Selenium 是为web浏览器的自动化提供了各种工具和依赖包。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现 Web 界面的测试。

参考链接

  1. spy++简介,by jackhuang.
  2. 自动化测试,by wikipedia.
  3. 用 Selenium + OpenCV 来玩 HTML5 小游戏,by 郑恒.
  4. Selenium,by Selenium homepage.
  5. 【龙测教程】教你做windows自动化测试,by pur-maple.
  6. 使用UI Automation实现自动化测试–1,by 开着拖拉机.
  7. Windows GUI自动化测试技术的比较和展望,by vagabond1.
  8. 开源自己用python封装的一个Windows GUI(UI Automation)自动化工具,支持MFC,Windows Forms,WPF,Metro,Qt,by YinKaisheng.
  9. 聊聊 PC 端自动化最佳方案:Pywinauto,by Linux爱好者.
  10. 聊聊 PC 端自动化最佳方案 - WinAppDriver,by AirPythonl.
上一页1…192021…52下一页

Jack Huang

519 日志
66 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse