Airtest:Windows桌面应用自动化测试【AirtestIDE功能】

news2024/9/21 0:37:05

AirtestIDE功能

  • 基础功能
    • 一、设备窗
    • 二、Airtest辅助窗
    • 三、Poco辅助窗
      • 3.1UI树常见问题:
        • 3.1.1为什么我选择了Poco模式后,没有成功刷出UI树
        • 3.1.2为什么接入了SDK、使用了原生App依然看不到UI树
        • 3.1.3UI树在一段时间后没有正确刷新
    • 四、脚本编辑窗
    • 五、Log查看窗
    • 六、文件菜单-对应工具栏的前4个按钮:新建、打开、保存、另存为
      • 6.1新建
      • 6.1打开
      • 6.2保存
      • 6.3另存为
    • 七、运行菜单-对应工具栏后3个按钮:运行、停止运行、打开HTML报告
      • 7.1运行
      • 7.2停止运行
    • 7.3打开HTML报告
    • 7.4Firebase菜单
    • 八、窗口菜单
    • 九、选项-设置
    • 十、Device栏
      • 10.1实时坐标显示:可以实时在手机屏幕画面上显示出鼠标位置的坐标(绝对坐标),方便大家获取坐标。此时点击鼠标右键 ,还可以自动将当前坐标信息复制到剪贴板中,在代码里只需要直接粘贴即可插入点击位置的坐标。
      • 10.2相对坐标:该选项依赖于“实时坐标显示”,勾选后,将会以(0, 0) 到 (1, 1) 为范围显示出相对坐标。使用相对坐标可以避免跨分辨率的操作点超出屏幕的问题,使坐标操作兼容性更好。
      • 10.3Windows窗口无嵌入连接:由于部分windows应用在默认嵌入方案中可能会有无法嵌入、嵌入后无法对应用进行操作、黑屏等问题,因此我们提供了一种备用嵌入方案。
      • 10.4手机设备显示分辨率:当已经连接好Android手机时,AirtestIDE会在Device窗口显示出手机实时同步画面。如果觉得清晰度较低,可以修改该值,数字越大,清晰度越高。默认为800,取值范围为300-2000之间。
    • 十一、Editor栏
      • 11.1兼容模式:有些少部分用户由于显卡兼容性问题,可能在启动AirtestIDE时,不能看到脚本编辑窗口和log窗口中的文字,或者是启动后会闪退,但是通过双击文件夹中的兼容性模式启动.bat脚本能够正常启动AirtestIDE。
      • 11.2字体大小:可以调节编辑窗口和Log窗口内的文字大小,默认是14px。在AirtestIDE中,还可以通过按住ctrl+鼠标滚轮来实现改变文字大小。
      • 11.3编辑器主题:我觉得默认的主题就挺好。
      • 11.4自动补全:打开此选项后,可以在AirtestIDE中编辑代码时,享受到airtest和poco库的代码自动补全提示。但我的机器打开后会卡。
    • 十二、Airtest栏
      • 12.1自定义launcher文件路径:这个是airtest的高级功能:启动器(后期会有专门文章介绍)。新手不要改这个。
      • 12.2默认log存放路径:用于指定在AirtestIDE中运行脚本时的log目录,IDE将会把产生的log文件、截图数据默认放置在这个目录下。
      • 12.3自定义Python.exe路径:不了解Python环境的话不要修改。AirtestIDE允许使用本地的python.exe来跑在AirtestIDE里写好的脚本。由于AirtestIDE内置了一个python环境,假如你希望能够使用自己的本地python环境(可以跑一些本地安装了的第三方库,可以让你使用本地的python2环境等等),可以通过设置这个选项来改变运行脚本默认使用的python.exe。
    • 十三、Poco栏
      • 13.1刷新间隔:上期讲的Poco检视器,会定时去拉取手机上最新的元素树,在这里可以设定间隔时间。
      • 13.2Windows窗口区域位置:在嵌入了Windows游戏窗口后,如果想要使用Poco来查看界面元素,可以点该项后面的按钮来设置窗口位置,这是为了能够在Windows窗口上显示poco元素标记用的,不设置不会对脚本运行产生任何影响。
      • 13.3采用渲染分辨率:在一些不支持全面屏手机的app,画面不能充满整个屏幕的时候,出现黑边,poco定位发生偏移。如下图高亮与实际按钮相差一些:
    • 十四、Selenium栏
  • AirtestIDE高级功能
    • 一、图片编辑器
      • Snapshot+Recognition
      • filename
      • threshold
      • target_pos
      • rgb
      • 右键菜单
    • 二、手机助手
      • 安装apk
      • App列表
      • Common Features
      • Current App
      • Remote Debug

基础功能

在这里插入图片描述
Airtest辅助窗(左上):这里主要是用来生成airtest框架中的代码的。

Poco辅助窗(左下):这个主要是用来抓取元素信息的,类似于Chrome F12查看Web元素、Appium Inspector查看App元素,并且可以生成Poco框架代码。

脚本编辑窗(中上):用来编写自动化代码,和所有IDE的相关功能类似。

Log查看窗(中下):代码不运行的时候用来显示Poco辅助窗选定元素后的所有信息;代码运行后显示程序运行时代码。

设备窗(右侧):连接设备,如已连接则同步显示设备画面。

一、设备窗

在这里插入图片描述
安卓:
插入手机后,设备列表会自动刷新,显示PC上的设备。点最右侧的箭头,可以选择连接参数(后面文章会详细介绍)。
如果设备列表没有自动刷新,可以点‘刷新ADB’手动刷新。
如果ADB卡死等情况,可以点‘重启ADB’,对应adb命令adb kill-server + adb start-server
如果手机是插在服务器上,不在本机,可以通过‘远程设备连接’(后面文章会详细介绍)

Windows&iOS
同样的,如果是Windows上的应用或苹果手机,则可分别在下面连接(后面文章会详细介绍)
在这里插入图片描述
看一下连接设备以后的样子,会实时显示手机屏幕,并且可以点击、滑动操作。
最下面依次是:菜单键、Home键、返回键、电源键

最上面的工具图标,点击可弹出设备窗菜单:
控件面板:点击会切换显示设备列表,我们可以继续连接第2台手机,airtest是可以同时连接并操作多台手机的。切到设备列表后,再点工具按钮,可以切回手机投屏显示。

断开当前设备:点击后会断开与该设备的连接。

显示Android助手:点击打开助手,里面是一些常用adb命令的界面化操作(后面文章会详细介绍)

二、Airtest辅助窗

touch:图片识别点击操作,鼠标指向touch按钮后会提示具体的使用方法。使用方法:点击‘touch’按钮,在手机屏幕上拖动选取点击的图片,在代码编辑窗会自动生成代码。

在这里插入图片描述
wait:等待图片出现。同touch一样,在屏幕上选择图片。

swipe:滑动操作。使用方法:点击‘swipe’按钮,在手机屏幕上拖动选取要识别的图片,选择完后,在向要滑动的地方点击一下。

swipe代码执行时会找到Git图片,向下滑动。

exists:判断图片是否存在,返回True或False。使用方法同touch。

text:输入文字。

keyevent:模拟按键,如HOME键,返回键,菜单键

snapshot:截图

sleep:等待

assert_exists:断言图片存在。使用方法同touch。

assert_not_exists:断言图片不存在。使用方法同touch。

assert_equal:断言相等

assert_not_equal:断言不相等
在这里插入图片描述
图片模板生成:点击有小剪刀的按钮,再去拖选图片,就可以生成一个图片模板对象,就是touch语句中嵌套使用的那个图片模板对象。

录制:点击后,去投屏上操作,可实时生成airtest代码。不推荐使用,自动生成截取的图片不好用。

三、Poco辅助窗

在这里插入图片描述
我们以Unity游戏App为例,在下拉框中选择Unity。
App下载地址:
http://top.gdl.netease.com/poco-res/poco-demo-unity-game-android.zip

在这里插入图片描述
此时脚本编辑区会提示是否插入Poco初始化代码,我们点Yes。
在这里插入图片描述
选模式后,airtestIDE会拉取元素树(每过几秒都会拉取最新元素),我们单击某个元素,Log查看窗会显示该元素详细信息,投屏会高亮所选元素。

模式下拉框下面的搜索框,可以按元素name过滤。

双击元素或右击元素选择‘UI path-code’,会自动生成元素对象代码。

模式下拉框右侧依次是冻结按钮、检视按钮、录制按钮:
冻结:点击后,投屏会冻结,元素树也不再更新。因为游戏很多都是动画的,定住当前画面以方便查看当下元素信息。

检视:点击后,鼠标可在投屏实时查看元素信息

在这里插入图片描述
此时在投屏上右击,可以列出当前点上的所有元素。很多时候元素是叠加在一起的,无法选择,就可以通过此方法选取。
在投屏上右击,也可快速切换普通/检视/录制功能。

3.1UI树常见问题:

3.1.1为什么我选择了Poco模式后,没有成功刷出UI树

目前除了Android原生App无需接入SDK即可直接使用之外,其余引擎都需要事先 接入SDK 才能获取到UI结构信息(游戏没有事先接入SDK是无法直接看到UI树的)

3.1.2为什么接入了SDK、使用了原生App依然看不到UI树

在Poco初始化时,会向手机中安装相关的apk,请务必保证手机允许了相关apk的安装。部分型号的手机需要在设置中开启“允许通过ADB安装应用”等相应选项才能进行安装。

部分厂商的手机需要额外的设置,例如需要手工在输入法选项中,将Yosemite输入法设置为默认,详情请参考:
https://airtest.doc.io.netease.com/IDEdocs/device_connection/2_android_faq/#id7

3.1.3UI树在一段时间后没有正确刷新

可以尝试先将Poco模式选项的下拉菜单改为 Stop,再重新选择你所需要的模式,例如 Android, IDE将重新建立与手机的Poco通信连接。

有时候也可能因为手机内存不足,手机自动将后台的pocoservice进程关闭了,导致连接断开,这种情况建议尝试换一台配置更好的手机重试。

四、脚本编辑窗

在这里编写代码,没啥好说的。说下右击后的菜单:
在这里插入图片描述
撤销、重复、复制、粘贴没啥好说的。
只运行选中代码:一个脚本假如你写了100行,运行时因为第90行代码写错了,运行失败。你修改第90行后,如果从头开始运行,太浪费时间,此时你可以选中最后10行,点‘只运行选中代码’,就可以只运行最后10行代码了,是调试的好工具。

图片/代码模式切换:通过IDE生成的图片相关的代码,为了直观都是显示的图片。但当你要修改代码或在Pycharm中编写代码时,就要用到代码模式了。
在这里插入图片描述
下面再来看看代码窗的菜单:
在这里插入图片描述
点击+号,是新建脚本

点下拉箭头,依次是:
打开当前项目目录
打开报告文件目录
导出报告(导出后可发给别人)
压缩当前脚本.zip
清理多余图片(录制生成的图片相关的脚本,代码删除后,图片就没用了)
文件异常恢复

五、Log查看窗

在这里插入图片描述
显示log的地方,重点说2个功能。
1.每次运行脚本,log的最开始都会自动生成运行命令。这个命令可以脱离IDE放在命令行运行。
2.点右侧过滤按钮,可以按级别过滤日志。

六、文件菜单-对应工具栏的前4个按钮:新建、打开、保存、另存为

6.1新建

点击后会让你选建.air后缀的脚本还是.py后缀的脚本。这里就先都选建.air后缀的脚本,.py后缀需要熟练Python和airtest之后再用(后期会有专门文章)。

新建脚本会初始化代码帮助你从api中引入了airtest的各个接口以及自动初始化设备。

让我们打开刚才新建脚本的文件夹,可以看到实际上.air脚本文件是一个普通的文件夹,里面附带了一个同名的.py文件,AirtestIDE在执行脚本时,实际上执行的是里面的.py文件。也就是说,Airtest脚本虽然自带一个后缀名,然而本质上依然是Python脚本,遵循的是Python语法,我们可以根据实际需要自由地import其他Python第三方库。

airtest设计.air后缀的文件夹,初衷应该是方便新手傻瓜化操作,.air后缀的文件夹就相当于一个项目文件夹,里面除了有同名的.py文件外,通过IDE截取的图像和运行的日志都会放在这个文件夹。但这个.air后缀却给Pycharm中编写Python代码带来一定困扰。

值得注意的是,.air文件夹中必须要有同名的.py文件,否则在命令行执行airtest run test.air 这样的运行指令时会导致失败。

6.1打开

打开一个已存在的.air脚本。

6.2保存

保存当前窗口脚本。

6.3另存为

将脚本保存到其他路径。默认脚本创建后是在AirtestIDE的安装目录下,后面如果卸载IDE或者更新IDE,都会删除安装目录下的文件。所以从一开始就养成把脚本保存在单独的工程路径下,以防丢失。

七、运行菜单-对应工具栏后3个按钮:运行、停止运行、打开HTML报告

7.1运行

运行当前脚本。

7.2停止运行

停止运行中的脚本

7.3打开HTML报告

脚本运行完后,点击报告,会打开HTML报告。

7.4Firebase菜单

是将脚本打包成APK,在手机运行。此功能目前(2021.4.4)官方是弃养状态,不可使用。

八、窗口菜单

AirtestIDE的主界面是由多个可dock窗口组合而成的,我们可以按照自己的开发习惯和实际需要进行灵活拖拽布局,并可以通过下拉菜单"窗口"-"恢复默认布局"将内部布局恢复为默认状态。

布局信息会在软件关闭时会自动保存,下次重新启动软件/下载新版本软件使用时,之前的布局记录会自动延续。

九、选项-设置

在这里插入图片描述

十、Device栏

10.1实时坐标显示:可以实时在手机屏幕画面上显示出鼠标位置的坐标(绝对坐标),方便大家获取坐标。此时点击鼠标右键 ,还可以自动将当前坐标信息复制到剪贴板中,在代码里只需要直接粘贴即可插入点击位置的坐标。

10.2相对坐标:该选项依赖于“实时坐标显示”,勾选后,将会以(0, 0) 到 (1, 1) 为范围显示出相对坐标。使用相对坐标可以避免跨分辨率的操作点超出屏幕的问题,使坐标操作兼容性更好。

什么是相对坐标,举个例子,屏幕长宽是2000x2000,那么[1800,1800]这个绝对坐标点的相对坐标就是[1800/2000,1800/2000],即[0.9,0.9]。[1800,1800]这个点在屏幕长宽1000x1000上是不存在的,但你用相对坐标[0.9,0.9],指的是[900,900]这个点,这样,不同大小分辨率的屏幕就都可以兼容了。

10.3Windows窗口无嵌入连接:由于部分windows应用在默认嵌入方案中可能会有无法嵌入、嵌入后无法对应用进行操作、黑屏等问题,因此我们提供了一种备用嵌入方案。

假如勾选了该选项,在嵌入windows窗口时,请使用windows的显示桌面,将桌面上的应用全部最小化,然后仅将AirtestIDE和被测应用恢复到桌面中。点击AirtestIDE的 选定窗口 按钮,使用绿色框将被测应用框选后,IDE的设备面板将消失,接下来就可以正常地进行录制操作。

10.4手机设备显示分辨率:当已经连接好Android手机时,AirtestIDE会在Device窗口显示出手机实时同步画面。如果觉得清晰度较低,可以修改该值,数字越大,清晰度越高。默认为800,取值范围为300-2000之间。

如果还是觉得手机实时画面清晰度不够高,可以在连接手机之前,在下拉菜单中勾选 Use Javacap 模式(不勾选的情况下,默认使用Minicap连接手机),再进行连接。在Javacap模式下,能够看到清晰度更高的手机画面,但是延迟会比默认的Minicap模式要稍微高一些。

十一、Editor栏

11.1兼容模式:有些少部分用户由于显卡兼容性问题,可能在启动AirtestIDE时,不能看到脚本编辑窗口和log窗口中的文字,或者是启动后会闪退,但是通过双击文件夹中的兼容性模式启动.bat脚本能够正常启动AirtestIDE。

默认情况下会选择default模式,如果启动有问题的用户,可以尝试选中下拉菜单中的另外三个选项,并且重启AirtestIDE,查看接下来是否能正常显示脚本编辑窗口和log查看窗口。如果能够生效,未来启动AirtestIDE时都将会以这个配置项来启动,无需每次都手工双击兼容性模式启动.bat脚本来启动AirtestIDE了。

11.2字体大小:可以调节编辑窗口和Log窗口内的文字大小,默认是14px。在AirtestIDE中,还可以通过按住ctrl+鼠标滚轮来实现改变文字大小。

11.3编辑器主题:我觉得默认的主题就挺好。

11.4自动补全:打开此选项后,可以在AirtestIDE中编辑代码时,享受到airtest和poco库的代码自动补全提示。但我的机器打开后会卡。

十二、Airtest栏

12.1自定义launcher文件路径:这个是airtest的高级功能:启动器(后期会有专门文章介绍)。新手不要改这个。

12.2默认log存放路径:用于指定在AirtestIDE中运行脚本时的log目录,IDE将会把产生的log文件、截图数据默认放置在这个目录下。

点击重置按钮将会把log目录设置为系统默认的temp目录,点击清理按钮将会自动帮忙清空该目录下的文件,释放硬盘空间,请操作前确认好没有需要保留的重要log文件。

12.3自定义Python.exe路径:不了解Python环境的话不要修改。AirtestIDE允许使用本地的python.exe来跑在AirtestIDE里写好的脚本。由于AirtestIDE内置了一个python环境,假如你希望能够使用自己的本地python环境(可以跑一些本地安装了的第三方库,可以让你使用本地的python2环境等等),可以通过设置这个选项来改变运行脚本默认使用的python.exe。

点击打开可以打开文件选择窗口,请务必选择一个本地安装的python.exe路径。点击重置将会将填写内容清空。

在mac系统下,需要设置python可执行文件路径,如果使用的是系统python,使用which python指令来获取python可执行文件所在路径(如果是python3,需要使用which python3):

which python3
/Library/Frameworks/Python.framework/Version/3.6/bin/python3
将该路径填写到AirtestIDE的设置窗口即可,请注意填写的是bin/目录下的可执行文件,而不是python所在目录。

假如使用了虚拟环境,就需要填写虚拟环境目录下的python可执行文件路径了,例如在mac系统中可能是

/Users/username/.virtualenvs/your_env/bin/python3

注意:

如果希望使用本地Python环境运行脚本,需要事先在本地环境通过pip安装airtest和pocoui包。

AirtestIDE设置了本地的python.exe路径后,会默认使用 AirtestIDE/sample/custom_launcher.py 来启动脚本,如果使用了自己的launcher.py,请在AirtestIDE中设置自己的launcher.py的脚本路径。

十三、Poco栏

13.1刷新间隔:上期讲的Poco检视器,会定时去拉取手机上最新的元素树,在这里可以设定间隔时间。

13.2Windows窗口区域位置:在嵌入了Windows游戏窗口后,如果想要使用Poco来查看界面元素,可以点该项后面的按钮来设置窗口位置,这是为了能够在Windows窗口上显示poco元素标记用的,不设置不会对脚本运行产生任何影响。

13.3采用渲染分辨率:在一些不支持全面屏手机的app,画面不能充满整个屏幕的时候,出现黑边,poco定位发生偏移。如下图高亮与实际按钮相差一些:

在这里插入图片描述
勾选采用渲染分辨率,然后输入竖屏模式下的渲染分辨率,点击OK即可. 渲染分辨率为用逗号隔开的四个数字,数字分别代表竖屏模式下的 offset_x, offset_y, offset_width, offset_heigt.

比如在 1080x2220 分辨率下的大鱼来了,它在手机上会有两个黑边,上黑边高度为 100px ,画面高度为2020px ,下黑边高度为 100px ,所以它的渲染分辨率则为(0 ,100 ,1080 ,2020)

在这里插入图片描述

十四、Selenium栏

可设置Chrome.exe的路径,借此运行Selenium相关功能。
注意:如果您安装了geckodriver,并在path环境变量中配置了它,并选中“使用Firefox而不是Chrome”复选框,则不需要设置Chrome路径。强烈建议您改用Chrome因为Firefox浏览器不支持录制功能。

AirtestIDE高级功能

一、图片编辑器

双击代码编辑区里的图片,就可以打开该图片的编辑界面
在这里插入图片描述

Snapshot+Recognition

点击左上按钮,对当前手机屏幕截图,并识别图片是否在截图中,识别到后会红圈标出,并在左下显示识别方法和可信度

filename

可以在这里给图片改名,方便阅读和维护

threshold

识别阈值,浮点类型,范围是[0.0, 1.0],默认0.7。也就是当识别可信度=>0.7时就认为是匹配的。

target_pos

要操作的位置点,整型,范围是[1, 9],默认是5即中心点,具体9个点分别代表的位置看图中数字所示。
比如我们设置为9后,切换成代码模式,其代码相应变为

Template(r"tpl1622030412465.png", target_pos=9, record_pos=(-0.044, -0.114), resolution=(1080, 2400))
# record_pos是图片在你手机上的相对位置,resolution是你手机的分辨率。这两个参数表示了图片在你手机上的位置,airtest找图时会优先找这个区域,提高查找速度。

rgb

bool类型,设置在对识别结果进行可信度计算时是否使用rgb三通道,默认为False(即采用灰度图像进行可信度计算)。简单理解,设为True,则不仅匹配图的形,还匹配图的颜色。
比如我们勾选rgb后,其代码相应变为

Template(r"tpl1622030412465.png", rgb=True, record_pos=(-0.044, -0.114), resolution=(1080, 2400))

右键菜单

在图片编辑器的截图上右击,会出现菜单。

Device Snapshot:对屏幕截图

Auto Recognition:在截图上用默认算法进行图像识别

Recognition Methods-Template Recognition(auto resize):自动缩放大小识别

Recognition Methods-Template Recognition(no resize):不缩放识别

Recognition Methods-SIFT Recognition:使用SIFT算法识别

我图片上的那个示例(未勾选rgb),用前面2种算法,找到的图都是错的,但用SIFT就正确找到了

二、手机助手

在IDE中连接好设备后,点击设置窗右上角的工具按钮,点’显示Android助手‘,即可打开安卓助手界面。上面的功能其实就是对adb命令的封装。
在这里插入图片描述
在这里插入图片描述

安装apk

点击左上的按钮或是把APK拖过去,会打开安装界面,点击Install按钮进行安装
在这里插入图片描述

App列表

左下显示手机中安装的应用的包名,可以按关键字筛选或只显示第三方应用。点击某个包名,就可以对其进行相应操作。
另外,点击应用列表中的某个包名,然后在键盘上使用 ctrl+c ,可以把包名复制到剪切板上,之后再使用 ctrl+v 就可以把包名粘贴到脚本编辑窗上,方便我们编写操作应用相关的脚本。

Common Features

open:输入网址,点击open,会在手机上用浏览器打开输入的网址

input:输入文字,点击input,会把输入的文字打在手机上(当你需要从PC复制文本进手机时使用)

IME Manager:可以快速切换手机上的输入法和airtest自带输入法。当你使用Poco后,会自动调用airtest的输入法yosemite,yosemite有自己的输入法面板,就是一个小横条,其目的是为了隐藏其他输入法的面板,以方便自动输入文字和查找元素。当你运行后Poco的脚本,会自动将手机输入法调成yosemite,导致你不能手动在手机上输入文字,这时可以通过这个功能快速切换其他输入法。

Quick Button:unlock解锁屏幕,power手机电源键,snapshot手机截屏

volumn Setting:mute静音,volumn_down音量-,volumn_up音量+

Current App

刷新:将当前屏幕应用的包名和Activity名显示出来

stop:停止选中应用(可通过刷新或左侧列表选中应用)

start:打开选中应用(可通过刷新或左侧列表选中应用)

clear:将选中应用数据清除(可通过刷新或左侧列表选中应用)

backup:备份应用数据

uninstall:卸载选中应用(可通过刷新或左侧列表选中应用)

Remote Debug

相当于一个CMD命令行窗口,不怎么好用,官方也不太推荐,还是用你自己原来的就好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙HID与Android的通信--多点触摸问题

通过蓝牙HID上传鼠标,键盘,按键的事件基本已经比较成熟。并且功能比较好实现,基本参照网络上的配置都可以弄出来。但多点触摸功能却怎么弄都没有满意的结果。搜罗了网上的很多报告描述符的描写,试验了一段时间,竟然没有…

OpenCV:深入Feature2D组件——角点检测

角点检测 1 Harris角点检测1.1 兴趣点与角点1.2 角点检测1.3 harris角点检测1.4 实现harris角点检测:cornerHarris()函数1.5 综合案例:harris角点检测与测绘 2. Shi—Tomasi角点检测2.1Shi—Tomasi角点检测概述2.2 确定图像强角点:goodFeatur…

硬件基本常识杂记1

文章目录 电感(RL电路),电容(RC电路),(LRC电路)谐振(串联、并联)滤波器(高通RC、低通RC、高通RL、低通RL、带通、Π型)积分电路、微分电路截至频率w信号传输、…

Docker迁移与备份

容器保存为镜像 语法: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 为nginx创建镜像: docker commit -a "leq" -m "nginx的镜像" 10053cd47ebf nginx:v1.0 -a 提交的镜像作者 -m 提交时的说明文字 镜像备份 语法: docker save…

深入理解C语言对文件的包装与缓冲区

内存级文件操作的运用 1.模拟实现文件分装2. 深入理解缓冲区的概念 1.模拟实现文件分装 【目标】 以最简单的方式,理解FILE结构体的原理。 头文件:mystdio.h(定义了MY_FILE结构体,声明fopen,fwrite,fclos…

『手撕 Mybatis 源码』10 - 一级缓存

一级缓存 概述 一级缓存是 SqlSession 级别的缓存。在操作数据库时需要构造 SqlSession 对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的 SqlSession 之间的缓存数据区域(HashMap)是互相不影响的二级缓…

hive基于新浪微博的日志数据分析——项目及源码

有需要本项目的全套资源资源以及部署服务可以私信博主!!! 本系统旨在对新浪微博日志进行大数据分析,探究用户行为、内容传播、移动设备等多个方面的特征和趋势,为企业和个人的营销策略、产品设计、用户服务等提供有益的…

PN结、二极管、三极管、三极管放大电路、上拉电路/下拉电路

1、N型参杂 与 P型参杂 B站 视频地址 :https://www.bilibili.com/video/BV1fB4y147Gn 1)N型参杂 (N型半导体) : 4价硅 参杂 5价麟,多一个自由负电子(带负电) 2)P型参杂…

Linux性能学习(4.2):网络_为什么MTU是1500

文章目录 1 基本概念2 为什么MTU是15003 有效载荷最大是1500吗4 Linux下如何修改MTU 参考资料: 1. RFC894 2. 什么是MTU(Maximum Transmission Unit)? 1 基本概念 Maximum Transmission Unit,缩写MTU,即…

Python爬虫:Scrapy框架

🚀Python爬虫:Scrapy框架 🕷️ Scrapy介绍📦 Scrapy框架📁 Scrapy项目🔍 创建爬虫过程🕸️ 页面分析📑 提取信息🎉 完整代码📝 结语 在本篇博文中&#xff0c…

C++6.29思维,作业

有以下类定义&#xff0c;按要求实现剩余功能 #include <iostream> using namespace std;class Person { private:int age;int *p; public://无参构造Person():p(new int(89)){age 18;cout << "无参构造" << endl;}//有参构造Person(int age,int …

docker的容器

首先要关闭防火墙,不然会阻止连接 查询防火墙状态 systemctl status firewalld 如果是running的状态要关闭一下 关闭防火墙 systemctl stop firewalld 禁用防火墙(禁止开机启动) systemctl disable firewalld 容器的创建语句: docker run …

第11节 跟上板块轮动的节奏

板块 文章目录 板块什么是板块板块的分类板块的轮动 板块相关接口本节课任务 什么是板块 股票板块是一些具有相同特征的股票的集合&#xff0c;命名通常也会简单明了的直接按照特征命名。例如沪深300板块&#xff0c;蓝筹板块。对上市公司进行“分班”不论是对于企业还是对于投…

Leetcode-每日一题【148.排序链表】

题目 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3]输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0]输出&#xff1a;[-1,0,3,4,5] 示例 3&#xff1…

VC++多文档项目同时显示多个文本文件

VC6新建一个多文档工程&#xff1b;工程名为txt&#xff1b;生成的类如下&#xff1b;与单文档项目相比多了一个ChildFrm&#xff1b; 在类向导为Doc类添加OnOpenDocument函数&#xff1b; 此时生成的OnOpenDocument()函数如下&#xff1b; BOOL CTxtDoc::OnOpenDocument(LPCT…

Python基础 —— 条件语句

考虑了好久&#xff0c;不知道是先写条件循环&#xff0c;还是先写数据类型,因为如果先写条件循环的话&#xff0c;要涉及到数据类型的内容&#xff1b;先写数据类型的话&#xff0c;又要设计到条件循环的内容…纠结一番后&#xff0c;决定还是先说条件循环&#xff0c;再在数据…

chatgpt赋能python:用Python抓取数据:提高SEO的关键

用Python抓取数据&#xff1a;提高SEO的关键 在数字化时代&#xff0c;数据已经变成了最宝贵的财富之一。然而&#xff0c;对于企业和网站管理者来说&#xff0c;数据仅仅是有价值的当它被收集和转化成行动中存在的信息。这时&#xff0c;Python成为了一个有用的工具&#xff…

基于VORS、CCDM模型、GeoDetector、GWR模型集成技术在城镇化与生态系统健康空间关系分析及影响效应中的应用

城市群是一国经济发展水平的象征&#xff0c;也是一国经济发展到一定阶段的标志&#xff0c;我国城市群建设体量不断增加&#xff0c;将成为全球经济的核心&#xff0c;中国城市群的建设逐步引领全球进入到了21世纪的中国新时代。然而&#xff0c;高速的城镇化发展&#xff0c;…

leetcode题集训 sql

目录 背景步骤175组合两个表&#xff08;多表联查&#xff09;176 177 第n高的薪水&#xff08;Distinct关键字 排序&#xff09;178分数排名 &#xff08;排序 order over关键字&#xff09;179 连续出现的数字 &#xff08;模拟多张表联查&#xff09;181. 超过经理收入的员工…

学号编码:TooY0ung的学院(结构体)

根据66十二位编码规则&#xff0c;用城市代码和出生年编制学号。 【本笔记适合初通算法的 coder 翻阅】 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础…