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

8. 100ASK_V853-PRO开发板支持MPP媒体处理平台

0.前言

​ MPP 系统控制模块,根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作状态、提供当前 MPP 系统的版本信息等功能。 应用程序启动 MPP 业务前,必须完成 MPP 系统初始化工作。同理,应用程序退出 MPP 业务后,也要完成 MPP 系统去初始化工作,释放资源。

​ 本章主要讲述如何在Tina SDK中增加MPP补丁包和如何编译使用,该补丁包含有MPP部分的源码。具体MPP如何开发可以参考位于百度网盘中的100ASK_V853-PRO开发板的资料光盘中01_学习手册/《100ASK-V853_Pro系统开发手册》,该手册中的第四篇 基础组件开发中的第七章 Tina Linux 多媒体MPP 开发指南,此章节详细说明了100ASK_V853-PRO开发板针对MPP 系统控制模块的开发指导。

100ASK_V853-PRO开发板的资料光盘:

链接:https://pan.baidu.com/s/1TX742vfEde9bMLd9IrwwqA?pwd=sp6a
提取码:sp6a

全志MPP_sample_使用说明:https://tina.100ask.net/SdkModule/Linux_MPP_Sample_Instructions-01/

100ASK_V853-PRO开发板资料汇总:

链接:100ASK_100ASK-PRO 资料汇总 - Allwinner / V853-Pro - 嵌入式开发问答社区

100ASK_V853-PRO开发板购买链接:100ASK_V853-PRO开发板

image-20230418094041344

1.增加MPP扩展包

MPP扩展包:

下载完成后,将sunxi-mpp.tar.gz压缩包放入虚拟机的任意目录,假设放在/home/book/workspaces目录下,

例如:

ook@100ask:~/workspaces$ ls
100ASK_V853-PRO_TinaSDK  sunxi-mpp.tar.gz  tina-v853-open

解压sunxi-mpp.tar.gz压缩包,输入

tar -xzvf sunxi-mpp.tar.gz 

例如:

book@100ask:~/workspaces$ tar -xzvf sunxi-mpp.tar.gz 
sunxi-mpp/
sunxi-mpp/CMake/
sunxi-mpp/CMake/sunxi_mpp_lib.cmake
sunxi-mpp/CMake/sunxi_mpp_include.cmake
...

等待解压完成后进入sunxi-mpp目录下,即可查看当前目录下的文件

book@100ask:~/workspaces$ cd sunxi-mpp/
book@100ask:~/workspaces/sunxi-mpp$ ls
CMake  CMakeLists.txt  include  lib  README.md  sample  STAGING_DIR.sh  toolchain

下面对各文件夹进行说明

CMake:设置mpp各文件的头文件和依赖目录
CMakeLists.txt:设置编译文件、交叉编译工具链位置、依赖等位置和规则信息
include:包含MPP扩展包所需的头文件
lib:包含MPP扩展包所需的依赖文件
sample:包含MPP个应用示例源码
STAGING_DIR.sh:设置环境变量
toolchain:包含V853交叉编译工具链

2.编译MPP扩展包

添加交叉编译环境变量,这里仅需要增加sunxi-mpp的位置的环境变量,输入

book@100ask:~/workspaces/sunxi-mpp$ export CMAKE_CURRENT_SOURCE_DIR=~/workspaces/sunxi-mpp

激活环境变量,输入

book@100ask:~/workspaces/sunxi-mpp$ source STAGING_DIR.sh

创建build目录,用于编译和存储编译后的应用程序

book@100ask:~/workspaces/sunxi-mpp$ mkdir build

进入build目录下,执行cmake .. ,配置工具链、暂存目录和编译规则

book@100ask:~/workspaces/sunxi-mpp$ cd build/
book@100ask:~/workspaces/sunxi-mpp/build$ cmake ..
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- STAGING_DIR: build
-- Configuring done
-- Generating done
-- Build files have been written to: /home/book/workspaces/sunxi-mpp/build

执行完成后会在build目录下生成以下文件,其中bin目录用于存储生成后的二进制应用程序。

book@100ask:~/workspaces/sunxi-mpp/build$ ls
bin  CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile  sample  STAGING_DIR.sh

编译mpp应用程序,输入

book@100ask:~/workspaces/sunxi-mpp/build$ make
Scanning dependencies of target sample_virvi2vo
[  1%] Building C object sample/sample_virvi2vo/CMakeFiles/sample_virvi2vo.dir/sample_virvi2vo.c.o
[  2%] Linking C executable ../../bin/sample_virvi2vo
[  2%] Built target sample_virvi2vo
...
Scanning dependencies of target sample_demux2adec2ao
[ 99%] Building C object sample/sample_demux2adec2ao/CMakeFiles/sample_demux2adec2ao.dir/sample_demux2adec2ao.c.o
[100%] Linking C executable ../../bin/sample_demux2adec2ao
[100%] Built target sample_demux2adec2ao

编译完成后可以进入bin目录下查看编译生成的二进制文件。

book@100ask:~/workspaces/sunxi-mpp/build$ cd bin/
book@100ask:~/workspaces/sunxi-mpp/build/bin$ ls
sample_adec               sample_CodecParallel         sample_MotionDetect         sample_uvc2vo        sample_virvi2venc
sample_aec                sample_demux2adec            sample_multi_vi2venc2muxer  sample_uvcout        sample_virvi2venc2muxer
sample_aenc               sample_demux2adec2ao         sample_rtsp                 sample_uvc_vo        sample_virvi2vo
sample_ai                 sample_demux2vdec            sample_smartIPC_demo        sample_venc          sample_virvi2vo_zoom
sample_ai2aenc            sample_demux2vdec2vo         sample_smartPreview_demo    sample_venc2muxer    sample_vo
sample_ai2aenc2muxer      sample_demux2vdec_saveFrame  sample_timelapse            sample_vi_g2d        yuv420pTobmp
sample_ao                 sample_driverVipp            sample_UILayer              sample_vin_isp_test
sample_ao_resample_mixer  sample_g2d                   sample_uvc2vdec_vo          sample_vi_reset
sample_aoSync             sample_glog                  sample_uvc2vdenc2vo         sample_virvi

关于如何测试使用MPP应用程序,请一定要参考:

全志MPP_sample_使用说明:https://tina.100ask.net/SdkModule/Linux_MPP_Sample_Instructions-01/

如果《全志MPP_sample_使用说明》中没有测试说明,可查看每个示例程序中的Readme.txt。例如,假设我需要sample_driverVipp程序,需要进入该源码目录下,输入

book@100ask:~/workspaces/sunxi-mpp$ cd sample/sample_driverVipp/
book@100ask:~/workspaces/sunxi-mpp/sample/sample_driverVipp$ ls
CMakeLists.txt  Readme.txt  sample_driverVipp.c  sample_driverVipp.h

可以看到源码目录中有一个Readme.txt文件,该文件详细说明了如何进行测试。

book@100ask:~/workspaces/sunxi-mpp/sample/sample_driverVipp$ cat Readme.txt 
sample_driverVipp:该sample演示直接调用linux内核驱动获取frame。按下ctrl+c,终止测试。每隔若干帧保存一帧到指定的目录。读取测试参数的流程:sample只支持命令行模式输入参数。如果不输入参数,会提示输入。从命令行启动sample_driverVipp的指令:./sample_driverVipp或./sample_driverVipp 0 1920 1080 8 60 0 10 60 /mnt/extsd测试参数的说明:
(1)video device: 0~3 (vipp0~vipp3)
(2)capture_width:指定camera采集的图像宽度
(3)capture_height:指定camera采集的图像高度
(4)pixel_format:指定camera采集的图像格式
(5)fps:指定camera采集的帧率
(6)test frame count:指定测试采集的frame总数,0表示无限。
(7)store count: 指定保存的图像数量。
(8)store interval: 指定保存图像的周期,即每n帧图像保存1帧。
(9)frame saving path: 指定保存图像的目录,该目录要确保存在。

​ 如果您想使用MPP进行开发,编写自己的应用程序,请阅读位于百度网盘资料中的100ASK_V853-PRO开发板的资料光盘中01_学习手册/《100ASK-V853_Pro系统开发手册》,该手册中的第四篇 基础组件开发中的第七章 Tina Linux 多媒体MPP 开发指南,此章节详细说明了100ASK_V853-PRO开发板针对MPP 系统控制模块的开发指导。

3.测试MPP应用程序

测试MPP应用程序需要增加开发板的依赖文件,该依赖文件位于sunxi-mpp/lib目录下,如下图所示

在这里插入图片描述

将该目录下的全部文件拷贝到开发板的lib目录下,假设我使用TF卡将其拷贝到开发板上,将lib文件夹拷贝到TF卡中,在将TF插入100ASK_V853-PRO开发板上,挂载TF卡,输入

root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/extsd/

挂载完成后进入TF目录下

root@TinaLinux:/# cd /mnt/extsd/
root@TinaLinux:/mnt/extsd# ls
System Volume Information        lib

可以看到lib文件夹,将lib目录下的全部文件拷贝到开发板的lib目录下,输入

root@TinaLinux:/mnt/extsd# cp lib/* /lib/

等待拷贝完成即可。

3.1 测试LCD上实时预览摄像头数据应用程序

​ 硬件要求:100ASK_V853-PRO开发板、4寸MIPI显示屏、MIPI摄像头。

​ 示例名称为:sample_virvi2vo

​ 源码路径:sunxi-mpp/sample/sample_virvi2vo/

​ 该示例演示了通过摄像头获取数据并实时显示在LCD屏幕上,下面演示如何将编译好的应用程序在100ASK_V853-PRO开发板上运行。

​ 编译mpp扩展包后,会在sunxi-mpp/build/bin目录下生成sample_virvi2vo文件,将生成的文件拷贝到TF卡上备用。

​ 将sunxi-mpp/sample/sample_virvi2vo目录下的sample_virvi2vo.conf拷贝到TF卡下备用。

​ 将sunxi-mpp/lib整个目录拷贝到TF卡备用。

拷贝完成后,将TF卡插入100ASK_V853-PRO开发板后,将TF卡挂载到开发板上,输入mount /dev/mmcblk1p1 /mnt/extsd/

root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/extsd/
[  168.601231] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

进入挂载目录/mnt/extsd/

root@TinaLinux:/# cd /mnt/extsd/

查看对应文件是否存在

root@TinaLinux:/mnt/extsd# ls
System Volume Information  sample_virvi2vo
sample_virvi2vo.conf

运行测试程序,输入./sample_virvi2vo -path ./sample_virvi2vo.conf

 root@TinaLinux:/mnt/extsd# ./sample_virvi2vo -path ./sample_virvi2vo.conf

执行完后,会在MIPI屏上实时显示摄像头获取的图像数据。

应用程序执行设定时间后会自动结束,也可以通过按下Crtl+C提前结束测试。

3.2 测试实时预览人脸识别和人形识别应用程序

​ 硬件要求:100ASK_V853-PRO开发板、4寸MIPI显示屏、MIPI摄像头。

​ 示例名称为:sample_smartPreview_demo

​ 源码路径:sunxi-mpp/sample/sample_smartPreview_demo

​ 该示例演示了通过摄像头获取图像数据后使用人脸模型或人形模型进行处理后,将打框后的结果实时显示在LCD屏幕上,下面演示如何将编译好的应用程序在100ASK_V853-PRO开发板上运行。

​ 编译mpp扩展包后,会在sunxi-mpp/build/bin目录下生成sample_smartPreview_demo文件,将生成的文件拷贝到TF卡上备用。

​ 将sunxi-mpp/sample/sample_smartPreview_demo/models/fdet目录下的face.nb人脸模型拷贝到TF卡中备用。

​ 将sunxi-mpp/sample/sample_smartPreview_demo/models/pdet目录下的2.0.0_Gamma.nb人形模型文件拷贝到TF卡中备用。

​ 将sunxi-mpp/sample/sample_smartPreview_demo目录下的sample_smartPreview_demo.conf参数文件拷贝到TF卡中备用。

拷贝完成后,将TF卡插入100ASK_V853-PRO开发板后,将TF卡挂载到开发板上,输入mount /dev/mmcblk1p1 /mnt/extsd/

root@TinaLinux:/# mount /dev/mmcblk1p1 /mnt/extsd/
[  168.601231] FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

进入挂载目录/mnt/extsd/

root@TinaLinux:/# cd /mnt/extsd/

查看对应文件是否存在

root@TinaLinux:/mnt/extsd# ls
2.0.0_Gamma.nb                   sample_smartPreview_demo
System Volume Information        sample_smartPreview_demo.conf
face.nb

修改sample_smartPreview_demo.conf文件,假设我这里使用的是百问网的4寸MIPI屏和2Line MIPI摄像头,需要测试的是人脸识别模型,需要修改该文件为:

########### paramter (ref to tulip_cedarx.conf)############
[parameter]
main_isp_dev = 0
main_vipp_dev = 0
main_capture_width = 360
main_capture_height = 640
main_layer_num = 0
main_display_x = 0
main_display_y = 0
main_display_width = 480
main_display_height = 800
main_nn_nbg_type = 1                    #-1:disable, 0:human, 1:face
main_nn_isp = 0
main_nn_vipp = 8
main_nn_vi_buf_num = 3
main_nn_src_frame_rate = 20             #fps
main_nn_nbg_file_path = "face.nb"
main_nn_draw_orl_enable = 1sub_isp_dev = 1
sub_vipp_dev = 1
sub_capture_width = 1920
sub_capture_height = 1080
sub_layer_num = 1
sub_display_x = 0
sub_display_y = 00
sub_display_width = 480
sub_display_height = 800
sub_nn_nbg_type = 1                    #-1:disable, 0:human, 1:face
sub_nn_isp = 1
sub_nn_vipp = 9
sub_nn_vi_buf_num = 3
sub_nn_src_frame_rate = 20             #fps
sub_nn_nbg_file_path = "face.nb"
sub_nn_draw_orl_enable = 1disp_type = "lcd"                      #disp_type is lcd, hdmi, cvbs
pic_format = "nv21"                    #pic_format is yu12, yv12, nv21, nv12
frame_rate = 20                        #fpsorl_thick=200
test_duration = 0                      #unit:s, 0:Infinite duration.

如果需要测试人形检测,也需要修改sample_smartPreview_demo.conf文件中的,将main_nn_nbg_type设置为0、main_nn_nbg_file_path设置为人形模型的路径名称,例如:

main_nn_nbg_type = 1 
main_nn_nbg_file_path = "2.0.0_Gamma.nb"

运行测试程序:

root@TinaLinux:/mnt/extsd# ./sample_smartPreview_demo -path sample_smartPreview_demo.conf 

执行后,显示屏端会接收摄像头的数据,但一开始会丢弃部分图像数据,可能会导致一开始的画面卡顿。测试成功后会在显示屏上实时显示摄像头的数据,并可以对摄像头的图像中的人脸进行打框。

4.总结

​ 对于其他应用程序这里就不逐一去演示,大家可以参考每个示例的程序的Readme.txt或《全志MPP_sample_使用说明》进行测试体验,参考《Tina Linux 多媒体MPP 开发指南》进行开发。MPP媒体处理平台的可玩性和公开程度都适合大家去开发自己的应用程序,希望通过这章节可以让大家了解MPP的使用。

相关文章:

8. 100ASK_V853-PRO开发板支持MPP媒体处理平台

0.前言 ​ MPP 系统控制模块,根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作…...

CLMP证书:让你在职场中脱颖而出的秘密武器!

CLMP证书是一种精益管理专业证书,是针对精益管理领域的专业人士和学生的培训项目,旨在提高他们在精益管理方面的技能和知识。那么,CLMP证书的含金量高吗?接下来我们来探讨一下。 CLMP证书的优势体现 首先,CLMP证书的…...

【从零开始】Docker Desktop:听说你小子要玩我

前言 🍊缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重,高强度的搬砖导致摸鱼时间下降。在上线项目时,看到运维大神一系列骚操作,dockerk8s的知识如过眼云烟,忘得干净的很。所以想重新恶补一下docker知识&…...

制造业为什么要数字化?

制造业数字化,主要包含以下一些因素,有优势也有缺点: 制造业数字化的优势: 提高效率:数字化允许各种制造过程自动化,可以提高效率并降低成本。可以缩短生产时间、减少浪费并提高生产率。 增强质量控制&am…...

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗

🍎道阻且长,行则将至。🍓 目录 引言:西部世界元宇宙,还记得吗ChatGPT 的世界? 下图就是一个 ChatGPT 小镇: 引言:西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景…...

Shell编程入门讲解

一.简介 Shell 是一个用 C 语言编写的命令行解释器,它是用户使用 Linux 的桥梁,它接受应用程序/用户命令,然后调用操作系统内核。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提…...

C++ 变量作用域

C 变量作用域 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称为形式参数。 在所有函数外部声明的变量,称为全局变量。…...

【状态未成功】CONFIG_CFI_CLANG失败过程记录

实现并没有成功,只是记录过程,使用4.9内核尝试开启过程 关于 控制流完整性 (CFI) 是一种安全机制,它不允许更改已编译二进制文件的原始控制流图,因而执行此类攻击变得异常困难。 在 Android 9 中,我们在更多组件以及内…...

基于消息调度优化启动速度方案实践

背景 在抖音的技术博客 https://juejin.cn/post/7080065015197204511#heading-10中,其介绍了通过修改消息队列顺序实现冷启动优化的方案,不过并未对其具体实现展开详细说明。 本文是对其技术方案的思考验证及实现。 详细代码见github: https://github.c…...

【C#】RemoveAt索引越界问题

系列文章 【C#】单号生成器(编号规则、固定字符、流水号、产生业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器(开始日期、结束日期) 本文链接:h…...

【华为OD机试2023】工位序列统计友好度最大值 100% C++ Java Python

【华为OD机试2023】工位序列统计友好度最大值 100% C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出…...

Rust Atomics and Locks 阅读笔记 第二章 Atomics

原子操作(atomic operations)是多线程实现的基石,互斥锁(mutex)和条件变量(condition variable)都是通过原子操作来实现;std::sync::atomic包括了rust的内置原子操作类型&#xff08…...

Helm3入门

目录 Helm三大概念 Chart Repository Release Helm相关命令 helm 命令公共参数 helm search hub/repo - 查找可用的Charts helm repo - 仓库操作 helm install - 安装Chart helm status - 查看release状态 helm show values - 查看Chart的values.yaml内容 helm get…...

动态规划-线性动态规划-最长上升子序列模型

title: 线性动态规划 date: 2023-05-12 08:49:10 categories: Algorithm动态规划 tags:动态规划 编辑距离 题目描述 设 A A A 和 B B B 是两个字符串。我们要用最少的字符操作次数,将字符串 A A A 转换为字符串 B B B。这里所说的字符操作共有三种&#xff1…...

ResNet 论文理解含视频

ResNet 论文理解 论文理解 ResNet 网络的论文名字是《Deep Residual Learning for Image Recognition》,发表在2016年的 CVPR 上,获得了 最佳论文奖。ResNet 中的 Res 也是 Residual 的缩写,它的用意在于基于 残差 学习,让神经网…...

Java8之Stream操作

Java8之Stream操作 stream干啥用的?创建流中间操作终结操作好文推荐----接口优化思想 stream干啥用的? Stream 就是操作数据用的。使用起来很方便 创建流 → 中间操作 → 终结操作 Stream的操作可以分为两大类:中间操作、终结操作 中间操作可…...

二分查找基础篇-JAVA

文章目录 前言 大家好,我是最爱吃兽奶,这篇博客给大家介绍一下二分查找,我们先从最基本的开始讲解,再慢慢深入,把优化和变形也和大家说一下,那么,跟着我的步伐,我们一起去看看吧! 一、什么是二分查找? 二分查找(Binary Search)也称作折半查找 二分查找的效率很高,每查找一次…...

shell脚本5数组

文章目录 数组1 数组定义方法2 获取数组长度2.1 读取数组值2.2 数组切片2.3 数组替换2.4 数组删除2.5 追加数组元素 3 实验3.1 冒泡法3.2 直接选择法3.3 反排序法 数组 1 数组定义方法 数组名(value0 valuel value2 …) 数组名( [0]value [1]value [2]value …) 列表名“val…...

Kubernetes二进制部署 单节点

目录 1.环境准备 1.关闭防火墙和selinux 2.关闭swap 3.设置主机名 4.在master添加hosts 5.桥接的IPv4流量传递到iptables的链 6.时间同步 2.部署etcd集群 1.master节点部署 2.在node1与node2节点修改 3.在master1节点上进行启动 4.部署docker引擎 3.部署 Master 组…...

基于VC + MSSQL实现的县级医院医学影像PACS

一、概述: 基于VC MSSQL实现的一套三甲医院医学影像PACS源码,集成3D后处理功能,包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等功能。 二、医学影像PACS实现功能: 1、…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

C++ 设计模式 《小明的奶茶加料风波》

👨‍🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...