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

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850
2023/12/28 12:30


开发板:Firefly的AIO-3399J【RK3399】
SDK:rk3399-android-11-r20211216.tar.xz【Android11】
Android11.0.tar.bz2.aa【ToyBrick】
Android11.0.tar.bz2.ab
Android11.0.tar.bz2.ac

https://wiki.t-firefly.com/AIO-3399J/prepare_compile_android.html
AIO-3399J产品规格书 立即购买
AIO-3399J 采用 RK3399 六核(A72x2+A53x4) 64 位处理器,主频高达1.8GHz,集成了四核 Mali-T860 GPU,性能优异。


1、简略步骤:
rootroot@rootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2
rootroot@rootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.bz2 
rootroot@rootroot-X99-Turbo:~/3TB$ mv Android11.0 61Android11.0
rootroot@rootroot-X99-Turbo:~/3TB$ cd 61Android11.0
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ cd u-boot
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/u-boot$ ./make.sh rk3399
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/u-boot$ cd ..
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ cd kernel/
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 rockchip_defconfig android-11.config -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-firefly-aio.img -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ source build/envsetup.sh 
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ lunch
     42. rk3399_Android11-userdebug
Which would you like? [aosp_arm-eng] 42
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ 
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ make -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ ./build.sh -u


rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-sapphire-excavator-edp-avb.img -j36


2、【这个不重要,可以不用修改!】
不知道是ov13850的对reset/pwdn引脚不重要,还是在驱动ov13850.c中另行配置!
Z:\3TB\64rk3399-android-11\kernel\arch\arm64\boot\dts\rockchip\rk3399-firefly-aio.dtsi
&i2c1 {
    status = "okay";
    
    tc358749x: tc358749x@0f {
        compatible = "toshiba,tc358749x";
        #sound-dai-cells = <0>;
        reg = <0x0f>;
        power-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>; 
        reset-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
        int-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "default";
        pinctrl-0 = <&hdmiin_gpios>;
        status = "disabled";
    };

    xc7160b: xc7160b@1b {
        status = "okay";
    };

    xc7160f: xc7160f@1b {
        status = "okay";
    };
    
    ov13850: ov13850@10 {
        status = "okay";
                avdd-supply = <&vcc_mipi>;
        power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; // conflict with csi-ctl-gpios
        pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;

        };

        //ov13850b: ov13850b@10 {
    //    status = "okay";
        //        avdd-supply = <&vcc_mipi>;
    //    power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        //        reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
        //        pwdn-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
        //};
        //
        //ov13850f: ov13850f@10 {
    //    status = "okay";
        //        avdd-supply = <&vcc_mipi>;
    //    power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        //        reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
        //        pwdn-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
        //};
};


2、
Z:\3TB\64rk3399-android-11\kernel\arch\arm64\boot\dts\rockchip\rk3399-firefly-port.dtsi
&i2c1 {
    status = "okay";
    i2c-scl-rising-time-ns = <300>;
    i2c-scl-falling-time-ns = <15>;
    clock-frequency = <400000>;

    es8323: es8323@10 {
        compatible = "everest,es8323";
        reg = <0x10>;
        spk-ctl-gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
        clock-names = "mclk";
        clocks = <&cru SCLK_I2S_8CH_OUT>;
        pinctrl-names = "default";
        pinctrl-0 = <&i2s_8ch_mclk>;
        #sound-dai-cells = <0>;
        extcon = <&rk_headset>;
        status = "disabled";
    };
    rt5640: rt5640@1c {
        #sound-dai-cells = <0>;
        compatible = "realtek,rt5640";
        reg = <0x1c>;
        clocks = <&cru SCLK_I2S_8CH_OUT>;
        clock-names = "mclk";
        realtek,in1-differential;
        pinctrl-names = "default";
        pinctrl-0 = <&i2s_8ch_mclk>;
        //hp-con-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
        //hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>;
        io-channels = <&saradc 4>;
        hp-det-adc-value = <500>;
        status = "okay";
    };
    gti5801: gti5801@60 {
        compatible = "gyrfalcon,spr5801";
        reg = <0x60>;

        status = "disabled";
    };

    vm149c: vm149c@0c {
        compatible = "silicon touch,vm149c";
        status = "okay";
        reg = <0x0c>;
        rockchip,camera-module-index = <0>;
        rockchip,camera-module-facing = "back";
    };

    ov13850: ov13850@10 {
        compatible = "ovti,ov13850";
        status = "okay";
        reg = <0x10>;
        clocks = <&cru SCLK_CIF_OUT>;
        clock-names = "xvclk";
        /* avdd-supply = <>; */
        /* dvdd-supply = <>; */
        /* dovdd-supply = <>; */
        reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; // conflict with csi-ctl-gpios
        pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;

        pinctrl-names = "rockchip,camera_default";
        pinctrl-0 = <&cif_clkout>;

        rockchip,camera-module-index = <0>;
        rockchip,camera-module-facing = "back";
        rockchip,camera-module-name = "CMK-CT0116";
        rockchip,camera-module-lens-name = "Largan-50013A1";
        lens-focus = <&vm149c>;
        //flash-leds = <&sgm3784_led0 &sgm3784_led1>;

        port {
            ucam_out1: endpoint {
                //remote-endpoint = <&mipi_in_ucam0>;
                remote-endpoint = <&mipi_in_ucam1>;

                data-lanes = <1 2>;
            };
        };
    };


        xc7160b: xc7160b@1b {
                status = "disabled";
                compatible = "firefly,xc7160";
                reg = <0x1b>;
                clocks = <&cru SCLK_CIF_OUT>;
                clock-names = "xvclk";
                //avdd-supply = <&vcc_mipi>; /* VCC28_MIPI */
                //dovdd-supply = <&vcc_mipi>; /* VCC18_MIPI */
                //dvdd-supply = <&dvdd_1v2>; /* DVDD_1V2 */
                reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "rockchip,camera_default";
                pinctrl-0 = <&cif_clkout>;
                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 {
                        xc7160b_out: endpoint { 
                                remote-endpoint = <&mipi_in_ucam2>;
                                data-lanes = <1 2 3 4>;
                        };
                };
        };

        xc7160f: xc7160f@1b {
                status = "disabled";
                compatible = "firefly,xc7160";
                reg = <0x1b>;
                clocks = <&cru SCLK_CIF_OUT>;
                clock-names = "xvclk";
                //avdd-supply = <&vcc_mipi>; /* VCC28_MIPI */
                //dovdd-supply = <&vcc_mipi>; /* VCC18_MIPI */
                //dvdd-supply = <&dvdd_1v2>; /* DVDD_1V2 */
                reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "rockchip,camera_default";
                pinctrl-0 = <&cif_clkout>;
                firefly,clkout-enabled-index = <0>;
                rockchip,camera-module-index = <1>;
                rockchip,camera-module-facing = "front";
                rockchip,camera-module-name = "NC";
                rockchip,camera-module-lens-name = "NC";
                port {
                        xc7160f_out: endpoint {
                                remote-endpoint = <&mipi_in_ucam3>;
                                data-lanes = <1 2 3 4>;
                        };
                };
        };

        XC6130b: XC6130b@23{
            status = "disabled";
            compatible = "firefly,xc7022";
            reg = <0x23>;
        clocks = <&cru SCLK_CIF_OUT>;
        clock-names = "xvclk";
        //avdd-supply = <&vcc_mipi>;
        reset-gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "rockchip,camera_default";
        pinctrl-0 = <&cif_clkout>;
        
        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 {
                xc6130_out: endpoint {
                        remote-endpoint = <&mipi_in_ucam4>;
                        data-lanes = <1 2>;
                };
        };
        };
        XC7022b: XC7022b@1b{
                status = "disabled";
        compatible = "firefly,xc7022";
        reg = <0x1b>;
        clocks = <&cru SCLK_CIF_OUT>;
        clock-names = "xvclk";
        //avdd-supply = <&vcc_mipi>;
        reset-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "rockchip,camera_default";
        pinctrl-0 = <&cif_clkout>;
        
        firefly,clkout-enabled-index = <0>;
        rockchip,camera-module-index = <1>;
        rockchip,camera-module-facing = "front";
        rockchip,camera-module-name = "NC";
        rockchip,camera-module-lens-name = "NC";
        port {
                xc7022_out: endpoint {
                        remote-endpoint = <&mipi_in_ucam5>;
                        data-lanes = <1 2>;
                };
        };
        };
};
&i2c1_xfer{
    rockchip,pins =
        <4 2 RK_FUNC_1 &pcfg_pull_up>,
        <4 1 RK_FUNC_1 &pcfg_pull_up>;
};

&mipi_dphy_rx0 {
        status = "okay";

        ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        //mipi_in_ucam0: endpoint@1 {
                        //        reg = <1>;
                        //        remote-endpoint = <&ucam_out0>;
                        //        data-lanes = <1 2>;
                        //};

                        mipi_in_ucam2: endpoint@2 {
                                reg = <2>;
                                remote-endpoint = <&xc7160b_out>;
                                data-lanes = <1 2 3 4>;
                        };
                        mipi_in_ucam4: endpoint@3 {
                                reg = <3>;
                                remote-endpoint = <&xc6130_out>;
                                data-lanes = <1 2>;
                        };
                };

                port@1 {
                        reg = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        dphy_rx0_out: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&isp0_mipi_in>;
                        };
                };
        };
};

&mipi_dphy_tx1rx1 {
        status = "okay";

        ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        mipi_in_ucam1: endpoint@1 {
                                reg = <1>;
                                remote-endpoint = <&ucam_out1>;
                                data-lanes = <1 2>;
                        };

                        mipi_in_ucam3: endpoint@2 {
                                reg = <2>;
                                remote-endpoint = <&xc7160f_out>;
                                data-lanes = <1 2 3 4>;
                        };
                        mipi_in_ucam5: endpoint@3 {
                                reg = <3>;
                                remote-endpoint = <&xc7022_out>;
                                data-lanes = <1 2>;
                        };
                };

                port@1 {
                        reg = <1>;
                        #address-cells = <1>;
                        #size-cells = <0>;

                        dphy_tx1rx1_out: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&isp1_mipi_in>;
                        };
                };
        };
};


参考资料:
http://www.friendlyelec.com.cn/agent.asp
http://www.friendlyelec.com.cn/
https://download.friendlyelec.com/NanoPC-T4
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4/zh#.E4.B8.8B.E8.BD.BDAndroid10.E6.BA.90.E4.BB.A3.E7.A0.81


https://item.taobao.com/item.htm?spm=a1z09.2.0.0.37562e8dcotDm6&id=570312633249&_u=7ju3ku004a
友善NanoPC-T4瑞芯微RK3399开发板ROS双摄4K播放开源AI智能安卓10

WiKi维基教程(固件介绍,使用说明,操作步骤等)
http://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4
系统固件下载
https://dl.friendlyelec.com/nanopct4
原理图(pdf格式)
http://wiki.friendlyelec.com/wiki/images/e/e0/NanoPC-T4-1902-Schematic.pdf
尺寸图(dxf格式)
http://wiki.friendlyelec.com/wiki/images/b/bc/NanoPC-T4_1802_Drawing%28dxf%29.zip


http://www.friendlyelec.com.cn/nanopi-m4.asp
NanoPi M4 | NanoPi M4V2

https://wiki.friendlyelec.com/wiki/index.php/NanoPi_M4/zh
15.3 编译Android10源代码
15.3.1 下载Android10源代码
有以下两种途径获取 Android10 的源代码,都需要联网:

使用网盘里的git repo压缩包
网盘下载地址: 点击进入

https://download.friendlyelec.com/NanoPiM4
https://pan.baidu.com/share/init?surl=oBLn9H31hILJKEPQXgrUog
提取码:yn6r


相关文章:

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850 2023/12/28 12:30 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBr…...

php-fpm运行一段时间,内存不足

目录 一&#xff1a;原因分析 二&#xff1a;解决 三:观察系统情况 php-fpm运行一段时间&#xff0c;内存不足&#xff0c;是什么原因呢。 一&#xff1a;原因分析 1:首先php-fpm的配置 &#xff08;1&#xff09;启动的进程数 启动的进程数越多,占用内存越高; 2:其次…...

基于轻量级GhostNet模型开发构建生活场景下生活垃圾图像识别系统

轻量级识别模型在我们前面的博文中已经有过很多实践了&#xff0c;感兴趣的话可以自行移步阅读&#xff1a; 《移动端轻量级模型开发谁更胜一筹&#xff0c;efficientnet、mobilenetv2、mobilenetv3、ghostnet、mnasnet、shufflenetv2驾驶危险行为识别模型对比开发测试》 《基…...

《Linux系列》Linux磁盘MBR分区扩容

文章目录 Linux磁盘MBR分区扩容1.前言2.控制台磁盘扩容3.分区扩容3.1 fdisk3.2 lsblk3.3 扩容分区 4.扩容文件系统4.1 df4.2 扩容文件系统 Linux磁盘MBR分区扩容 1&#xff09;参考阿里云扩容分区文档&#xff0c;整理MBR分区扩容 2&#xff09;本文档适用于MBR分区(fdisk -lu查…...

IPv6地址配置

IPv6地址接口配置 IPv6地址结构 一个IPv6地址可以分为两部分: 网络前缀:n比特,相当于IPv4地址中的网络ID 接口标识:128-n比特,相当于IPv4地址中的主机ID 注意: 对于IPv6单播地址来说,如果地址的前三bit不是000,则接口标识必须为64位,如果地址的前三位是000,则没有此…...

Ubuntu20.04 防火墙配置

ubuntu 系统中配置防火墙 ufw&#xff08;Uncomplicated Firewall&#xff09;是一个简化的、易于使用的Linux防火墙工具&#xff0c;旨在方便用户管理iptables防火墙规则。 特点 简化的防火墙管理&#xff1a;ufw提供了一个简洁的命令行界面&#xff0c;让您能够轻松地添加、…...

Windows上ModbusTCP模拟Master与Slave工具的使用

场景 Modbus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用&#xff1a; Modebus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用_modbus poll激活-CSDN博客 数据对接协议为Modbus TCP,本地开发需要使…...

史上最细,13年老鸟总结-性能测试7大关键点,一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、测试环境的鉴定…...

长虹智能电视ZLM60HiS机芯刷机方法及刷机固件,附进维修模式方法

适配机芯&#xff1a;ZLM60HiS 型号&#xff1a;Q1FU、D6000i、U3、D8000ID 软件强制升级方法&#xff1a; 1、下载后解压&#xff0c;找到upgrade_ZLM60HiS_MT5508_V1.00xxx_part.pkg 、chandroid_ota_ZLM60HiS_datapart.zip复制到U盘根目录&#xff08;不要有任何文件夹&a…...

计算机网络【Google的TCP BBR拥塞控制算法深度解析】

Google的TCP BBR拥塞控制算法深度解析 宏观背景下的BBR 慢启动、拥塞避免、快速重传、快速恢复&#xff1a; 说实话&#xff0c;这些机制完美适应了1980年代的网络特征&#xff0c;低带宽&#xff0c;浅缓存队列&#xff0c;美好持续到了2000年代。 随后互联网大爆发&#x…...

lvs+keepalived+nginx实现四层负载+七层负载

目录 一、lvs配置 二、nginx配置 三、测试 3.1 keepalived负载均衡 3.2 lvskeepalived高可用 3.3 nginx高可用 主机IPlvs01-33 11.0.1.33 lvs02-3411.0.1.34nginx0111.0.1.31nginx0211.0.1.32VIP11.0.1.30 4台主机主机添加host [rootnginx01 sbin]# cat /etc/hosts 127.0.0.…...

独立看门狗与窗口看门狗

一、简介 STM32F10xxx内置两个看门狗&#xff0c;提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障&#xff1b;当计数器达到给定的超时值时&#xff0c;触发一个中断(仅适用于窗口型看门狗)或产…...

【CTF杂项】常见文件文件头文件尾格式总结 各类文件头

常见文件文件头文件尾格式总结及各类文件头 以下是常见文件的文件头格式总结及各类文件头的描述&#xff1a; 图像文件&#xff1a; JPEG&#xff1a;文件头格式为FF D8 FF&#xff0c;文件尾格式为FF D9。PNG&#xff1a;文件头格式为89 50 4E 47 0D 0A 1A 0A&#xff0c;文件…...

深度学习-模型转换_所需算力相关

模型转换相关 tensflow转onnx python -m tf2onnx.convert \--graphdef /root/autodl-tmp/warren/text-detection-ctpn/data/ctpn.pb \--output ./model.onnx --inputs Placeholder:0 --outputs Reshape_2:0&#xff0c;rpn_bbox_pred/Reshape_1:0 pytorch转onnx #!/usr/…...

Koordinator 助力云原生应用性能提升:小红书混部技术实践

作者&#xff1a;宋泽辉&#xff08;小红书&#xff09;、张佐玮&#xff08;阿里云&#xff09; 编者按&#xff1a; Koordinator 是一个开源项目&#xff0c;是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生&#xff0c;是行业首个生产可用、面向大规模场景的开源混…...

java中如何使用elasticsearch—RestClient操作文档(CRUD)

目录 一、案例分析 二、Java代码中操作文档 2.1 初始化JavaRestClient 2.2 添加数据到索引库 2.3 根据id查询数据 2.4 根据id修改数据 2.4 删除操作 三、java代码对文档进行操作的基本步骤 一、案例分析 去数据库查询酒店数据&#xff0c;导入到hotel索引库&#xff0…...

MySQL自定义函数

MySQL自定义函数 函数与存储过程类似&#xff0c;也是一组预先编译好的SQL语句的集合&#xff0c;但是存储过程可以有0个或多个返回&#xff0c;函数就只能有一个返回 创建函数 #语法 参数列表包含两部分 参数名和参数类型 #函数体必须有return语句 且每个sql语句后要以;结尾 所…...

技术学习|CDA level I 数据库应用(数据操作语言DML)

数据操作语言&#xff08;DML&#xff09;是对表中记录进行添加、更新、删除等操作的语言。 一、添加数据 在数据表中填充数据有两种方法&#xff0c;第一种方法是使用insert into语句向数据表中直接录入每行数据信息&#xff0c;但并不常用&#xff0c;因为分析使用的数据很…...

关键字:instanceof关键字

在 Java 中&#xff0c;instanceof关键字用于检查一个对象是否是某个特定类或其子类的实例。它的语法如下&#xff1a; 其中&#xff0c;Object是要检查的对象&#xff0c;Class是要检查的类或接口。 instanceof关键字的返回值是一个布尔值&#xff0c;如果对象Object是类Cla…...

【LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置 | 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...