RK356X 解除UVC摄像头预览分辨率1080P限制

news2024/9/30 17:30:10

平台

  RK3566 + Android 11

概述

在这里插入图片描述

    UVC:
USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头、数字摄影机、模拟视频转换器、电视卡及静态视频相机。

测试代码:

	Camera cam = Camera.open(CAMERA_ID);
	Camera.Parameters param = cam.getParameters();
	List<Camera.Size> sizes = param.getSupportedPreviewSizes();

打印出来后显示支持的预览分辨率如下:

D  startPreview support preview 640x360
D  startPreview support preview 640x480
D  startPreview support preview 960x540
D  startPreview support preview 800x600
D  startPreview support preview 1280x720
D  startPreview support preview 1280x960
D  startPreview support preview 1920x1080
D  startPreview support preview 1600x1200

然而,把摄像头接入到PC上,不管是LINUX还是WINDOWS,会发现实际支持的最大预览分辨率是:3840x2160
缺少的分辨率哪去了?

分析

摄像头部分的架构比较复杂,整理几个相关的源码目录:

# SDK 接口
> frameworks/base/core/java/android/hardware/Camera.java
> frameworks/base/core/jni/android_hardware_Camera.cpp

# 上层 Camera 服务
> frameworks/av/camera/

# HAL层
> hardware/rockchip/camera
> hardware/interfaces/camera/

# 配置文件,对应USB和CSI之类的摄像头配置
# 包含了支持分辨率,闪光灯等等的一些特性。
> device/rockchip/common/external_camera_config.xml
> hardware/rockchip/camera/etc/camera/

烧录到主板后相关的一些文件目录

> rk3568_r:/ # ll /vendor/etc/camera/                                                                                  
total 948
-rw-r--r-- 1 root root    3044 2023-04-18 09:55 README.txt
-rw-r--r-- 1 root root  152818 2023-04-18 09:55 camera3_profiles.xml
-rw-r--r-- 1 root root  166244 2023-04-18 09:55 camera3_profiles_default.xml
-rw-r--r-- 1 root root   14744 2023-04-18 09:55 camera3_profiles_rk1126.xml
-rw-r--r-- 1 root root   48811 2023-04-18 09:55 camera3_profiles_rk3126c.xml
-rw-r--r-- 1 root root   64987 2023-04-18 09:55 camera3_profiles_rk3288.xml
-rw-r--r-- 1 root root   61800 2023-04-18 09:55 camera3_profiles_rk3326.xml
-rw-r--r-- 1 root root   98549 2023-04-18 09:55 camera3_profiles_rk3368.xml
-rw-r--r-- 1 root root   64766 2023-04-18 09:55 camera3_profiles_rk3399.xml
-rw-r--r-- 1 root root   26451 2023-04-18 09:55 camera3_profiles_rk3399_1608.xml
-rw-r--r-- 1 root root   77820 2023-04-18 09:55 camera3_profiles_rk3399pro.xml
-rw-r--r-- 1 root root  152818 2023-04-18 09:55 camera3_profiles_rk356x.xml
-rw-r--r-- 1 root root    2875 2023-04-18 09:55 graph_descriptor.xml
-rw-r--r-- 1 root root     145 2023-04-18 09:55 reset_camera.sh
drwxr-xr-x 2 root shell   4096 2023-04-18 09:55 rkisp1
drwxr-xr-x 2 root shell   4096 2023-04-18 09:55 rkisp2

# UVC 的配置
> /vendor/etc/external_camera_config.xml

先用v4l2 工具看下基本信息

## 当前的设备列表
rk3566:/ # ll /dev/video*                                                                                            
crw-rw---- 1 media camera 81,   0 2023-04-14 09:44 /dev/video0
crw-rw---- 1 media camera 81,   1 2023-04-14 09:44 /dev/video1
crw-rw---- 1 media camera 81,  10 2023-04-14 09:44 /dev/video10
crw-rw---- 1 media camera 81,  11 2023-04-14 09:44 /dev/video11
crw-rw---- 1 media camera 81,  12 2023-04-14 09:44 /dev/video12
crw-rw---- 1 media camera 81,  13 2023-04-14 09:44 /dev/video13
crw-rw---- 1 media camera 81,  14 2023-04-14 09:44 /dev/video14
crw-rw---- 1 media camera 81,  15 2023-04-14 09:44 /dev/video15
crw-rw---- 1 media camera 81,   2 2023-04-14 09:44 /dev/video2
crw-rw---- 1 media camera 81,   3 2023-04-14 09:44 /dev/video3
crw-rw---- 1 media camera 81,   4 2023-04-14 09:44 /dev/video4
crw-rw---- 1 media camera 81,   5 2023-04-14 09:44 /dev/video5
crw-rw---- 1 media camera 81,   6 2023-04-14 09:44 /dev/video6
crw-rw---- 1 media camera 81,   7 2023-04-14 09:44 /dev/video7
crw-rw---- 1 media camera 81,   8 2023-04-14 09:44 /dev/video8
crw-rw---- 1 media camera 81,   9 2023-04-14 09:44 /dev/video9

# 设备信息
rk3566_r:/ # v4l2-ctl --list-devices                                                                                 
rkisp-statistics (platform: rkisp):
	/dev/video12
	/dev/video13

rkcif (platform:rkcif_mipi_lvds):
	/dev/video0
	/dev/video1
	/dev/video2
	/dev/video3
	/dev/video4

rkisp_mainpath (platform:rkisp-vir0):
	/dev/video5
	/dev/video6
	/dev/video7
	/dev/video8
	/dev/video9
	/dev/video10
	/dev/video11

UC40A Audio: UC40A Video (usb-xhci-hcd.1.auto-1.3):
	/dev/video14
	/dev/video15

# 查看指定设备信息
rk3566_r:/ # v4l2-ctl -D -d /dev/video15                                                                             
Driver Info:
	Driver name      : uvcvideo
	Card type        : UC40A Audio: UC40A Video
	Bus info         : usb-xhci-hcd.1.auto-1.3
	Driver version   : 4.19.193
	Capabilities     : 0x84a00001
		Video Capture
		Metadata Capture
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x04a00000
		Metadata Capture
		Streaming
		Extended Pix Format
Media Driver Info:
	Driver name      : uvcvideo
	Model            : UC40A Audio: UC40A Video
	Serial           : 01.00.00
	Bus info         : usb-xhci-hcd.1.auto-1.3
	Media version    : 4.19.193
	Hardware revision: 0x00000902 (2306)
	Driver version   : 4.19.193
Interface Info:
	ID               : 0x03000005
	Type             : V4L Video
Entity Info:
	ID               : 0x00000004 (4)
	Name             : UC40A Audio: UC40A Video
	Function         : V4L2 I/O

# 设备支持格式
rk3566_r:/ # v4l2-ctl -d /dev/video14  --list-formats                                                                
ioctl: VIDIOC_ENUM_FMT
	Index       : 0
	Type        : Video Capture
	Pixel Format: 'MJPG' (compressed)
	Name        : Motion-JPEG

	Index       : 1
	Type        : Video Capture
	Pixel Format: 'YUYV'
	Name        : YUYV 4:2:2


# 设备支持分辨率
rk3566_r:/ # v4l2-ctl -d /dev/video14  --list-framesizes=YUYV                                                        
ioctl: VIDIOC_ENUM_FRAMESIZES
	Size: Discrete 2048x1536
	Size: Discrete 640x480
	Size: Discrete 3840x2160
	Size: Discrete 2592x1944
	Size: Discrete 2688x1512
	Size: Discrete 1920x1080
	Size: Discrete 1600x1200
	Size: Discrete 1280x960
	Size: Discrete 1280x720
	Size: Discrete 960x540
	Size: Discrete 800x600
	Size: Discrete 640x360

结论:硬件及驱动到HAL都是正常


忽略中间漫长的排查过程, 直奔主题:
预览的限制主要存在于HAL和framework层, 至少RK的SDK是这样的,其他平台请勿对号入座。

  1. HAL

/vendor/etc/external_camera_config.xml 中的 FpsList
注释:List of maximum fps for various output sizes
解决的方法是增加对应缺少的分辨率,如:<Limit width=“3840” height=“2160” fpsBound=“30.0” />

<ExternalCamera>
    <Provider>
        <ignore> <!-- Internal video devices to be ignored by external camera HAL -->
        <!-- <id>0</id> -->  <!-- No leading/trailing spaces -->
        </ignore>
    </Provider>
    <!-- See ExternalCameraUtils.cpp for default values of Device configurations below-->
    <Device>
        <!-- Max JPEG buffer size in bytes-->
        <MaxJpegBufferSize  bytes="24883200"/>  <!-- 3MB (~= 1080p YUV420) -->
        <!-- Size of v4l2 buffer queue when streaming >= 30fps -->
        <!-- Larger value: more request can be cached pipeline (less janky) -->
        <!-- Smaller value: use less memory -->
        <NumVideoBuffers  count="4"/>
        <!-- Size of v4l2 buffer queue when streaming < 30fps -->
        <NumStillBuffers  count="2"/>
        <!-- List of maximum fps for various output sizes -->
        <!-- Any image size smaller than the size listed in Limit row will report
        fps (as minimum frame duration) up to the fpsBound value. -->
        <FpsList>
            <!-- width/height must be increasing, fpsBound must be decreasing-->
            <Limit  width="176" height="144" fpsBound="60.0" />
            <Limit  width="176" height="144" fpsBound="30.0" />
            <Limit  width="176" height="144" fpsBound="20.0" />
            <Limit  width="176" height="144" fpsBound="15.0" />
            <Limit  width="320" height="240" fpsBound="60.0" />
            <Limit  width="320" height="240" fpsBound="30.0" />
            <Limit  width="320" height="240" fpsBound="20.0" />
            <Limit  width="320" height="240" fpsBound="15.0" />
            <Limit  width="352" height="288" fpsBound="30.0" />
            <Limit  width="352" height="288" fpsBound="20.0" />
            <Limit  width="352" height="288" fpsBound="15.0" />
            <Limit  width="640" height="480" fpsBound="60.0" />
            <Limit  width="640" height="480" fpsBound="30.0" />
            <Limit  width="640" height="480" fpsBound="20.0" />
            <Limit  width="640" height="480" fpsBound="15.0" />
            <Limit  width="640" height="480" fpsBound="10.0" />
            <Limit  width="800" height="600" fpsBound="30.0" />
            <Limit  width="800" height="600" fpsBound="20.0" />
            <Limit  width="800" height="600" fpsBound="15.0" />
            <Limit  width="1024" height="768" fpsBound="30.0" />
            <Limit  width="1024" height="768" fpsBound="20.0" />
            <Limit  width="1024" height="768" fpsBound="15.0" />
            <Limit  width="1024" height="768" fpsBound="10.0" />
            <Limit  width="1280" height="720" fpsBound="60.0" />
            <Limit  width="1280" height="720" fpsBound="30.0" />
            <Limit  width="1280" height="720" fpsBound="20.0" />
            <Limit  width="1280" height="720" fpsBound="15.0" />
            <Limit  width="1280" height="720" fpsBound="10.0" />
            <Limit  width="1280" height="800" fpsBound="30.0" />
            <Limit  width="1280" height="800" fpsBound="20.0" />
            <Limit  width="1280" height="800" fpsBound="15.0" />
            <Limit  width="1280" height="960" fpsBound="30.0" />
            <Limit  width="1280" height="960" fpsBound="20.0" />
            <Limit  width="1280" height="960" fpsBound="15.0" />
            <Limit  width="1280" height="1024" fpsBound="30.0" />
            <Limit  width="1280" height="1024" fpsBound="20.0" />
            <Limit  width="1280" height="1024" fpsBound="15.0" />
            <Limit  width="1600" height="1200" fpsBound="30.0" />
            <Limit  width="1600" height="1200" fpsBound="15.0" />
            <Limit  width="1920" height="1080" fpsBound="30.0" />
            <Limit  width="1920" height="1080" fpsBound="15.0" />
            <Limit  width="2048" height="1536" fpsBound="30.0" />
            <Limit  width="2592" height="1944" fpsBound="30.0" />
            <Limit  width="2592" height="1944" fpsBound="15.0" />
            <Limit  width="2592" height="1944" fpsBound="10.0" />
            <Limit  width="2592" height="1944" fpsBound="5.0" />
            <Limit  width="2688" height="1512" fpsBound="30.0" />
            <Limit  width="3840" height="2160" fpsBound="30.0" />
            <!-- image size larger than the last entry will not be supported-->
        </FpsList>
        <!-- orientation -->
        <Orientation  degree="90"/>
    </Device>
</ExternalCamera>

hardware/interfaces/camera/device/3.4/default/RgaCropScale.cpp

diff --git a/hardware/interfaces/camera/device/3.4/default/RgaCropScale.cpp b/hardware/interfaces/camera/device/3.4/default/RgaCropScale.cpp
index 23d018fb6d..4829d1d664 100644
--- a/hardware/interfaces/camera/device/3.4/default/RgaCropScale.cpp
+++ b/hardware/interfaces/camera/device/3.4/default/RgaCropScale.cpp
@@ -21,21 +21,21 @@
 namespace android {
 namespace camera2 {
 
-#if (defined(TARGET_RK32) || defined(TARGET_RK3368))
+//#if (defined(TARGET_RK32) || defined(TARGET_RK3368))
 #define RGA_VER (2.0)
 #define RGA_ACTIVE_W (4096)
 #define RGA_VIRTUAL_W (4096)
 #define RGA_ACTIVE_H (4096)
 #define RGA_VIRTUAL_H (4096)
 
-#else
-#define RGA_VER (1.0)
-#define RGA_ACTIVE_W (2048)
-#define RGA_VIRTUAL_W (4096)
-#define RGA_ACTIVE_H (2048)
-#define RGA_VIRTUAL_H (2048)
+//#else
+//#define RGA_VER (1.0)
+//#define RGA_ACTIVE_W (2048)
+//#define RGA_VIRTUAL_W (4096)
+//#define RGA_ACTIVE_H (2048)
+//#define RGA_VIRTUAL_H (2048)
 
-#endif
+//#endif

这部分不修改会导致以下问题:

and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...ternal-service  I  uid=1047(cameraserver) ExtCamOut identical 2 lines
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
com...d.quickpreview  I  Background concurrent copying GC freed 306(35KB) AllocSpace objects, 3(35MB) LOS objects, 48% free, 25MB/49MB, paused 862us total 143.804ms
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...er@2.1-service  I  [File] : hardware/rockchip/libgralloc/bifrost/src/core/mali_gralloc_formats.cpp; [Line] : 1858; [Func] : rk_gralloc_select_format;
                         AFBC IS disabled for fb_target_layer.
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...ternal-service  I  uid=1047(cameraserver) ExtCamOut identical 2 lines
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...ternal-service  D  @debugShowFPS(1171): Camera 2176 Frames, 30.105 FPS
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...ternal-service  I  uid=1047(cameraserver) ExtCamOut identical 2 lines
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...er@2.1-service  I  [File] : hardware/rockchip/libgralloc/bifrost/src/core/mali_gralloc_formats.cpp; [Line] : 1858; [Func] : rk_gralloc_select_format;
                         AFBC IS disabled for fb_target_layer.
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...ternal-service  I  uid=1047(cameraserver) ExtCamOut identical 4 lines
and...ternal-service  E  (dst_width > RGA_VIRTUAL_W) || (dst_height > RGA_VIRTUAL_H), switch to arm 
and...er@2.1-service  I  [File] : hardware/rockchip/libgralloc/bifrost/src/core/mali_gralloc_formats.cpp; [Line] : 1858; [Func] : rk_gralloc_select_format;
                                                                                AFBC IS disabled for fb_target_layer.
  1. Framework

frameworks/av/services/camera/libcameraservice/api1/client2/Parameters.h
上层接口解除1080P的限制.

diff --git a/frameworks/av/services/camera/libcameraservice/api1/client2/Parameters.h b/frameworks/av/services/camera/libcameraservice/api1/client2/Parameters.h
index 3a709c9791..2ee332a8c8 100644
--- a/frameworks/av/services/camera/libcameraservice/api1/client2/Parameters.h
+++ b/frameworks/av/services/camera/libcameraservice/api1/client2/Parameters.h
@@ -199,11 +199,11 @@ struct Parameters {
     // Max preview size allowed
     // This is set to a 1:1 value to allow for any aspect ratio that has
     // a max long side of 1920 pixels
-    static const unsigned int MAX_PREVIEW_WIDTH = 1920;
-    static const unsigned int MAX_PREVIEW_HEIGHT = 1920;
+    static const unsigned int MAX_PREVIEW_WIDTH = 3840;
+    static const unsigned int MAX_PREVIEW_HEIGHT = 2160;
     // Initial max preview/recording size bound
-    static const int MAX_INITIAL_PREVIEW_WIDTH = 1920;
-    static const int MAX_INITIAL_PREVIEW_HEIGHT = 1080;
+    static const int MAX_INITIAL_PREVIEW_WIDTH = 3840;
+    static const int MAX_INITIAL_PREVIEW_HEIGHT = 2160;
     // Aspect ratio tolerance
     static const CONSTEXPR float ASPECT_RATIO_TOLERANCE = 0.001;
     // Threshold for slow jpeg mode


编译验证

# 编译
mmm hardware/interfaces/camera/device/3.4/default/
# push 到主板
#adb push out/target/product/rk3566_r/vendor/lib64/hw/camera.rk30board.so /vendor/lib64/hw/
#adb push out/target/product/rk3566_r/vendor/lib/hw/camera.rk30board.so /vendor/lib/hw/
adb push out/target/product/rk3566_r/vendor/lib/camera.device@3.4-external-impl.so /vendor/lib/
adb push out/target/product/rk3566_r/vendor/lib64/camera.device@3.4-external-impl.so /vendor/lib64/

# 编译
mmm /disk4/anson/rk3568_a11/frameworks/av/services/camera/libcameraservice/:libcameraservice
adb push out/target/product/rk3566_r/system/lib/libcameraservice.so  /system/lib/
adb push out/target/product/rk3566_r/system/lib64/libcameraservice.so /system/lib64/

小插曲

RK的Linux 烧录工具

# 低版本可以烧录 system.img
# -s system.img
# 新版本的SDK中,烧录super.img
Linux_Upgrade_Tool_v1.65/upgrade_tool DI -super super.img

# 烧录完整固件
Linux_Upgrade_Tool_v1.65/upgrade_tool UF update.img

参考

Ubuntu下查看usb摄像头不同压缩格式支持的分辨率

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

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

相关文章

详解C++中的命名空间(namespace)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】 目录C关键字(C98)命名冲突命名空间命名空间的定义局部域和全局域的关系命名空间域小结命名空间中可以定义哪些内容嵌套命名空间…

音视频开发常用分析工具介绍

综述 工欲善其事&#xff0c;必先利其器&#xff1b;兵马未到&#xff0c;粮草先行。 在音视频开发过程中&#xff0c;利用工具可以更方便、更直观、更快捷的分析音视频的数据&#xff0c;便于开发过程中分析、调试和解决问题。 现总结一些音视频开发过程中常用的分析工具。…

Android library native 代码不能调试解决方法汇总

android native开发会碰到native代码无法调试问题&#xff0c;而app主工程中的native代码是可以调试的。如果项目中存在多个module&#xff0c;那么在application模块中依赖library模块&#xff0c;并且library模块中有native代码的时候&#xff0c;当debug library模块中的这些…

如何高效获取数据价值?

导读&#xff1a;上一篇《大数据架构知识点详解&#xff1a;国产数据库创新、湖仓一体实践…》中我们阐述了四大体系之数据架构体系&#xff0c;解释了云原生大数据实践、国产数据库创新变革、湖仓一体落地实践、OLAP 发展趋势四个论坛的架构思路。 接下来是四大体系之二数据效…

【Linux】2、Linux 的基本命令

目录一、Linux 的目录结构二、Linux 命令三、ls 命令四、cd五、pwd六、特殊路径符七、mkdir八、touch九、cat 命令十、more十一、cp十二、mv十三、rm十四、which十五、find十六、grep十七、wc十八、管道符十九、echo二十、重定向符二十一、tail 命令一、Linux 的目录结构 &…

直播观看指南|SOFA 五周年,Live Long and Prosper!

SOFA 五周年活动将于 2023 年 4 月 15 日&#xff08;周六&#xff09;12:00 在北京朝阳区恒通国际创新园 C6 栋 C work 举行&#xff01;期待社区的小伙伴和对开源感兴趣的小伙伴们一起来现场玩哦&#xff5e;当然啦&#xff0c;不能来现场的小伙伴们也别担心&#xff0c;我们…

第二十一章 案例TodoList之新增数据

前一小节&#xff0c;我们已经完成了数据的动态展示&#xff0c;现在我们要完成数据的动态添加。如何添加呢&#xff1f;肯定是要通过Header组件来添加&#xff0c;但是Header组件如何将收集的任务数据&#xff0c;交给App组件并更新状态数据呢&#xff1f; 在Header组件中收集…

实现vue的条件渲染

我的需求是根据设备不同的状态 渲染不同的标签。设备状态用device_State表示。 在线上面是一个vue的标签&#xff0c;我有一个数据state &#xff0c;如何让这个标签根据数据的取值 &#xff0c;修改内容&#xff0c;如state1时&#xff0c;标签修改为离线 要根据数据的取值动态…

Python曲线拟合详解

文章目录入门参数多元拟合入门 scipy.optimize中&#xff0c;curve_fit函数可调用非线性最小二乘法进行函数拟合&#xff0c;例如&#xff0c;现在有一个高斯函数想要被拟合 yaexp⁡−(x−bc)2y a\exp-(\frac{x-b}{c})^2 yaexp−(cx−b​)2 则调用方法如下 import numpy as…

STM32基础代码学习G070CB串口透传调试(出厂默认)代码

先下载 一定记得回车换行勾选 可以参考“Quectel_BC260Y-CN_AT命令手册_V1.0.pdf” ATCGMI 查询制造商信息 ATCGMM 查询模块型号 ATCSQ 上报信号质量 ATCGATT? PS 域附着或去附着查看板子是否正常 再激活 ATQIACT1&#xff0c;最后查询ATQIACT? 配置阿里云mqtt atqmtc…

【从零开始学Skynet】实战篇《球球大作战》(十三):场景代码设计(下)

1、主循环 《球球大作战》是一款服务端运算的游戏&#xff0c;一般会使用主循环程序结构&#xff0c;让服务端处理战斗逻辑。如下图所示&#xff0c;图中的balls和foods代表服务端的状态&#xff0c;在循环中执行“食物生成”“位置更新”和“碰撞检 测”等功能&#xff0c;从而…

学习笔记 —— C++并行库OpenMP

ContentsInstallationImplement1、一个最简单的OpenMP代码&#xff1a;2、如何规定线程数2、如何设置OpenMP分配线程的schedule3、 冲突避免机制 --Reduction&#xff08;规约&#xff09;Discovery写在最前面&#xff1a; 并行化虽好&#xff0c;但并不是所有任务在并行化后都…

【MySQL学习】MySQL表的操作

目录一、表的创建1.1 创建表的语法1.2 案例二、查看表结构三、查看建表语句四、修改表4.1 修改表的语法4.2 修改案例五、删除表一、表的创建 1.1 创建表的语法 语法&#xff1a; CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set…

透视Android系统AMS、PMS和WMS,了解开发中的重要角色

原理 在Android系统中&#xff0c;AMS&#xff08;Activity Manager Service&#xff09;、PMS&#xff08;PackageManager Service&#xff09;和WMS&#xff08;Window Manager Service&#xff09;是三个重要的系统服务&#xff0c;它们负责管理应用程序的生命周期、处理应…

Backblaze + Cloudflare + Picgo 打造免费顺畅的图床体验

本文xlog地址&#xff1a;https://x.cosine.ren/backblaze-cloudflare-picgo-imgbed hexo 地址&#xff1a;https://ysx.cosine.ren/backblaze-cloudflare-picgo-imgbed 同步发布 最近有用到oss存储的需求&#xff0c;跟群友调研了下国内 & 国外的 oss 后&#xff0c;深感找…

大爽pygame入门教程 第一节 基础知识

作者自我介绍&#xff1a;大爽歌, b站小UP主 &#xff0c;编程1对1辅导老师 本节掌握要点&#xff1a; 文本, 图形, 键鼠事件&#xff0c;动态展示。 一、实现基础窗口 0 - 新建文件 新建001.py文件&#xff0c;内容如下 import pygamepygame.init() # pygame 初始化&#x…

什么是远程桌面连接?如何操作远程桌面?

随着时代越来越信息化、智能化、自动化&#xff0c;越来越多的企业和个人开始使用远程办公软件进行办公。其中远程桌面连接是一种非常流行的办公方式。那么&#xff0c;什么是远程桌面连接?如何操作远程桌面? 一、什么是远程桌面连接? 远程桌面连接是一种远程访问计算机的…

nginx缓冲区关闭导致下载失败问题-方案篇

问题描述 导出操作。小于200k的excel正常下载&#xff0c;大于200K的下载失败&#xff0c;异常信息如下: Cannot forward to error page for request [/xx/xx] as the response has already been committed. As a result,the response may have the wrong status code. If you…

程序员工作久了,都不会好好说人话了...互联网人的....黑话

原来工作也是会被腌入味的 前段时间有位博主吐槽 工作太久都不会说人话了 这张口的互联网味儿 瞬间梦回自己的工位 而评论区的网友们表示 这不就是”世另我“吗 一场关于互联网黑话的"掰头" 就此开始了... 维护厨房 &#xff08;厨房秒变公司&#xff09; 新…

Bagging算法预测银行客户流失率

Bagging算法预测银行客户流失率 描述 为了防止银行的客户流失&#xff0c;通过数据分析&#xff0c;识别并可视化哪些因素导致了客户流失&#xff0c;并通过建立一个预测模型&#xff0c;识别客户是否会流失&#xff0c;流失的概率有多大。以便银行的客户服务部门更加有针对性…