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

Android10 设备死机的问题分析和解决

最近客户反馈一个问题,设备偶现死机。最后解决,在此记录。

目录

一死机的现象

二死机的类型

三 死机问题分析

1 死机现象的梳理

2 死机日志

1)日志分析一

2 日志分析二(正确方案)


一死机的现象

设备死机,或者黑屏任何操作无响应,无法点亮屏幕;或亮屏任何操作无响应。只能断电重启。

二死机的类型

  •    逻辑卡顿(block)
  •    死循环 (Deadloop)

  •   死锁 (Deadlock)

这次根据结果先说结论是 死锁导致死机。

三 死机问题分析

1 死机现象的梳理

客户反馈死机问题,暂无提供可复现的逻辑步骤,属于随机发生。这部使用monkey压测,出现死机行为,分析日志,每次都有不同,无法定位原因。

2 死机日志

1)日志分析一

1 开启了ylog开关后复现,都能捕获日志,有些日志就是普通的日志,有日志捕获死机日常。日志结构如下:

2 左侧文件夹traces就是死机log。分析log如下:

0-android.log日志文件中 看到进程全部挂掉,系统死亡。日志如下
M0164CC  11-21 11:50:59.424   366   366 I SPRDHWComposer: HWCDisplay::present_display <785>: No job to commit, return ERR_NO_JOB
M0164CD  11-21 11:50:59.417   249   249 I ServiceManager: service 'netstats' died
M0164CE  11-21 11:50:59.427   480  5944 D BufferPoolAccessor: bufferpool2 0xa7070110 : 0(0 size) total buffers - 0(0 size) used buffers - 7/10 (recycle/alloc) - 3/9 (fetch/transfer)
M0164CF  11-21 11:50:59.427   480  5939 D BufferPoolAccessor: bufferpool2 0xa706fe10 : 0(0 size) total buffers - 0(0 size) used buffers - 8/10 (recycle/alloc) - 2/9 (fetch/transfer)
M0164D0  11-21 11:50:59.427   480  5908 D BufferPoolAccessor: bufferpool2 0xa7070310 : 0(0 size) total buffers - 0(0 size) used buffers - 13/15 (recycle/alloc) - 2/14 (fetch/transfer)
M0164D1  11-21 11:50:59.427   249   249 I ServiceManager: service 'persistent_data_block' died
M0164D2  11-21 11:50:59.428   249   249 I ServiceManager: service 'netpolicy' died
M0164D3  11-21 11:50:59.428   249   249 I ServiceManager: service 'wifi' died
M0164D4  11-21 11:50:59.428   249   249 I ServiceManager: service 'wifiscanner' died
M0164D5  11-21 11:50:59.428   249   249 I ServiceManager: service 'wifip2p' died
M0164D6  11-21 11:50:59.428   249   249 I ServiceManager: service 'notification' died
M0164D7  11-21 11:50:59.428   249   249 I ServiceManager: service 'devicestoragemonitor' died
M0164D8  11-21 11:50:59.428   249   249 I ServiceManager: service 'location' died
M0164D9  11-21 11:50:59.428   249   249 I ServiceManager: service 'country_detector' died
M0164DA  11-21 11:50:59.428   249   249 I ServiceManager: service 'time_detector' died
M0164DB  11-21 11:50:59.428   249   249 I ServiceManager: service 'search' died
M0164DC  11-21 11:50:59.428   249   249 I ServiceManager: service 'wallpaper' died
M0164DD  11-21 11:50:59.428   249   249 I ServiceManager: service 'audio' died
M0164DE  11-21 11:50:59.429   249   249 I ServiceManager: service 'broadcastradio' died
M0164DF  11-21 11:50:59.429   249   249 I ServiceManager: service 'DockObserver' died
M0164E0  11-21 11:50:59.429   249   249 I ServiceManager: service 'midi' died
M0164E1  11-21 11:50:59.429   249   249 I ServiceManager: service 'adb' died
M0164E2  11-21 11:50:59.429   249   249 I ServiceManager: service 'usb' died
M0164E3  11-21 11:50:59.429   249   249 I ServiceManager: service 'serial' died
M0164E4  11-21 11:50:59.429   249   249 I ServiceManager: service 'hardware_properties' died
M0164E5  11-21 11:50:59.429   480   480 D BufferPoolAccessor: bufferpool2 0xa706fd10 : 0(0 size) total buffers - 0(0 size) used buffers - 5/7 (recycle/alloc) - 2/6 (fetch/transfer)
M0164E6  11-21 11:50:59.429   249   249 I ServiceManager: service 'color_display' died
M0164E7  11-21 11:50:59.429  5930  8561 I AudioTrack: pause
M0164E8  11-21 11:50:59.429   480   480 D BufferPoolAccessor: Destruction - bufferpool2 0xa706fd10 cached: 0/0M, 0/0% in use; allocs: 7, 71% recycled; transfers: 6, 67% unfetced
M0164E9  11-21 11:50:59.429   249   249 I ServiceManager: service 'jobscheduler' died
M0164EA  11-21 11:50:59.429   249   249 I ServiceManager: service 'soundtrigger' died
M0164EB  11-21 11:50:59.429   249   249 I ServiceManager: service 'trust' died
M0164EC  11-21 11:50:59.429   249   249 I ServiceManager: service 'backup' died
M0164ED  11-21 11:50:59.429   249   249 I ServiceManager: service 'appwidget' died
M0164EE  11-21 11:50:59.429   249   249 I ServiceManager: service 'role' died
M0164EF  11-21 11:50:59.429   249   249 I ServiceManager: service 'voiceinteraction' died
M0164F0  11-21 11:50:59.429   249   249 I ServiceManager: service 'diskstats' died
M0164F1  11-21 11:50:59.429   249   249 I ServiceManager: service 'runtime' died
M0164F2  11-21 11:50:59.429   480  5944 D BufferPoolAccessor: bufferpool2 0xa7070210 : 0(0 size) total buffers - 0(0 size) used buffers - 11/15 (recycle/alloc) - 4/14 (fetch/transfer)
M0164F3  11-21 11:50:59.429   249   249 I ServiceManager: service 'network_time_update_service' died
M0164F4  11-21 11:50:59.429   480  5944 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070210 cached: 0/0M, 0/0% in use; allocs: 15, 73% recycled; transfers: 14, 71% unfetced
M0164F5  11-21 11:50:59.429   249   249 I ServiceManager: service 'dreams' died
M0164F6  11-21 11:50:59.429   249   249 I ServiceManager: service 'graphicsstats' died
M0164F7  11-21 11:50:59.429   249   249 I ServiceManager: service 'print' died
M0164F8  11-21 11:50:59.429   249   249 I ServiceManager: service 'companiondevice' died
M0164F9  11-21 11:50:59.429   249   249 I ServiceManager: service 'restrictions' died
M0164FA  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_session' died
M0164FB  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_resource_monitor' died
M0164FC  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_router' died
M0164FD  11-21 11:50:59.429   249   249 I ServiceManager: service 'ledsrv' died
M0164FE  11-21 11:50:59.429   249   249 I ServiceManager: service 'shortcut' died
M0164FF  11-21 11:50:59.429   249   249 I ServiceManager: service 'launcherapps' died
M016500  11-21 11:50:59.429   249   249 I ServiceManager: service 'crossprofileapps' died
M016501  11-21 11:50:59.429   249   249 I ServiceManager: service 'media_projection' died
M016502  11-21 11:50:59.430   249   249 I ServiceManager: service 'slice' died
M016503  11-21 11:50:59.430   249   249 I ServiceManager: service 'media.camera.proxy' died
M016504  11-21 11:50:59.430   249   249 I ServiceManager: service 'statscompanion' died
M016505  11-21 11:50:59.430   249   249 I ServiceManager: service 'incidentcompanion' died
M016506  11-21 11:50:59.430   249   249 I ServiceManager: service 'imms' died
M016507  11-21 11:50:59.430   249   249 I ServiceManager: service 'autofill' died
M016508  11-21 11:50:59.430   249   249 I ServiceManager: service 'clipboard' died
M016509  11-21 11:50:59.430   480  5939 D BufferPoolAccessor: bufferpool2 0xa7070010 : 0(0 size) total buffers - 0(0 size) used buffers - 6/11 (recycle/alloc) - 5/10 (fetch/transfer)
M01650A  11-21 11:50:59.430   249   249 I ServiceManager: service 'app_binding' died
M01650B  11-21 11:50:59.430   249   249 I ServiceManager: service 'sprd_power' died
M01650C  11-21 11:50:59.430   480  5939 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070010 cached: 0/0M, 0/0% in use; allocs: 11, 55% recycled; transfers: 10, 50% unfetced
M01650D  11-21 11:50:59.430   249   249 I ServiceManager: service 'sprdssense' died
M01650E  11-21 11:50:59.430   249   249 I ServiceManager: service 'bluetooth_manager' died
M01650F  11-21 11:50:59.430   249   249 I ServiceManager: service 'connmetrics' died
M016510  11-21 11:50:59.430   249   249 I ServiceManager: service 'netd_listener' died
M016511  11-21 11:50:59.430   249   249 I ServiceManager: service 'contexthub' died
M016512  11-21 11:50:59.430   249   249 I ServiceManager: service 'power_ex' died
M016513  11-21 11:50:59.430   249   249 I ServiceManager: service 'otadexopt' died
M016514  11-21 11:50:59.430   249   249 I ServiceManager: service 'user' died
M016515  11-21 11:50:59.430   249   249 I ServiceManager: service 'activity' died
M016516  11-21 11:50:59.430  5927  5927 I Zygote  : Process 6082 exited due to signal 9 (Killed)
M016517  11-21 11:50:59.431  5927  5927 E Zygote  : Exit zygote because system server (pid 6082) has terminated
M016518  11-21 11:50:59.432  5927  5927 D Zygote  : SprdDebug set prop ret = 0
M016519  11-21 11:50:59.432   480  5939 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070110 cached: 0/0M, 0/0% in use; allocs: 10, 70% recycled; transfers: 9, 67% unfetced
M01651A  11-21 11:50:59.433   480  5944 D BufferPoolAccessor: Destruction - bufferpool2 0xa7070310 cached: 0/0M, 0/0% in use; allocs: 15, 87% recycled; transfers: 14, 86% unfetced
M01651B  11-21 11:50:59.433   480   480 D BufferPoolAccessor: Destruction - bufferpool2 0xa706fe10 cached: 0/0M, 0/0% in use; allocs: 10, 80% recycled; transfers: 9, 78% unfetced
M01651C  11-21 11:50:59.435   366   366 D SPRDHWComposer: SprdPrimaryDisplayDevice::commit <784>: No Job to commit, totalLayerCount = 0
M01651D  11-21 11:50:59.435   366   366 I SPRDHWComposer: HWCDisplay::present_display <785>: No job to commit, return ERR_NO_JOB
M01651E  11-21 11:50:59.437  6281  6281 D AndroidRuntime: Shutting down VM
C01651F  11-21 11:50:59.437  6281  6281 E AndroidRuntime: FATAL EXCEPTION: main
C01651F  11-21 11:50:59.437  6281  6281 E AndroidRuntime: Process: com.android.phone, PID: 6281
C01651F  11-21 11:50:59.437  6281  6281 E AndroidRuntime: DeadSystemException: The system died; earlier logs will point to the root cause
M016520  11-21 11:50:59.439   249   249 I ServiceManager: service 'procstats' died
M016521  11-21 11:50:59.439   249   249 I ServiceManager: service 'meminfo' died
M016522  11-21 11:50:59.439   249   249 I ServiceManager: service 'gfxinfo' died
M016523  11-21 11:50:59.439   249   249 I ServiceManager: service 'dbinfo' died
M016524  11-21 11:50:59.439   249   249 I ServiceManager: service 'cpuinfo' died
M016525  11-21 11:50:59.439   249   249 I ServiceManager: service 'permission' died
M016526  11-21 11:50:59.439   249   249 I ServiceManager: service 'processinfo' died
M016527  11-21 11:50:59.439   249   249 I ServiceManager: service 'overlay' died
M016528  11-21 11:50:59.439   249   249 I ServiceManager: service 'sensor_privacy' died
M016529  11-21 11:50:59.439   249   249 I ServiceManager: service 'sensorservice' died
M01652A  11-21 11:50:59.439  5931  6023 E IPCThreadState: attemptIncStrongHandle(4): Not supported
M01652B  11-21 11:50:59.439   249   249 I ServiceManager: service 'ethernet' died
M01652C  11-21 11:50:59.439   249   249 I ServiceManager: service 'battery' died
M01652D  11-21 11:50:59.439   249   249 I ServiceManager: service 'batteryproperties' died
M01652E  11-21 11:50:59.439   249   249 I ServiceManager: service 'device_identifiers' died
M01652F  11-21 11:50:59.439   249   249 I ServiceManager: service 'uri_grants' died
M016530  11-21 11:50:59.440  6281  6281 D HprofFactory: Create HprofDebugEx
M016531  11-21 11:50:59.439   249   249 I ServiceManager: service 'activity_task' died
M016532  11-21 11:50:59.444   249   249 I ServiceManager: service 'appops' died
M016533  11-21 11:50:59.444   249   249 I ServiceManager: service 'batterystats' died
M016534  11-21 11:50:59.444   249   249 I ServiceManager: service 'power' died
M016535  11-21 11:50:59.444   249   249 I ServiceManager: service 'thermalservice' died
M016536  11-21 11:50:59.444   249   249 I ServiceManager: service 'recovery' died
M016537  11-21 11:50:59.444   249   249 I ServiceManager: service 'display' died
M016538  11-21 11:50:59.444   249   249 I ServiceManager: service 'package' died
M016539  11-21 11:50:59.444   249   249 I ServiceManager: service 'package_native' died
M01653A  11-21 11:50:59.444   249   249 I ServiceManager: service 'usagestats' died
M01653B  11-21 11:50:59.444   249   249 I ServiceManager: service 'webviewupdate' died
M01653C  11-21 11:50:59.444   249   249 I ServiceManager: service 'binder_calls_stats' died
M01653D  11-21 11:50:59.444   249   249 I ServiceManager: service 'looper_stats' died
M01653E  11-21 11:50:59.444  6281  6281 I Process : Sending signal. PID: 6281 SIG: 9
。。。。。(略)

3 看以上日志,系统服务全部挂掉,接下来我们继续分析log

看android0.log日志,我们分析如下。

发生SWT:"android.fg"线程在等锁<0x0b167f2f>,该锁是被"android.display"持有;"android.display"又在等锁<0x046172a2>,该锁是被"main"线程持有;"main"线程又在等锁<0x0d005081>,该锁是被"HwBinder:745_5"持有;"HwBinder:745_5"线程又在等锁<0x0b167f2f>,导致发生死锁了。[下一步计划]
待AMS看下死锁原因,谢谢![分析过程]  
[1119anrlog\ap\000-1119_153646_poweron\0-android.log]:
E00CBFE  11-19 15:42:02.313   745   770 I watchdog: Blocked in handler on foreground thread (android.fg), Blocked in handler on main thread (main), Blocked in handler on ui thread (android.ui), Blocked in handler on display thread (android.display), Blocked in handler on ActivityManager (ActivityManager), Blocked in handler on PowerManagerService (PowerManagerService)
S00CCF3  11-19 15:42:15.914   745   770 W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in handler on foreground thread (android.fg), Blocked in handler on main thread (main), Blocked in handler on ui thread (android.ui), Blocked in handler on display thread (android.display), Blocked in handler on ActivityManager (ActivityManager), Blocked in handler on PowerManagerService (PowerManagerService)----- pid 745 at 2024-11-19 15:41:21 -----
Cmd line: system_server"android.fg" prio=5 tid=14 Blocked| group="main" sCount=1 dsCount=0 flags=1 obj=0x13141228 self=0x9a7fda00| sysTid=764 nice=0 cgrp=default sched=0/0 handle=0x8454c230| state=S schedstat=( 1707629333 1820559435 5437 ) utm=148 stm=22 core=1 HZ=100| stack=0x84449000-0x8444b000 stackSize=1040KB| held mutexes=at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:15827)- waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17at android.app.ContextImpl.sendOrderedBroadcastAsUser(ContextImpl.java:1314)at android.app.ContextImpl.sendOrderedBroadcastAsUser(ContextImpl.java:1276)at com.android.server.ConnectivityService.sendDataActivityBroadcast(ConnectivityService.java:2086)at com.android.server.ConnectivityService.access$400(ConnectivityService.java:235)at com.android.server.ConnectivityService$3.interfaceClassDataActivityChanged(ConnectivityService.java:1664)at com.android.server.NetworkManagementService.lambda$notifyInterfaceClassActivity$5(NetworkManagementService.java:438)at com.android.server.-$$Lambda$NetworkManagementService$D43p3Tqq7B3qaMs9AGb_3j0KZd0.sendCallback(lambda:-1)at com.android.server.NetworkManagementService.invokeForAllObservers(NetworkManagementService.java:340)at com.android.server.NetworkManagementService.notifyInterfaceClassActivity(NetworkManagementService.java:438)at com.android.server.NetworkManagementService.access$1200(NetworkManagementService.java:117)at com.android.server.NetworkManagementService$NetdUnsolicitedEventListener.lambda$onInterfaceClassActivityChanged$0$NetworkManagementService$NetdUnsolicitedEventListener(NetworkManagementService.java:666)at com.android.server.-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$0xWa9DGxTnoGVHppsM-nng2PygE.run(lambda:-1)at android.os.Handler.handleCallback(Handler.java:883)at android.os.Handler.dispatchMessage(Handler.java:100)at android.os.Looper.loop(Looper.java:214)at android.os.HandlerThread.run(HandlerThread.java:67)at com.android.server.ServiceThread.run(ServiceThread.java:44)"android.display" prio=5 tid=17 Blocked| group="main" sCount=1 dsCount=0 flags=1 obj=0x13141568 self=0x9a800400| sysTid=767 nice=-3 cgrp=default sched=0/0 handle=0x84231230| state=S schedstat=( 875860938 1723520664 3899 ) utm=62 stm=25 core=2 HZ=100| stack=0x8412e000-0x84130000 stackSize=1040KB| held mutexes=at com.android.server.power.PowerManagerService.updateUidProcStateInternal(PowerManagerService.java:3148)- waiting to lock <0x046172a2> (a java.lang.Object) held by thread 1at com.android.server.power.PowerManagerService$LocalService.updateUidProcState(PowerManagerService.java:5200)at com.android.server.am.ActivityManagerService.enqueueUidChangeLocked(ActivityManagerService.java:16904)at com.android.server.am.OomAdjuster.updateOomAdjLocked(OomAdjuster.java:621)at com.android.server.am.ActivityManagerService.updateOomAdjLocked(ActivityManagerService.java:17226)at com.android.server.am.ActivityManagerService$LocalService.updateOomAdj(ActivityManagerService.java:18350)- locked <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx)at com.android.server.wm.-$$Lambda$yIIsPVyXvnU3Rv8mcliit-gIpSs.run(lambda:-1)at android.os.Handler.handleCallback(Handler.java:883)at android.os.Handler.dispatchMessage(Handler.java:100)at android.os.Looper.loop(Looper.java:214)at android.os.HandlerThread.run(HandlerThread.java:67)at com.android.server.ServiceThread.run(ServiceThread.java:44)"main" prio=5 tid=1 Blocked| group="main" sCount=1 dsCount=0 flags=1 obj=0x757ab450 self=0xb053de00| sysTid=745 nice=-2 cgrp=default sched=0/0 handle=0xb0b20dc0| state=S schedstat=( 6436213292 2293829926 7935 ) utm=480 stm=163 core=1 HZ=100| stack=0xbe5e9000-0xbe5eb000 stackSize=8192KB| held mutexes=at com.android.server.BatteryService$LocalService.getBatteryChargeCounter(BatteryService.java:1337)- waiting to lock <0x0d005081> (a java.lang.Object) held by thread 130at com.android.server.power.batterysaver.BatterySavingStats.injectBatteryLevel(BatterySavingStats.java:248)at com.android.server.power.batterysaver.BatterySavingStats.transitionStateLocked(BatterySavingStats.java:287)at com.android.server.power.batterysaver.BatterySavingStats.transitionState(BatterySavingStats.java:268)- locked <0x046172a2> (a java.lang.Object)at com.android.server.power.batterysaver.BatterySaverController.updateBatterySavingStats(BatterySaverController.java:519)- locked <0x046172a2> (a java.lang.Object)at com.android.server.power.batterysaver.BatterySaverController.access$100(BatterySaverController.java:59)at com.android.server.power.batterysaver.BatterySaverController$1.onReceive(BatterySaverController.java:187)at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1583)at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(lambda:-1)at android.os.Handler.handleCallback(Handler.java:883)at android.os.Handler.dispatchMessage(Handler.java:100)at android.os.Looper.loop(Looper.java:214)at com.android.server.SystemServer.run(SystemServer.java:562)at com.android.server.SystemServer.main(SystemServer.java:370)at java.lang.reflect.Method.invoke(Native method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:914)"HwBinder:745_5" prio=5 tid=130 Blocked| group="main" sCount=1 dsCount=0 flags=1 obj=0x147408b0 self=0x7de38e00| sysTid=2169 nice=0 cgrp=default sched=0/0 handle=0x7ba8c230| state=S schedstat=( 35393468 114781610 106 ) utm=3 stm=0 core=2 HZ=100| stack=0x7b991000-0x7b993000 stackSize=1008KB| held mutexes=at com.android.server.am.ActivityManagerService.broadcastIntent(ActivityManagerService.java:15827)- waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1049)at com.android.server.BatteryService$Led.sendLightActionBroadcast(BatteryService.java:1128)at com.android.server.BatteryService$Led.updateLightsLocked(BatteryService.java:1179)at com.android.server.BatteryService.processValuesLocked(BatteryService.java:680)at com.android.server.BatteryService.update(BatteryService.java:453)- locked <0x0d005081> (a java.lang.Object)at com.android.server.BatteryService.access$1100(BatteryService.java:116)at com.android.server.BatteryService$HealthHalCallback.healthInfoChanged(BatteryService.java:1187)at android.hardware.health.V2_0.IHealthInfoCallback$Stub.onTransact(IHealthInfoCallback.java:440)"android.ui" prio=5 tid=15 Blocked| group="main" sCount=1 dsCount=0 flags=1 obj=0x13141398 self=0x9a7fe800| sysTid=765 nice=-2 cgrp=default sched=0/0 handle=0x84443230| state=S schedstat=( 2231931697 1799238491 11891 ) utm=148 stm=74 core=0 HZ=100| stack=0x84340000-0x84342000 stackSize=1040KB| held mutexes=at com.android.server.am.ActivityManagerService.dispatchUidsChanged(ActivityManagerService.java:3345)- waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17"ActivityManager" prio=5 tid=23 Blocked| group="main" sCount=1 dsCount=0 flags=1 obj=0x13141c58 self=0x9a83d800| sysTid=773 nice=-2 cgrp=default sched=0/0 handle=0x83bfb230| state=S schedstat=( 769154699 733906338 2390 ) utm=56 stm=20 core=1 HZ=100| stack=0x83af8000-0x83afa000 stackSize=1040KB| held mutexes=at com.android.server.am.ActivityManagerService.idleUids(ActivityManagerService.java:17290)- waiting to lock <0x0b167f2f> (a com.android.server.am.ActivityManagerServiceEx) held by thread 17"PowerManagerService" prio=5 tid=33 Blocked| group="main" sCount=1 dsCount=0 flags=1 obj=0x13145a78 self=0x9a846400| sysTid=783 nice=-4 cgrp=default sched=0/0 handle=0x830ab230| state=S schedstat=( 369337669 465048778 2947 ) utm=20 stm=16 core=2 HZ=100| stack=0x82fa8000-0x82faa000 stackSize=1040KB| held mutexes=at com.android.server.power.PowerManagerService$BatteryReceiver.onReceive(PowerManagerService.java:4070)- waiting to lock <0x046172a2> (a java.lang.Object) held by thread 1 

4 以上日志结论是发生死锁导致死机。我们继续分析

文件夹中有crash.log.看日志如下

C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: FATAL EXCEPTION: main
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: Process: com.android.calendar, PID: 17985
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.calendar/com.android.calendar.AllInOneActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.calendar.DayFragment: could not find Fragment constructor
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3322)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3475)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2039)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7626)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.android.calendar.DayFragment: could not find Fragment constructor
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Fragment.instantiate(Fragment.java:562)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentContainer.instantiate(FragmentContainer.java:53)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentState.instantiate(FragmentState.java:77)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:2900)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.FragmentController.restoreAllState(FragmentController.java:142)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Activity.onCreate(Activity.java:1504)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at com.android.calendar.AllInOneActivity.onCreate(AllInOneActivity.java:274)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7879)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7867)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3294)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	... 11 more
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: Caused by: java.lang.NoSuchMethodException: com.android.calendar.DayFragment.<init> []
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at java.lang.Class.getConstructor0(Class.java:2332)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at java.lang.Class.getConstructor(Class.java:1728)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	at android.app.Fragment.instantiate(Fragment.java:543)
C046623  11-20 11:14:51.848 17985 17985 E AndroidRuntime: 	... 21 more

刚开始一直以为是这两个造成的,但是此处未做过定制,所以问题不是这里。继续寻找问题(后续发现我被这个crash误导了,这是monkey压测捕获的log,正式的log日志是这里的日志内容不一样的)

2 日志分析二(正确方案)

因为无复现逻辑还是想法触发死机的行为,无意间使用数据线插拔设备,导致设备卡顿,赶紧导出日志

  1. 日志结构如下:

    看以上日志结构,最外层的文件夹结尾都是fwkreboot,说明fw是重启的。日志都有traces文件夹,里面都有anr的log日志,说明发生了卡顿,现象也是如此。
  2. 查看0-android_crash.log 日志如下(其他crash日志也是同样的内容)

    看日志说明,系统发生死机,fwkreboot是重启行为。可以看时间点以前的log确定问题点
  3. 接下来继续看traces下的anr 日志。寻找相同的日志log,截图如下
  4. 可以看到以上截图,有sendLightActionBroadcast方法 发生blocked,在BatteryService类里。接下来我们去阅读BatteryService修改的逻辑。
  5. BatteryService中开发逻辑

  6. 看代码,我们在指示灯亮起时发送广播。说明发送广播时发生了卡顿。看该类中有发送广播的逻辑如下截图

    截图中所有发送的广播都是放在队列里面发送。这样我们的广播方式和他们保持一致就可有了。
  7. 修改方案:将广播放在Handler里面发送。
  8. 打包测试验证。未复现卡顿或死机现象。问题解决
     

总结:第一次遇到死机现象还是有点蒙逼的,因为没有复现逻辑,不确定造成死机的原因,前期clash的日志误导了判断。后续可复现时日志重复,根据前期日志的分析,定位就非常容易了。写次日志更多的是梳理从问题到日志分析,到问题定位解决,从宏观到具体的一个思路和日志结构的直观浏览。

OVER~

参考文章

Android的死机、重启问题分析方法

Android各种卡死黑屏系统稳定性问题Log抓取大荟萃

相关文章:

Android10 设备死机的问题分析和解决

最近客户反馈一个问题&#xff0c;设备偶现死机。最后解决&#xff0c;在此记录。 目录 一死机的现象 二死机的类型 三 死机问题分析 1 死机现象的梳理 2 死机日志 1&#xff09;日志分析一 2 日志分析二&#xff08;正确方案&#xff09; 一死机的现象 设备死机&#x…...

Linux操作系统性能优化

Linux操作系统性能优化 1. TCP连接出现大量ESTABLISHED连接解决方法 1. TCP连接出现大量ESTABLISHED连接解决方法 TCP协议规定&#xff0c;对于已经建立的连接&#xff0c;网络双方要进行四次握手才能成功断开连接&#xff0c;如果缺少了其中某个步骤&#xff0c;将会使连接处于…...

【图像处理】用Python和OpenCV实现简单的图像增强与特征提取

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 图像处理是计算机视觉领域的重要基础,而图像增强和特征提取是其中的关键技术。本文将详细探讨如何使用 Python 和 OpenCV 实现图像增强与特征提取。通过具体示例,我们将介绍滤波、直方图均衡化、边缘检测…...

【技术学习网站】

小黄鸭&#xff1a;面试鸭 - 程序员求职面试刷题神器&#xff0c;高频编程题目免费刷 编程导航&#xff1a;编程导航 - 程序员一站式编程学习交流社区&#xff0c;做您编程学习路上的导航员 博客园&#xff1a;博客园 - 开发者的网上家园 前端开发&#xff1a;HTTP 缓存 - H…...

程序员需要具备哪些知识?

程序员需要掌握的知识广泛而深厚&#xff0c;这主要取决于具体从事的领域和技术方向。不过&#xff0c;有些核心知识是共通的&#xff0c;就像建房子的地基一样&#xff0c;下面来讲讲这些关键领域&#xff1a; 1. 编程语言&#xff1a; 无论你是搞前端、后端、移动开发还是嵌…...

架构10-可观测性

零、文章目录 架构10-可观测性 1、可观测性 &#xff08;1&#xff09;可观测性的背景 **历史沿革&#xff1a;**可观测性最初由匈牙利数学家鲁道夫卡尔曼提出&#xff0c;用于线性动态控制系统。后来&#xff0c;该概念被引入到计算机科学中。**现代意义&#xff1a;**在分…...

Active RIS-Aided ISAC Systems: Beamforming Design and Performance Analysis

文章目录 II. SYSTEM MODELC. Active RIS Model III. PROBLEM FORMULATIONA. Radar Performance MetricC. Optimize Φ V. PERFORMANCE ANALYSIS OF THE RADAR SINR IN ACTIVE RIS-AIDED SENSING SYSTEMSA. Simplified System SettingB. Power Scaling Law AnalysisC. Active R…...

oracle 11g中如何快速设置表分区的自动增加

在很多业务系统中&#xff0c;一些大表一般通过分区表的形式来实现数据的分离管理&#xff0c;进而加快数据查询的速度。分区表运维管理的时候&#xff0c;由于人为操作容易忘记添加分区&#xff0c;导致业务数据写入报错。所以我们一般通过配置脚本或者利用oracle内置功能实现…...

HCIA-openGauss_1_4基本功能介绍

openGauss支持标准SQL SQL是用于访问和处理数据库的标准计算机语言&#xff0c;SQL标准的定义分成核心特性以及可选特性&#xff0c;绝大部分的数据库都没有100%支撑SQL标准。openGuass支持SQL2003标准语法&#xff0c;支持主备部署的高性能可用关系型数据库。openGauss数据库…...

el-menu导航三级数据结构及数据展示

1:数据展示 <el-col><el-menu:default-active"$route.path"class"el-menu-vertical-demo"routerunique-openedbackground-color"#545c64"text-color"#fff"active-text-color"#ffd04b"><div v-for"item …...

全面解析 Transformer:改变深度学习格局的神经网络架构

目录 一、什么是 Transformer&#xff1f; 二、Transformer 的结构解析 1. 编码器&#xff08;Encoder&#xff09; 2. 解码器&#xff08;Decoder&#xff09; 3. Transformer 模型结构图 三、核心技术&#xff1a;注意力机制与多头注意力 1. 注意力机制 2. 多头注意力&…...

R语言机器学习论文(二):数据准备

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据一、数据描述二、数据预处理(一)修改元素名称(二)剔除无关变量(三)缺失值检查(四)重复值检查(五)异常值检查三、描述性统计(一)连续变量数据情…...

Linux之socket编程(一)

前言 网络通信的目的 我们已经大致了解了网络通信的过程: 如果主机A想发送数据给主机B, 就需要不断地对本层的协议数据单元(PDU)封装, 然后经过交换设备的转发发送给目的主机, 最终解封装获取数据. 那么网络传输的意义只是将数据由一台主机发送到另一台主机吗&#xff1f; …...

STM32之SDIO通讯接口和SD卡(九)

STM32F407 系列文章 - SDIO-To-SD Card&#xff08;九&#xff09; 目录 前言 一、SDIO接口 二、SD卡 三、实现程序 1.SD卡结构体参数说明 2.头文件定义 3.函数sd_init() 4.函数HAL_SD_MspInit() 5.函数get_sd_card_info() 6.函数get_sd_card_state() 7.函数sd_read…...

【Rust在WASM中实现pdf文件的生成】

Rust在WASM中实现pdf文件的生成 前言概念和依赖问题描述分步实现pdf转Blob生成URL两种方式利用localstorage传递参数处理图片Vec<u8>到pdf格式的Vec<u8>使用rust创建iframe显示pdf的Blob最后 前言 实现了一个通用的前端jpg转pdf的wasm,因为动态响应框架无法直接打…...

蓝桥杯真题——砍竹子(C语言)

问题描述 这天, 小明在砍竹子, 他面前有 n 棵竹子排成一排, 一开始第 ii 棵竹子的 高度为 ​.他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 H, 那么用一次魔法可以,把这一段竹子的高度都变为, 其中 [x]表…...

技术栈4:Docker入门 Linux入门指令

目录 1.Linux系统目录结构 2.处理目录的常用命令 3.Docker概述 4.Docker历史 5.Docker基本组成 6.Docker底层原理 7.Docker修改镜像源 8.Docker基本命令 在学习docker之前我们先要熟悉Linux系统&#xff0c;推荐阅读&#xff1a;Linux笔记&#xff08;狂神说&#xff0…...

项目开发之Docker

文章目录 基础核心概念常用命令 实操1 windows11 docker mysql2 docker部署 xxljob3 container间调用异常问题4 部署mysql数据库5 docker desktop unexpected wsl error 基础 核心概念 其中的三个核心概念&#xff1a;dockerfile image/镜像 container/容器 image&#xff1a…...

状态模式的理解和实践

在软件开发中&#xff0c;我们经常遇到需要根据对象的不同状态执行不同行为的情况。如果直接将这些状态判断和行为逻辑写在同一个类中&#xff0c;会导致该类变得臃肿且难以维护。为了解决这个问题&#xff0c;状态模式&#xff08;State Pattern&#xff09;应运而生。状态模式…...

正点原子imx6ull配置MQTT客户端上传数据到Ubuntu MQTT服务器

目录 使用QT自带的MQTT模块部署客户端创建一个class专门用于MQTT客户端通讯使用QT在ui界面上生成按钮在Windows上订阅相应主题测试在imx6ull上订阅Windows发布的消息 在上一篇中介绍了在Ubuntu22.04的Docker中部署MQTT服务器&#xff0c;然后在window上测试订阅和发布&#xff…...

【联表查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

CAN接口设计

CAN总线的拓扑结构 CAN总线的拓扑结构有点像485总线,都是差分的传输方式,总线上都可以支持多个设备,端接匹配电阻都是120Ω。 485和CAN通信方面最大的区别:网络特性。485是一主多从的通讯方式,CAN是多主通讯,多个设备都可以做主机。那多个设备都相要控制总线呢?…...

基于遗传优化SVM的电机参数预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 数据收集与预处理 4.2模型构建与训练 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 输入&#xff1a;电机结构参数x1 x2 x3 x4 x5(分别是铁心高度 铁心厚度 绕组…...

C++设计模式之代理模式

动机 在面向对象系统中&#xff0c;有些对象由于某种原因&#xff08;比如对象创建的开销很大&#xff0c;或者某些操作需要安全控制&#xff0c;或者需要进程外的访问等&#xff09;&#xff0c;直接访问会给使用者、或者系统结构带来很多麻烦。 如何在不失去透明操作对象的…...

多线程JUC 第2季 控制线程的执行顺序,依次,交替,同时

一 场景1 交替执行 1.1 方案1使用completablefuture public class TestA {public static void main(String[] args) {for(int k0;k<10;k) {CompletableFuture<Void> t1 CompletableFuture.runAsync(() -> {System.out.println("A: >" Thread.curr…...

数据分析(一): 掌握STDF 掌握金钥匙-码农切入半导体的捷径

中国的半导体行业必然崛起&#xff01;看清这个大势&#xff0c;就会有很多机会。 今天&#xff0c;我们一起来了解一下半导体行业的一朵金花&#xff1a;STDF。 实际上这只是一种文件格式&#xff0c;但是当你熟练掌握解析这种文件的时候&#xff0c;你就已经打开在这个基础…...

NPM镜像详解

NPM镜像详解 什么是NPM镜像 NPM镜像&#xff08;NPM Mirror&#xff09;是一个完整的NPM包的副本服务器。由于npm的官方registry服务器部署在国外&#xff0c;国内访问可能会比较慢&#xff0c;因此使用镜像可以加快包的下载速度。 常用的NPM镜像源 npm官方镜像 https://reg…...

【springboot】 多数据源实现

文章目录 1. 引言&#xff1a;多数据源的必要性和应用场景**为什么需要多数据源&#xff1f;****应用场景** 2. Spring Boot中的数据源配置2.1 默认数据源配置简介2.2 如何在Spring Boot中配置多个数据源 3. 整合MyBatis与多数据源**配置MyBatis使用多数据源****Mapper接口的数…...

Zephyr 入门-设备树与设备驱动模型

学习链接&#xff1a;https://www.bilibili.com/video/BV1L94y1F7qS/?spm_id_from333.337.search-card.all.click&vd_source031c58084cf824f3b16987292f60ed3c 讲解清晰&#xff0c;逻辑清楚。 1. 设备树概述&#xff08;语法&#xff0c;如何配置硬件&#xff0c;c代码如…...

css实现圆周运动效果

在CSS中可以通过 keyframes 动画 和 transform 属性实现元素的圆周运动。以下是一个示例代码&#xff1a; 示例代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content…...

乐鑫科技嵌入式面试题及参考答案(3万字长文)

嵌入式开发为什么用 C 语言,而不用 C++ 语言? 在嵌入式开发中,C 语言被广泛使用而 C++ 相对少用有以下一些原因。 首先,C 语言具有更高的效率。嵌入式系统通常资源受限,包括处理器速度、内存容量等。C 语言的代码生成效率高,能够生成紧凑的机器码,占用较少的内存空间和处…...

这就是IoC容器

IoC(Inversion of Control,控制反转),也叫依赖注入(Dependency Injection),是一种决定容器如何装配组件的模式。使用 Spring 来实现 IoC,意味着将设计好的对象交给 Spring 容器控制,而不是直接在对象内部控制。控制反转不能很好地描述这个模式,依赖注入却能更好地描述…...

KVM OVS双网卡配置trunk模式

一、宿主机配置 1. 确保必要的软件包已安装 确保宿主机上已安装 Open vSwitch 和 VLAN 工具。如果尚未安装&#xff0c;可以使用以下命令进行安装&#xff1a; yum install openvswitch-switch vlan 2. 配置现有 OVS 桥接 br0 假设已有一个 OVS 桥接接口 br0&#xff0c;并…...

氢能源车和电动车,谁将成为未来?

很多人都觉得氢能源是未来的终极绿色能源&#xff0c;因为氢气燃烧后只产生水&#xff0c;听起来是不是很环保&#xff1f;但这只是从化学能的角度来看。实际上&#xff0c;氢能源汽车还有很多问题需要解决。氢气的制作成本高得吓人 目前&#xff0c;制作氢气最理想的方法是电…...

CTF-PWN: WEB_and_PWN [第一届“吾杯”网络安全技能大赛 Calculator] 赛后学习(不会)

附件 calculate.html <!DOCTYPE html> <html lang"en"> <head><!-- 设置字符编码为 UTF-8&#xff0c;支持多语言字符集 --><meta charset"UTF-8"><!-- 设置响应式视图&#xff0c;确保页面在不同设备上自适应显示 --&…...

解决Jupyter Notebook无法转化为Pdf的问题(基于Typora非常实用)

笔者在完成各项作业和做笔记时&#xff0c;经常用到jupyter notebook&#xff1b;其因为可以同时运行python并提供格式化的数字公式的输入方式&#xff0c;得到了广大用户的喜爱。 当我们想要将.ipynb文件导出为pdf时&#xff0c;有两种常用方法。 1.Ctrlp 2.通过File ->…...

矩阵转置        ‌‍‎‏

矩阵转置 C语言代码C 语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入一个n行m列的矩阵A&#xff0c;输出它的转置 A T A^T AT。 输入 第一行包含两个整数n和m&#xff0c;表示矩阵A的行数和列数。…...

【阅读笔记】Three ways ChatGPT helps me in my academic writing

Three ways ChatGPT helps me in my academic writing 论文地址 关于GPT进行润色的文章&#xff0c;摘取了里面的提示词做个记录。 1. Polishing academic writing&#xff08;学术润色&#xff09; 模板&#xff1a;I’m writing a paper on [topic] for a leading [discip…...

python学习笔记15 python中的类

上一篇我们介绍了python中的库 &#xff0c;学习了一些常见的内置库。详细内容可点击–>python学习笔记14 python中的库&#xff0c;常见的内置库&#xff08;random、hashlib、json、时间、os&#xff09; 这一篇我们来看一下python中的类 创建一个类 class 类的名称():de…...

3D数字化革新,探索博物馆的正确打开新方式!

3D数字化的发展&#xff0c;让博物馆也焕发新机&#xff0c;比如江苏省的“云上博物”&#xff0c;汇聚江苏全省博物馆展陈资源&#xff0c;采取线上展示和线下体验两种方式进行呈现的数字展览项目。在线上&#xff0c;用户可以通过H5或小程序进入“云上博物”数字展览空间&…...

金融数学在股市交易中的具体应用

### 1. 风险管理 - **VaR&#xff08;在险价值&#xff09;**: VaR是衡量投资组合潜在损失的指标。例如&#xff0c;如果一个投资组合的VaR为100万元&#xff0c;置信水平为95%&#xff0c;这意味着在未来的一个交易日内&#xff0c;有95%的可能性该投资组合的损失不会超过100…...

Springboot注解

什么是Spring Boot 注解 Spring Boot 注解是 Spring Boot 框架中的核心部分&#xff0c;它们用于简化配置和执行特定的编程任务。这些注解通常分为几个类别&#xff0c;包括用于 MVC 层的类注解、依赖注入注解、Web 开发常用注解、Spring Boot 常用注解、面向切面编程&#xf…...

CSS3 布局样式及其应用

深入探讨 CSS3 布局样式及其应用 引言 在现代网页设计中&#xff0c;CSS&#xff08;层叠样式表&#xff09;不仅是设计视觉样式的工具&#xff0c;也是布局的核心技术。CSS3引入了新的布局模型&#xff0c;其中Flexbox与Grid布局在满足复杂布局需求方面表现尤为出色。本文将…...

工业机器视觉-基于深度学习的水表表盘读数识别

字轮数字识别、指针读数识别&#xff08;角度换算&#xff09;、根据指针角度进行读数修正、根据最高位指针(x0.1)读数对字轮数字进行修正、得到最终读数。 基于深度学习的目标检测技术和OpenCV图像处理技术&#xff0c;可识别所有类型的表盘机械读数。...

kafka admin client 如何计算kafka发送速度

文章目录 方法 1&#xff1a;使用 AdminClient 获取消息数量示例代码&#xff1a;计算 Kafka 生产速度代码解释&#xff1a;解释&#xff1a;结果示例&#xff1a;方法 2&#xff1a;使用 Kafka JMX 监控JMX 指标&#xff1a; 总结&#xff1a; 要使用 Kafka Admin Client 来计…...

Ubuntu20.04 配置虚拟显示器和切回物理显示器

1、安装软件&#xff0c;用中软安装虚拟显示器软件 sudo apt-get install xserver-xorg-core-hwe-18.04 sudo apt-get install xserver-xorg-video-dummy2、添加配置文件 进入 /usr/share/X11/xorg.conf.d/ 文件夹下创建xorg.conf文件 # 创建xorg.conf文件 touch xorg.conf …...

【解决pycharm下site-packages文件标记为红色的问题】

怎么解决pycharm下site-packages文件标记为红色的问题 这是一个pycharm无法识别本地site-packages问题答案解释器设置路径如下&#xff1a; 这是一个pycharm无法识别本地site-packages问题 最近正在搭建一个python3requestsunittestHTMLTestRunner接口测试框架&#xff0c;发现…...

力扣-图论-2【算法学习day.52】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…...

项目-02-数学学院后台项目开发过程中的问题总结

目录 一、后台&#xff08;pc端&#xff0c;vue2&#xff09;1. dialog对话框被黑色蒙层盖住2. 将前端表格导出为word文档3. 在线查看、下载 .docx、.doc、.pdf文档 一、后台&#xff08;pc端&#xff0c;vue2&#xff09; 1. dialog对话框被黑色蒙层盖住 问题&#xff1a; d…...

数据结构-排序

目录 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 五、堆排 六、快速排序 1、hoare&#xff1a; 2、挖坑法&#xff1a; 3、前后指针法&#xff1a; 4、快排非递归 七、归并排序 1、递归写法&#xff1a; 2、非递归写法&#xff1a; 八、计数排序 九、排…...