MTK 相机功耗分析流程

news2024/11/28 20:39:10

f450048946ca3ab6e50f5a6bc8621ee2.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、硬件功耗
二、相机软件功耗
三、参考文档

一、硬件功耗

1.1 硬件信息

以下硬件信息最好提前获取到

模块备注
平台MTK or Qcom or sprd
CPU频率大中小核
L2 Cache sizeCPU缓存
DDRDRAM 类型,品牌
屏幕类型,品牌
相机Sensor型号,出图size,帧率,几M

1.2 硬件功耗拆解

硬件电流一般需要使用功耗拆解板测试,使用功耗拆解版软件+工具 可以拆解详细硬件模块的功耗,数据格式如下:

模块备注
0_BAT
1_BBCPU 功耗
2_MEMORY内存
3_LCM
4_AUDIO多媒体
5_CAMERA相机
6_RF射频
7_WIFIwifi
8_SENSOR传感器
9_SIMSIM 卡
10_USBUSB
11_PMU电源管理单元
12_FLASH_LED闪光灯

二、相机软件功耗

2.1 影响相机功耗的点

1.CPU 差异(MIPS百万指令每秒:可以准确的表现当时CPU的运算量)
2.Camera 模组差异
3.Camera APP 差异
4.Camera HAL 差异
5.Camera算法差异
6.PDAF差异
7.Camera Feature、SensorSize、RRZO Size、Camera FPS、P2 display size 、p2 preview callback size ,预览拍照 size 等差异

2.2 MTK 相机功耗拆解模板

181aca41423cda1aa5a0959029214a70.jpeg

2.3 Feature 确认

355d940e4e773d3cb4442f857400143d.jpeg

2.4 MTK Log 关键字

2.4.1 开启MTK 更多log的方法
C:\Users\platform-tools>adb shell setprop persist.vendor.debug.camera.log 3

C:\Users\platform-tools>adb shell pkill camera*

C:\Users\platform-tools>adb logcat -c
2.4.2 SensorSize、SensorMode、FPS、RRZO、IMGO、相机API

log 关键字:

P1NodeImp.*check_config|select size|connect call|imgoDefaultRequest |P1::ENQ

540ae751531497a8254d56685f569e6f.jpeg

e8482c002ef219d9ff90a9185fb8b08d.jpeg

01-01 08:29:27.088299 12026 12034 I CameraService:  connect call (PID -1 "com.android.camera", camera ID 0) and Camera API version 2
01-01 08:29:27.262593 12029 12029 I mtkcam-SensorSettingPolicy4cell: select size(4080x3072)@30  sensorMode:0 hdrSensorMode:0 hdrHalMode:0 HfpsMode:0 staggerScenarios:0
01-01 08:29:27.291538 12029 13095 I MtkCam/P1NodeImp: [check_config] [Cam::0]  - AppMeta[8] [TAG:0x10011 _0 #1]={ 0 } [TAG:0x800B000A _0 #1]={ 1 } [TAG:0x800B0012 _0 #1]={ 2 } [TAG:0x800B001D _1 #1]={ 1 } [TAG:0x800B0020 _1 #1]={ 1 } [TAG:0x800D0000 _1 #1]={ 1 } [TAG:0x900200B1 _0 #17]={ 99 111 109 46 111 112 108 117 115 46 99 97 109 101 114 97 0 } [TAG:0x900200B2 _0 #5]={ 78 85 76 76 0 }  - HalMeta[6] [TAG:0xC000001C _7 #1]={ 0x0 } [TAG:0xC003000A _1 #1]={ 0 } [TAG:0xC003001A _1 #1]={ 1 } [TAG:0xC003001C _1 #1]={ 0 } [TAG:0xC003001E _1 #1]={ 0 } [TAG:0xC0090004 _1 #1]={ 0 } 
01-01 08:29:27.291555 12029 13095 I MtkCam/P1NodeImp: [check_config] [Cam::0] Cam::0 Param[N:m0,p1,c3,q0,t0,b0,a0,i4,r0,w1,g0,s0,v10001000_B:p0,b0,t1,h0,u0,e1,l1,r1,f0,d0,q0,c0,f0,v0,s0,LL0,SSC0,SE0,ST0,SB0x0,O:0,OI:0] S(0,30,2,0,x2,4080x3072) R(0x2201-5104-15679488,1-0-1,1-0x2) D(b0,t1,h0) E(e1,l1,r1,u0,d0,q0,c0,f0,s0,p0,a0) M(m0x0,p0x1,c0x3,q0,t0,b1,a1,u1,d1,r0,i4,g0,s0,k0,v10001000,f0) Dm(1) Rc(0xb400006f895d61c0) Sh(0x0) SenCfg(1,0,1) Pool(IMG0x0,RRZ0x0,LCS0x0,RSS0x0,YUV0x0,CRZ10x0,CRZ20x0) MetaInAPP_0:0x80000000 MetaInHAL_1:0x100000018 MetaOutAPP_2:0x100000024 MetaOutHAL_3:0x10000001b ImgOutIMG_5:0x100000001(4080x3072)[0x2201] ImgOutIMGAP_6:0x2(4080x3072)[0x2201] ImgOutRRZ_7:0x100000003(1280x976)[0x2205] ImgOutLCS_8:0x100000004(680x510)[0x2401] ImgOutLCESHO_9:0x100000004(1548x1)[0x2401] ImgOutRSS_10:0x100000005(288x512)[0x2400] ImgOutYUVR1_14:0x100000014(640x488)[0x14] Meta(APP:8=8,HAL:6=6) RR(6) AA(0,0-4080x3072) TS(1) 
01-01 08:29:27.417072 12029 12100 I MtkCam/P1NodeImp: [setupAction] [Cam::0 R4 S4 E1 D0 O0 #4] [P1::ENQ][Num Q:1 M:1 F:0 R:0 @0][Type:1 Out:x110115 Rec:x0 Raw:1 Cap:0 Exe:1 Flush:x0] [Exp:0ns] [MetaCtrl][SCALER_CROP(1) (0,0_4080x3072) ][SENSOR_CROP(0)][RESIZER_SET(0)][RRZ:0-0%01_3](0xb400006f46df3100)(Buf)(1280x976)(S:2400:2342400 P:0x2ff5a3000 V:0x6f787ba000 F:0x2205)(x0)(Crop)(0,0-4080x3072)(1280x976) [LCS:2-0%01_3](0xb400006f4ab79500)(Buf)(680x510)(S:1360:693600 P:0x2faa13000 V:0x6f7870f000 F:0x2401)(x0) [IMG:4-0%01_3](0xb400006f4ab79400)(Buf)(4080x3072)(S:5104:15679488 P:0x2f7d81000 V:0x6f4b426000 F:0x2201)(x1)(Crop)(0,0-4080x3072)(4080x3072) [RSS:8-0%01_3](0xb400006f4ab79600)(Buf)(288x512)(S:288:147456 P:0x2ff7df000 V:0x6fd8529000 F:0x2400)(x0) [CRZ1:16-0%01_3](0xb400006f4ab79700)(Buf)(640x488)(S:1280:624640 P:0x2fa4e6000 V:0x6f78676000 F:0x14)(x0)(Crop)(0,0-4080x3072)(640x488) [LCESHO:20-0%01_3](0xb400006f4ab79800)(Buf)(1548x1)(S:3096:3096 P:0x2faabc560 V:0x6f787b8560 F:0x2401)(x0) [LMV](P:0x2ff203100 V:0x7063922100)
2.4.3 ZSL 是否支持

log 关键字:

MtkCam/ppl_context.*dump|ZslProc

能搜索到 ZslProc,或者image stream中看到provide 就标准支持zsl

d62f57348d47242f42bb5eb39b04d456.jpeg

01-01 08:29:27.268390 12029 12029 I MtkCam/ZslProc: [ZslProcessor] mTimeSource(1) mFakeShutterNs(1522451160782)
 01-01 08:29:27.268910 12029 12029 I MtkCam/ZslProc: [configure] mCustomLibHandle(0x0) mpCustomSelector(0x0)
 01-01 08:29:27.275592 12029 12029 I MtkCam/ppl_context: [dump] <image streams>
 01-01 08:29:27.275647 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0  960x720  OUT ImgFormat:0x1000(NV12) BufPlanes(strides/sizeInBytes):[ 960/691200 960/345600 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s0:d0:App:NV12:0|SW_READ_OFTEN|HW_TEXTURE AllocImgFormat:0x1000(NV12) AllocBufPlanes(strides/sizeInBytes):[ 960/691200 960/345600 ] Real:0x1000(NV12) Request:0x23(YCbCr_420_888) Override:0x23(YCbCr_420_888) Hal-Client-usage:0x103(0|SW_READ_OFTEN|HW_TEXTURE) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb40000705fc4f480 phy:-1
 01-01 08:29:27.275684 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0x1 4080x3072 OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 4096/12582912 4096/6297600 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s1:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 4096/12582912 4096/6297600 ] Real:0x11(YCrCb_420_SP) Request:0x23(YCbCr_420_888) Override:0x23(YCbCr_420_888) Hal-Client-usage:0x3(0|SW_READ_OFTEN) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb40000705fc4f2c0 phy:-1
 01-01 08:29:27.275719 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0x2 4080x3072 OUT ImgFormat:0x2201(BAYER10) BufPlanes(strides/sizeInBytes):[ 5120/15728640 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:8 d/s:0x00000001(ARBITRARY) s2:d0:App:RAW10:0|SW_READ_OFTEN AllocImgFormat:0x21(BLOB) AllocBufPlanes(strides/sizeInBytes):[ 15728640/15728640 ] Real:0x25(RAW10) Request:0x25(RAW10) Override:0x25(RAW10) Hal-Client-usage:0x3(0|SW_READ_OFTEN) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb40000705fc4f100 phy:-1
 01-01 08:29:27.275759 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0x3 1280x720  OUT ImgFormat:0x32315659(YV12) BufPlanes(strides/sizeInBytes):[ 1280/921600 640/230400 640/263040 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s3:d0:App:YV12:0|SW_READ_OFTEN AllocImgFormat:0x32315659(YV12) AllocBufPlanes(strides/sizeInBytes):[ 1280/921600 640/230400 640/263040 ] Real:0x32315659(YV12) Request:0x32315659(YV12) Override:0x32315659(YV12) Hal-Client-usage:0x3(0|SW_READ_OFTEN) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb40000705fc4ca80 phy:-1
 01-01 08:29:27.275797 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0x4 2560x1920 OUT ImgFormat:0x32315659(YV12) BufPlanes(strides/sizeInBytes):[ 2560/4915200 1280/1228800 1280/1232640 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s4:d0:App:YV12:0|SW_READ_OFTEN AllocImgFormat:0x32315659(YV12) AllocBufPlanes(strides/sizeInBytes):[ 2560/4915200 1280/1228800 1280/1232640 ] Real:0x32315659(YV12) Request:0x32315659(YV12) Override:0x32315659(YV12) Hal-Client-usage:0x3(0|SW_READ_OFTEN) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb40000705fc4c700 phy:-1
 01-01 08:29:27.275831 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000001 4080x3072 ImgFormat:0x2201(BAYER10) BufPlanes(strides/sizeInBytes):[ 5104/15679488 ] startOffset:0 bufStep:0 t:0 maxBufNum:10 minInitBufNum:0 Hal:Image:P1:Fullraw_main1 AllocImgFormat:0x21(BLOB) AllocBufPlanes(strides/sizeInBytes):[ 15679488/15679488 ] Private{exist?0 id:0}
 01-01 08:29:27.275855 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000003 1280x976  ImgFormat:0x2205(FG_BAYER10) BufPlanes(strides/sizeInBytes):[ 2400/2342400 ] startOffset:0 bufStep:0 t:0 maxBufNum:12 minInitBufNum:0 Hal:Image:P1:Resizeraw_main1 AllocImgFormat:0x2205(FG_BAYER10) AllocBufPlanes(strides/sizeInBytes):[ 2400/2342400 ] Private{exist?0 id:0}
 01-01 08:29:27.275879 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000004 696696x1    ImgFormat:0x21(BLOB) BufPlanes(strides/sizeInBytes):[ 696696/696696 ] startOffset:0 bufStep:0 t:0 maxBufNum:12 minInitBufNum:1 Hal:Image:STT_main1 AllocImgFormat:0x21(BLOB) AllocBufPlanes(strides/sizeInBytes):[ 696696/696696 ] Private{exist?1 id:2}
 01-01 08:29:27.275903 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000005  288x512  ImgFormat:0x2400(STA_BYTE) BufPlanes(strides/sizeInBytes):[ 288/147456 ] startOffset:0 bufStep:0 t:0 maxBufNum:7 minInitBufNum:1 Hal:Image:RSSO_main1 AllocImgFormat:0x2400(STA_BYTE) AllocBufPlanes(strides/sizeInBytes):[ 288/147456 ] Private{exist?0 id:0}
 01-01 08:29:27.275927 12029 12029 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000014  640x488  ImgFormat:0x14(YUY2) BufPlanes(strides/sizeInBytes):[ 1280/624640 ] startOffset:0 bufStep:0 t:0 maxBufNum:5 minInitBufNum:1 Hal:Image:P1FDYuv_main1 AllocImgFormat:0x14(YUY2) AllocBufPlanes(strides/sizeInBytes):[ 1280/624640 ] Private{exist?0 id:0}
2.4.4 P2-MDP output size

log 关键字:

prepareIORequest

852e3cff4adb894c2f8d39d5c73e7a41.jpeg

行 19713: 01-01 08:29:27.544387 12029 13124 D MtkCam/StreamingPipe/Pipe: [prepareIORequest]P2S cam 0 MWFrame:#1 MWReq:#1, frame 2-2  master/slave/fd(0/-1/0) ReqNo(2), feature=0x6008(TPI_ASYNC+3DNR+RSC), cycle(33), fps(n/a)=(30/30), ZoomROI((1280.000000x972.000000)@(0.000000,2.000000)) SFPIOMgr:[sID(0)--IMG(0x0/0),RRZ(0xb400006f46df3100/1),LCS(0xb400006f3c672300/1),LCSH(0xb400006f3c672400/1),pRSS(0xb400006f3c672600/1),cRSS(0xb400006f3c672500/1),RSSR2(0x0/0),FYuv(0x0/0),RYuv1(0x0/0),RYuv2(0x0/0),mAIYuv(0x0/0),HalI(0xb400006f3083a380),AppI(0xb400006f895cb1e8),AppDI(0xb400006f3083a3e0),AppOver(0x0)]{path(GEN),halO(0xb400006f2fb2b620),appO(0xb400006f2fb2aba0),Outs--[buf(0xb400006f3c672700/1)(960x720),tran(0),type(1), tar(disp), prof(0), crop(0.000000,2.000000,1280.000000x972.000000), flag(0x3)]Tuning--id(0)--[flag(37)]}
2.4.5 Camera HAL fps

log关键字

MtkCam/StreamingPipe/Timer.*Frame timer|connect call

1339b9e7eb5fa124fc128b6900048f45.jpeg

01-01 08:29:27.088299 12026 12034 I CameraService: connect call (PID -1 "com.android.camera", camera ID 0) and Camera API version 2
01-01 08:29:27.543389 12029 13123 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    1/   0][t  50][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 23/  3/ 20][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h 25/  0/ 16][e  0][r  0/  0][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps0.00/0.00/  5/ 30]
01-01 08:29:27.710407 12029 13123 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    2/   0][t 100][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 31/  2/ 28][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h 44/  0/ 42][e  0][r 22/ 23][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps9.43/9.43/  5/ 30]
01-01 08:29:27.710509 12029 13123 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    3/   0][t 110][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 37/  4/ 33][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h 27/  2/ 13][e  0][r 40/ 39][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps16.13/16.13/  5/ 30]
01-01 08:29:27.770982 12029 13123 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    5/   0][t 114][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 36/  2/ 32][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h 23/  2/ 20][e  0][r 23/ 23][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps20.51/20.51/  5/ 30]
01-01 08:29:27.780941 12029 13123 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    6/   0][t  99][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 30/ 10/ 20][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h 36/  1/ 24][e  0][r 21/ 21][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps22.52/22.52/  5/ 30]
01-01 08:29:27.800470 12029 13123 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    7/   0][t  89][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 33/  4/ 28][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h  9/  2/  6][e  0][r 22/ 22][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps24.79/24.79/  5/ 30]
01-01 08:29:27.801143 12029 13123 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    8/   0][t  76][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 27/  5/ 22][tun  0/  0][msf  0/  0][vnr  0/  0/  0][am  0][b  0/  0][tpi(  0/  0)/(  0/  0)/(  0/  0)][vmdp_A  0/  0 vmdp_B  0/  0][h 19/  1/ 16][e  0][r 22/ 22][w_A  0/  0/  0/  0 w_B  0/  0/  0/  0][x  0][disp  0/  0][async  0/  0][p2sm  0/  0/  0][fps26.82/26.82/  5/ 30]

三、参考文档

MTK相机功耗优化

【腾讯文档】Camera学习知识库
https://docs.qq.com/doc/DSWZ6dUlNemtUWndv

友情推荐:

Android 开发干货集锦

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

84051af9dcf18c920acbb8a4f63c8cbe.jpeg

点击阅读原文,为大佬点赞!

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

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

相关文章

【Python】Python系列教程-- Python3 列表(十二)

文章目录 前言访问列表中的值更新列表删除列表元素Python列表截取与拼接嵌套列表列表比较Python列表函数&方法 前言 往期回顾&#xff1a; Python系列教程–Python3介绍&#xff08;一&#xff09;Python系列教程–Python3 环境搭建&#xff08;二&#xff09;Python系列…

第一次使用Arduino IDE(mac os) 配置合宙ESP32C3(9.9包邮)且烧录代码的历程

目录 Arduino 配置ESP32 1. Arduino 请更新至最新版 2.科学上网 3.添加开发板管理URL 配置 1.连接开发板 2.Arduino IDE 的配置 3.烧录代码 Arduino 配置ESP32 1. Arduino 请更新至最新版 2.科学上网 3.添加开发板管理URL 首选项&#xff0c;编辑并添加 https://…

医疗实施-DRG基本知识

医疗实施-DRG基本知识 DRG常见名词定义&#xff1a; DRG&#xff08;Diagnosis Related Groups&#xff09;:疾病诊断相关分组&#xff0c;是用于衡量医疗服务质量效率以及进行医保支付的一个重要工具。DRG 实质上是一种病例组合分类方案&#xff0c;即根据年龄、疾病诊断、合…

网络安全学术顶会——NDSS 2023 议题清单、摘要与总结(下)

51、Let Me Unwind That For You: Exceptions to Backward-Edge Protection 通过堆栈缓冲区溢出进行反向边控制流劫持是软件利用的终极目标。直接控制关键的堆栈数据和劫持目标使得攻击者特别喜欢这种利用策略。因此&#xff0c;社区已经部署了强大的反向边保护&#xff0c;如影…

Executor框架的成员

Executor框架的成员 &#xff08;1&#xff09;ThreadPoolExecutorThreadPoolExecutor通常使用工厂类Executors来创建。Executors可以创建3种类型的ThreadPoolExecutor&#xff1a;SingleThreadExecutor、FixedThreadPool和CachedThreadPool。1&#xff09; FixedThreadPool 。…

chatgpt赋能python:Python取某几行-掌握技巧提高效率

Python取某几行-掌握技巧提高效率 Python是一种简单易学、高效编程的语言。它也是一种非常强大的语言&#xff0c;适用于许多不同领域的应用程序。在处理文本文件和数据集时&#xff0c;Python的优势变得尤为突出。在这篇文章中&#xff0c;我们将重点介绍如何使用Python取某几…

Linux【网络编程】之深入理解UDP协议

Linux【网络编程】之深入理解UDP协议 一、传输层二、再谈端口号2.1 端口号划分 三、查看网络状态---netstat四、查看服务器进程ID---pidof五、UDP协议端格式5.1 理解报头 六、UDP的特点七、UDP的缓冲区问题八、常见基于UDP的应用层协议 在前面的几篇文章中我主要偏向于应用层介…

30分钟!从0到1,用ChatGPT+Python做一个AI起名网!

坚持6年&#xff0c;第629篇原创 现在利用ChatGPT可以做很多很多事情&#xff0c;而对于我们程序员来说&#xff0c;是机会也是挑战&#xff01;因为原来很多工种&#xff0c;很多技术问题现在可以用非常廉价的技术去获取&#xff0c;成本更低了&#xff01; 打个比方&#xff…

【LeetCode】《LeetCode 101》第十章:神奇的位运算

文章目录 10.1 常用技巧10.2 位运算基础问题461. 汉明距离&#xff08;简单&#xff09;190. 颠倒二进制位&#xff08;简单&#xff09;136. 只出现一次的数字&#xff08;简单&#xff09; 10.3 二进制特性342. 4的幂&#xff08;简单&#xff09;318. 最大单词长度乘积&…

Vue+springboot舞蹈基础课程视频学习分享平台的实现和开发

基于java语言设计并实现了舞蹈基础数据平台。该系统基于B/S即所谓浏览器/服务器模式&#xff0c;应用Springboot框架&#xff0c;选择MySQL作为后台数据库。系统主要包括首页、个人中心、用户管理、舞蹈类型管理、舞蹈视频管理、用户留言、管理员管理、系统管理等功能模块。 重…

springboot+vue+elementui计算机专业课程选课管理系统vue

本系统的主要任务就是负责对学生选课。主要用户为老师、学生,其中,学生可对自己的信息进行查询,可以进行选课,也可以进行删除已选课程,教师可对学生和课程的信息进行查询&#xff0c;教师拥有所有的权限,可以添加删除学生信息。系统提供界面,操作简单。 为实现这些功能,系统一个…

山区特殊场景的倾斜摄影三维模型数据出现几何坐标偏差原因,如何修正这些坐标偏差?

山区特殊场景的倾斜摄影三维模型数据出现几何坐标偏差原因&#xff0c;如何修正这些坐标偏差&#xff1f; 山区倾斜摄影三维模型数据出现几何坐标偏差的原因可能有很多&#xff0c;其中一些常见的原因包括不同地图投影系统之间的转换问题、GPS定位误差、测量设备精度问题、摄影…

C++入门:引用、内联函数、auto关键字

目录 一&#xff1a;引用 (1)概念 (2)使用 (3)引用的特性 (4)引用的使用场景 【1】做参数 【2】做返回值 (5) 引用的权限问题 (6)引用和指针的区别 【1】引用的底层实现 【2】指针和引用的一些不同 二&#xff1a;内联函数 (1)宏函数 【1】 宏的优点 【2】宏的缺…

【MyBatis】1、MyBatis 核心配置文件、多表查询、实体映射文件 ......

目录 一、学习内容二、数据库事务三、JDBC 的事务管理四、事务的四大特性五、MyBatis六、MyBatis 核心配置文件和基本使用七、查询 student 表(1) 实体映射文件 mapper(2) 读取核心配置文件, 拿到 SqlSession 八、字段和属性名映射(1) mapUnderscoreToCamelCase(2) 完整的 sett…

【Linux】基本开发工具包使用

目录 一&#xff0c; yum ——linux软件包管理器 1. 软件包是啥子&#xff1f; 2. yum基本使用 1. 步骤&#xff1a; 2. 开发工具推荐&#xff08;centos 7.6&#xff09; 二&#xff0c;vim —— linux文本编辑器 1. Normal mode —— 命令模式(记不住没关系&#x…

C#,码海拾贝(33)——约化“一般实矩阵”为“赫申伯格矩阵”的“初等相似变换法”之C#源代码,《C#数值计算算法编程》源代码升级改进版

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 矩阵类 /// 作者&#xff1a;周长发 /// 改进&#xff1a;深度混淆 /// https://blog.csdn.net/beijinghorn /// </summary> public partial class Matrix {…

2023CISCN初赛

两天时间题量还挺大的&#xff0c;简单记录 文章目录 misc签到卡pyshell国粹被加密的生产流量网络安全人才实战能力评价 webunzipdumpitBackendService reversebabyRE pwnfuncanary烧烤摊儿 crypto基于国密SM2算法的密文分发可信度量Sign_in_passwd misc 签到卡 就是做了个p…

CoreDX DDS应用开发指南(2)安装和应用开发

2 CoreDX DDS安装 2.1 系统支持 2.1.1 支持的CPU架构和操作系统 2.1.2 支持的语言和编译器

Linux 实操篇-进程管理(重点)

Linux 实操篇-进程管理(重点) 基本介绍 在LINUX 中&#xff0c;每个执行的程序都称为一个进程。每一个进程都分配一个ID 号(pid,进程号)。>windows > linux每个进程都可能以两种方式存在的。前台与后台&#xff0c;所谓前台进程就是用户目前的屏幕上可以进行操作的。后…

[BJDCTF 2020]easy_md5

TL;DR php弱类型比较md5碰撞绕过&#xff0c;强类型比较传数组绕过ffifdyop md5后的值字符串值为’or’6<乱码>&#xff0c;可用于构造sql注入的bypass没思路了看看网页源代码、看看响应头 过程 拿到题目链接&#xff0c;放到burp里&#xff0c;发现响应头中的提示&am…