一文了解AOSP是什么?

一文了解AOSP是什么?

在这里插入图片描述

AOSP基本信息

基本定义

AOSP是Android Open Source Project的缩写,这是一个由Google维护的完全免费和开放的操作系统开发项目。它是Android系统的核心基础,提供了构建移动操作系统所需的基本组件。

主要特点

  • 完全开源:源代码可以自由获取和修改
  • 基于Linux内核:使用修改版的Linux内核和其他开源软件
  • 主要面向触屏设备:设计优化适配触摸屏设备

AOSP与商业Android的区别

  • AOSP是纯净版Android系统,不包含Google服务和专有应用
  • 商业版Android包含了额外的Google移动服务(GMS)和各种专有组件
  • 大多数手机制造商会基于AOSP开发自己的定制Android版本

开发相关

  • 支持多种编程语言:包括Java、C++和C语言
  • 提供完整的开发文档和指南
  • 定期发布安全更新和新版

最新发展

截至2024年9月,Android 15已经发布到AOSP,带来了许多新特性:

  • 改进的应用开发工具
  • 增强的排版功能
  • 国际化支持优化
  • 系统性能提升

使用场景

AOSP主要应用于:

  • 定制Android系统开发
  • 设备制造商的系统定制
  • 第三方ROM开发(如LineageOS)
  • 研究和学习Android系统架构

AOSP主要组件

系统层次结构-(从底层到顶层):

A. Linux内核层

  • 设备驱动程序
  • 电源管理
  • 安全系统
  • 内存管理
  • 进程管理

B. 硬件抽象层(HAL)

  • 提供标准接口
  • 连接高层框架与底层硬件
  • 包含各种硬件模块的接口实现

C. 原生系统库

  • libc(C库)
  • SQLite数据库
  • OpenGL ES(图形库)
  • Media Framework(多媒体框架)
  • WebKit(浏览器引擎)

D. Android Runtime

  • ART(Android Runtime)或Dalvik虚拟机
  • 核心库
  • 即时编译器

框架层组件:

A. 系统服务(System Services)

  • ActivityManager
  • WindowManager
  • PackageManager
  • NotificationManager
  • LocationManager

B. Java API框架

  • View System(视图系统)
  • Resource Manager(资源管理器)
  • Content Providers(内容提供者)
  • Notification Manager(通知管理器)

应用层组件:

A. 系统应用

  • 基础应用程序
  • 预装应用
  • 核心功能应用
  1. 模块化组件(Project Mainline):

A. 可更新的系统组件

  • 安全模块
  • 隐私模块
  • 媒体编解码器
  • 网络组件
  • 开发者API

重要目录结构:

AOSP根目录
├── build/          # 编译系统
├── bionic/         # 精简版C库
├── frameworks/     # 框架层代码
├── system/         # 底层文件系统
├── packages/       # 应用程序包
├── vendor/         # 厂商专有文件
└── device/         # 设备相关配置

安全架构组件:

  • SELinux安全策略
  • 权限管理系统
  • 应用沙箱
  • 加密系统
  • 验证启动

核心特性:

  • 模块化设计
  • 开放源代码
  • 可定制性强
  • 支持多种硬件平台
  • 定期安全更新

Android Runtime (ART)

ART是Android操作系统中的应用程序运行时环境,它在Android系统架构中扮演着关键角色。深入了解ART的特性、功能和它与前身Dalvik的区别。

ART的定义和演进:

Android Runtime (ART) 是Android操作系统中用于执行应用程序的运行时环境。它取代了早期版本中使用的Dalvik虚拟机,从Android 5.0 (Lollipop) 开始成为默认的运行时环境。ART负责将应用程序的字节码转换为本地指令,然后由设备的运行时环境执行这些指令。

ART的主要特性:

a) 预先编译(Ahead-of-Time Compilation,AOT):ART在应用安装时就将字节码编译成机器码,而不是在运行时才进行编译。这显著提高了应用的执行速度。

b) 改进的垃圾回收:ART具有更高效的垃圾回收机制,减少了应用暂停时间,提高了性能。

c) 增强的调试支持:ART提供了更好的调试功能,有助于开发者更容易地找出和修复问题。

d) 优化的异常和垃圾回收追踪:这有助于提高应用的性能和稳定性。

ART vs Dalvik:

  • 编译方式:Dalvik使用即时编译(JIT),而ART主要使用预先编译(AOT)。
  • 性能:由于预先编译,ART通常能提供更好的性能和更快的应用启动速度。
  • 存储空间:ART需要更多的存储空间来存储预编译的代码。
  • 兼容性:如果应用在ART上运行良好,它通常也能在Dalvik上运行,但反之则不一定成立。

ART的工作原理:

当安装一个应用时,ART会将Dalvik字节码(.dex文件)编译成本地机器码。这个过程叫做"dex2oat",它取代了Dalvik中的"dexopt"过程。在运行时,应用可以直接执行这些本地指令,而不需要额外的解释或编译步骤。

编译机制:

a) AOT(Ahead-of-Time)预先编译:

  • 在应用安装时,将DEX文件转换为本地机器码
  • 使用dex2oat工具进行编译优化
  • 生成的本地代码存储在/data/dalvik-cache目录中
  • 减少运行时开销,提高执行效率

b) JIT(Just-in-Time)即时编译:

  • 识别频繁执行的代码片段(热点代码)
  • 在运行时动态编译这些代码
  • 结合配置文件导向优化(PGO)
  • 平衡启动时间和性能优化
内存管理:

a) 垃圾回收机制:

  • 采用并发垃圾回收器
  • 支持内存压缩
  • 减少应用暂停时间
  • 更高效的内存分配和回收策略

b) 堆内存优化:

  • 改进的对象分配
  • 更好的内存碎片处理
  • 优化的堆内存布局
  • 支持大对象空间管理
执行优化:

a) 代码优化:

  • 方法内联
  • 循环优化
  • 死代码消除
  • 常量传播和折叠

b) 运行时优化:

  • 改进的异常处理
  • 优化的线程调度
  • 更高效的方法调用
  • 更好的类型检查消除
类加载和执行:

a) 类加载过程:

  • 验证类文件格式
  • 准备类数据结构
  • 解析符号引用
  • 初始化静态字段

b) 执行流程:

  • 直接执行本地机器码
  • 减少解释执行开销
  • 支持动态链接
  • 提供调试和监控能力
  • 性能改进:

a) 启动优化:

  • 减少应用冷启动时间
  • 优化类加载顺序
  • 提前加载关键组件

b) 运行时性能:

  • 更低的内存占用
  • 更好的电池效率
  • 更流畅的用户体验
  • 更稳定的长期性能

ART的架构:

ART的架构包括以下主要组件:

  • 编译器:负责将DEX字节码转换为本地机器码。
  • 垃圾回收器:管理内存分配和回收。
  • 运行时:执行编译后的代码并提供运行时支持。
  • 类加载器:负责加载应用所需的类。

ART的未来发展:

Google持续优化ART,以提供更好的性能、更低的内存使用和更长的电池寿命。未来的版本可能会引入更多的优化技术,如更智能的编译策略和更高效的内存管理。

System Apps(系统应用层)

核心系统应用

a) 设置应用(Settings)

  • 提供系统级配置界面
  • 管理设备各项功能开关
  • 控制应用权限和通知
  • 处理网络、显示、声音等设置
  • 提供系统更新和安全选项

b) 包安装器(Package Installer)

  • 处理应用的安装、更新和卸载
  • 验证应用签名和权限
  • 管理应用版本和兼容性
  • 执行安装前的安全检查

c) 系统界面(SystemUI)

  • 管理状态栏和导航栏
  • 处理系统通知和快速设置
  • 提供系统级UI交互
  • 显示系统状态信息

基础功能应用

a) 电话应用

  • 管理通话功能
  • 维护通话记录
  • 提供紧急呼叫服务
  • 支持通讯录集成

b) 短信应用

  • 处理短信和彩信
  • 管理消息会话
  • 提供垃圾信息过滤
  • 支持消息备份恢复

c) 相机应用

  • 提供拍照和录像功能
  • 支持基本图像处理
  • 管理相机参数设置
  • 集成AR和AI功能

用户服务应用

a) 联系人

  • 管理通讯录信息
  • 支持多账户同步
  • 提供联系人分组
  • 处理联系人导入导出

b) 日历

  • 管理日程和提醒
  • 支持多账户日历同步
  • 提供农历和节假日信息
  • 处理重复事件逻辑

c) 时钟

  • 提供闹钟功能
  • 支持世界时钟显示
  • 包含计时器和秒表
  • 管理系统时间设置
  1. 系统工具

a) 文件管理器

  • 浏览文件系统
  • 管理存储空间
  • 支持文件操作
  • 提供文件分享功能

b) 下载管理器

  • 处理系统下载任务
  • 支持断点续传
  • 管理下载队列
  • 监控下载进度和状态

c) 备份还原

  • 系统设置备份
  • 应用数据备份
  • 用户数据迁移
  • 系统恢复功能

重要特点

a) 系统权限

  • 具有特殊系统权限
  • 可访问底层API
  • 运行在系统进程
  • 享有高优先级

b) 预装特性

  • 出厂预装
  • 难以卸载
  • 自动更新
  • 系统级整合

c) 安全机制

  • 系统签名保护
  • 特权操作控制
  • 安全存储访问
  • 隐私数据保护

Java API Framework(应用框架层)

视图系统(View System)

  • 提供UI构建的基础组件
    • View:所有UI组件的基类
    • ViewGroup:容器类,可包含其他View
    • Layout:各种布局管理器
    • Widget:预制UI控件
  • 处理用户交互
    • 触摸事件处理
    • 手势识别
    • 动画效果
    • 视图切换

资源管理器(Resource Manager)

  • 管理应用资源
    • 布局文件(XML)
    • 字符串资源
    • 图片和多媒体
    • 主题和样式
  • 支持特性
    • 国际化(多语言)
    • 屏幕适配
    • 主题切换
    • 运行时资源访问

活动管理器(Activity Manager)

  • 管理应用组件生命周期
    • onCreate():创建初始化
    • onStart():可见未交互
    • onResume():可见可交互
    • onPause():失去焦点
    • onStop():不可见
    • onDestroy():销毁
  • 处理应用导航和任务
    • 任务栈管理
    • Intent系统
    • 进程管理
    • 应用切换

窗口管理器(Window Manager)

  • 窗口类型管理
    • 应用窗口
    • 系统窗口
    • 子窗口
  • 窗口控制功能
    • 布局参数设置
    • Z轴排序
    • 焦点管理
    • 输入事件分发

内容提供者(Content Provider)

  • 数据操作接口
    • CRUD操作
    • 跨应用数据共享
    • 权限控制
    • URI寻址
  • 系统内容提供者
    • 联系人数据
    • 日历数据
    • 媒体库
    • 通话记录

包管理器(Package Manager)

  • 应用程序管理
    • 安装和卸载
    • 权限管理
    • 版本控制
    • 签名验证
  • 应用信息查询
    • 包信息
    • 组件信息
    • 权限信息
    • 服务信息

通知管理器(Notification Manager)

  • 通知类型支持
    • 标准通知
    • 进度通知
    • 自定义通知
    • 前台服务通知
  • 通知功能特性
    • 通知渠道
    • 重要性级别
    • 用户交互
    • 自定义样式

电话管理器(Telephony Manager)

  • 通讯功能管理
    • 通话控制
    • 短信处理
    • SIM卡管理
    • 网络状态监控
  • 设备信息获取
    • 设备识别码
    • 运营商信息
    • 信号强度
    • 通话状态

位置管理器(Location Manager)

  • 定位方式支持
    • GPS定位
    • 网络定位
    • 被动定位
    • 地理编码
  • 位置服务功能
    • 位置更新
    • 地理围栏
    • 位置权限
    • 省电模式

这些框架组件共同构成了Android应用开发的基础,为开发者提供了丰富的API接口。每个组件都专注于特定的功能领域,通过良好的封装和抽象,使得应用开发更加高效和规范。

Native Libraries(原生库层)

概述

  • Native Libraries 是 Android 系统中的重要组成部分,主要由 C/C++ 编写
  • 它们为上层的 Java API 框架提供必要的底层支持
  • 可以直接与 Linux 内核进行交互,提供高效的系统服务

主要组件

a) Surface Manager(表面管理器)

  • 负责管理显示子系统
  • 处理多个应用窗口的显示合成
  • 确保界面显示的流畅性

b) OpenGL ES

  • 提供 2D 和 3D 图形处理能力
  • 支持硬件加速的图形处理
  • 为游戏和图形应用提供强大支持

c) Media Framework(媒体框架)

  • 处理各种音频和视频格式
  • 提供媒体编解码功能
  • 支持图片处理和转换

d) SQLite

  • 轻量级关系型数据库
  • 为应用提供结构化数据存储
  • 支持复杂的数据查询和管理

e) WebKit

  • 提供网页浏览核心引擎
  • 支持 HTML 内容的解析和渲染
  • 为浏览器和 WebView 提供支持

f) SSL

  • 提供安全通信支持
  • 实现数据加密和解密
  • 保护网络传输安全

g) libc

  • 标准 C 库实现
  • 提供基本的系统调用接口
  • 负责内存管理等基础功能

特点

a) 高性能

  • 可以直接访问硬件资源
  • 执行效率高
  • 适合处理计算密集型任务

b) 跨平台

  • 通过 JNI 接口与 Java 层交互
  • 支持使用 NDK 进行开发
  • 具有良好的可移植性

c) 安全性

  • 实现系统级的权限控制
  • 提供内存保护机制
  • 确保进程间的隔离

Native Libraries 层是 Android 系统性能和功能的重要保障,它通过底层的 C/C++ 实现提供了高效的系统服务,同时通过良好的接口设计,使得上层应用能够方便地使用这些功能。

Hardware Abstraction Layer(硬件抽象层)

基本概念

a) 定义

  • HAL 是 Android 系统中的一个标准接口层
  • 负责封装底层硬件驱动程序的具体实现
  • 作为硬件和高层软件之间的桥梁

b) 作用

  • 有效隔离不同硬件设备的差异性
  • 为上层提供统一的硬件访问接口
  • 简化硬件驱动程序的开发过程

主要模块

a) 显示模块

  • 负责设备屏幕的显示功能
  • 处理图形渲染相关操作
  • 控制显示分辨率和刷新率

b) 音频模块

  • 管理声音的播放和录制
  • 处理音频数据的采集
  • 实现各种音效处理功能

c) 相机模块

  • 控制图像的采集过程
  • 管理视频的录制功能
  • 提供相机参数的调节接口

d) 传感器模块

  • 处理加速度传感器数据
  • 管理陀螺仪信息
  • 控制地磁感应器
  • 处理环境光感应等功能

e) 无线模块

  • 管理 WiFi 连接和控制
  • 处理蓝牙通信功能
  • 控制 NFC 近场通信

f) 存储模块

  • 管理设备内部存储
  • 控制外部存储访问
  • 提供存储空间管理

实现机制

a) 模块化设计

  • 采用独立的模块结构
  • 实现可插拔的架构设计
  • 保持模块间的松耦合

b) 接口规范

  • 定义标准的 HAL 接口
  • 确保版本间的兼容性
  • 维护接口的稳定性

c) 驱动适配

  • 对接具体的硬件驱动
  • 实现设备适配功能
  • 保证硬件兼容性

特点优势

a) 跨平台特性

  • 实现硬件无关性
  • 提供设备兼容能力
  • 支持平台间的移植

b) 可维护性

  • 便于模块化管理
  • 支持独立更新维护
  • 实现错误隔离机制

c) 安全性

  • 实现严格的权限控制
  • 限制直接硬件访问
  • 提供系统保护机制

HAL 层在 Android 系统中扮演着至关重要的角色,它不仅使得 Android 能够运行在各种不同的硬件平台上,还为硬件厂商提供了标准的开发接口。通过 HAL 的抽象,上层应用开发者可以专注于功能实现,而不必过多关注底层硬件的具体细节。同时,HAL 的模块化设计也使得系统的维护和升级变得更加容易和灵活。

Linux Kernel(Linux内核层)

核心组件

a) 进程管理

  • 负责进程的创建、调度和终止
  • 管理进程间通信(IPC)机制
  • 处理线程的创建和管理
  • 实现进程同步和互斥机制

b) 内存管理

  • 管理物理内存的分配和回收
  • 实现虚拟内存机制
  • 处理页面置换算法
  • 管理内存映射和共享内存

c) 文件系统

  • 提供 VFS(虚拟文件系统)抽象层
  • 实现各种文件系统操作接口
  • 管理文件系统缓存
  • 处理磁盘存储管理

d) 网络协议栈

  • 实现 TCP/IP 协议族
  • 管理网络设备驱动程序
  • 提供网络过滤功能
  • 处理网络数据包的收发

e) 设备驱动

  • 管理字符设备(如终端、串口)
  • 控制块设备(如硬盘、USB存储)
  • 处理网络设备
  • 提供统一的设备驱动模型

系统特性

a) 多任务支持

  • 实现抢占式调度机制
  • 支持实时任务调度
  • 管理进程优先级
  • 实现系统负载均衡

b) 内存保护

  • 实现地址空间隔离
  • 控制内存访问权限
  • 提供内存屏障机制
  • 处理缺页异常

c) 安全机制

  • 管理用户权限和访问控制
  • 集成 SELinux 安全框架
  • 控制系统调用访问
  • 实现资源访问限制

内核功能

a) 系统调用

  • 提供进程控制接口
  • 实现文件操作功能
  • 支持设备控制操作
  • 维护系统信息

b) 中断处理

  • 处理硬件中断请求
  • 管理软件中断
  • 维护中断向量表
  • 执行中断处理程序

c) 同步机制

  • 提供信号量机制
  • 实现互斥锁
  • 支持自旋锁
  • 提供读写锁机制

扩展特性

a) 模块化支持

  • 支持动态加载内核模块
  • 管理模块间依赖关系
  • 实现设备热插拔
  • 控制模块版本兼容性

b) 调试功能

  • 提供内核调试工具
  • 支持性能分析功能
  • 实现系统日志机制
  • 提供故障诊断能力

c) 虚拟化支持

  • 集成 KVM 虚拟化
  • 提供容器技术支持
  • 支持硬件虚拟化
  • 实现资源隔离机制

Linux 内核是整个操作系统的核心,它直接管理计算机的硬件资源,为上层应用程序提供了稳定、高效的运行环境。通过模块化设计和丰富的功能特性,Linux 内核能够适应各种不同的应用场景,从嵌入式设备到大型服务器都可以很好地支持。同时,其开源特性也使得它能够持续改进和发展,保持技术的先进性和创新性。

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

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

相关文章

【景观生态学实验】实验一 ArcGIS地理数据处理及制图基础

实验目的 1.掌握ArcGIS软件基本操作:通过实验操作与学习,熟练掌握ArcGIS软件相关的基本操作,包括界面熟悉、工具栏使用、数据的加载和保存、基本数据处理操作等; 2.掌握如何使用ArcGIS进行影像拼接及裁剪:通过实验操作与学习&am…

传知代码-ChatGPT多模态命名实体识别

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 ChatGPT辅助细化知识增强! 多模态命名实体识别(MNER)最近引起了广泛关注。 用户在社交媒体上生成大量非结构化内容,主要由图像和文本组成。这些帖子具有与社交媒体相…

GISBox vs CesiumLab:哪款GIS工具更适合你的项目?

在地理信息系统(GIS)领域,越来越多的用户开始关注GIS工具箱的选择,其中GISBox和CesiumLab是两款备受推崇的产品。那么,哪一款更适合你的需求呢?本文将从功能、使用体验和应用场景等方面,对GISBo…

产品如何实现3D展示?具体步骤如下

产品实现3D展示主要依赖于先进的3D建模与展示技术。以下是产品实现3D展示的具体步骤和方法: 一、3D建模 使用专业的3D建模软件,如Blender、Maya、3ds Max等,这些软件提供了丰富的建模工具和材质编辑器,能够创建出高精度的3D模型…

Python基于amazon/chronos-t5-base的预训练模型离线对时间系列数据的未来进行预测

Python基于预训练模型对时间系列数据的未来进行预测 导入库 %matplotlib inline import matplotlib.pyplot as plt import numpy as np import pandas as pd import torch from chronos import ChronosPipeline from tqdm.auto import tqdm from autogluon.timeseries import…

电脑定期运行某个程序

1、右键计算机-管理,点击任务计划程序,再点击创建基本任务; 2、写名称,下一步 3、选择任务开始计划,下一步 4、选择触发时间,下一步 5、选择启动程序,下一步 6、选择运行的程序,下一…

模型拆解(一):DBINet、GCPANet、CPD、ACCoNet、FPS-U2Net

文章目录 一、DBINet1.1编码器模块:ResNet50PVT双分支结构1.2解码器模块:自细化模块SR的应用1.3DFM:双分支融合模块1.4转换器模块:调整编码器输出至解码器中1.5深度监督损失函数 二、GCPANet2.1编码器模块:ResNet50主干…

uniapp移动端优惠券! 附源码!!!!

本文为常见的移动端uniapp优惠券,共有6种优惠券样式(参考了常见的优惠券),文本内容仅为示例,您可在此基础上调整为你想要的文本 预览效果 通过模拟数据,实现点击使用优惠券让其变为灰色的效果(模…

来自骨关节炎计划的膝关节MR图像的自动异常感知3D骨骼和软骨分割|文献速递-基于生成模型的数据增强与疾病监测应用

Title 题目 Automated anomaly-aware 3D segmentation of bones and cartilages in kneeMR images from the Osteoarthritis Initiative 来自骨关节炎计划的膝关节MR图像的自动异常感知3D骨骼和软骨分割 Background 背景 近年来,多个机器学习算法被提出用于图像…

windows|常见的文件伪装方法

几种常见的文件伪装方法: 扩展名伪装unicode字符伪装压缩包伪装隐写术 方法仅限于学习目的,不用于任何恶意或非法用途。 ———— 一、扩展名伪装:假装是另一种类型的文件 修改文件的扩展名,使得文件看起来像其他类型的文件&a…

python常用设计模式,单例模式和工厂设计模式

python常用设计模式,单例和工厂设计模式Demo 单例模式 单例设计模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 应用场景:日志记录、线程池、缓存等 优点: 全局访问&…

洛谷题解 - P1162 填涂颜色

目录 填涂颜色题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题解思路代码 填涂颜色 题目描述 由数字 0 0 0 组成的方阵中,有一任意形状的由数字 1 1 1 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 2 2 2。例如: 6 6 6\times…

python的散列类型与字符编码

文章目录 一、 初识散列类型(无序序列)二、认识集合集合的方法增删 二、认识字典字典方法增删改查 声明空变量 三、字符编码元组名() #声明一个空元组 一、 初识散列类型(无序序列) 数据类型分为3种: python的序列类型有好几种,之前的博文讲到了两种类型 1.数值类型…

Appium中的api(一)

目录 1.基础python代码准备 1--参数的一些说明 2--python内所要编写的代码 解释 2.如何获取包名和界面名 1-api 2-完整代码 代码解释 3.如何关闭驱动连接 4.安装卸载app 1--卸载 2--安装 5.判断app是否安装 6.将应用放到后台在切换为前台的时间 7.UIAutomatorViewer的使用 1--找…

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中,CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据,例如…

5、JavaScript(四) ajax+js高级+BOM

25.ajax : 前端向后端异步的取数据而无需刷新页面的技术 1 公司中的整体工作流程 1、项目开发的流程 每个职位该做的工作: 产品经理:提需求的 与客户沟通 画出原型图给程序员使用 UI设计师:美化 替换UI框架:antd element-ui e…

sql-labs靶场第十六关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库,查看数据库名称 ③爆表,查看security库的所有表 ④爆列,查看users表的所有列 ⑤成功获取用户名…

学习--四元数介绍

2022年的草稿箱里的一篇 四元数由William Rowan Hamilton发现 定义与复数类似,有三个虚部 q a b i c j d k qabicjdk qabicjdk 其中 i 2 j 2 k 2 i j k − 1 i^2j^2k^2ijk-1 i2j2k2ijk−1 四元数的模长: 四维的长度 加减法: 对应分…

linux-牛刀小试

题目一: 1.第一问 首先创建用户tab在超级用户root的终端输入useradd tab 切换到tab用户: 推出重新登录到tab用户或者su – tab切换到tab用户 2.第二问 在桌面创建SHEGNCHAN目录 在SHENGCHAN文件夹下创建相应的文件: 3.第三问 首先&#…

笔记本使用虚拟机,使用Ubuntu打开摄像头

最近在搞ros相关的内容,亲测了一下虚拟机Ubuntu打开摄像头,也是需要简单的设置的。 只需要 简单设置这四步 目录 设置usb3.1打开摄像头查看摄像头显示摄像头内容 设置usb3.1 这一步是为了防止打开摄像头的时候,没有画面。 打开摄像头 选…