Python相关环境变量配置和模拟手机app登录
【java环境变量配置】
接着,打开系统->高级系统设置->环境变量。新建一个JAVA_HOME
C:\Program Files\Java\jdk1.8.0_201(这里是你的安装路径,最好复制粘贴)
然后在Path下添加
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
然后打开cmd,输入javac,若出现以下信息,则证明你成功了一半。
输入java,若出现以下信息,则证明java环境变量配置成功了。
接下来我们开始测试。在F盘新建一个java文件。我的是debug.java。
然后,切换到F盘。分别执行
-
javac debug.java
-
java debug
然后成功输出10.java环境检验成功。
【appium配置】
一、Appium安装:
1)安装Python
2)安装java(运行appium server需要)
3) 安装appium-client: pip install Appium-Python-Client
4) 安装appium –desktop:
官网下载appium-desktop地址为:Release v1.15.1 · appium/appium-desktop · GitHub
安装成功后桌面会有一个紫色的图标,打开Appium,配置默认点击“start server”启动appium-desktop。
5) 安装Andorid SDK:
下载地址:https://www.androiddevtools.cn/,网页下拉到底部的SDK Tools位置处,选择对应系统版本即可。
下载完成后解压,cmd窗口进入tools\bin目录,输入命令行执行安装组件:sdkmanager "platfrom-tools" "platforms;android-28" "build-tools;28.0.3"
安装过程中,会弹出提示框Accept?(y/N) 一直yes即可。
二、Andorid SDK设置环境变量:
1)去电脑系统属性--环境变量--系统变量里 创建ANDROID_HOME 值设置为SDK根目录的路径;
2)将sdk\plafrom-tools\加入到环境变量path中;
3)验证是否设置成功:运行cmd打开命令提示窗,输入where adb 能够显示出其所在路径即OK;
4)查看Android_home的环境变量是否正确,可以在tools/bin目录下输入echo %android_home% 能够显示出android sdk安装路径即OK;
遇到问题
- 将Android studio与夜神模拟器连接,在夜神模拟器的bin路径下,
adb devices
,此时遇到当前夜神模拟器的adb版本与android 的SDK版本不一致的错误,
解决办法
- 把AndroidSDK\platform-tools下的adb.exe赋值到桌面上,重命名为nox_adb.exe
- 把夜神模拟器下的nox_adb.exe修改为nox_adb_old.exe
- 把桌面上的nox_adb.exe拷贝到夜神模拟器下bin路径下
- 重启夜神模拟器
【问题】
在Android 真机上无法运行Appium inspector?Failed to create session
Appium连接真机启动步骤 (Appium版本为1.22.2)
1、 打开Appium desktop,找到已安装的Appium,名字为Appium Server GUI
打开后启动服务器
by the way:修改Appium菜单显示为中文的位置在这儿
View -》Languages -》zh-CN
2、 手机通过USB连接电脑,并开启开发者调试模式
3、 命令行下输入:adb devices 检查手机连接是否成功
出现有设备信息即代表连接成功,如下:
4、 打开Appium Inspector并配置常规参数,如下:
1、 远程路径:/wd/hub
2、 配置的参数为:
{
"platformName": "Android", //平台
"appium:platformVersion": "12", //android系统版本
"appium:deviceName": "测试机", //设备名称随便写
"appium:automationName": "UiAutomator2" //使用的自动化工具
}
这样按照网上的教程已配置好了,点击“启动会话”
啊噢。。。。。报错了
错误信息:
Failed to create session. An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command 'D:\\androidSDK\\platform-tools\\adb.exe -P 5037 -s f30a1e7b shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Command output: Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2663) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1635) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1627) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1598) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:664) at android.content.ContentProvider.call(ContentProvider.java:2473) at android.content.ContentProvider$Transport.call(ContentProvider.java:521) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:408) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:282) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:50) at
问题解决方法:
第一步:
配置参数中添加参数 "appium:ignoreHiddenApiPolicyError": true
点击“启动会话”,此时手机上会自动安装“Appium Settings”,需要手动去点击同意完成安装
此时我仍遇到了报错,经过查找一番,还漏掉了最重要的一步
第二步:
手机“设置”中搜索“禁止权限监控”,并打开它(设置->系统设置->开发者选项->禁止权限监控)
打开后再次点击“启动会话”,手机上的画面显示到了Appium inspector中即连接成功了
【模拟夜神浏览器】】
1、
测试
先打开夜神模拟器,然后cmd进入到安装路径的bin目录下,分别执行如下命令:adb.exe connect 127.0.0.1:62001
(用来链接模拟器,62001为夜神模拟器监听端口号,如果是其他模拟器,修改为其对应的监听端口号即可[常用Android模拟器的默认监听端口(转载)])adb devices
(用来显示已连接的设备)
如果显示如下,则配置成功:
直接使用Appium操控模拟器
前提
使用Appium时,需要用到两个参数: appPackge
与appActivity
。appPackage
是启动APP Package名称,也就是需要操控的App名称。 appActivity
是启动Activity名称,也就是启动App后的第一个界面。
以下是获取这两个值的方法: (以操控bilibli为例):
打开模拟器,然后打开bilibili,保持当前的运行界面(bilibili在最前面):
然后cmd输出命令:adb shell dumpsys activity recents | find "intent={"
输出如下:
C:\Users\xupeng>adb shell dumpsys activity recents | find "intent={"intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=tv.danmaku.bili/.ui.splash.SplashActivity}intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.vphone.launcher/.launcher3.Launcher}intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.android.settings/.FallbackHome}C:\Users\xupeng>
输出信息第一条就是屏幕最前面App(也就是bilibili)的信息,需要的是其中字段cmp
的值:tv.danmaku.bili/.ui.splash.SplashActivity
,/前的tv.danmaku.bili
就是appPackge
的值,/后的.ui.splash.SplashActivity
就是appActivity
的值。
步骤
1 打开Appium
运行Appium,界面如下:
点击Edit Configurations,配置JAVA_HOME
与ANDROID_HOME
。
由于在安装JDK
和Android Studio
时已经设置了JAVA_HOME
E和ANDROID_HOME
,它就直接能够取到相应的值。
2 点击Start Server按钮,启动监听
无需修改Host与Port,,点击Start Server,进入如下界面:
最后一行输出表示Appium启动成功并在端口4273进行监听。
3 点击Start Inspector Session按钮,配置相关信息
点击右上角最左边的Start Inspector Session,进入如下界面,然后在Automatic Server页面下输入相关参数:
其中,platformName
为Android(因为是Android模拟器),platformVersion
为7.1.2(在模拟器的设置中的关于平板电脑中可以看到Android版本),deviceName
为127.0.0.1:62001是模拟器的Ip地址+端口(前面已经介绍)。
4 点击Start Session按钮,操控模拟器
最后,点击Start Session按钮,Appium就开始操控模拟器打开bilibili,过程中会在模拟器中安装名为Appium Settings的App,当然这只会在不存在Appium Settings才会安装,接着就是等待过程,最后的呈现效果如下:
同时模拟器中也就呈现出相同的界面:
2、
这没什么好说的。只需注意安装路径,一路下一步即可。
安装后,进行以下简单修改:
-
打开安装目录,进入bin目录(例如:D:\Nox\bin)
-
在第3节安装的Android SDK中添加ADB的exe文件(例如我在D:\Android\SDK\platform tools目录下)复制到这个目录下,覆盖已有的ADB的exe文件
-
删除目录_adb.exe文件的NOx,然后复制一份ADB Exe并重命名为nox_adb.exe
-
启动模拟器
-
从这个目录打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices。看到以下信息表示成功
在模拟器中安装测试 apk 文件。这里以计算器为例,直接将apk文件拖入模拟器
! zoz100077](https://programming.vip/images/doc/2673e577cdd3d75dfb5d4f986b75b95a.jpg)
继续进入AAPT dump bake D:\apk\com。在刚才的控制台窗口中有道。计算器-2.0.0。 APK
其中D:\apk\com 有道。计算器-2.0.0。 Apk 是测试 APK 的完整路径。
可以看到安装包的信息已经打印出来了。把两个名字记在红框里,以后写测试脚本的时候用。
注意如果模拟器重启,需要在步骤5_adb中执行NOx。 exe连接127.0.0.1:62001 七。编写测试脚本并生成测试报告
1\。创建测试用例目录testcase,并在该目录下创建测试_app。 py文件
进口时间
导入单元测试
从 appium 导入 webdriver
类 MyTests(unittest.TestCase):
测试前要执行的方法
定义设置(自我):
所需_caps u003d {'platformName': 'Android', # 平台名称
'platformVersion': '4.4.2', #系统版本号
'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在“设置->关于手机->设备名称”中查看
'appPackage': 'com.youdao.calculator', # apk的包名
'appActivity': 'com.youdao.calculator.activities.MainActivity' # 活动名称
}
self.driver u003d webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接 Appium
self.driver.implicitly_wait(8)
def test_calculator(self, tu003d500, nu003d4):
"""计算器测试"""
时间.sleep(3)
窗口 u003d self.driver.get_window_size()
x0 u003d window['width'] * 0.8 # 起始x坐标
x1 u003d window['width'] * 0.2 #结束x坐标
y u003d window['height'] * 0.5 # y坐标
对于范围内的 i (n):
self.driver.swipe(x0, y, x1, y, t)
时间.sleep(1)
self.driver.find\element\by\id('com.youdao.calculator:id/guide\button').click()
对于范围内的 i (6):
self.driver.find_element_by_accessibility_id('Mathbot Editor').click()
时间.sleep(1)
btn_xpath u003d '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4 .widget.DrawerLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[3] /android.view.View/android.widget.GridView/android.widget.FrameLayout[{0}]/android.widget.FrameLayout'
self.driver.find_element_by_xpath(btn_xpath.format(7)).click()
self.driver.find_element_by_xpath(btn_xpath.format(10)).click()
self.driver.find_element_by_xpath(btn_xpath.format(8)).click()
时间.sleep(3)
测试后执行的方法
def 拆解(自我):
self.driver.quit()
2\。创建运行 Py 文件
导入我们
进口时间
导入单元测试
从 HTMLTestRunner 导入 HTMLTestRunner
测试_dir u003d './testcase'
发现 u003d unittest.defaultTestLoader.discover(start_diru003d'./testcase', patternu003d"test*.py")
如果 __name__ u003du003d "__main__":
报告_dir u003d './test_report'
os.makedirs(report_dir, 存在_oku003dTrue)
现在 u003d time.strftime("%Y-%m-%d %H-%M-%S")
报告_name u003d '{0}/{1}.html'.format(报告_dir,现在)
使用 open(report_name, 'wb') as f:
runner u003d HTMLTestRunner(streamu003df, titleu003d"测试报告", descriptionu003d"此测试报告包含超级计算机的简单测试")
runner.run(发现)
HTMLTestRunner是用来导出测试报告的,但是Python 3好像有问题,我在网上找了两个修改的支持Python 3的,
如有需要,您可以在本文末尾的示例项目中下载。
3\。运行 py 文件
程序运行后会在test_report目录下生成测试报告
在浏览器中打开就可以看到报表的内容,一个例子
而已。这一切都完成了。如果有空,可以添加Appium的使用,比如元素定位。希望这篇文章能够对自动化测试的初学者有所帮助。
项目示例下载地址 https://github.com/lixk/apptest
艾玛,我太啰嗦了。现在已经八点了,我还没有吃晚饭。我太饿了。今天我先到这里。
2019 年 5 月 21 日补充
如果配置与上述步骤一致,则没有问题。结果,它无法正常运行。那么问题可能出在模拟器配置中。下面添加了我这边的模拟器配置。
! swz 100101 swz 100102 swz 100100
代码中的'platform version':'4.4.2'是上图中的Android版本。
5【】.调试】
打开夜神模拟器,cmd输入:adb devices,显示夜夜神模拟器的端口号信息。
C:\Users\Administrator>adb devices
List of devices attached
127.0.0.1:62001 device
夜深模拟器中打开浏览器,cmd输入:adb shell。进入adb shell后输入:dumpsys activity | grep mFocusedActivity
C:\Users\Administrator>adb shell
x1q:/ # dumpsys activity | grep mFocusedActivity
mFocusedActivity: ActivityRecord{ab87ba5 u0 com.android.browser/.BrowserActivity t7}
x1q:/ #
APP包名: com.android.browser
APP进程名:.BrowserActivity
打开Appium Server GUI,点击startServer后点击放大镜,下载元素查看器。下载地址:https://github.com/appium/appium-inspector/releases
安装成功后,appium inspector的Remote Host和appnium server 的Host设置为:127.0.0.1,Remote Path:/wd/hub,设置Desired Capabilities,如下图。点击startSession后连接并自动操作夜深模拟器。至此,调试成功。
注意:安卓模拟器在网络桥接模式下无法使用appium连接。
{
"appium:platformName": "Android", #平台名称
"appium:platformVersion": "7.1.2", #版本信息
"appium:deviceName": "SM-G9810", #设备型号
"appium:appPackage": "com.android.browser", #App包名
"appium:appActivity": ".BrowserActivity" #App进程名
}
【错误总结】
1、cmd中adb devives报错,退出各个可能占用的软件,并调试
2、报错不能verify,更新jdk版本,或者下载jar包
【记录】
aapt dump badging C:\Users\Administrator\Desktop\wycjjsq.apk
com.youdao.calculator
com.youdao.calculator.activities.MainActivity
adb shell dumpsys activity recents | find "intent={"
C:\Users\xupeng>adb shell dumpsys activity recents | find "intent={"intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000
cmp=tv.danmaku.bili/.ui.splash.SplashActivity}intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100
cmp=com.vphone.launcher/.launcher3.Launcher}intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.android.settings/.FallbackHome}C:
\Users\xupeng>
{
"platformName": "Android",
"appium:platformVersion": "9",
"appium:deviceName": "HJSGK19C18000009",
"ignoreHiddenApiPolicyError": true
}
【夜游神】模拟器连接
{
"platformName": "Android",
"appium:platformVersion": "7",
"appium:deviceName": "127.0.0.1:62001",
"appium:ignoreHiddenApiPolicyError": true
}
模拟登录手机app界面
{"platformName": "Android","appium:deviceName": "HWEVA","appium:appPackage": "com.tencent.mm","appium:appActivity": ".ui.LauncherUI" }
获取安装包和activity
aapt dump badging C:\Users\Administrator\Desktop\360浏览器.apkcom.qihoo.browser.launcher.LauncherActivity com.qihoo.browsernetstat -aon|findstr "5037"
③在电脑上 dos命令窗口,输入命令
adb shell dumpsys window w | findstr \/ | findstr name=
或 adb shell dumpsys window |findstr mCurrent
或 adb shell "dumpsys window w|grep \/|grep name=|sed 's/mSurface=Surface(name=//g'|sed 's/)//g'|sed 's/ //g'"
各命令执行后截图如下:(红色选框中分别为包名和activity)
【配置fiddler报错】
cmd中运行
makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/11/2099
设置代理后无法上网【】
一、手机代理要设置正确
手机连接电脑开出的WiFi
长按手机的WiFi按钮,选择刚刚连接的WiFi,然后进行代理设置(不同型号的手机找到设置界面的方法稍有不同,请进行对应的搜索)
电脑打开cmd,输入ipconfig,找到对应的(无线局域网)ipv4,这就是要输入的代理主机名。以下是我电脑上的截图
输入端口号,默认8888;如果改了,填入改了后的端口号
二、修改注册表
打开注册表(cmd输入regedit等方法都行),找到计算机\HKEY_CURRENT_USER\Software\Microsoft\Fiddler2这一项
右键新建QWORD,输入80
结果如图所示
三、修改Fiddler Rules
打开Fidder Classic,按下Ctrl R组合键,出现如下Fiddler ScriptEditor
2. 按下Ctrl F组合键,输入OnBeforeRequest,按下enter后,输入
if (oSession.host.toLowerCase() == "webserver:8888")
{
oSession.host = "webserver:80";
}
1
2
3
4
按下Ctrl S组合键保存
结果如图所示
四、重新启动Fiddler
完成以上三步后,重启fiddler,重新抓包。
————————————————
版权声明:本文为CSDN博主「MrX_OvO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MrRookieX/article/details/126768829
【设置手机代理】
一、概述
简介
Fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 。它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。
看到这么多的应用,是不是就迫不及待的想要开始你的抓包之旅呢,不要急,俗话说的好:工欲善其事,必先利其器,我们先来安装Fiddler吧。
下载
打开官网,官网下载地址是Download Fiddler Web Debugging Tool for Free by Telerik
打开以后选择你的相关信息如下图:
说明:
第一个选择:Mobile application development/debugging,表示移动应用开发/调试
第二个,输入你的邮箱
第三个,选择China
最后点击Download for Window,就会下载一个exe程序。
安装过程就不多了,直接一路下一步即可。
二、配置
打开软件后,效果如下:
安装证书
由于默认无法解析https请求,因此需要安装证书才行。
在工具栏找到Tools,然后依次选择Options、HTTPS ,然后勾选Decrypt HTTPS traffic选项,勾选后安装证书。
点击yes
选择是
点击是
提示安装完成
连接信息
配置连接信息:Tools > Options >Connections
- 端口默认是8888,你可以进行修改。
- 勾选Allow remote computers to connect选项,然后重启Fiddler,再次打开时会弹出一个信息,选择ok即可。
三、浏览器测试
打开ie浏览器,点击internet选项-->连接-->局域网设置
设置代理,端口为8888
设置好之后,打开百度首页,就可以看到很多信息了。
四、手机测试
但是如果你想要对手机上的app进行抓包怎么办呢,那么你还需要进行以下操作:
首先你的Fiddler所在的电脑和手机必须处在同一个局域网内(即连着同一个路由器)。
查看你的本机IP地址,在Fiddler的右上角有一个Online按钮,点击一下会显示你的IP信息
因为我本机有很多网卡,其中:192.168.31.145,就是无线网卡ip。
打开你的手机,找到你所连接的WIFI,长按选择修改网络,输入密码后往下拖动,然后勾选显示高级选项,然后在代理一栏选择手动,再将你先前查看的IP地址和端口号输入进去,然后保存。
最后安装手机证书,在手机浏览器一栏输入电脑的IP地址和端口号
这里我是192.168.31.145:8888
下载完成后,安装证书
安装完成后,打开今日头条,就可以看到很多数据了。
注意:对于抖音,如果wifi设置了Fiddler代理,打开抖音时,提示网络不可连接。当你wifi设置关闭代理后,再次打开抖音,就可以了。
相关文章:

Python相关环境变量配置和模拟手机app登录
【java环境变量配置】 接着,打开系统->高级系统设置->环境变量。新建一个JAVA_HOME C:\Program Files\Java\jdk1.8.0_201(这里是你的安装路径,最好复制粘贴) 然后在Path下添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然后…...

c++ 11标准模板(STL) std::map(九)
定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…...
深入探索chatGPT插件:SceneXplain,Wolfram,和AppyPieAIAppBuilder
1. 引言 在这个日益依赖技术的世界中,AI插件已经成为了我们日常生活和工作的重要组成部分。在这篇博客中,我们将深入探索三个强大的AI插件:SceneXplain,Wolfram,和AppyPieAIAppBuilder,了解他们的功能&…...

华为OD机试真题B卷 Java 实现【停车场车辆统计】,附详细解题思路
一、题目描述 特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。 车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位&a…...

第二章:MySQL环境搭建
第二章:MySQL环境搭建 2.1:MySQL的下载、安装、配置 MySQL的四大版本 MySQL Community Server社区版本:开源免费、自由下载,但不提供官方技术支持,适用于大多数普通用户。MySQL Enterprise Edition企业版本࿱…...
生产环境之负载均衡LVS+keepalived方案(2)_LVS介绍
LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,linux内核2.6.X之后的版本默认已集成了LVS模块(内核模块名为:ipvs),实现了基于传输层的请求负载均衡调度方案,LVS支持的工作模…...
【parsel】------- PYTHON爬虫基础4
parsel 这个库可以对 HTML 和 XML 进行解析,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。 内容目录 from parsel import Selector提取节点提取 class 包含 item-0 的节点 提取文本获取提取到的所有 li…...

MySQL数据库从入门到精通学习第8天(表数据的查询)
表数据的查询 基本查询语句单表查询聚合函数查询多表连接查询子查询合并查询结果定义表和字段的别名使用正则表达式查询 基本查询语句 SELECT 语句非常的强大,是最常用的查询语句。他具有一个固定的格式,如下: SELECT 查询的内容 FROM 数据…...

什么是IPAM?如何使用IPAM来管理IP地址和DHCP?
在计算机网络中,IPAM(IP Address Management)是一种用于管理IP地址和DHCP(Dynamic Host Configuration Protocol)的工具或系统。IPAM旨在简化和集中管理IP地址分配、子网划分和DHCP配置等任务。本文将详细介绍IPAM的概…...

PCIE学习
目录 一、PCIE结构1、层次结构2、数据包TLPDLLP PCIE寄存器配置1、基址寄存器的作用2、基址寄存器的位置 三、PCIE读取数据 一、PCIE结构 1、层次结构 绝大多数的总线或者接口,都是采用分层实现的。PCIe也不例外,它的层次结构如下: PCIe定…...

商业智力,Social焕新|数说故事重磅发布“SocialGPT”,国内首个专注Social领域的商业大模型
AGI时代的到来,市场风云变幻,世界正在经历着一场技术革命的颠覆性洗礼。 2023年6月6日6时,数说故事正式对外发布数说故事“SocialGPT”,国内首个专注Social领域的商业大模型。数说故事“SocialGPT”大家昵称它为“社牛”大模型&a…...

STM32HAL库RS485-ModBus协议控制伺服电机
STM32HAL库RS485-ModBus协议控制伺服电机 一个月前,接手了一个学长的毕设小车,小车采用rs485通信的modbus协议驱动轮毂电机,与往常我学习的pwm控制电机方法大相径庭,在这里以这篇博客记录下该学习过程。 小车主要架构 电机型号 …...

【医学图像】图像分割系列.3 (uncertainty)
介绍几篇使用不确定性引导的医学图像分割论文:UA-MT(MICCAI2019),SSL4MIS(MICCAI2021),UG-MCL(AIIM2022). Uncertainty-aware Self-ensembling Model for Semi-supervise…...
Java有线程安全的set吗?
在Java中,有线程安全的Set实现。一个常用的线程安全的Set实现是ConcurrentSkipListSet。ConcurrentSkipListSet是一个有序的集合,基于跳表(SkipList)的数据结构实现。它提供了线程安全的操作,并且具有较好的性能。 接下来笔者用一段简单的Jav…...

《HelloGitHub》第 86 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …...

LDGRB-01 3BSE013177R1 将数字输入和继电器输出结合
LDGRB-01 3BSE013177R1包的一部分是全面的通信选项,包括Modbus主/从或CS31,这种产品很少提供。128kB的用户内存和0.1秒/指令的程序处理时间只是AC500-eCo令人印象深刻的性能的两个例子。除了与现有AC500系列的互操作性,AC500-eCo系统还使用基…...

手动计算校正年龄、性别后的标准化死亡率 (SMR)
分析队列人群有无死亡人数超额,通常应用标准人群死亡率来校正,即刻观察到中的实际死亡数(D)与定一个标准的死亡人数(E),D与E之比称为死亡比(standarized Mortality ratio,…...

Java组合模式:构建多层次公司组织架构
在现实生活中,常常会遇到用树形结构组织的一些场景,比如国家省市,学校班级,文件目录,分级导航菜单,以及典型的公司组织架构,整个层次结构自顶向下呈现一颗倒置的树。这种树形结构在面向对象的世…...

Langchain-ChatGLM:基于本地知识库问答
文章目录 ChatGLM与Langchain简介ChatGLM-6B简介ChatGLM-6B是什么ChatGLM-6B具备的能力ChatGLM-6B具备的应用 Langchain简介Langchain是什么Langchain的核心模块Langchain的应用场景 ChatGLM与Langchain项目介绍知识库问答实现步骤ChatGLM与Langchain项目特点 项目主体结构项目…...
设计模式十 适配器模式
适配器模式 适配器模式是一种结构型设计模式。作用:当接口无法和类匹配到一起工作时,通过适配器将接口变换成可以和类匹配到一起的接口。(注:适配器模式主要解决接口兼容性问题) 适配器的优点与缺点: 优…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...