auto.js 入门学习(参考GitHub文档)

2023-05-16

GitHub开发文档

input([i, ]text)
i {number} 表示要输入的为第i + 1个输入框
text {string} 要输入的文本
App
app模块提供一系列函数,用于使用其他应用、与其他应用交互。例如发送意图、打开文件、发送邮件等。

app.launchApp(appName)
appName {string} 应用名称
通过应用名称启动应用。如果该名称对应的应用不存在,则返回false; 否则返回true。如果该名称对应多个应用,则只启动其中某一个。

该函数也可以作为全局函数使用。

app.getPackageName(appName)
appName {string} 应用名称
获取应用名称对应的已安装的应用的包名。如果该找不到该应用,返回null;如果该名称对应多个应用,则只返回其中某一个的包名。

该函数也可以作为全局函数使用。
app.launch(packageName)
packageName {string} 应用包名
通过应用包名启动应用。如果该包名对应的应用不存在,则返回false;否则返回true。

该函数也可以作为全局函数使用

app.getAppName(packageName)
packageName {string} 应用包名
获取应用包名对应的已安装的应用的名称。如果该找不到该应用,返回null。

该函数也可以作为全局函数使用。

app.openAppSetting(packageName)
packageName {string} 应用包名
打开应用的详情页(设置页)。如果找不到该应用,返回false; 否则返回true。

该函数也可以作为全局函数使用。
app.uninstall(packageName)
packageName {string} 应用包名
卸载应用。执行后会会弹出卸载应用的提示框。如果该包名的应用未安装,由应用卸载程序处理,可能弹出"未找到应用"的提示。

不是全局变量不能直接使用,需要使用app.unistall(packageName)

app.openUrl(url)
url {string} 网站的Url,如果不以"http://""https://"开头则默认是"http://"。
用浏览器打开网站url。

如果没有安装浏览器应用,则抛出ActivityNotException。

app.sendEmail(options)
options {Object} 发送邮件的参数。包括:
email {string} | {Array} 收件人的邮件地址。如果有多个收件人,则用字符串数组表示
cc {string} | {Array} 抄送收件人的邮件地址。如果有多个抄送收件人,则用字符串数组表示
bcc {string} | {Array} 密送收件人的邮件地址。如果有多个密送收件人,则用字符串数组表示
subject {string} 邮件主题(标题)
text {string} 邮件正文
attachment {string} 附件的路径。
根据选项options调用邮箱应用发送邮件。这些选项均是可选的。

如果没有安装邮箱应用,则抛出ActivityNotException。

//发送邮件给10086@qq.com和10001@qq.com。
app.sendEmail({
    email: ["10086@qq.com", "10001@qq.com"],
    subject: "这是一个邮件标题",
    text: "这是邮件正文"
});

app.startActivity(name)
name {string} 活动名称,可选的值为:
console 日志界面
settings 设置界面
启动Auto.js的特定界面。该函数在Auto.js内运行则会打开Auto.js内的界面,在打包应用中运行则会打开打包应用的相应界面。

进阶: 意图Intent
Intent(意图) 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:

启动活动(Activity): Activity 表示应用中的一个"屏幕"。例如应用主入口都是一个Activity,应用的功能通常也以Activity的形式独立,例如微信的主界面、朋友圈、聊天窗口都是不同的Activity。通过将 Intent 传递给 startActivity(),您可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了任何必要的数据。

启动服务(Service): Service 是一个不使用用户界面而在后台执行操作的组件。通过将 Intent 传递给 startService(),您可以启动服务执行一次性操作(例如,下载文件)。Intent 描述了要启动的服务,并携带了任何必要的数据。

传递广播: 广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将 Intent 传递给 sendBroadcast()sendOrderedBroadcast()sendStickyBroadcast(),您可以将广播传递给其他应用。

本模块提供了构建Intent的函数(app.intent()), 启动Activity的函数app.startActivity(), 发送广播的函数app.sendBroadcast()。

使用这些方法可以用来方便的调用其他应用。例如直接打开某个QQ号的个人卡片页,打开某个QQ号的聊天窗口等。

var qq = "2732014414";
app.startActivity({ 
    action: "android.intent.action.VIEW", 
    data:"mqq://im/chat?chat_type=wpa&version=1&src_type=web&uin=" + qq, 
    packageName: "com.tencent.mobileqq", 
});

全局变量与函数

全局变量和函数在所有模块中均可使用。 但以下变量的作用域只在模块内,详见 module:

exports
module
require() 以下的对象是特定于 Auto.js 的。 有些内置对象是 JavaScript 语言本身的一部分,它们也是全局的。
一些模块中的函数为了使用方便也可以直接全局使用,这些函数在此不再赘述。例如timers模块的setInterval, setTimeout等函数


sleep(n)
n {number} 毫秒数
暂停运行n毫秒的时间。1秒等于1000毫秒。

currentPackage()
返回 {string}
返回最近一次监测到的正在运行的应用的包名,一般可以认为就是当前正在运行的应用的包名。

此函数依赖于无障碍服务,如果服务未启动,则抛出异常并提示用户启动。

currentActivity()
返回 {string}
返回最近一次监测到的正在运行的Activity的名称,一般可以认为就是当前正在运行的Activity的名称。

此函数依赖于无障碍服务,如果服务未启动,则抛出异常并提示用户启动。

setClip(text)
text {string} 文本
设置剪贴板内容。此剪贴板即系统剪贴板,在一般应用的输入框中"粘贴"既可使用。

getClip()
返回 {string}
返回系统剪贴板的内容。

toast(message)
message {string} 要显示的信息
以气泡显示信息message几秒。(具体时间取决于安卓系统,一般都是2)

注意,信息的显示是"异步"执行的,并且,不会等待信息消失程序才继续执行。如果在循环中执行该命令,可能出现脚本停止运行后仍然有不断的气泡信息出现的情况。

toastLog(message)
message {string} 要显示的信息
相当于toast(message);log(message)。显示信息message并在控制台中输出。参见console.log。


Type to search
Auto.js文档
首页
Q&A
如何阅读本文档 - Documentation
应用 - App
一般全局函数 - Globals
sleep(n)
currentPackage()
currentActivity()
setClip(text)
getClip()
toast(message)
toastLog(message)
waitForActivity(activity[, period = 200])
waitForPackage(package[, period = 200])
exit()
random(min, max)
random()
requiresApi(api)
requiresAutojsVersion(version)
runtime.requestPermissions(permissions)
runtime.loadJar(path)
runtime.loadDex(path)
context
控制台 - Console
基于坐标的操作 - CoordinatesBasedAutomation
设备 - Device
对话框 - Dialogs
脚本引擎 - Engines
事件与监听 - Events
悬浮窗 - Floaty
文件系统 - Files
HTTP - Http
图片与颜色 - Images
画布 - Canvas
按键模拟 - Keys
多媒体 - Media
模块 - Modules
基于控件的操作 - WidgetsBaseAutomation
传感器 - Sensor
Shell - Shell
本地储存 - Storages
多线程 - Threads
定时器 - Timers
用户界面 - UI
调用Java - Work with Java
全局变量与函数
全局变量和函数在所有模块中均可使用。 但以下变量的作用域只在模块内,详见 module:

exports
module
require() 以下的对象是特定于 Auto.js 的。 有些内置对象是 JavaScript 语言本身的一部分,它们也是全局的。
一些模块中的函数为了使用方便也可以直接全局使用,这些函数在此不再赘述。例如timers模块的setInterval, setTimeout等函数。

sleep(n)
n {number} 毫秒数
暂停运行n毫秒的时间。1秒等于1000毫秒。

//暂停5毫秒
sleep(5000);
currentPackage()
返回 {string}
返回最近一次监测到的正在运行的应用的包名,一般可以认为就是当前正在运行的应用的包名。

此函数依赖于无障碍服务,如果服务未启动,则抛出异常并提示用户启动。

currentActivity()
返回 {string}
返回最近一次监测到的正在运行的Activity的名称,一般可以认为就是当前正在运行的Activity的名称。

此函数依赖于无障碍服务,如果服务未启动,则抛出异常并提示用户启动。

setClip(text)
text {string} 文本
设置剪贴板内容。此剪贴板即系统剪贴板,在一般应用的输入框中"粘贴"既可使用。

setClip("剪贴板文本");
getClip()
返回 {string}
返回系统剪贴板的内容。

toast("剪贴板内容为:" + getClip());
toast(message)
message {string} 要显示的信息
以气泡显示信息message几秒。(具体时间取决于安卓系统,一般都是2)

注意,信息的显示是"异步"执行的,并且,不会等待信息消失程序才继续执行。如果在循环中执行该命令,可能出现脚本停止运行后仍然有不断的气泡信息出现的情况。 例如:

for(var i = 0; i < 100; i++){
  toast(i);
}
运行这段程序以后,会很快执行完成,且不断弹出消息,在任务管理中关闭所有脚本也无法停止。 要保证气泡消息才继续执行可以用:

for(var i = 0; i < 100; i++){
  toast(i);
  sleep(2000);
}
或者修改toast函数:

var _toast_ = toast;
toast = function(message){
  _toast_(message);
  sleep(2000);
}
for(var i = 0; i < 100; i++){
  toast(i);
}
toastLog(message)
message {string} 要显示的信息
相当于toast(message);log(message)。显示信息message并在控制台中输出。参见console.log。

waitForActivity(activity[, period = 200])
activity Activity名称
period 轮询等待间隔(毫秒)
等待指定的Activity出现,period为检查Activity的间隔。

waitForPackage(package[, period = 200])
package 包名
period 轮询等待间隔(毫秒)
等待指定的应用出现。例如waitForPackage("com.tencent.mm")为等待当前界面为微信。

exit()
立即停止脚本运行。

立即停止是通过抛出ScriptInterrupttedException来实现的,因此如果用try...catchexit()函数的异常捕捉,则脚本不会立即停止,仍会运行几行后再停止。

random(min, max)
min {number} 随机数产生的区间下界
max {number} 随机数产生的区间上界
返回 {number}
返回一个在[min...max]之间的随机数。例如random(0, 2)可能产生0, 1, 2random()
返回 {number}
返回在[0, 1)的随机浮点数。
requiresApi(api)
api Android版本号
表示此脚本需要Android API版本达到指定版本才能运行。例如requiresApi(19)表示脚本需要在Android 4.4以及以上运行。

调用该函数时会判断运行脚本的设备系统的版本号,如果没有达到要求则抛出异常。

可以参考以下Android API和版本的对照表:

平台版本: API级别

Android 7.024

Android 6.023

Android 5.122

Android 5.021

Android 4.4W: 20

Android 4.419

Android 4.318

runtime.requestPermissions(permissions)
permissions {Array} 权限的字符串数组
动态申请安卓的权限。例如:

//请求GPS权限
runtime.requestPermissions(["access_fine_location"]);
尽管安卓有很多权限,但必须写入Manifest才能动态申请,为了防止权限的滥用,目前Auto.js只能额外申请两个权限:

access_fine_location GPS权限
record_audio 录音权限

context
全局变量。一个android.content.Context对象。

注意该对象为ApplicationContext,因此不能用于界面、对话框等的创建。

Console

控制台模块提供了一个和Web浏览器中相似的用于调试的控制台。用于输出一些调试信息、中间结果等。 console模块中的一些函数也可以直接作为全局函数使用,例如log, print等。

console.show()
显示控制台。这会显示一个控制台的悬浮窗(需要悬浮窗权限)。

console.hide()
隐藏控制台悬浮窗。

console.clear()
清空控制台。

console.log([data][, ...args])
data {any}
...args {any}
打印到控制台,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。

const count = 5;
console.log('count: %d', count);
// 打印: count: 5 到 stdout
console.log('count:', count);
// 打印: count: 5 到 stdout
详见 util.format()。

该函数也可以作为全局函数使用。

console.verbose([data][, ...args])
data {any}
...args {any}
与console.log类似,但输出结果以灰色字体显示。输出优先级低于log,用于输出观察性质的信息。

console.info([data][, ...args])
data {any}
...args {any}
与console.log类似,但输出结果以绿色字体显示。输出优先级高于log, 用于输出重要信息。

console.warn([data][, ...args])
data {any}
...args {any}
与console.log类似,但输出结果以蓝色字体显示。输出优先级高于info, 用于输出警告信息。

console.error([data][, ...args])
data {any}
...args {any}
与console.log类似,但输出结果以红色字体显示。输出优先级高于warn, 用于输出错误信息。

console.assert(value, message)
value {any} 要断言的布尔值
message {string} value为false时要输出的信息
断言。如果value为false则输出错误信息message并停止脚本运行。

var a = 1 + 1;
console.assert(a == 2, "加法出错啦");
console.time([label])
[v4.1.0新增]

label {String} 计时器标签,可省略
启动一个定时器,用以计算一个操作的持续时间。 定时器由一个唯一的 label 标识。 当调用 console.timeEnd() 时,可以使用相同的 label 来停止定时器,并以毫秒为单位将持续时间输出到控制台。 重复启动同一个标签的定时器会覆盖之前启动同一标签的定时器。

console.timeEnd(label)
[v4.1.0新增]

label {String} 计时器标签
停止之前通过调用 console.time() 启动的定时器,并打印结果到控制台。 调用 console.timeEnd() 后定时器会被删除。如果不存在标签指定的定时器则会打印 NaNms。

console.time('求和');
var sum = 0;
for(let i = 0; i < 100000; i++){
    sum += i;
}
console.timeEnd('求和');
// 打印 求和: xxx ms
console.trace([data][, ...args])
[v4.1.0新增]

data {any}
...args {any}
与console.log类似,同时会打印出调用这个函数所在的调用栈信息(即当前运行的文件、行数等信息)。

console.trace('Show me');
// 打印: (堆栈跟踪会根据被调用的跟踪的位置而变化)
// Show me
//  at <test>:7
console.input(data[, ...args])
data {any}
...args {any}
与console.log一样输出信息,并在控制台显示输入框等待输入。按控制台的确认按钮后会将输入的字符串用eval计算后返回。

部分机型可能会有控制台不显示输入框的情况,属于bug。

例如:

var n = console.input("请输入一个数字:"); 
//输入123之后:
toast(n + 1);
//显示124
console.rawInput(data[, ...args])
data {any}
...args {any}
与console.log一样输出信息,并在控制台显示输入框等待输入。按控制台的确认按钮后会将输入的字符串直接返回。

部分机型可能会有控制台不显示输入框的情况,属于bug。

例如:

var n = console.rawInput("请输入一个数字:"); 
//输入123之后:
toast(n + 1);
//显示1231
console.setSize(w, h)
w {number} 宽度
h {number} 高度
设置控制台的大小,单位像素。

console.show();
//设置控制台大小为屏幕的四分之一
console.setSize(device.width / 2, device.height / 2);
console.setPosition(x, y)
x {number} 横坐标
y {number} 纵坐标
设置控制台的位置,单位像素。

console.show();
console.setPosition(100, 100);
console.setGlobalLogConfig(config)
[v4.1.0新增]

config {Object} 日志配置,可选的项有:
file {string} 日志文件路径,将会把日志写入该文件中
maxFileSize {number} 最大文件大小,单位字节,默认为512 * 1024 (512KB)
rootLevel {string} 写入的日志级别,默认为"ALL"(所有日志),可以为"OFF"(关闭), "DEBUG", "INFO", "WARN", "ERROR", "FATAL"等。
maxBackupSize {number} 日志备份文件最大数量,默认为5
filePattern {string} 日志写入格式,参见PatternLayout
设置日志保存的路径和配置。例如把日志保存到"/sdcard/1.txt":

console.setGlobalLogConfig({
    "file": "/sdcard/1.txt"
});
注意该函数会影响所有脚本的日志记录。

print(text)
text {string} | {Object} 要打印到控制台的信息
相当于log(text)

基于坐标的触摸模拟

本章节介绍了一些使用坐标进行点击、滑动的函数。这些函数有的需要安卓7.0以上,有的需要root权限。

要获取要点击的位置的坐标,可以在开发者选项中开启"指针位置"。

基于坐标的脚本通常会有分辨率的问题,这时可以通过setScreenMetrics()函数来进行自动坐标放缩。这个函数会影响本章节的所有点击、长按、滑动等函数。通过设定脚本设计时的分辨率,使得脚本在其他分辨率下自动放缩坐标。

控件和坐标也可以相互结合。一些控件是无法点击的(clickable为false), 无法通过.click()函数来点击,这时如果安卓版本在7.0以上或者有root权限,就可以通过以下方式来点击

setScreenMetrics(width, height)
width {number} 屏幕宽度,单位像素
height {number} 屏幕高度,单位像素
设置脚本坐标点击所适合的屏幕宽高。如果脚本运行时,屏幕宽度不一致会自动放缩坐标。

click(x, y)
x {number} 要点击的坐标的x值
y {number} 要点击的坐标的y值
模拟点击坐标(x, y),并返回是否点击成功。只有在点击执行完成后脚本才继续执行。

一般而言,只有点击过程(大约150毫秒)中被其他事件中断(例如用户自行点击)才会点击失败。

使用该函数模拟连续点击时可能有点击速度过慢的问题,这时可以用press()函数代替。

longClick(x, y)
x {number} 要长按的坐标的x值
y {number} 要长按的坐标的y值
模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约600毫秒)时脚本才会继续执行。

一般而言,只有长按过程中被其他事件中断(例如用户自行点击)才会长按失败。

longClick(x, y)
x {number} 要长按的坐标的x值
y {number} 要长按的坐标的y值
模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约600毫秒)时脚本才会继续执行。

一般而言,只有长按过程中被其他事件中断(例如用户自行点击)才会长按失败。

swipe(x1, y1, x2, y2, duration)
x1 {number} 滑动的起始坐标的x值
y1 {number} 滑动的起始坐标的y值
x2 {number} 滑动的结束坐标的x值
y2 {number} 滑动的结束坐标的y值
duration {number} 滑动时长,单位毫秒
模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。

一般而言,只有滑动过程中被其他事件中断才会滑动失败。

gesture(duration, [x1, y1], [x2, y2], ...)
duration {number} 手势的时长
[x, y] ... 手势滑动路径的一系列坐标
模拟手势操作。例如gesture(1000, [0, 0], [500, 500], [500, 1000])为模拟一个从(0, 0)(500, 500)(500, 100)的手势操作,时长为2秒。

Tap(x, y)
x, y {number} 要点击的坐标。
点击位置(x, y), 您可以通过"开发者选项"开启指针位置来确定点击坐标。

Swipe(x1, y1, x2, y2, [duration])
x1, y1 {number} 滑动起点的坐标
x2, y2 {number} 滑动终点的坐标
duration {number} 滑动动作所用的时间
滑动。从(x1, y1)位置滑动到(x2, y2)位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

auto.js 入门学习(参考GitHub文档) 的相关文章

  • Win10安装Ubuntu子系统及图形化界面详细教程20210401

    Win10安装Ubuntu子系统及图形化界面详细教程 WSL xff08 Windows Subsystem for Linux xff09 xff0c 顾名思义就是Windows中可以用Linux了 xff0c 当然命令也会丰富更多 xf
  • python在函数中改变外部变量

    python在函数中改变改变外部变量 python在函数中修改变量值的方法 和其他语言不一样 xff0c 传递参数的时候 xff0c python不允许程序员选择采用传值还是传引用 Python参数传递采用的肯定是 传对象引用 的方式 实际
  • Linux在执行命令并将结果赋值给变量

    通过find命令在 etc目录下查找sources list文件 xff0c 将结果赋值给temp变量 temp span class token operator 61 span span class token variable spa
  • MAC去掉更新小红点

    1 打开 系统偏好设置 点击 软件更新 2 取消选择 自动保持我的Mac最新 3 然后点击 高级 按钮 xff0c 取消所有的勾选 4 通过上面步骤设置后 xff0c 发现底部的小红点还在 xff0c 则需打开终端 5 打开终端执行如下代码
  • MQ-2烟雾传感器模块功能实现(STM32)

    认识MQ 2模块与其工作原理 MQ 2型烟雾传感器属于二氧化锡半导体气敏材料 xff0c 属于表面离子式N型半导体 当处于200 300摄氏度时 xff0c 二氧化锡吸附空气中的氧 xff0c 形成氧的负离子吸附 xff0c 使半导体中的电
  • [编程题]提取不重复的整数

    Talk is cheap show me the code 一 问题描述 输入一个int型整数 xff0c 按照从右向左的阅读顺序 xff0c 返回一个不含重复数字的新的整数 输入描述 xff1a 输入一个int型整数 输出描述 xff1
  • [编程题]判断两个IP是否属于同一子网

    Talk is cheap show me the code 一 问题描述 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据 二 问题分析 这道题又是一道坑题 xff0c 题意没描述清楚 xff0c 首先判断一个ip或者m
  • centos7永久关闭防火墙

    首先输入用户名和密码进入centos7 接着先是看centos7的防火墙的状态 xff0c 查看的命令为 sudo systemctl status firewalld 查看后 xff0c 看到active running 就意味着防火墙打
  • ubuntu系统安装Go和liteide及环境配置

    大家好 xff0c 我是加摩斯 xff0c 觉得文章有帮助的小伙伴 xff0c 记得一键三连哟 xff5e 申明 xff1a 原创 xff0c 转载前请与我沟通 搭建环境是编程中最基本的工作 xff0c 但有时方法不对 xff0c 也会踩到
  • OVS的作用OVS 总体架构、源码结构及数据流程全面解析

    为什么要有OVS 1 xff09 方便网络管理与监控 OVS 的引入 xff0c 可以方便管理员对整套云环境中的网络状态和数据流量进行监控 xff0c 比如可以分析网络中流淌的数据包是来自哪个 VM 哪个 OS 及哪个用户 xff0c 这些
  • LATEX——两张图并列排列/双栏模板中图片通栏并列布局

    LATEX 两张图并列排列 双栏模板中图片通栏并列布局 正常插入图片并列插入两张图片双栏模板中图片通栏并列布局1 不同图片使用不同标题 xff0c 不同编号 双栏模板中图片通栏并列布局2 xff08 不同图片使有不同的小标题 xff0c 但
  • SUMO输出文件设置

    1 fcd浮动车数据输出 轨迹数据输出 sumo c demo sumocfg fcd output fcd1 xml 2 设置E3检测器 E3检测器简介 Multi Entry Exit Detectors xff08 E3 xff09
  • 私有地址

    私有地址 xff08 Private address xff09 属于非注册地址 xff0c 专门为组织机构内部使用 以下表列出留用的内部寻址地址 A类 10 0 0 0 10 255 255 255 B类 172 16 0 0 172 3
  • apereo CAS Server 6.2.x 和 6.4.x 的部署

    代码地址 xff0c 分别下载6 2和6 4两个版本 https github com apereo cas overlay template 版本地址 xff1a https github com apereo cas overlay t
  • 微信小程序学习第九课:总结JS页面 radio (单选)向后台传值

    1 data里增加 dengji 0 dengjiitems name 34 优 34 value 34 1 34 name 34 良 34 value 34 0 34 34 checked 34 39 true 39 name 34 中
  • 微信小程序WXSS加虚线

    cartLeft width 50 height 100rpx border right 1rpx dashed a7a8a8
  • 没见过这么恶心的,钉钉开发同一个ip只能被一个企业使用

    关键是把另外一个企业的IP改了 xff0c 还是提示 xff01 同一个ip只能被一个企业使用 创建企业自建应用 xff0c 提示 同一个ip只能被一个企业使用 xff0c 请您参考以下内容确认 xff1a 1 如果是授权定制服务商开发的应
  • Workbench的服务器公网白名单:

    登录名称 Administrator 64 139 196 54 95 3389 实例id i uf6exzqcieg2y4tvzly1 实例名称 launch advisor 20200109 登录实例失败 xff0c 原因 连接实例 i
  • 【PHP】使用mpdf生成pdf文件

    本文主要需求是将html页面转换为pdf文档 1 安装mpdf工具类 xff08 composer方式 xff09 composer require mpdf mpdf 8 0 3 2 控制器里调用 lt php public functi
  • ubuntu2004安装cuda11.7+cuDNN8.6 deb版本

    ubuntu2004安装cuda11 7 43 cuDNN8 6 deb版本 1 显卡驱动安装1 1查看驱动版本 2 安装cuda2 1安装前检查2 2下载CUDA11 72 3安装2 4设置环境变量2 5检测 3 cuDNN安装3 1下载

随机推荐

  • FastAdmin 插件离线安装不成功的原因

    离线安装 1 xff09 登录后台 进入插件管理 xff0c 选择本地安装或者是离线安装 2 xff09 安装时会进行压缩包验证 版本依赖 判断 xff0c 提升从官网下载压缩包 3 xff09 绕过判断 xff0c 直接安装的方式 xff
  • 微擎手机端传图总是提示4M限制修改

    app resource js app util js 这个文件里 fileSizeLimit 4194304 fileSingleSizeLimit 4194304 4194304最后加一个0就变40M了 4 1024 1024 61 4
  • 数学中的特殊符号

    正负号 xff1a 加号 xff1a 43 减号 xff1a 百分号 xff1a 等号 xff1a 61 a a xff0f b 61 a b a 0b xfe65 0 ab 61 a b a 0b 0 i 61 1 x 2 这个是x的2次
  • Ubuntu+ROS+opencv4.3.0 修改cv_bridge配置文件,解决ROS与opencv版本冲突问题

    Ubuntu18 04 43 ROS melodic 43 opencv4 3 0 修改cv bridge配置文件 xff0c 解决ROS使用不同版本opencv的冲突问题 在ros下使用opencv读取图像话题时 xff0c 在OpenC
  • Highcharts 柱状图不显示0

    Highcharts 柱状图显示0值会给人造成误解 xff0c 毕竟0值和空值是两个结果 解决方案 xff1a 将数据源 0值替换为null
  • FastReport模板字段为Null却显示0 ; 以及0被隐藏、不显示的解决方法

    FastReport模板字段为Null却显示0 以及0被隐藏 不显示的解决方法 字段为Null 不默认显示0 取消勾选后 xff0c null就不会显示0 数值0不隐藏 调整 xff1a 属性 HideZeros False xff0c 0
  • ASP.NET控件FileUpload实现Excel文件内容上传到数据库

    实现思路 xff1a Excel的内容并不可以直接上传到数据库 xff0c 所以先将Excel内容读取出来转化为DataSet xff0c 然后可以得到DataTable xff0c 遍历每一行 xff0c 存到数据库里就好了 前台只放了两
  • Echarts折线图平滑问题

    Echarts3 0官网上的折线图不够平滑 xff0c 有棱角 看着不舒服 xff08 个人感觉 xff09 xff0c 解决办法 xff1a 增加一个属性 smooth true name 39 最高气温 39 type 39 line
  • Visual Studio 附加到进程调试找不到问w3wp.exe的解决办法

    1 在IIS中部署好站点 xff0c 确保有一个应用程序池在跑 2 设置好断点后 xff0c 调试 gt 附加到进程 xff0c 勾选 显示所有用户的进程 xff0c 在英文输入法的状态下 xff0c 按下 W 键 xff0c 快速找到 w
  • DIV鼠标悬停显示文字

    最简洁的办法是加一个 title属性 lt div title 61 34 停止回放 34 gt lt div gt
  • OpenCV:多线程加速的多尺度模板匹配

    OpenCV中的模板匹配 matchTemplate 一直被诟病 xff0c 原因是不能多尺度识别且不能旋转识别 xff0c 后者比较复杂 xff0c 这里只讨论前者 网上多数示例都是从一张图上截取一个目标 xff0c 然后进行匹配识别 x
  • 如何快速转载CSDN中的博客

    以下内容转载自 https blog csdn net zhongjianblackberry article details 79456338 在参考 如何快速转载CSDN中的博客 后 xff0c 由于自己不懂html以及markdown
  • 5680在网设备开启端口聚合不断网的方法----我测试不断网

    在5680T做双端口聚合上行的时候 xff0c 要先给正在使用的端口开启端口聚合 比如目前使用0 19 0 端口千兆上行 xff0c 计划将0 19 0 和0 19 1的2个端口做端口聚合 xff0c 然后双千兆上行 网上查的说是直接输入
  • 正则表达式:(?:) 或 .*? 或 .+?

    一 这个代表不捕获分组 比较 X 和 X xff0c 前者是捕获分组 xff0c 后者不捕获 xff0c 区别在于正则表达式匹配输入字符串之后所获得的匹配的 xff08 数 xff09 组当中没有 X 匹配的部分 xff1b 例如 xff1
  • Maven 多个war项目的引用关系 overlay配置实例

    在Maven项目中 xff0c 一般是jar文件的依赖 xff0c 但是也要考虑一种情况 xff0c 那就是war项目的依赖 比如说base war项目包含基本的网页 xff0c 但是需要为另外有一个定制的war项目有几个页面是需要特别定制
  • NVIDIA CUDA, CUDNN, MATLAB配置

    64 NVIDIA 深度学习环境配置 配置NVIDIA GPU以支持MATLAB等计算平台进行并行计算 NVIDIA NVIDIA 支持并行计算 xff0c 可提高深度学习的计算效率 从硬件到软件的链条是 xff1a NVIDIA GPU
  • OAuth2.0四种授权模式以及Oauth2.0实战

    OAuth2 0四种授权模式以及Oauth2 0实战 首先我们得了解什么是Oauth2 0 xff0c 简单来说Oauth2 0它是一个授权协议 我们可能会听说过 xff0c 使用Oauth2 0来实现单点登录SSO xff0c 以及第三方
  • firewalld-cmd简介

    firewalld是centos7的一大特性 xff0c 最大的好处有两个 xff1a 支持动态更新 xff0c 不用重启服务 xff1b 第二个就是加入了防火墙的 zone 概念 firewalld有图形界面和工具界面 xff0c 由于我
  • hdfs创建文件夹及目录

    span class token keyword import span java span class token punctuation span io span class token punctuation span IOExcep
  • auto.js 入门学习(参考GitHub文档)

    GitHub开发文档 input span class token punctuation span span class token punctuation span i span class token punctuation span