一、介绍:

移动全平台iOS/Android性能测试、分析工具平台,快速定位分析性能问题。PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序、小游戏、H5、后台系统进程等)、Android模拟器、云真机等性能测试。支持APP多进程测试(如Android多子进程及iOS扩展进程APP Extension)。

重要说明Q&Ahttps://bbs.perfdog.qq.com/detail-128.html

特殊机型指南https://bbs.perfdog.qq.com/detail-127.html

性能参考标准说明https://bbs.perfdog.qq.com/detail-145.html

WEB使用手册https://bbs.perfdog.qq.com/article-detail.html?id=49

PerfDogService(自动化及云测性能服务https://perfdog.qq.com/perfdogservice

二、优缺点:

优点:

  1. 支持移动全平台:支持Android/iOS移动平台,提供PerfDog软件Windows & Mac版本
  2. 无需ROOT/越狱:Android设备无需ROOT,  iOS设备无需越狱
  3. 测试数据准确:工具CPU性能影响<1%,保证性能数据准确真实性
  4. 测试数据完整全面: 轻松获得 FPS、Jank、FTime、CPU、GPU、Memory、Battery 、Network、CTemp等性能参数
  5. 支持应用广泛:支持所有APP应用、游戏、小程序、小游戏、H5、web
  6. 工具易用性高:无需安装,即插即用,减少繁琐的测试障碍

缺点:

PerfDog当前处于市场推广阶段,存在诸多Bug,测试一天下来发下的Bug就不下5个,如:

  1. 在Mac上执行时,如果Mac屏幕休眠后,手机会与该工具断开连接导致测试中断
  2. 在Mac上执行测试期间图表显示正常,但上传到云平台后cpu或内存图表无法展示,且单次测试时间越长越容易复现,已提交给他们的开发处理这个Bug
  3. 在云平台上对浏览器的分辨率适配不好,当测试时间超过10分钟后,在云平台上无法展示完整的图表,比如测试30分钟,只显示13分钟的图标数据,可通过放缩浏览器,改变mac分辨率等方式解决,但显示有问题,已提交给他们的开发处理这个Bug
  4. 统计https的流量上行与实际值偏差大
  5. 测试数据保存本地时,经常出现PerfDog卡死

三、性能指标:

  1. 包体大小:包体大小能被列为性能指标,是从APP性能指标及游戏运营两个维度考虑的,玩家是更希望包体小的同时性能要好,有时它们会是一个互相取舍的关系。
  2. CPU占用率:一般情况下,用主流手机玩游戏20%-40%的CPU占用率算是合理的,当然这个数值随着近年来手机硬件配置的提高,会略微下降,如果CPU占用率超过80%就非常值得我们去关注了。
  3. 图片处理器每秒刷新的帧数(FPS):可用来指示页面是否平滑的渲染。手机游戏帧率FPS,30-60都可接受,上了60对于人眼主观感受差别就不大了。对于游戏开发而言,并不是FPS越高就一定越好,FPS取决于显卡,其次是内存、CPU,然后是网络。故综合游戏其他性能指标,选择一个适合的FPS即可。
  4. 内存使用:在Android系统中,每个APP进程除了同其他进程共享(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(=私有内存+比例分配共享内存)来衡量一个APP的内存开销。移动设备的内存资源是非常有限,为每个APP进程分配的私有内存也是有限制。一方面我们要合理的申请内存使用,以免导致频繁的GC(垃圾回收机制)影响性能和大对象申请发生内存溢出;另一方面,我们要及时释放内存,以免发生内存泄漏。
  5. 电量:相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要。另外,android的很多特性都比较耗电(如屏幕,GPS,sensor传感器,唤醒机制,CPU,连网等的使用),我们必须要慎重检查APP的电量使用,以免导致用户手机耗电发热,带来不良体验。
  6. 流量:目前的网络类型包含2G\3G\4G\wifi,其中还有不同运营商的区分,我们在APP的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅要控制流量使用,还需要加快请求的响应。另外,对于需要联网的手游来说,部分游戏对不同联网方式的网络类型采用了不同的流量消耗策略,主要分为wifi环境和蜂窝网络环境。所以针对不同的游戏,我们统计流量消耗时,可能要连接不同的网络进行测试。

总结,性能指标大致如下:
FPS cpu mem GPU NETwork Battery(wifi)

四、测试前准备

  1. 自己的设备的其他应用全都关闭。
  2. 电量充足,一般70%以上。(其实测试50%以上就行了,但是在测试过程中会耗电)
  3. 不能边充电边进行性能测试。
  4. 保持登录应用的账号不要被其他人挤掉,不然可能测试的性能数据作废了。
  5. 设备。至少要准备三台测试机,覆盖目前的高、中、低配手机(主要看cpu),如果是ios需要更多的机型。

五、安装及运行 

登录PerfDog官网https://perfdog.qq.com/,根据您的PC平台选择想要下载的桌面应用程序

Windows平台:解压下载包,双击打开PerfDog.exe桌面应用程序。

Mac平台:直接运行dmg桌面应用程序。

账号的注册登录:

需要先注册账号,然后登录该账号后测试的数据就会同步到平台上;

打开PerfDog.exe文件,需要登录才能进入到 perfDog的主页, 输入刚刚官网注册邮箱即可

连接手机:

iOS:则即插即用,用户无需做任何操作。若PerfDog检测不到连接手机或无法测试,请先安装确保最新itunes是否能连上手机(最新itunes可在QQ管家上直接下载安装)。

备注:若无法使用请参考:https://bbs.perfdog.qq.com/detail-128.html

Android:有两种模式,非安装模式和安装模式。(注:请开启手机USB调试模式及允许USB应用安装。)。

a.   非安装模式:

手机即插即用,无需任何设置及安装,使用非常简单,但手机屏幕上没有实时性能数据显示。

b.   安装模式:

需要在手机上自动安装PerfDog.apk,手机屏幕上有实时性能数据显示(允许USB应用安装和PerfDog悬浮窗管理权限),启动PC版PerfDog.exe,则会在手机上自动PUSH安装PerfDog.apk,具体安装类似各个手机厂商安装第三方APP提示安装即可。(注:由于很多手机安装需要账号密码,导致无法自动安装,如果自动安装失败,则会把安装文件PerfDog.apk释放到当前文件夹里,手动安装PerfDog.apk即可)。此模式下,在测试过程中,可能由于系统资源紧缺会kill PerfDog显示app(手机界面性能数据显示),但不影响正常测试功能。

备注:若无法使用请参考:https://bbs.perfdog.qq.com/detail-128.html

测试模式:

USB模式测试:

  USB连线后,在设备列表选择USB图标设备进行USB模式测试

WIFI模式测试(测试功率):

  只能在WIFI模式测试功率等信息。USB连线后,在设备列表选择WIFI图标设备进行WIFI模式测试。WIFI检测连接成功后,拔掉USB连接线。(注:需要PC和被测手机连接同一WIFI,WIFI检测连接成功后,拔掉被测手机USB线(USB模式测试功率无任何意义,会充电))(备注:一般公司WIFI可能做了安全策略限制,导致iOS平台在公司WIFI下无法使用)

首页模块介绍:

模块1:选择调试的手机设备

模块2:选项需要测试的应用名称,会显示手机上安装的所有应用

模块3:手机的CPU、GPU、内存介绍等

  1. device:显示的是设备相关信息;
  2. Setting:显示的是性能指标数据的配置页面, 参数有:FPS(帧数)、FrameTime(帧时间)、CPU、NetworkFlow(网络流量) 一般我们保持默认(可以根据自己产品的特点调整)
  3. About:显示的是版本号和帮助文档入口

模块4:

FPS:

FPS(Frames per second) 1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS。

名称说明Avg(FPS)平均帧率(一段时间内平均FPS)Var(FPS)帧率方差(一段时间内FPS方差)Drop(FPS)降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)

在平时玩游戏的时候, 延迟不能大于100毫秒, 否则用户的严重只剩下了卡顿, 100-300毫秒用户可以感受到延迟, 当达到一秒, 用户的注意力就会转移

Jank:

1秒内卡顿次数, 帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以平均帧率FPS与卡顿无任何直接关系)

Jank1s内卡顿次数(同时满足ab,则认为一次卡顿Jank)

a) 当前帧耗时>前三帧平均耗时2倍。
b) 当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。

BigJank1s内严重卡顿次数(同时满足ab,则认为是一次严重卡顿BigJank)

a) 当前帧耗时>前三帧平均耗时2倍。
b) 当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。

BigJank:1秒内严重滞后的次数

Jank(/10min):平均每10分钟卡顿次数

BigJank(/10min):平均每10分钟严重卡顿次数PerfDog Stutter测试过程中,卡顿时长的占比。Stutter(卡顿率)=卡顿市场/总时长

FTime:

名称说明FTime上下帧画面显示时间间隔,即认为帧耗时Avg(FTime)平均帧耗时Delta(FTime)增量耗时(平均每小时两帧之间时间差>100ms的次数)

模块5:

CPU Usage:CPU利用率官方讲解

名称说明Total CPU整机CPU使用率AppCPU进程CPU使用率CPU Clock各个CPU核心的未规划频率和未规划使用率CPU Clock Normalized各个CPU核心的规划频率和规划使用率

模块六:

名称说明MemoryPSS Memory
统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)Swap Memory部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低Virtual Memory(VSS)VSS 虚拟耗用内存(包含共享库占用的内存)Memory DetailNativePSS、GFX、GL、UnknownCTempCPU温度
Battery Power(Current电流、Voltage电压、Power功耗)
注:与仪器测试误差<3%左右。
注:Sum(Battery)是耗电量。

模块7:

选择需要收集性能参数,默认已经选中了一些常用的

iOS平台(苹果官方Xcode工具参数对齐。注:iOS系统对进程性能参数做严格限制,超过限制则会被系统kill)

  • ScreenShot(只支持USB模式,注:部分机型截图影响性能)
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
  1. Avg(FPS):平均帧率(一段时间内平均FPS)
  2. Var(FPS):帧率方差(一段时间内FPS方差)
  3. Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
  • Jank(1s内卡顿次数。iOS9.1以下系统暂时不支持。类似Android的Jank卡顿和iOS的FramePacing平滑度统计原理。帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以平均帧率FPS与卡顿无任何直接关系)

  参考:https://bbs.perfdog.qq.com/article-detail.html?id=6

  PerfDog Jank计算方法:

  1.同时满足以下两条件,则认为是一次卡顿Jank.

    a)当前帧耗时>前三帧平均耗时2倍。

    b)当前帧耗时>两帧电影帧耗时(1000ms/24*2=84ms)。

  2.同时满足两条件,则认为是一次严重卡顿BigJank.

    a)当前帧耗时>前三帧平均耗时2倍。

    b)当前帧耗时>三帧电影帧耗时(1000ms/24*3=125ms)。

    1)BigJank:1s内严重卡顿次数

    2)Jank(/10min):平均每10分钟卡顿次数。

    3)BigJank(/10min):平均每10分钟严重卡顿次数

  • Stutter(测试过程中,卡顿时长的占比)
  • FTime(上下帧画面显示时间间隔,即认为帧耗时,iOS9.1以下系统暂时不支持)

    1)Avg(FTime):平均帧耗时

    2)Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)

  • CPU Usage(TotalCPU表示整机CPU使用率,AppCPU表示进程CPU使用率,统计结果和Xcode一致,PerfDog使用率=Xcode使用率/核心数。备注:iOS平台CPU Usage是未规范化CPU使用率,请参考https://bbs.perfdog.qq.com/detail-146.html)
  • Memory (是统计FootPrint,注:OOM与FootPrint有关,与系统、机型无关。只与RAM有关,如1G内存机器。FootPrint超过650MB,引发OOM)。注:PerfDog暂时在iOS9、10系统无法获取,其他版本ok。后续版本增加。如做性能测试,建议升级iOS系统版本
  • Xcode Memory (XCode Debug gauges统计方式即XCode Memory)。注:iOS9、10系统暂时无法获取,其他版本ok。后续版本增加。如做性能测试,建议升级iOS系统版本
  • Real Memory(Xcode Instrument统计方式即Real Memory,实际占用物理内存。注:物理内存系统策略有关,衡量内存指标时不会关注,但是它有助于分析定位整体性能问题。比如:footprint没有降低,说明应用没有释放内存,但是real memory却降低了,说明系统对内存做了压缩。由于压缩会占用CPU资源,同时相应会导致FPS降低)
  • Virtual Memory(虚拟内存)
  • Available Memory(整机可用剩余内存)
  • Wakeups(线程唤醒次数。注:超过150进程很大可能会被系统kill。a sleep/wake cycle on each thread per second,Exceeding limit of 150 wakeups per second over 300 seconds,特别是iOS13.2闷杀后台进程事件,建议重点关注)
  • CSwitch(上下文切换测试。注:单核超过14000进程会被系统Kill。Context Switch Limit 14000(Core/Second)
  • GPU Utilization
  1. Render:渲染器利用率(像素着色处理阶段,若占比高,说明是PS阶段出现瓶颈,shader过于复杂或纹理大小、采样复杂等)
  2. Tiler: Tiler利用率(顶点着色处理阶段,若占比高,说明是VS阶段出现瓶颈,顶点数太多等原因)
  3. Device:设备利用率(整体GPU利用率)
  • Network(Recv/Send,测试目标进程流量,统计结果合Xcode一致)(注:USB测试模式下是app的,WiFi测试模式下可能是整机可能是app)
  • BTemp(电池温度)
  • Battery Power(仅WIFI模式,整机实时Current电流、Voltage电压、Power功耗)(注:20s获取一次,目前最精准的统计方式,结果和Battery life结果一致,支持所有iOS机型)

注:Sum(Battery)是耗电量。

  • Energy Usage(即为Xcode Energy Impact。监控应用使用的能耗情况(包括CPU、GPU、NetWork、Location、Display (iPhone X only)、Overhead)。(注:和Xcode Energy Impact结果一致。有线模式下测试,支持iOS9及以上系统。Total Energy<=270为Low,270<Total Energy<=1000为High,Total Energy>1000为Very High)。

  参考:https://help.apple.com/xcode/mac/11.0/index.html?localePath=en.lproj#/devf7f7c5fcd

  • Log日志采集(WIFI模式下,不支持Log收集)

Android平台

  • ScreenShot(只支持USB模式,注:部分机型截图影响性能)
  • FPS(1秒内游戏画面或者应用界面真实平均刷新次数,俗称帧率/FPS)
  1. Avg(FPS):平均帧率(一段时间内平均FPS)
  2. Var(FPS):帧率方差(一段时间内FPS方差)
  3. Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)

  备注:高阶FPS功能-Android窗口与FPS

  请参考https://bbs.perfdog.qq.com/?m=app&c=detail&a=index&id=201

  • InterFrame(部分机型具有动态补帧/插帧技术,此参数可真实反映1秒内插入的帧数)
  • Jank(1S内卡顿次数。解释说明如iOS平台说明)
  1. BigJank:1s内严重卡顿次数
  2. Jank(/10分钟):平均每10分钟卡顿次数。
  3. BigJank(/10分钟):平均每10分钟严重卡顿次数
  • Stutter(测试过程中,卡顿时长的占比)
  • FTime(上下帧画面显示时间间隔,即认为帧耗时)
  1. Avg(FTime):平均帧耗时
  2. Delta(FTime):增量耗时(平均每小时两帧之间时间差>100ms的次数)
  • CPU Usage(传统CPU利用率,也叫未规范化CPU利用率,TotalCPU表示整机未规范化CPU使用率,AppCPU表示进程未规范化CPU使用率。备注:统计结果和Android Studio Profiler一致。具体参考https://bbs.perfdog.qq.com/detail-146.html)
  • CPU Usage (Normalized)(规范化CPU利用率,TotalCPU表示整机规范化CPU使用率,AppCPU表示进程规范化CPU使用率。备注:建议参考规范化CPU利用率,性能参考更精准。具体参考https://bbs.perfdog.qq.com/detail-146.html)
  • CPU Clock(各个CPU核心的未规范化频率和未规范化使用率)
  • Memory (PSS Memory,统计结果和Android Java API标准结果一致,与Meminfo也一致。注:部分三星机器系统修改了Meminfo底层统计方式,导致Meminfo与Java AP统计结果不一致,新出三星机器已修复)
  • Swap Memory (Swap Memory,部分设备支持Swap功能,在启用Swap功能后,系统会对PSS内存进行压缩,Swap增加,PSS会相应减少,由于压缩会占用CPU资源,同时相应会导致FPS降低)
  • Virtual Memory(VSS)
  • Available Memory(整机可用剩余内存)
  • Memory Detail(NativePSS、GFX、GL、Unknown)

  注:在极限测试情况下,例如开启游戏超高帧率,建议不要勾选收集Memory Usage和Memory Detail,因为部分机型会有性能损耗。

  1. Non-fragment:非片段着色器(顶点着色器,细分着色器,计算着色器)耗费的GPU时间占渲染耗费的GPU时间的比例。
  2. Fragment:片段着色器耗费的GPU时间占渲染耗费的GPU时间的比例。
  • Mali Memory & Bus Bandwidth(仅支持Mali芯片GPU)
  1. L2Load/Store:Load/Store单元读取L2内存的实际带宽 (包括顶点缓存,原子,图像数据)。
  2. L2Texture:Texture单元读取L2内存的实际带宽 (纹理采样)。
  3. Bus Read:定义GPU到DRAM或者GPU外部的系统内存的实际读带宽。
  4. Bus Write:定义GPU到DRAM或者GPU外部的系统内存的实际写带宽。
  • Mali Pixels Info(仅支持Mali芯片GPU)
  1. OverDraw:表示每个像素由多少个片段分层组成,通常用于表示像素被重复绘制的次数。
  2. PixelsThroughput:表示每个被渲染的像素耗费的GPU的时钟的数量。

  注:更多GPU信息说明,请参考:https://bbs.perfdog.qq.com/article-detail.html?id=72

  • Network(Recv/Send,测试目标进程流量)(注:USB/WiFi测试模式下均为APP数据)
  • CTemp(CPU温度)
  • Battery Power(仅WIFI模式,Current电流、Voltage电压、Power功耗)(注:与仪器测试误差<3%左右)。注1:Sum(Battery)是耗电量。注2:对于已经兼容的双电机型,可参考:https://bbs.perfdog.qq.com/detail-340.html,未兼容设备可以电流x2进行容错。
  • Log日志采集(WIFI模式下,不支持Log收集)

 六、测试步骤

1.打开该软件并使用数据线连接手机,选择要测试的手机设备

2.点击右下角“+”,在PerfDog上勾选好性能测试需要的参数

3.在PerfDog上选好需要进行测试的APP,并在手机上打开该APP

4.(待程序趋于稳定状态开始录制,一般等待2分钟)在PerfDog上点击开始进行性能录制

5.结束测试

可以在保存excel文件的路径里看到测试的数据

也可以在云端看到自己测试的数据(性能数据同步上传到了PerfDog云端web看板)进入云端:点击右上角“云”icon,登录TAPD,进入云端。

PerfDog的使用教程的更多相关文章

  1. 除PerfDog之外,还有什么性能测试工具。

    除PerfDog之外,还有什么性能测试工具. 高通的Snapdragon Profiler 下载地址:https://developer.qualcomm.com/software/snapdrago ...

  2. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  3. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  4. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  5. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  6. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  10. Virtual Box配置CentOS7网络(图文教程)

    之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...

随机推荐

  1. banner的使用

    Android中banner的使用步骤 Step 1.依赖banner Gradle dependencies{ compile 'com.youth.banner:banner:1.4.9' //最 ...

  2. linux内核源码编译加制作rpm包

    本章主要讲解实际操作步骤,具体理论知识可以自行百度 linux内核官网下载:https://cdn.kernel.org/pub/linux/kernel/   (如图) 根据官网发布的信息分析,目前 ...

  3. iview table添加input框,且校验

    方法一 render渲染 { title: "用户名", key: "stockPrice", render: (h, params) => { retu ...

  4. Linux详解

    什么是操作系统?1.操作系统:(Operating System,OS)是计算机系统中的一个系统软件,它们管理和控制计算机系统中的硬件及软件资源,为用户提供一个功能强大.使用方便的和可扩展的工作环境. ...

  5. Jquery_002

    6.$.ajax方法 $.ajax([options]) options是一个json格式的对象,参数是通过键值对的形式存在的 常用的参数如下: async:(默认: true) 默认设置下,所有请求 ...

  6. FFmpeg 命令行

    FFmpeg命令行帮助 #>ffmpeg -h #>ffmpeg -h long #>ffmpeg -h full 将视频按照指定的宽高输出 #>ffmpeg -i input ...

  7. python + appium 常用公共方法封装

    appium 程序下载安装见之前的帖子:https://www.cnblogs.com/gancuimian/p/16536322.html appium 环境搭建见之前的帖子:https://www ...

  8. JDBC与JPA--初学JPA

      最近工程中用到JPA,头一次接触,踩了不少坑.刚好复习到JDBC,发现JPA用起来真是很简单.就对比一下这两者的区别 总结:JDBC是更接近数据库SQL的抽象,使用时依然使用的是SQL.优点是靠近 ...

  9. CAJ转换为PDF

    方法就是下载一个CAJViewer和一个PDF虚拟打印机 CAJViewer下载: http://cajviewer.cnki.net/ 我下载了7.2版本 PDF虚拟打印机可以是Adobe acro ...

  10. 通过VS Code轻松连接树莓派

    如果您正在使用树莓派作为开发平台,那么通过远程连接VS Code到树莓派是非常方便的一种方法.这样,您可以在Windows或macOS等计算机上开发和测试代码,而不必在树莓派上进行. 以下是通过VS ...