当前位置: 首页 > news >正文

手机网站开发实例/最近热点新闻事件2023

手机网站开发实例,最近热点新闻事件2023,公司建网站找哪家,电脑做系统哪个网站比较好一、关于sonic云真机 Sonic,一站式开源分布式集群云真机测试平台,致力服务于中小企业的客户端UI测试(代码永久免费、开源)。 个人其实21年年底时已经关注,但当时觉得不太稳定及后期可能会收费什么的,虽然至…

一、关于sonic云真机

Sonic,一站式开源分布式集群云真机测试平台,致力服务于中小企业的客户端UI测试(代码永久免费、开源)。
个人其实21年年底时已经关注,但当时觉得不太稳定及后期可能会收费什么的,虽然至今还不了解sonic背后的团队做这个靠什么活下来。
之前一直用着atx2开源框架,目前看到sonic已经相对稳定,这里Mark一下,希望有助于其他人在linux下部署开展
官网网址见:sonic云真机

二、部署(单机版v1.3.2-beta)

部署模式1:【部署服务器+agent部署:均在ubuntu上部署】,这个搜了下,暂时还没相关比较全面的部署文章。

lixuefu2@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 21.04
Release:	21.04
Codename:	hirsute

部署模式2:【部署服务器+agent部署:ubuntu+windows】,官方部署方案

这里选型部署模式1来部署,主要是习惯都用linux,后面也便于扩展
部署模式2,可参考最后的备注链接中文章部署

大致的部署图为:(这里更文时最新为v1.3.2-beta,此处最新更新文章时发现已更新到v1.3.2-release,建议直接先浏览一遍整体,然后参考后文的第五点yml文件部署)

1、确保服务器前后端部署正常---docker-compose up -d
2、确保agent部署正常---拉linux下对应的agent包,解压后改yml文件,再执行java命令使得手机提示要装apk即可
agent部署过程见下,以下都是必须的,所以需要逐个配置(部分简单的就跳过)
===================== 开始检查配置环境 =====================
👉 检查 ANDROID_HOME 环境变量通过 ✔
👉 检查 ADB 环境通过 ✔
👉 检查 Node 环境通过 ✔
👉 检查 npm 环境通过 ✔
👉 检查 JAVA_HOME 环境变量通过 ✔
👉 检查 Appium 环境通过 ✔
👉 检查 adbkit 环境通过 ✔
👉 检查 chromeDriver 环境通过 ✔
👉 校验 本地文件夹 通过 ✔
===================== 配置环境检查结果 =====================

三、具体部署流程及踩坑

部署可分为服务器前后端部署(手机后台服务及前端展示)+agent部署(运行在手机上的代理apk),
【前后端部署】:建议直接使用docker-compose;
【agent代理安装】:由于官方默认的yml文件是偏windows部署,这里为了后期部署在树莓派上,统一使用linux部署

1、前后端部署:docker-compose up -d
修改配置文件:lixuefu2@ubuntu:~/sonic$ vim docker-compose.yml

version: '3'
services:sonic-mysql:image: "mysql:5.7"hostname: sonic-mysqlcommand: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_cienvironment:- MYSQL_ROOT_PASSWORD=Sonic!@#123- MYSQL_DATABASE=sonicvolumes:- ./mysql/data:/var/lib/mysqlports:- "3307:3306"networks:- sonic-networksonic-server-simple:image: "sonicorg/sonic-server-simple:v1.3.2-beta"container_name: sonic-server-simpleenvironment:- MYSQL_HOST=sonic-mysql #这里的HOST要改成sonic-mysql哦- MYSQL_PORT=3306- MYSQL_DATABASE=sonic- MYSQL_USERNAME=root- MYSQL_PASSWORD=Sonic!@#123#在服务器部署的话,localhost改为服务器ip,port更改为sonic-server-simple暴露的port(一般不变)- SONIC_API_HOST=localhost- SONIC_API_PORT=8094- SONIC_NETTY_PORT=8095#token加密的key值- SECRET_KEY=sonic#身份验证token有效天数- EXPIRE_DAY=14#前端页面访问地址,不填默认为http://localhost:3000- CLIENT_HOST=http://localhost:3000#文件保留天数(指测试过程产生的文件,包括图片、录像等等)- FILE_KEEP_DAY=60#测试结果保留天数- RESULT_KEEP_DAY=60#以下均为Cron表达式#清理文件定时任务- FILE_CRON=0 0 12 * * ?#清理测试结果定时任务- RESULT_CRON=0 0 12 * * ?#发送日报定时任务- DAY_CRON=0 0 10 * * ?#发送周报定时任务- WEEK_CRON=0 0 10 ? * Monnetworks:- sonic-networkvolumes:- files:/keepFiles/- files:/imageFiles/- files:/recordFiles/- files:/packageFiles/- files:/logs/ports:- "8094:8094"- "8095:8095"sonic-client-web:image: "sonicorg/sonic-client-web:v1.3.2-beta"environment:#192.168.1.1改为你的ipv4,port更改为sonic-server-simple暴露的port(一般不变)- SONIC_API_HOST=192.168.213.130- SONIC_API_PORT=8094networks:- sonic-networkports:- "3000:80"volumes:files:networks:sonic-network:driver: bridge                                                                                                                                                                                        

一键部署

docker-compose up -d

2、确保前后端部署正常,前端页面可用
在这里插入图片描述

lixuefu2@ubuntu:~$ sudo docker ps -a
[sudo] lixuefu2 的密码: 
CONTAINER ID   IMAGE                                      COMMAND                  CREATED        STATUS       PORTS                                                           NAMES
0d5063f8357c   mysql:5.7                                  "docker-entrypoint.s…"   5 hours ago    Up 5 hours   33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp            sonic_sonic-mysql_1
fa9b46b8f0f7   sonicorg/sonic-client-web:v1.3.2-beta      "/docker-entrypoint.…"   5 hours ago    Up 5 hours   0.0.0.0:3000->80/tcp, :::3000->80/tcp                           sonic_sonic-client-web_1
066189ea8c8e   sonicorg/sonic-server-simple:v1.3.2-beta   "java -server -Xmx80…"   5 hours ago    Up 4 hours   0.0.0.0:8094-8095->8094-8095/tcp, :::8094-8095->8094-8095/tcp   sonic-server-simple

问题1:过程中发现mysql连接报错权限相关问题,为方便,直接赋予全部权限

lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64$ sudo docker logs -f sonic-server-simple
org.quartz.JobPersistenceException: Failure identifying failed instances when checking-in: Can't get stat of './sonic/QRTZ_SCHEDULER_STATE.TRG' (Errcode: 13 - Permission denied)
Caused by: java.sql.SQLException: Can't get stat of './sonic/QRTZ_SCHEDULER_STATE.TRG' (Errcode: 13 - Permission denied)
chmod 777 -R mysql

问题2:当本地启动了另一mysql时,会导致docker中的docker启动不成功,目前先stop掉即可:

service mysql stop
service mysql status

3、agent部署:
先下载对应agent压缩包:https://github.com/SonicCloudOrg/sonic-agent/releases
在这里插入图片描述
下载后解压

lixuefu2@ubuntu:~/sonic$ unzip sonic-agent-v1.3.2-beta-linux_x86_64 -d .

解压后目录:

lixuefu2@ubuntu:~/sonic$ cd sonic-agent-v1.3.2-beta-linux_x86_64/
lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64$ pwd
/home/lixuefu2/sonic/sonic-agent-v1.3.2-beta-linux_x86_64
lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64$ ls
config  logs  mini  plugins  sonic-agent-linux-x86_64.jar  test-output  webview
lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64$ cd config/
lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ ls
application-prod.yml
lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ pwd
/home/lixuefu2/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config

3.1、新建agent信息
在这里插入图片描述

3.2、修改application-prod.yml

lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ vim application-prod.yml 
sonic:agent:# 替换为部署Agent机器的ipv4host: 192.168.213.130# 替换为Agent服务的端口,可以自行更改port: 7777# 替换为前端新增Agent生成的keykey: 2fd04815-ea9f-47c0-a2b4-cdd79896e542server:# 这个host改成后端的hosthost: 192.168.213.130# 如果跨网段,这个port改成后端文件中心的port(一般不变)folder-port: 8094# 如果跨网段,这个port改成后端传输中心的port(一般不变)transport-port: 8095modules:# 安卓模块配置android:enable: true# 是否开启远程adb调试功能use-adbkit: true# iOS模块配置ios:# 如果不需要连接iOS设备,请将true改为false。开启的windows用户请确保本机已安装iTunesenable: true#替换为你自己使用的wda的bundleId,如果没有.xctrunner后缀会自动补全,建议使用公司的开发者证书wda-bundle-id: com.facebook.WebDriverAgentRunner.xctrunnerappium:enable: true# 默认为0会自动寻找随机端口启动,如果需要指定appium server端口,请在这里设置port: 0# 在线webView调试模块配置webview:enable: true# 谷歌调试端口,一般不需要修改(默认0使用随机端口,如果需要开启防火墙给外部使用,请设置固定端口如7778)chrome-driver-debug-port: 0# Agent机器上的chrome浏览器的driver路径,可以去http://npm.taobao.org/mirrors/chromedriver/下载# chrome-driver-path: C:\Program Files\Google\Chrome\Application\chromedriver.exechrome-driver-path: /usr/bin/google-chrome# Agent日志管理,一般不需要更改,可根据自己需要配置
logging:file:#日志路径name: logs/sonic-agent.loglogback:rollingpolicy:clean-history-on-start: true#保留天数max-history: 3pattern:console: "%clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}"

3.3、安装jdk16及配置JAVA_HOME

sudo add-apt-repository ppa:openjdk-r/ppa 
sudo apt-get update 
sudo apt-get install openjdk-16-jdk

确认jdk16安装成功,这里一定要用16,否则会报jdk相关类的处理报错问题

lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-Ubuntu-1)
OpenJDK 64-Bit Server VM (build 16.0.1+9-Ubuntu-1, mixed mode, sharing)
vim /etc/profile

在profile的最后加入以下行

JAVA_HOME=/usr/lib/jvm/java-16-openjdk-amd64
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
source /etc/profile

3.4、配置ANDROID_HOME
查看adb路径:

lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ adb version
Android Debug Bridge version 1.0.41
Version 28.0.2-debian
Installed as /usr/lib/android-sdk/platform-tools/adb
vim /etc/profile

在profile的最后加入以下行

export ANDROID_HOME=/usr/lib/android-sdk
source /etc/profile

3.5、配置chrome
1)先安装Chrome

sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub  | sudo apt-key add -
apt-get update
apt-get install google-chrome-stable

2)执行google-chrome启动谷歌浏览器

lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ google-chrome -v
正在现有的浏览器会话中打开。

在这里插入图片描述
3)查看chrome路径:

lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ which google-chrome
/usr/bin/google-chrome

4)修改application-prod.yml
文件(由于官方的这个是默认对应windowsC盘路径下的chrome)

lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/config$ vim application-prod.yml

在这里插入图片描述
3.6、以上配置完,直接运行
这里由于chrome的安全机制,不能使用root运行,直接用个人用户运行即可

java -Dfile.encoding=utf-8 -jar sonic-agent-linux-x86_64.jar
lixuefu2@ubuntu:~/sonic/sonic-agent-v1.3.2-beta-linux_x86_64$ java -Dfile.encoding=utf-8 -jar sonic-agent-linux-x86_64.jar▄▄▄▄      ▄▄▄▄    ▄▄▄   ▄▄   ▄▄▄▄▄▄      ▄▄▄▄▄█▀▀▀▀█    ██▀▀██   ███   ██   ▀▀██▀▀    ██▀▀▀▀███▄       ██    ██  ██▀█  ██     ██     ██▀▀████▄   ██    ██  ██ ██ ██     ██     ██▀██  ██    ██  ██  █▄██     ██     ██▄█▄▄▄▄▄█▀   ██▄▄██   ██   ███   ▄▄██▄▄    ██▄▄▄▄█▀▀▀▀▀      ▀▀▀▀    ▀▀   ▀▀▀   ▀▀▀▀▀▀      ▀▀▀▀2022-03-24 19:08:29.308 - INFO 27762 --- [main] org.cloud.sonic.agent.AgentApplication   : Starting AgentApplication v1.3.2-beta using Java 16.0.1 on ubuntu with PID 27762 (/home/lixuefu2/sonic/sonic-agent-v1.3.2-beta-linux_x86_64/sonic-agent-linux-x86_64.jar started by lixuefu2 in /home/lixuefu2/sonic/sonic-agent-v1.3.2-beta-linux_x86_64)
2022-03-24 19:08:29.312 - INFO 27762 --- [main] org.cloud.sonic.agent.AgentApplication   : The following profiles are active: prod,linux-x86_64
2022-03-24 19:08:30.510 - INFO 27762 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 7777 (http)
2022-03-24 19:08:30.520 - INFO 27762 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-03-24 19:08:30.521 - INFO 27762 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.53]
2022-03-24 19:08:30.573 - INFO 27762 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-03-24 19:08:30.574 - INFO 27762 --- [main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1183 ms
===================== 开始检查配置环境 =====================
👉 检查 ANDROID_HOME 环境变量通过 ✔
👉 检查 ADB 环境通过 ✔
👉 检查 Node 环境通过 ✔
👉 检查 npm 环境通过 ✔
👉 检查 JAVA_HOME 环境变量通过 ✔
👉 检查 Appium 环境通过 ✔
👉 检查 adbkit 环境通过 ✔
👉 检查 chromeDriver 环境通过 ✔
👉 校验 本地文件夹 通过 ✔
===================== 配置环境检查结果 =====================
JAVA_HOME(系统PATH环境变量): /usr/lib/jvm/java-16-openjdk-amd64
java version(运行当前jar的java版本): 16.0.1
ANDROID_HOME(系统PATH环境变量): /usr/lib/android-sdk
ADB path: /usr/bin/adb
ADB version: Android Debug Bridge version 1.0.41
Version 28.0.2-debian
Installed as /usr/lib/android-sdk/platform-tools/adb
chromeDriver path: /usr/bin/google-chrome

四、最终效果图

插上手机,然后刷新,会发现手机提示安装相关的apk
在这里插入图片描述
目前发现sonic连接手机时,两款华为机型无法获取到图像,OPPO正常
机型:HUAWEI Mate 30E Pro 5G 全网通版、JEF-NX9
在这里插入图片描述

2022-03-24 19:35:10.379 -ERROR 23902 --- [Device List Monitor] o.c.s.a.b.a.AndroidDeviceBridgeTool      : device offline
2022-03-24 19:35:10.379 - INFO 23902 --- [Device List Monitor] o.c.s.a.b.a.AndroidDeviceBridgeTool      : 获取屏幕尺寸失败!拔插瞬间可忽略该错误...
2022-03-24 19:35:10.387 - INFO 23902 --- [Device List Monitor] o.c.s.a.b.a.AndroidDeviceStatusListener  : Android设备:DBPDU20610018231 ONLINE!
2022-03-24 19:35:27.796 - INFO 23902 --- [http-nio-7777-exec-4] o.c.s.agent.websockets.TerminalWSServer  : 等待安装超时!
2022-03-24 19:35:28.030 - INFO 23902 --- [http-nio-7777-exec-5] o.c.s.a.w.AndroidScreenWSServer          : 等待安装超时!
2022-03-24 19:35:38.014 - INFO 23902 --- [http-nio-7777-exec-8] o.c.s.agent.websockets.TerminalWSServer  : 20退出
2022-03-24 19:35:38.014 - INFO 23902 --- [http-nio-7777-exec-2] o.c.s.agent.websockets.AndroidWSServer   : 关闭driver异常!
2022-03-24 19:35:38.088 - INFO 23902 --- [http-nio-7777-exec-2] o.c.s.agent.websockets.AndroidWSServer   : 1e退出
2022-03-24 19:35:38.088 - INFO 23902 --- [http-nio-7777-exec-2] o.c.s.agent.websockets.AndroidWSServer   : android解锁udId:DBPDU20610018231

五、sonic更新到v1.3.2-release新部署方式(推荐使用!!!)

由于更新到v1.3.2-release后agent可以使用docker-compose部署啦,所以这里将完整的docker-compose.yml文件内容共享如下,已实战可用:

version: '3'
services:sonic-agent:#下方为Docker Hub镜像,推荐海外用户使用,默认使用国内加速镜像#image: "sonicorg/sonic-agent-linux:v1.3.2-release"image: "registry.cn-hangzhou.aliyuncs.com/sonic-cloud/sonic-agent-linux:v1.3.2-release"environment:# 替换为部署Agent机器的ipv4- AGENT_HOST=192.168.213.130# 替换为Agent服务的端口,可以自行更改- AGENT_PORT=7777# 替换为前端新增Agent生成的key- AGENT_KEY=2fd04815-ea9f-47c0-a2b4-cdd79896e542# 这个host改成后端的host- SERVER_HOST=192.168.213.130# 这个port改成后端文件中心的port(一般不变)- SERVER_FOLDER_PORT=8094# 这个port改成后端传输中心的port(一般不变)- SERVER_TRANSPORT_PORT=8095# 是否使用安卓模块- ANDROID_ENABLE=true# 是否开启远程adb调试功能- USE_ADBKIT=true# 是否使用iOS模块- IOS_ENABLE=true# 替换为你自己使用的wda的bundleId,如果没有.xctrunner后缀会自动补全,建议使用公司的开发者证书- WDA_BUNDLE_ID=com.facebook.WebDriverAgentRunner.xctrunner# 是否启用Appium- APPIUM_ENABLE=true# 默认为0会自动寻找随机端口启动,如果需要指定appium server端口,请在这里设置- APPIUM_PORT=0# 是否启用webview调试功能- WEBVIEW_ENABLE=true# 谷歌调试端口,一般不需要修改(默认0使用随机端口,如果需要开启防火墙给外部使用,请设置固定端口如7778)- CHROME_DRIVER_PORT=0network_mode: "host"privileged: truevolumes:- /dev/bus/usb:/dev/bus/usb- /var/run/usbmuxd:/var/run/usbmuxdsonic-mysql:image: "mysql:5.7"hostname: sonic-mysqlcommand: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_cienvironment:- MYSQL_ROOT_PASSWORD=Sonic!@#123- MYSQL_DATABASE=sonicvolumes:- ./mysql/data:/var/lib/mysqlports:- "3307:3306"networks:- sonic-networksonic-server-simple:image: "sonicorg/sonic-server-simple:v1.3.2-release"container_name: sonic-server-simpleenvironment:- MYSQL_HOST=sonic-mysql #这里的HOST要改成sonic-mysql哦- MYSQL_PORT=3306- MYSQL_DATABASE=sonic- MYSQL_USERNAME=root- MYSQL_PASSWORD=Sonic!@#123#在服务器部署的话,localhost改为服务器ip,port更改为sonic-server-simple暴露的port(一般不变)- SONIC_API_HOST=localhost- SONIC_API_PORT=8094- SONIC_NETTY_PORT=8095#token加密的key值- SECRET_KEY=sonic#身份验证token有效天数- EXPIRE_DAY=14#前端页面访问地址,不填默认为http://localhost:3000- CLIENT_HOST=http://localhost:3000#文件保留天数(指测试过程产生的文件,包括图片、录像等等)- FILE_KEEP_DAY=60#测试结果保留天数- RESULT_KEEP_DAY=60#以下均为Cron表达式#清理文件定时任务- FILE_CRON=0 0 12 * * ?#清理测试结果定时任务- RESULT_CRON=0 0 12 * * ?#发送日报定时任务- DAY_CRON=0 0 10 * * ?#发送周报定时任务- WEEK_CRON=0 0 10 ? * Monnetworks:- sonic-networkvolumes:- files:/keepFiles/- files:/imageFiles/- files:/recordFiles/- files:/packageFiles/- files:/logs/ports:- "8094:8094"- "8095:8095"sonic-client-web:image: "sonicorg/sonic-client-web:v1.3.2-release"environment:#192.168.1.1改为你的ipv4,port更改为sonic-server-simple暴露的port(一般不变)- SONIC_API_HOST=192.168.213.130- SONIC_API_PORT=8094networks:- sonic-networkports:- "3000:80"volumes:files:networks:sonic-network:driver: bridge

然后直接把之前部署容器的杀掉再重启即可

docker-compose down
docker-compose up -d

六、备注

官方推荐部署网址:sonic官方部署
《基于 Docker 方式部署 sonic 前后端(体验版)》:docker部署云真机前后端
《Sonic测试平台搭建–设备接入》:sonic设备接入
《ubuntu 设置环境变量》:ubuntu设置环境变量
《Ubuntu 16.04 安装 64 位谷歌 Chrome 浏览器》:ubuntu安装chrome
《Ubuntu 查看 java 安装路径》:ubuntu查看java安装路径

http://www.lbrq.cn/news/1541323.html

相关文章:

  • 上海发布官方网/深圳谷歌seo推广
  • 手机wap网站开发教程/专业网站优化公司
  • 重庆美邦建网站/天津seo推广服务
  • 单产品网站建设/上海网站建设关键词排名
  • 河北保定网站建设/网站统计器
  • 杭州网站推广方式/网店代运营一年的费用是多少
  • 网站开发开源的手册/网络营销策划方案ppt
  • 高端网咖/福建网络seo关键词优化教程
  • 域名网站开发有意义吗/培训课程
  • 行业网站建设内容/做网站用什么编程软件
  • 模仿网站怎么做/足球世界排名国家
  • 旅游景区网站建设/网络营销的主要工作有哪些
  • 学做网站学什么语言/百度浏览器手机版
  • 网站图片自动切换怎么做/合肥网站关键词优化公司
  • hao1123网址之家/seo网络优化师
  • 手机网站视频播放模板/郑州网络推广厂家
  • 肥城网站制作/被公司优化掉是什么意思
  • 叫别人做网站需要注意什么问题/宁波免费seo排名优化
  • 腾讯云域名如何建设网站/中国制造网
  • 秋林 做网站/关键词优化流程
  • 手机做网站/域名查询官网
  • 银联支付网站建设/seo网络优化前景怎么样
  • 济南品牌网站建设定制/上海百度首页优化
  • 现在流行用什么做网站/seo刷关键词排名优化
  • 公司怎么注册网站免费/seo商城
  • 扬州市规划建设局网站/淘宝seo是什么意思
  • 深圳公司设计网站/客服外包平台
  • 网络公司做网站后交代给客户什么/品牌策划公司
  • 生鲜网站制作/成都百度推广公司电话
  • 辽宁响应式网站费用/seo挖关键词
  • 卸载win10/win11系统里导致磁盘故障的补丁
  • Oracle:配置让插入语句时id自动输入
  • ​​pytest+yaml+allure接口自动化测试框架
  • python的社区互助养老系统
  • 音频算法工程师技能1
  • 锂电池SOH预测 | Matlab基于KPCA-PLO-Transformer-LSTM的的锂电池健康状态估计(锂电池SOH预测),附锂电池最新文章汇集