Android系统调试工具大全:解密adb、dumpsys、procrank等神器

Android系统调试工具大全:解密adb、dumpsys、procrank等神器

引言

Android开发中,调试是一个非常重要的环节,本文将介绍一些常用的Android系统调试工具,包括adb、logcat、procrank、dumpsys、dmesg、top、free、df、trace、pm、am等,帮助开发者更好地排查和解决问题。

题目:Android系统调试工具大全:解密adb、logcat、procrank等神器

adb

在Android开发中,调试是一个非常重要的环节。Android Debug Bridge(ADB)是一款强大的命令行工具,提供了与Android设备进行通信和调试的功能。本文将介绍adb的基本使用方法,包括连接设备、安装应用、卸载应用、文件传输等,帮助开发者更好地排查和解决问题。

连接设备

首先,确保你的Android设备已连接到开发机上,并且已启用USB调试模式。然后,打开终端或命令提示符窗口,输入以下命令以检查设备是否被正确识别:

adb devices

如果设备列表中显示了连接的设备ID,则表示连接成功。

安装应用

使用adb可以轻松地安装应用程序到Android设备上。在终端或命令提示符窗口中,导航到应用程序安装文件所在的目录,并执行以下命令:

adb install your_app.apk

其中,your_app.apk是你要安装的应用程序文件名。安装过程中,你可以在设备上看到应用程序的安装进度。

卸载应用

如果你想从设备上移除某个应用程序,可以使用以下命令:

adb uninstall com.example.app

其中,com.example.app是应用程序的包名。卸载过程中,你可以在终端或命令提示符窗口中看到卸载的结果信息。

文件传输

使用adb可以方便地在Android设备和开发机之间传输文件。以下是一些常用的文件传输命令:

  • 将文件从开发机复制到设备:
adb push local_file_path /device/path

其中,local_file_path是本地文件的路径,/device/path是设备存储的目标路径。

  • 将文件从设备复制到开发机:
adb pull /device/path local_file_path

其中,/device/path是设备上文件的路径,local_file_path是要保存文件的本地路径。

注意:在执行文件传输命令之前,确保设备已连接并处于可用状态。

logcat

logcat是Android平台上的一项日志记录工具,可以通过它来查看Android系统和应用程序的日志信息。本文将详细介绍logcat命令及参数的含义,以及如何使用它来查看日志信息,帮助开发者更好地排查和解决问题。

logcat命令及参数

logcat是Android平台上的一款命令行工具,主要用于查看系统和应用程序的日志信息。以下是一些常用的logcat命令及参数:

  • 查看所有日志信息:
adb logcat

此命令可以查看所有级别的日志信息,包括调试、信息、警告、错误等。

  • 查看特定标签的日志信息:
adb logcat -s TAG

其中,TAG是日志信息的标签名称。此命令可以筛选出指定标签的所有日志信息。

  • 显示调试级别的日志信息:
adb logcat -v debug

此命令可以查看调试级别的日志信息,包括VERBOSE、DEBUG、INFO、WARN、ERROR等级别的信息。

  • 保存日志信息到文件:
adb logcat -f logfile.txt

此命令可以将日志信息保存到指定的文件中。

  • 清除日志缓存:
adb logcat -c

此命令可以清除日志缓存,以便查看最新的日志信息。

  • 过滤指定级别的日志信息:
adb logcat *:D

此命令可以筛选出调试级别(DEBUG)及以上级别的日志信息。你可以根据需要将级别替换为V(VERBOSE)、I(INFO)、W(WARN)或E(ERROR)。

  • 使用正则表达式过滤日志信息:
adb logcat -v brief | grep "keyword"

此命令可以使用grep命令结合正则表达式来过滤日志信息。将"keyword"替换为你想要搜索的关键词。这样可以帮助你快速找到包含特定关键词的日志。

  • 查看特定进程的日志信息:
adb logcat --pid=PID

其中,PID是进程ID。此命令可以查看特定进程生成的日志信息。

  • 查看特定线程的日志信息:
adb logcat --pid=PID --tid=TID

其中,TID是线程ID。此命令可以查看特定线程生成的日志信息。

  • 格式化输出日志信息:
adb logcat -v json

此命令可以以JSON格式输出日志信息,便于后续处理和分析。

如何使用logcat查看日志信息

要使用logcat查看日志信息,首先需要将设备连接到开发机,并打开终端或命令提示符窗口。然后,在命令行中输入相应的logcat命令及参数即可。

以下是一个简单的例子,演示如何使用logcat查看Android系统和应用程序的日志信息:

adb logcat -v time

此命令可以查看所有级别的日志信息,并按照时间顺序显示。

在日志信息中,每一行都包含了日期、时间、标签、进程ID和消息等信息。通过这些信息,我们可以了解Android系统和应用程序的运行状态,从而更好地进行调试和分析工作。

procrank

procrank是一个用于查看系统内存使用情况的命令行工具,运行在设备侧的 shell 环境下,用来输出进程的内存快照,便于有效的观察进程的内存占用情况。
包括如下内存信息:

  • VSS:Virtual Set Size 虚拟耗用内存大小(包含共享库占用的内存)
  • RSS:Resident Set Size 实际使用物理内存大小(包含共享库占用的内存)
  • PSS:Proportional Set Size 实际使用的物理内存大小(比例分配共享库占用的内存)
  • USS:Unique Set Size 进程独自占用的物理内存大小(不包含共享库占用的内存)
    注意:
  • USS 大小代表只属于本进程正在使用的内存大小,进程被杀死后会被完整回收;
  • VSS/RSS 包含了共享库使用的内存,对查看单一进程内存状态没有参考价值;
  • PSS 是按照比例将共享内存分割后,某单一进程对共享内存区的占用情况。

使用procrank

执行procrank前需要先让终端获取到root权限
su
命令格式:

procrank [ -W ] [ -v | -r | -p | -u | -h ]

常用指令说明:
-v:按照 VSS 排序
-r:按照 RSS 排序
-p:按照 PSS 排序
-u:按照 USS 排序
-R:转换为递增[递减]方式排序
-w:只显示 working set 的统计计数
-W:重置 working set 的统计计数
-h:帮助

按照 VSS 降序排列输出内存快照:

procrank –v

默认procrank输出是通过PSS排序。

procrank命令及参数

procrank命令主要用于显示系统中各个进程的内存使用情况,包括内存占用量、进程名等信息。以下是一些常用的procrank命令及参数:

  • 查看系统内存使用情况:
procrank

此命令可以列出系统中各个进程的内存使用情况,包括进程名、PID、Vss、Rss、Pss等信息。

  • 以H级别的信息显示系统内存使用情况:
procrank -h

通过加上-h参数,可以显示更详细的内存使用信息,包括进程的地址空间(Vss)、RAM使用(Rss)、共享内存使用(Pss)等信息。

  • 按照内存使用量排序显示:
procrank -o

加上-o参数可以按照内存使用量从高到低进行排序显示,帮助用户快速找出内存占用较大的进程。

  • 检索指定内容信息
    查看指定进程的内存占用状态,命令格式如下:

procrank | grep [cmdline | PID]

其中 cmdline 表示需要查找的应用程序名,PID 表示需要查找的应用进程。
输出 systemUI 进程的内存占用状态:

procrank | grep “com.android.systemui”或者:
procrank
| grep 3396
  • 跟踪进程内存状态
    通过跟踪内存的占用状态,进而分析进程中是否存在内存泄露场景。使用编写脚本的方式,连续输出进
    程的内存快照,通过对比 USS 段,可以了解到此进程是否有内存泄露。
    示例:输出进程名为 com.android.systemui 的应用内存占用状态,查看是否有泄露:
    1、编写脚本 test.sh
#!/bin/bash
while true;do
adb shell procrank | grep “com.android.systemui”
sleep 1
done

2、通过 adb 工具连接到设备后,运行此脚本: ./test.sh

如何使用procrank查看系统内存使用情况

要使用procrank查看系统的内存使用情况,首先需要将设备连接到开发机,并打开终端或命令提示符窗口。然后,在命令行中输入相应的procrank命令及参数即可。

以下是一个简单的例子,演示如何使用procrank查看系统的内存使用情况:

procrank -h

此命令可以显示更详细的内存使用信息,帮助开发者全面了解系统中各个进程的内存占用情况。

dumpsys

dumpsys是一个用于查看Android系统的各种信息的命令行工具,运行在设备侧的 shell 环境下,提供系统中正在运行的服务状态信息功能。正在运行的服务是指 Android binder机制中的服务端进程。dumpsys 输出打印的条件:
1、只能打印已经加载到 ServiceManager中的服务;
2、如果服务端代码中的 dump 函数没有被实现,则没有信息输出。

dumpsys命令及参数

dumpsys命令主要用于显示Android系统的各种信息,包括CPU、内存、网络、电池等。以下是一些常用的dumpsys命令及参数:

  • 查看系统的所有信息:
dumpsys

此命令可以列出系统的各种信息,包括CPU、内存、网络、电池等信息。

  • 查看Dumpsys包含服务列表
    作用:输出dumpsys所有可打印服务信息,开发者可以关注需要调试服务的名称。
dumpsys -l
  • 查看指定服务的信息:
dumpsys <service>

通过指定服务名,可以只查看特定服务的信息,例如:

dumpsys battery

此命令可以查看电池状态信息。

  • 输出指定服务和应有进程的信息
    作用:输出指定服务指定应用进程信息。
    格式:
dumpsys [servicename] [应用名]

示例:输出服务名为 meminfo,进程名为 com.android.systemui 的内存信息,执行命令:

dumpsys meminfo com.android.systemui

注意:服务名称是大小写敏感的,并且必须输入完整服务名称。

  • 将结果保存到文件中:
dumpsys > <file>

通过将结果重定向到文件中,可以将dumpsys输出的信息保存下来,例如:

dumpsys > dump.txt

此命令可以将dumpsys输出的信息保存到dump.txt文件中。

如何使用dumpsys查看Android系统的各种信息

要使用dumpsys查看Android系统的各种信息,首先需要将设备连接到开发机,并打开终端或命令提示符窗口。然后,在命令行中输入相应的dumpsys命令及参数即可。

以下是一个简单的例子,演示如何使用dumpsys查看电池状态:

dumpsys battery

此命令可以查看设备的电池状态信息,包括电池电量、充电状态等。

dmesg

dmesg是一个用于查看系统启动时的日志信息和内核消息的命令行工具,本节将详细介绍dmesg命令及参数的含义,以及如何使用它来查看系统启动时的日志信息和内核消息。

dmesg命令及参数

dmesg命令主要用于显示系统启动时的日志信息和内核消息,包括硬件检测、驱动加载、内存分配、系统调用等信息。以下是一些常用的dmesg命令及参数:

  • 查看系统启动时的日志信息和内核消息:
dmesg

此命令可以列出系统启动时的日志信息和内核消息,包括硬件检测、驱动加载、内存分配、系统调用等信息。

  • 仅查看最近的N行日志:
dmesg -n N

通过加上-n参数并指定N的值,可以仅查看最近的N行日志,例如:

dmesg -n 10

此命令可以仅查看最近的10行日志信息和内核消息。

  • 按照时间戳排序显示:
dmesg -T

加上-T参数可以按照时间戳从新到旧的顺序进行排序显示,帮助用户快速找出最近出现的问题。

除了上述介绍的基本用法之外,dmesg还有其他一些用法和参数,使其更灵活和强大。

  • 查看特定级别的日志信息:可以通过加上不同的参数来过滤特定级别的日志信息,例如只查看错误级别的日志:
dmesg -l err

或只查看警告级别的日志:

dmesg -l warn
  • 实时查看日志信息:通过结合使用dmesg命令和tail命令,可以实时查看最新的日志信息,例如:
dmesg -w | tail

此命令会持续输出最新的日志信息,方便进行实时监控。

  • 将结果保存到文件中:通过将结果重定向到文件中,可以将dmesg输出的日志信息保存下来,例如:
dmesg > dmesg.log

此命令可以将dmesg输出的日志信息保存到dmesg.log文件中。

  • 显示可读的时间戳:通过加上-H参数,可以显示易读的时间戳格式,例如:
dmesg -H

此命令会将时间戳转换为易读的格式,方便阅读和理解。

dmesg -c命令用于清除内核环缓冲区中的日志信息。当执行该命令时,它会将当前内核环缓冲区中的内容显示出来,并清空该缓冲区。

要使用dmesg -c命令,请按照以下步骤操作:

  1. 打开终端或命令提示符窗口。
  2. 输入以下命令并按Enter键执行:
dmesg -c
  1. 执行命令后,终端会显示当前内核环缓冲区中的日志信息,并将其清空。

请注意,执行dmesg -c命令会清除内核环缓冲区中的所有日志信息,因此在执行该命令之前请确保您已经记录或备份了需要保留的日志信息。

如何使用dmesg查看系统启动时的日志信息和内核消息

要使用dmesg查看系统启动时的日志信息和内核消息,首先需要打开终端或命令提示符窗口。然后,在命令行中输入相应的dmesg命令及参数即可。

以下是一个简单的例子,演示如何使用dmesg查看系统启动时的日志信息和内核消息:

dmesg

此命令可以列出系统启动时的日志信息和内核消息,帮助开发者了解系统启动过程中的各种信息。

top、free、df

在Android系统开发和运维中,了解系统的内存、CPU和磁盘使用情况是非常重要的。本文将介绍三个常用的Linux命令:top、free和df,在Android系统中的应用以及如何使用它们来查看系统的内存、CPU和磁盘使用情况。

top命令

top命令是一个动态监视系统资源使用情况的命令行工具,可以实时显示进程列表、CPU使用率、内存占用等信息。

在Android系统中,可以通过终端或ADB shell来使用top命令。以下是使用top命令查看系统资源使用情况的示例代码:

$ adb shell
$ top

执行上述代码后,将显示实时的进程列表、CPU使用率、内存占用等信息。

free命令

free命令用于查看系统内存的使用情况,包括总内存、已使用内存、空闲内存、缓存和缓冲区等信息。

在Android系统中,可以通过终端或ADB shell来使用free命令。以下是使用free命令查看系统内存使用情况的示例代码:

$ adb shell
$ free

执行上述代码后,将显示系统的内存使用情况,包括总内存、已使用内存、空闲内存、缓存和缓冲区等信息。

df命令

df命令用于查看文件系统的磁盘空间使用情况,包括总磁盘空间、已用空间、可用空间和挂载点等信息。

在Android系统中,可以通过终端或ADB shell来使用df命令。以下是使用df命令查看磁盘空间使用情况的示例代码:

$ adb shell
$ df

执行上述代码后,将显示文件系统的磁盘空间使用情况,包括总磁盘空间、已用空间、可用空间和挂载点等信息。

trace

1. trace命令概述

trace命令是Android系统中一个非常有用的工具,可以用来跟踪Android应用程序的运行情况,包括CPU使用情况、函数调用耗时、线程活动等信息。

2. trace命令参数含义

  • -b:指定要跟踪的缓冲区,例如main、radio、events等。
  • -f:将跟踪结果输出到指定文件。
  • -e:指定要跟踪的事件,可以是函数调用、线程活动等。
  • -t:设置跟踪的时间长度。

3. 如何使用trace命令来跟踪Android应用程序的运行情况

在Android系统中,可以通过终端或ADB shell来使用trace命令。以下是使用trace命令跟踪应用程序运行情况的示例代码:

3.1 跟踪CPU使用情况
$ adb shell
$ trace -f my_trace_output.trace -e sched freq power cpu

上述命令将会跟踪CPU的调度、频率、功耗等信息,并将结果输出到my_trace_output.trace文件中。

3.2 跟踪函数调用耗时
$ adb shell
$ trace -f my_trace_output.trace -e 'probe process(ProcessName) { printf("%s", thread_indent(1)); printf("%s\n", user_stack()); }'

上述命令将会跟踪指定进程的函数调用情况,并将结果输出到my_trace_output.trace文件中。

3.3 跟踪线程活动
$ adb shell
$ trace -f my_trace_output.trace -e sched_switch sched_wakeup sched_waking sched_blocked_reason sched_cpu_hotplug

上述命令将会跟踪线程的切换、唤醒、阻塞等活动,并将结果输出到my_trace_output.trace文件中。

pm 、am

am

pm命令是Android系统中一个强大的工具,用于管理应用程序的安装、卸载、查询和清理等操作。

pm命令常用参数含义
  • -i:显示应用程序的安装信息,包括包名、版本号、安装路径等。
  • -l:列出已安装应用程序的包名列表。
  • -u:卸载指定包名的应用程序。
  • -f:显示应用程序的安装路径。
  • -s:显示应用程序的安装大小。
  • -c:清除指定包名的应用程序的缓存数据。

am

am命令用于与Android应用程序进行交互,可以启动、停止、调试应用程序,发送广播等。

2.1 am命令常用参数含义
  • start:启动一个应用程序。
  • stop:停止一个正在运行的应用程序。
  • broadcast:发送一个广播消息给应用程序。
  • instrument:运行一个应用程序的测试用例。
  • profile:启动应用程序的性能分析。

如何使用pm、am命令来管理Android设备上的应用程序

在Android系统中,可以通过终端或ADB shell来使用pm、am命令。以下是使用pm、am命令来管理应用程序的示例代码:

安装应用程序
$ adb install example.apk

上述命令将会安装名为example.apk的应用程序到Android设备中。

卸载应用程序
$ adb uninstall com.example.app

上述命令将会卸载包名为com.example.app的应用程序。

启动应用程序
$ adb shell am start -n com.example.app/.MainActivity

上述命令将会启动包名为com.example.app,主Activity为MainActivity的应用程序。

3.4 停止应用程序

$ adb shell am force-stop com.example.app

上述命令将会停止运行包名为com.example.app的应用程序。

getprop、setprop

getpropsetprop是Android系统中的两个命令,用于获取和设置系统属性。

1. getprop命令

getprop命令用于获取系统属性的值。以下是使用getprop命令的用法:

adb shell getprop [property_name]
  • property_name是要获取的系统属性的名称。

例如,如果要获取Android设备的型号信息,可以使用以下命令:

adb shell getprop ro.product.model

2. setprop命令

setprop命令用于设置系统属性的值。以下是使用setprop命令的用法:

adb shell setprop [property_name] [property_value]
  • property_name是要设置的系统属性的名称。
  • property_value是要设置的系统属性的值。

请注意,使用setprop命令可能需要root权限。

例如,如果要将Android设备的屏幕密度设置为240dpi,可以使用以下命令:

adb shell setprop ro.sf.lcd_density 240

请注意,在修改系统属性时,谨慎操作,确保了解具体的属性名称和取值范围,避免对系统造成不可逆的影响。

综上所述,getpropsetprop命令是在Android系统中用于获取和设置系统属性的工具。通过它们,您可以查看和修改一些与设备和系统相关的属性信息。

settings命令

settings命令用于在Android设备上访问和修改系统设置。您可以使用adb shell settings命令来执行各种操作。以下是settings命令的一些常见用法:

1. 获取设置值

要获取特定设置的值,可以使用以下命令格式:

adb shell settings get setting_name

其中,setting_name是要获取的设置名称。例如,要获取屏幕亮度设置的值,可以使用以下命令:

adb shell settings get system screen_brightness

2. 修改设置值

要修改特定设置的值,可以使用以下命令格式:

adb shell settings put setting_namespace setting_name value

其中,setting_namespace是设置所属的命名空间,setting_name是要修改的设置名称,value是要设置的新值。例如,要将屏幕亮度设置为255,可以使用以下命令:

adb shell settings put system screen_brightness 255

3. 列出所有设置项

要列出所有可用的设置项,可以使用以下命令:

adb shell settings list

该命令将会列出所有可用的设置项及其名称。

请注意,具体可用的设置项和命名空间取决于Android设备的版本和制造商。

综上所述,settings命令提供了在Android设备上访问和修改系统设置的功能。通过适当使用这些命令,您可以获取和修改各种设置项的值,以满足您的需求。

结论

在AOSP开发过程中,Android还有很多其他很实用的工具,欢迎探索讨论!希望本文的内容对你Android系统开发有所帮助!

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

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

相关文章

vue项目引入element-plus

文章目录 引入框架遇到的问题引入的时候&#xff0c;报错 ...(reading replace)...报错&#xff1a;The template root requires ...eslint报错&#xff1a; 运行 引入框架 使用add引入 遇到的问题 引入的时候&#xff0c;报错 …(reading ‘replace’)… Cannot read prop…

聊聊鼎叔的新书《无测试组织-测试团队的敏捷转型》

这是鼎叔的第八十篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。 本书官方购买链接请点击 https://item.jd.com/14105386.html。 为何写作本书 对于“无测试组…

入选《数据结构与算法领域内容帮榜》第44名

入选《数据结构与算法领域内容帮榜》第44名

注册并实名认证华为开发者账号

首先 我们访问 https://www.harmonyos.com/ 访问鸿蒙官方网站 右上角 我们点击 登录 然后 我们选择注册 然后 注册方式 有邮箱和手机号的注册 这边 看大家需要 如果像我不怎么登邮箱这种 建议还是选择手机号注册 这里 居住地区 应该就是默认中国吧 然后 手机号 验证码 密码…

[springboot bug] mac 文件读取灵异事件

一开始是想尝试一下spring在过去的xml文件配置bean 的感觉&#xff0c;但是在测试 FileSystemXmlApplicationContext 的时候&#xff0c;反复确认文件路径没有问题&#xff0c;将 / -> \\ 也不起作用&#xff0c;后决定debug一下&#xff0c;发现根因。记录一下&#xff0c…

LeetCode算法心得——使用最小花费爬楼梯(记忆化搜索+dp)

大家好&#xff0c;我是晴天学长&#xff0c;很重要的思想动规思想&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1&#xff09;使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从…

PTA-使用函数求最大公约数

本题要求实现一个计算两个数的最大公约数的简单函数。 函数接口定义&#xff1a; int gcd( int x, int y ); 其中x和y是两个正整数&#xff0c;函数gcd应返回这两个数的最大公约数。 裁判测试程序样例&#xff1a; #include <stdio.h> int gcd( int x, int y ); i…

【数据结构】深入浅出理解链表中二级指针的应用

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 (注:为方便演示本篇使用的x86系统,因此指针的大小为4个字节) 目录 &#x1f4cc;形参的改变不影响实参! 1.调用函数更改整型时传值调用与传址调用的区别 &#x1f38f;传值…

C#,简单修改Visual Studio 2022设置以支持C#最新版本的编译器,尊享编程之趣

1 PLS README & CHAPTER 5 用一个超简单的例子说明各版本 C# 的差异。 使用新版本&#xff08;比如C#.11&#xff09;&#xff0c;当然有一定的好处。我们在写程序的时候一般这样&#xff1a; Visual Studio 2022 默认只能这样写&#xff1a; string imageFile Path.C…

若依框架参数验证

文章目录 一、前端触发参数校验异常1.前端页面2.前端代码 二、后端触发参数校验异常1.前端页面2.后端报错 三、后端自定义参数验证1.添加注解2.触发后端校验 一、前端触发参数校验异常 1.前端页面 输入不符合校验规则的值来触发 2.前端代码 校验规则数组 表单的元素 修…

JAVA小游戏“飞翔的小鸟”

第一步是创建项目 项目名自拟 第二步创建个包名 来规范class 再创建一个包 来存储照片 如下&#xff1a; 代码如下&#xff1a; package game; import java.awt.*; import javax.swing.*; import javax.imageio.ImageIO;public class Bird {Image image;int x,y;int width…

Windows下安装Anaconda3并使用JupyterNoteBook

下载安装包 Anaconda官网 进官网&#xff0c;点击下载 自动根据当前系统下载对应的包了&#xff0c;安装包大约1G&#xff0c;喝杯Java耐心等待。 安装 很多人安装C盘&#xff0c;我这里放D盘。 注意&#xff1a;你的文件夹目录一定要不能有空格 然后其他的直接默认install即…

在线视频课程教育系统源码/网课网校/知识付费/在线教育系统/在线课程培训系统源码

源码简介&#xff1a; 在线视频课程教育系统源码&#xff0c;作为网课/网校/知识付费/在线教育系统&#xff0c;它有文章付费阅读在线点播自动发货付费阅读VIP会员系统等功能。它是实用的在线课程培训系统源码。 发货100-在线视频课程教育系统&#xff0c;它是一款功能实用的…

优思学院|2024年质量管理的大趋势

2023年我们已经顺利度过了整年的大部分时间&#xff0c;2024年质量管理的趋势和问题在全球范围内都已经引起了关注&#xff0c;或者仍然是企业导航的首要任务。 1. 通货膨胀与质量管理 2023年&#xff0c;全球范围内通货膨胀和严峻的经济状况成为企业最关心的问题之一。尽管物…

前端如何判空

这样判空就会报错 loadNode(node, resolve)console.log("node")console.log(node)if (node.data ! null) {this.get(ctx /publicity/publicityType/typeTreeData?id node.data.id).then((res) > {resolve(res)})}}, 需要这样写&#xff0c;用typeof来做类型判…

java 实现发送邮箱,复制即用,包含邮箱设置第三方登录授权码获取方法

application.yml spring:profiles:active: dev # active: test#邮件附件上传文件大小限制servlet:multipart:max-file-size: 50MB #单个文件大小限制max-request-size: 100MB #总文件大小限制&#xff08;允许存储文件的文件夹大小&#xff09;mail:default-encoding: UTF…

YOLOv5改进: Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 💡💡💡Yolov5/Yolov7魔术师,独家首发创新(原创),适用于…

安卓毕业设计基于安卓android微信小程序的培训机构系统

项目介绍 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对培训机构管理系统进行需求分析&#xff0c;得出培训机构管理系统主要功能。接着对培训机构管理系统 进行…

基于Python实现的一个命令行文本计数统计程序,可统计纯英文txt文本中的字符数,单词数,句子数,Python文件行数

项目简介 这是一个用 Python 编写的命令行文本计数统计程序。 基础功能&#xff1a;能正确统计导入的 纯英文txt文本 中的 字符数&#xff0c;单词数&#xff0c;句子数。扩展功能&#xff1a;能正确统计导入的 Python 文件中的代码行数&#xff0c;注释行数&#xff0c;空白…

如何使用VisualSVN在Windows系统上设置SVN服务器并公网远程访问

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学…