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系统开发有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Google My Business来提升您的内容和SEO?

如果您的企业有实体店&#xff0c;那么使用Google My Business&#xff08;GMB&#xff09;来改善您的本地SEO并增强您的在线形象至关重要。Google My Business &#xff08;GMB&#xff09; 是 Google 提供的补充工具&#xff0c;使企业能够控制其在 Google 搜索和地图上的数字…

【数字化转型方法论读书笔记】-数据中台角色解读

一千个读者&#xff0c;就有一千个哈姆雷特。同样&#xff0c;数据中台对于企业内部不同角色的价值也不同&#xff0c;下面分别从董事长、CEO、 CTO/CIO、IT 架构师、数据分析师这 5 个角色的视角详细解读数据中台。 1、董事长视角下的数据中台 在数字经济时代&#xff0c;企业…

【从入门到起飞】JavaSE—多线程(3)(生命周期,线程安全问题,同步方法)

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;生命周期&#x1f384;线程的安全问题&#…

每日一题 1410. HTML 实体解析器(中等,模拟)

模拟&#xff0c;没什么好说的 class Solution:def entityParser(self, text: str) -> str:entityMap {&quot;: ",&apos;: "",>: >,<: <,&frasl;: /,&amp;: &,}i 0n len(text)res []while i < n:isEntity Falseif …

Java—学生信息管理系统(简单、详细)

文章目录 一、主界面展示二、学生类三、系统功能方法3.1 main()方法3.2 添加学生信息3.3 删除学生信息3.4 修改学生信息3.5 查看所有学生信息 四、完整代码4.1 Student .Java4.2 StudentManger.Java 前言&#xff1a;本案例在实现时使用了Java语言中的ArrayList集合来储存数据。…

【Java系列】SpringBoot 集成MongoDB 详细介绍

目录 写在前面 一、步骤介绍 步骤 1: 添加 MongoDB 依赖 步骤 2: 配置 MongoDB 连接信息 步骤 3: 创建实体类 步骤 4: 创建 Repository 接口 步骤 5: 使用 Repository 进行操作 二、特殊处理 写在前面 在Spring Boot中集成MongoDB的过程相对简单&#xff0c;以下是一个…

git的用法

目录 一、为什么需要git 二、git基本操作 2.1、初始化git仓库 2.2、配置本地仓库的name和email 2.3、认识工作区、暂存区、版本库 三、git的实际操作 3.1 提交文件 3.2 查看git状态以及具体的修改 3.3 git版本回退 git reset 3.1 撤销修改 四、git分支管理 4.…

一体化大气环境监测设备实时守护我们的空气质量

WX-CSQX12 随着空气污染问题的日益严重&#xff0c;大气环境监测设备成为了我们生活中不可或缺的一部分。而一体化的大气环境监测设备&#xff0c;更是为我们的环境保护工作带来了更多的便利和效益。 一体化大气环境监测设备是一种集成了多种功能于一体的环保设备&#xff0c;…

USB驱动开发基础

USB标准 USB1.0&#xff0c; 1996&#xff0c;低速1.5Mbps和高速12Mbps&#xff0c;USB1.1 iMac G3&#xff0c;Type A和Type B接口USB 2.0 2000&#xff0c; 480Mpbs&#xff0c;Type A/B/C接口、Micro A/BUSB 3.0 5Gbps, 随着USB 3.2命名规定&#xff0c;现在也叫USB 3.2 Ge…

Altium Designer学习笔记11

画一个LED的封装&#xff1a; 使用这个SMD5050的封装。 我们先看下这个芯片的功能说明&#xff1a; 5050贴片式发光二极管&#xff1a; XL-5050 是单线传输的三通道LED驱动控制芯片&#xff0c;采用的是单极性归零码协议。 数据再生模块的功能&#xff0c;自动将级联输出的数…

代码随想录算法训练营Day 60 || 84.柱状图中最大的矩形

84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^50 < hei…

安卓毕业设计基于安卓android微信小程序的家校通系统

运行环境 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开发者 项目介绍 基于微信小程序的家校通系统的设计基…

ECRS生产工时分析软件:工业效率提升的隐形引擎

降本增效往往是企业开工规划的第一步。那到底降什么本&#xff0c;增什么效呢&#xff0c;对于很多企业来说&#xff0c;都是从采购成本入手&#xff0c;结果采购成本是降下来了&#xff0c;但是整体品质却下降了。实际上&#xff0c;要降本增效&#xff0c;优化现场管理才是企…

DBS note4:Buffer Management

目录 1、介绍 2、缓冲池 3、处理页面请求 4、LRU替换和时钟策略 1&#xff09;顺序扫描性能 - LRU 5、最近最常使用替换策略&#xff08;MRU Replacement&#xff09; 1&#xff09;Sequential Scanning Performance - MRU 6、练习题 1&#xff09;判断真假 2&#xf…

python实战—核心基础3(RGB模式颜色转换器) lv1

目录 一、核心代码解释 二、代码 三、运行截图 一、核心代码解释 1、hex() 函数 参数说明&#xff1a; x -- 10进制整数 返回值&#xff1a; 返回16进制数&#xff0c;以字符串形式表示。 实例&#xff1a; 以下实例展示了 hex 的使用方法&#xff1a; >>>h…

单片机调试技巧--修改bin文件实现断点

fromelf --text -a -c --outputall.dis F103_Moduel\F103_Moduel.axffromelf --bin --outputtest.bin F103_Moduel\F103_Moduel.axf 在启动文件中&#xff0c;修改UsageFault_Handler UsageFault_Handler\PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE…

WifiManager的getConnectionInfo被弃用了?快来使用ConnectivityManager获取更全的网络信息吧

前言 最近在使用flutter写桌面端的一个adb工具&#xff0c;可以使用adb命令无线连接设备&#xff0c;需要电脑和手机在同一局域网内&#xff0c;但是需要手机的ip地址。于是我想到写一个android桌面小组件&#xff0c;点一下就获取WiFi的ipv4地址并显示出来&#xff0c;先去找…

计算机网络之运输层

一、概述 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题&#xff0c;实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务…

【深度学习】Transformer简介

近年来&#xff0c;Transformer模型在自然语言处理&#xff08;NLP&#xff09;领域中横扫千军&#xff0c;以BERT、GPT为代表的模型屡屡屠榜&#xff0c;目前已经成为了该领域的标准模型。同时&#xff0c;在计算机视觉等领域中&#xff0c;Transformer模型也逐渐得到了重视&a…

第十一章 docker swarm集群部署

文章目录 前言一、安装docker1.1 解压1.2 配置docker 存储目录和dns1.3 添加docker.service文件1.4 docker 启动验证 二、docker swarm 集群配置2.1 关闭selinux2.2 设置主机名称并加入/etc/hosts2.3 修改各个服务器名称&#xff08;uname -a 进行验证&#xff09;2.4 初始化sw…