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

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解Camera的使用

  • 🍇 博主主页: 【Systemcall小酒屋】
  • 🍇 博主追寻:热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是林群院士说过的一句话,另外“成就是最好的老师”,技术既要沉淀,也得分享,成就感的正反馈是支持我持续耕耘的动力!
  • 🍇 专栏目录: 【Firefly-RK356x板卡】
  • 🍇 专栏说明:基于Firefly旗下的RK356x板卡进行入门篇讲述,欢迎订阅,博主会持续更新!

文章目录

    • 一、MIPI CSI
      • 1.1 Full Mode特点
      • 1.2 Split Mode特点
    • 二、Full Mode配置
      • 2.1 配置sensor端
      • 2.2 csi2_dphy0相关配置
      • 2.3 isp相关配置
    • 三、Split Mode配置
      • 3.1 配置sensor端
      • 3.2 csi2_dphy1/csi2_dphy2相关配置
      • 3.3 isp相关配置
    • 四、软件相关目录
    • 五、单目CAM-8MS1M/双目CAM-2MS2MF摄像头的使用
      • 5.1 使用单目摄像头CAM-8MS1M
      • 5.2 使用双目摄像头CAM-2MS2MF
    • 六、Camera底层调试
    • 七、Android系统使用camera应用
    • 八、IQ文件

一、MIPI CSI

RK3566/RK3568平台仅有一个标准物理mipi csi2 dphy,可以工作在两个模式:full mode 和split mode,拆分为csi2_dphy0/csi2_dphy1/csi2_dphy2三个逻辑dphy

1.1 Full Mode特点

  • 仅使用csi2_dphy0。csi2_dphy0与csi2_dphy1/csi2_dphy2互斥,不可同时使用
  • data lane最大4 lanes
  • 最大速率2.5Gbps/lane

1.2 Split Mode特点

  • 仅使用csi2_dphy1和csi2_dphy2,两者与 csi2_dphy0 互斥,不可同时使用
  • csi2_dphy1和csi2_dphy2可同时使用
  • csi2_dphy1和csi2_dphy2各自的data lane最大是2 lanes
  • csi2_dphy1对应物理dphy的lane0/lane1
  • csi2_dphy2对应物理dphy的lane2/lane3
  • 最大速率2.5Gbps/lane

请添加图片描述

一般来说,如果用单目摄像头可以配置full mode,若使用双目摄像头可以配置split mode

二、Full Mode配置

链接关系: sensor->csi2_dphy0->isp

2.1 配置sensor端

需要根据板子原理图的MIPI CSI接口找到sensor是挂在哪个I2C总线上,然后在对应的I2C节点配置camera节点,正确配置camera模组的I2C设备地址、引脚等属性。

如下ROC-RK3568-PC的xc7160配置:

&i2c4 {status = "okay";XC7160: XC7160b@1b {status = "okay";compatible = "firefly,xc7160";reg = <0x1b>;clocks = <&cru CLK_CIF_OUT>;clock-names = "xvclk";power-domains = <&power RK3568_PD_VI>;pinctrl-names = "default";pinctrl-0 = <&cif_clk>;power-gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_LOW>;reset-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;firefly,clkout-enabled-index = <0>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "NC";rockchip,camera-module-lens-name = "NC";port {xc7160_out: endpoint {remote-endpoint = <&mipi_in_ucam4>;data-lanes = <1 2 3 4>;};};};
};

2.2 csi2_dphy0相关配置

csi2_dphy0与csi2_dphy1/csi2_dphy2互斥,不可同时使用。另外需要使能csi2_dphy_hw节点:

&csi2_dphy0 {status = "okay";/** dphy0 only used for full mode,* full mode and split mode are mutually exclusive*/ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;
...mipi_in_ucam4: endpoint@5 {reg = <5>;remote-endpoint = <&xc7160_out>;data-lanes = <1 2 3 4>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;csidphy_out: endpoint@0 {reg = <0>;remote-endpoint = <&isp0_in>;};};};
};&csi2_dphy_hw {status = "okay";
};&csi2_dphy1 {status = "disabled";
};&csi2_dphy2 {status = "disabled";
};

2.3 isp相关配置

其中rkisp_vir0节点的remote-endpoint指向csidphy_out:

&rkisp {status = "okay";
};&rkisp_mmu {status = "okay";
};&rkisp_vir0 {status = "okay";port {#address-cells = <1>;#size-cells = <0>;isp0_in: endpoint@0 {reg = <0>;remote-endpoint = <&csidphy_out>;};};
};

三、Split Mode配置

链接关系:

sensor1->csi_dphy1->isp_vir0
sensor2->csi_dphy2->mipi_csi2->vicap->isp_vir1

3.1 配置sensor端

根据板子原理图的MIPI CSI接口找到两个sensor是挂在哪个I2C总线上,然后在对应的I2C节点配置两个camera节点,正确配置camera模组的I2C设备地址、引脚等属性。如下ROC-RK3568-PC的gc2053/gc2093配置:

&i2c4 {status = "okay";gc2053: gc2053@37 { //IRstatus = "okay";compatible = "galaxycore,gc2053";reg = <0x37>;avdd-supply = <&vcc_camera>;power-domains = <&power RK3568_PD_VI>;clock-names = "xvclk";pinctrl-names = "default";clocks = <&pmucru CLK_WIFI>;pinctrl-0 = <&refclk_pins>;power-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;//IR_PWR_ENpwdn-gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_LOW>;firefly,clkout-enabled-index = <1>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "YT-RV1109-2-V1";rockchip,camera-module-lens-name = "40IR-2MP-F20";port {gc2053_out: endpoint {remote-endpoint = <&dphy1_in>;data-lanes = <1 2>;};};};gc2093: gc2093b@7e { //RGBstatus = "okay";compatible = "galaxycore,gc2093";reg = <0x7e>;avdd-supply = <&vcc_camera>;power-domains = <&power RK3568_PD_VI>;clock-names = "xvclk";pinctrl-names = "default";flash-leds = <&flash_led>;pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;firefly,clkout-enabled-index = <0>;rockchip,camera-module-index = <1>;rockchip,camera-module-facing = "front";rockchip,camera-module-name = "YT-RV1109-2-V1";rockchip,camera-module-lens-name = "40IR-2MP-F20";port {gc2093_out: endpoint {remote-endpoint = <&dphy2_in>;data-lanes = <1 2>;};};};
};

3.2 csi2_dphy1/csi2_dphy2相关配置

csi2_dphy0与csi2_dphy1/csi2_dphy2互斥,不可同时使用:

&csi2_dphy0 {status = "disabled";
};&csi2_dphy1 {status = "okay";/** dphy1 only used for split mode,* can be used concurrently with dphy2* full mode and split mode are mutually exclusive*/ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;dphy1_in: endpoint@1 {reg = <1>;remote-endpoint = <&gc2053_out>;data-lanes = <1 2>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;dphy1_out: endpoint@1 {reg = <1>;remote-endpoint = <&isp0_in>;};};};
};&csi2_dphy2 {status = "okay";/** dphy2 only used for split mode,* can be used concurrently with dphy1* full mode and split mode are mutually exclusive*/ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;dphy2_in: endpoint@1 {reg = <1>;remote-endpoint = <&gc2093_out>;data-lanes = <1 2>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;dphy2_out: endpoint@1 {reg = <1>;remote-endpoint = <&mipi_csi2_input>;};};};
};&csi2_dphy_hw {status = "okay";
};&mipi_csi2 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi_csi2_input: endpoint@1 {reg = <1>;remote-endpoint = <&dphy2_out>;data-lanes = <1 2>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;mipi_csi2_output: endpoint@0 {reg = <0>;remote-endpoint = <&cif_mipi_in>;data-lanes = <1 2>;};};};
};&rkcif_mipi_lvds {status = "okay";port {cif_mipi_in: endpoint {remote-endpoint = <&mipi_csi2_output>;data-lanes = <1 2>;};};
};&rkcif_mipi_lvds_sditf {status = "okay";port {mipi_lvds_sditf: endpoint {remote-endpoint = <&isp1_in>;data-lanes = <1 2>;};};
};

3.3 isp相关配置

其中rkisp_vir0节点的remote-endpoint指向dphy1_out

&rkisp {status = "okay";
};&rkisp_mmu {status = "okay";
};&rkisp_vir0 {status = "okay";port {#address-cells = <1>;#size-cells = <0>;isp0_in: endpoint@0 {reg = <0>;remote-endpoint = <&dphy1_out>;};};
};&rkisp_vir1 {status = "okay";port {reg = <0>;#address-cells = <1>;#size-cells = <0>;isp1_in: endpoint@0 {reg = <0>;remote-endpoint = <&mipi_lvds_sditf>;};};
};&rkcif_mmu {status = "okay";
};&rkcif {status = "okay";
};

四、软件相关目录

Linux Kernel-4.19
|-- arch/arm/boot/dts #DTS配置文件
|-- drivers/phy/rockchip|-- phy-rockchip-mipi-rx.c #mipi dphy驱动|-- phy-rockchip-csi2-dphy-common.h|-- phy-rockchip-csi2-dphy-hw.c|-- phy-rockchip-csi2-dphy.c
|-- drivers/media|-- platform/rockchip/cif #RKCIF驱动|-- platform/rockchip/isp #RKISP驱动|-- dev #包含 probe、异步注册、clock、pipeline、 iommu及media/v4l2 framework|-- capture #包含 mp/sp/rawwr的配置及 vb2,帧中断处理|-- dmarx #包含 rawrd的配置及 vb2,帧中断处理|-- isp_params #3A相关参数设置|-- isp_stats #3A相关统计|-- isp_mipi_luma #mipi数据亮度统计|-- regs #寄存器相关的读写操作|-- rkisp #isp subdev和entity注册|-- csi #csi subdev和mipi配置|-- bridge #bridge subdev,isp和ispp交互桥梁|-- platform/rockchip/ispp #rkispp驱动|-- dev #包含 probe、异步注册、clock、pipeline、 iommu及media/v4l2 framework|-- stream #包含 4路video输出的配置及 vb2,帧中断处理|-- rkispp #ispp subdev和entity注册|-- params #TNR/NR/SHP/FEC/ORB参数设置|-- stats #ORB统计信息

五、单目CAM-8MS1M/双目CAM-2MS2MF摄像头的使用

ROC-RK3568-PC已经配置好相应的dts,单目摄像头CAM-8MS1M和双目摄像头CAM-2MS2MF使用互斥,只需包含相应的dtsi文件即可使用单目摄像头CAM-8MS1M或双目摄像头CAM-2MS2MF

5.1 使用单目摄像头CAM-8MS1M

dts的配置默认使用单目摄像头:

diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts
index 7e2a8b2..14fa027 100755
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts
@@ -7,6 +7,15 @@
+#include "rk3568-firefly-roc-pc-cam-8ms1m.dtsi"
+//#include "rk3568-firefly-roc-pc-cam-2ms2m.dtsi"

5.2 使用双目摄像头CAM-2MS2MF

diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts
index 7e2a8b2..14fa027 100755
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dts
@@ -7,6 +7,15 @@
- #include "rk3568-firefly-roc-pc-cam-8ms1m.dtsi"
+//#include "rk3568-firefly-roc-pc-cam-8ms1m.dtsi"
- //#include "rk3568-firefly-roc-pc-cam-2ms2m.dtsi"
+ #include "rk3568-firefly-roc-pc-cam-2ms2m.dtsi"

六、Camera底层调试

使用v4l2-ctl抓取camera数据帧:

v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 --stream-to=/data/out.yuv

把out.yuv文件拷贝出来通过ubuntu去查看:

ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 out.yuv

七、Android系统使用camera应用

Android系统使用camera的apk打开摄像头需要配置camera3_profiles*.xml,具体可参考Android SDK hardware/rockchip/camera/etc/camera目录下的文件

八、IQ文件

raw摄像头支持的iq文件路径external/camera_engine_rkaiq/iqfiles/isp21, 与以前不一样的地方是iq文件不再采用.xml的方式,而是采用.json的方式。虽有提供xml转json的工具, 但isp20的xml配置转换后也不适用isp21。

若使用raw摄像头sensor,请留意isp21目录所支持的iq文件。

相关文章:

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解Camera的使用

&#x1f347; 博主主页&#xff1a; 【Systemcall小酒屋】&#x1f347; 博主追寻&#xff1a;热衷于用简单的案例讲述复杂的技术&#xff0c;“假传万卷书&#xff0c;真传一案例”&#xff0c;这是林群院士说过的一句话&#xff0c;另外“成就是最好的老师”&#xff0c;技术…...

C++之模拟实现string

文章目录前言一、包含的相关头文件二、构造和析构1.构造函数2.拷贝构造1.传统写法2.现代写法3.赋值运算符重载1.传统写法2.现代写法4.析构函数三、iterator四、modify1.push_back(尾插一个字符&#xff09;2.append&#xff08;尾插一个字符串&#xff09;3.运算符重载1.尾插字…...

SpringBoot实战(十三)集成 Admin

目录一、简介二、搭建 springboot-admin 管理服务1.Maven 依赖2.application.yml3.添加 EnableAdminServer4.启动服务&#xff0c;查看页面三、搭建 springboot-admin-client 客户端服务1.Maven 依赖2.application.yml3.启动服务&#xff0c;查看页面四、搭配 Eureka 使用1.搭建…...

mke2fs命令:建立ext2文件系统

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 使用格式 mke2fs [options] [设备名称] [区块数] options与含义 -c&#xff1a;检查是否有损坏的区块。-F&#xff1a;不管指定的设备为何&#xff0c;强制执行mke2fs。-M&#xff1a;记录最后一次挂入的…...

免费分享一个springboot+vue的办公系统

springbootvue的OA系统项目介绍项目部署项目特点项目展示项目介绍 这是一个采用前后端分离开发的项目&#xff0c;前端采用 Vue 开发、后端采用 SpringBoot Mybatis 开发。 很适合java初学者练手和学习。 前端技术&#xff1a;Vue3.2 Vue-Router Pinia Ant Design Vue 3.X…...

STM32数据搬运工DMA

DMA的概念DMA&#xff0c;全称为&#xff1a;Direct Memory Access&#xff0c;即直接存储器访问。DMA 传输方式无需 CPU 直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场的过程&#xff0c;通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路&#xff…...

4、操作系统——进程间通信(2)(system V-IPC介绍)

目录 一、system V-IPC常识 1、key和ID 2、文件描述符 3、函数&#xff08;ftok&#xff09; ftok产生IPC对象的健值key&#xff08;类似文件路径&#xff09; 4、例子 5、使用命令查看或删除当前系统中的IPC对象 一、system V-IPC常识 1、key和ID &#xff08;1&#x…...

基于CentOS Stream 9平台搭建Nacos2.0.4集群以及OpenResty反向代理

目录展示Nacos2.0.4集群搭建1. 下载2. 解压3.修改配置3.1分别修改下启动类中JDK路径以及启动大小3.2 分别配置数据源3.3 创建nacos数据库3.4 修改cluster.conf配置3.4.1 复制并修改3.4.2 编辑文件&#xff0c;修改三台主机地址3.4.3 分别放入另外两个nacos的conf目录下:4. 启动…...

老杜MySQL入门基础 第二天

导入演示数据 1、连接MySQL 2、创建"bjpowernode"数据库 create database bjpowernode;3、选择数据库 use bjpowernode4、导入数据 source D&#xff1a;\bjpowernode.sql(文件的路径)1 去除重复记录(把查询结果去除重复记录)(原表数据不会改变) 使用关键字dist…...

Python深度学习实战:人脸关键点(15点)检测pytorch实现

引言 人脸关键点检测即对人类面部若干个点位置进行检测&#xff0c;可以通过这些点的变化来实现许多功能&#xff0c;该技术可以应用到很多领域&#xff0c;例如捕捉人脸的关键点&#xff0c;然后驱动动画人物做相同的面部表情&#xff1b;识别人脸的面部表情&#xff0c;让机…...

linux简单入门

目录Linux简介Linux目录结构Linux文件命令文件处理命令文件查看命令常用文件查看命令Linux的用户和组介绍Linux权限管理Linux简介 Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹&#xff0…...

给准备面试网络工程师岗位的应届生一些建议

你听完这个故事&#xff0c;应该会有所收获。最近有一个23届毕业的大学生和我聊天&#xff0c;他现在网络工程专业大四&#xff0c;因为今年6、7月份的时候毕业&#xff0c;所以现在面临找工作的问题。不管是现在找一份实习工作&#xff0c;还是毕业后找一份正式工作&#xff0…...

主线程与子线程之间相互通信(HandlerThread)

平时&#xff0c;我们一般都是在子线程中向主线程发送消息&#xff08;要在主线程更新UI&#xff09;&#xff0c;从而完成请求的处理。那么如果需要主线程来向子线程发送消息&#xff0c;希望子线程来完成什么任务。该怎么做&#xff1f;这就是这篇文章将要讨论的内容。 一、…...

13基于双层优化的电动汽车日前-实时两阶段市场竞标

MATLAB代码&#xff1a;基于双层优化的电动汽车日前-实时两阶段市场竞标 关键词&#xff1a;日前-实时市场竞标 电动汽车 双层优化 编程语言&#xff1a;MATLAB平台 参考文献&#xff1a;考虑电动汽车可调度潜力的充电站两阶段市场投标策略_詹祥澎 内容简介&#xff1a;…...

REDIS19_zipList压缩列表详解、快递列表 - QuickList、跳表 - SkipList

文章目录①. 压缩列表 - zipList②. 快递列表 - QuickList③. 跳表 - SkipList①. 压缩列表 - zipList ①. ZipList是一种特殊的"双端链表",由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作,并且该操作的时间复杂度为O(1) (oxff:11111111) type…...

JavaScript 基础 - 第3天

文章目录JavaScript 基础 - 第3天笔记数组数组的基本使用定义数组和数组单元数据单元值类型数组长度属性操作数组JavaScript 基础 - 第3天笔记 数组 数组的基本使用 定义数组和数组单元 <script>// 1. 语法&#xff0c;使用 [] 来定义一个空数组// 定义一个空数组let…...

23.3.26总结

康托展开 是一个全排列与自然数的映射关系&#xff0c;康托展开的实质是计算当前序列在所有从小到大的全排列中的顺序&#xff0c;跟其逆序数有关。 例如&#xff1a;对于 1,2,3,4,5 来说&#xff0c;它的康托展开值为 0*4&#xff01;0*3&#xff01;0*2&#xff01;0*1&…...

【Java学习笔记】37.Java 网络编程

Java 网络编程 网络编程是指编写运行在多个设备&#xff08;计算机&#xff09;的程序&#xff0c;这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含有类和接口&#xff0c;它们提供低层次的通信细节。你可以直接使用这些类和接口&#xff0c;来专注于解决问题&…...

Azure OpenAI 官方指南03|DALL-E 的图像生成功能与安全过滤机制

2021年1月&#xff0c;OpenAI 推出 DALL-E。这是 GPT 模型在图像生成方面的人工智能应用。其名称来源于著名画家、艺术家萨尔瓦多 • 达利&#xff08;Dal&#xff09;和机器人总动员&#xff08;Wall-E&#xff09;。DALL-E 图像生成器&#xff0c;能够直接根据文本描述生成多…...

【数据结构】堆

文章目录前言堆的概念及结构堆初始化堆的判空堆的销毁插入数据删除数据堆的数据个数获取堆顶数据用数组创建堆对数组堆排序有关topk问题整体代码展示写在最后前言 &#x1f6a9;前面了解了树&#xff08;-> 传送门 <-&#xff09;的概念后&#xff0c;本章带大家来实现一…...

电脑硬盘文件数据误删除/格式化为什么可以恢复? 怎么恢复?谈谈文件删除与恢复背后的原理

Hello 大家好&#xff0c; 我是元存储~ 主页&#xff1a;元存储的博客_CSDN博客 1. 硬盘数据丢失场景 我们在每天办公还是记录数据的时候&#xff0c;文件存储大多数都是通过硬盘进行存储的&#xff0c;因此&#xff0c;使用多了&#xff0c;各种问题就会出现&#xff0c;比如…...

Gateway服务网关

Spring Cloud Gateway为微服务架构提供一种简单有效的统一的 API 路由管理方式。Gateway网关是所有微服务的统一入口。网关的核心功能特性&#xff1a;请求路由和负载均衡&#xff1a;一切请求都必须先经过gateway&#xff0c;但网关不处理业务&#xff0c;而是根据某种规则&am…...

K8S + GitLab + Jenkins自动化发布项目实践(一)

K8S GitLab Jenkins自动化发布项目实践&#xff08;一&#xff09;发布流程设计安装Docker服务部署Harbor作为镜像仓库部署GitLab作为代码仓库常用Git命令发布流程设计 #mermaid-svg-pe9VmFytb9GmqMvG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-…...

【数据结构篇C++实现】- 堆

文章目录&#x1f680;一、堆的原理精讲⛳&#xff08;一&#xff09;堆的概念⛳&#xff08;二&#xff09;看图识最大堆⛳&#xff08;三&#xff09;详解堆是用数组表示的树&#x1f680;二、堆的向下调整算法&#x1f680;三、堆的向上调整算法&#x1f680;四、将任意一棵…...

C++笔试题

作用域运算符(::)的作用&#xff1a;1.存在具有相同名称的局部变量时&#xff0c;访问全局变量。2.在类之外定义类相关函数。3.访问类的静态变量。4.在多重继承的情况下&#xff0c;如果两个基类中存在相同的变量名&#xff0c;可以使用作用域运算符来进行区分。5.限定成员函数…...

【Python】基本语法

数据类型 通过 print(type(x)) 可以输出 x 的数据类型&#xff0c;type() 函数可以获取数据类型 整数 a 10 print(type(a)) 浮点数 a 0.5 print(type(a)) 字符串 a hello print(type(a)) 获取字符串长度 a hello print(len(a))字符串拼接 a hello b world prin…...

用栈实现队列(图示超详解哦)

全文目录引言用栈实现队列题目介绍思路简述实现栈的部分队列的部分创建队列判断队列是否为空在队列尾入在队列头出访问队头元素释放队列总结引言 在上一篇文章中&#xff0c;我们了解了用两个队列实现栈。在这篇问章中将继续介绍用两个栈实现队列的OJ练习&#xff1a; 用栈实现…...

Spring - Spring 注解相关面试题总结

文章目录01. Spring 配置方式有几种&#xff1f;02. Spring 如何实现基于xml的配置方式&#xff1f;03. Spring 如何实现基于注解的配置&#xff1f;04. Spring 如何基于注解配置bean的作用范围&#xff1f;05. Spring Component, Controller, Repository, Service 注解有何区别…...

【数据结构】实现二叉树的基本操作

目录 1. 二叉树的基本操作 2. 具体实现 2.1 创建BinaryTree类以及简单创建一棵树 2.2 前序遍历 2.3 中序遍历 2.4 后序遍历 2.5 层序遍历 2.6 获取树中节点的个数 2.7 获取叶子节点的个数 2.8 获取第K层节点的个数 2.9 获取二叉树的高度 2.10 检测值为val的元素是否…...

代码随想录算法训练营第五十二天| ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300.最长递增子序列 看完题后的思路 dp[i] [0,i]子数组中,以nums[i]结尾的子序列的长度 dp[i]dp[j]1 j从i-1向0遍历,在所有nums[j]<nums[i]中dp[j]最大 初始化 dp[0]1 代码 class Solution {public int lengthOfLIS(int[] nums) {if (nums.length0){return 0;}int[] dpne…...

佛山正规网站建设哪家好/北大青鸟培训机构官网

IC卡解密工具 PN532工具XP 爆破版 By:lookyour 传送门 //2017/4/25 IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送http://www.52pojie.cn/thread-602693-1-1.htmlIC卡解密从零开始学2 解密工具PN532-mfoc-mfcuk-GUIhttp://www.52pojie.cn/thread-604402-1-1.html//当了…...

做优化的网站必须独立IP吗/友链价格

键字&#xff1a;《JAVA基础》 自学笔记序时令已经过了白露&#xff0c;转眼就快到了中秋佳节&#xff0c;天天渐渐变凉&#xff0c;一派秋天肃杀的景象。2020年注定是一个不平凡的一年。新型肺炎带来的影响还在持续。生活和经济都蒙上了一些不确定的薄薄的灰色。最近疫情期&am…...

如何创建本地站点/推广优化厂商联系方式

下面是一个简单测试&#xff0c;虽然不够准确但是简单立即可行&#xff0c; 当前目录的IO写读测试&#xff1a; &#xff08;写&#xff09; dd if/dev/zero oftest bs64k count16k convfdatasync &#xff08;读&#xff09; dd of/dev/null iftest bs64k count16k convfdat…...

wordpress 主题缓存/企业邮箱怎么开通注册

检查一下采购订单...

北京百度糯米团购有做网站的电话吗/网页设计软件dreamweaver

十多年前&#xff0c;大学刚毕业&#xff0c;在Autodesk上海做c开发工程师。 十一年后&#xff0c;已经人到中年&#xff0c;还在努力中。↖(^ω^)↗ 努力&#xff0c;奋斗~ 转载于:https://www.cnblogs.com/SunWentao/p/9204971.html...

滨州五学一做考试网站/线上宣传推广方案

国民技术通用MCU N32G452系列芯片简介 产品简介 N32G452系列 (通用基本型) 采用32-bit ARM Cortex-M4内核&#xff0c;支持浮点运算和DSP指令&#xff0c;高达512KB 片内FLASH&#xff0c;144KB SRAM&#xff0c;多达18个数字通讯接口及4个模拟接口&#xff0c;内置10余种密码…...