E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
linux-驱动开发
设备树之OF操作函数
注:参考正点原子I.MX6U嵌入式Linux
驱动开发
指南V1.711、查找节点:设备是以节点的形式挂载到设备树上,欲获取设备的属性信息,需先获取到设备的节点。
爱折腾的捣蛋鬼
·
2023-12-28 14:14
设备树学习
linux
Android模拟器检测体系梳理,android
驱动开发
入门
安卓系统兼容性:目前模拟器上的Android系统仍然停留在4.x,部分达到5.1,使得部分对安卓版本有要求的应用或游戏在模拟器上运行体验不好。底层关键技术>>>>虚拟化技术模拟器是用软件来模拟硬件操作,这就需要用到虚拟化技术。广义的虚拟化,是指将网络、CPU、内存及存储等各种实体资源,予以抽象、转换后呈现出来,进而打破实体结构间不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。我们所
m0_65511857
·
2023-12-28 12:07
程序员
面试
移动开发
android
Linux-
各种UID
一、UIDUID是系统中用来表示用户的标识符,启动的进程的uid就是当前登录用户的uid,查看用户uid可使用id-u命令需要注意的是,权限检查的时候是对euid检查,通常情况下进程的euid是和uid相同的。二、EUIDeuid即effectiveuserid,有效用户ID。euid作用用于文件访问检查,euid和决定了进程是否有访问某个文件的能力。例如,编写下面代码:/*testeuid.c*
Mr_Normal
·
2023-12-28 09:14
Linux
驱动开发
之杂项设备注册和Linux2.6设备注册
目录一、杂项设备注册杂项设备注册简介杂项设备注册特点:杂项设备注册相关APImisc_register()misc_deregister()杂项设备注册相关例程例程简介源码分享二、Linux2.6设备注册Linux2.6设备注册简介Linux2.6设备注册特点Linux2.6设备注册流程Linux2.6设备注册相关函数alloc_chrdev_region()unregister_chrdev_r
努力的某某姚
·
2023-12-27 19:16
Linux驱动
杂项设备注册
Linux2.6设备注册
例程分享
API简介
Linux
驱动开发
之输入子系统的简介以及相关API与例程
目录输入子系统的简介输入子系统的组成部分:输入子系统的工作流程输入子系统的优势和作用设备树相关API函数注册输入子系统取消输入子系统的注册输入子系统核心结构体的初始化释放输入子系统的核心结构体输入子系统事件上报按键事件的上报上报事件的同步相关例程例程简介例程分享输入子系统的简介Linux内核的输入子系统(InputSubsystem)主要用于处理各种输入设备的报告,并将其转换为通用的相关的事件上传
努力的某某姚
·
2023-12-27 19:45
Linux驱动开发
驱动开发
linux
c语言
mcu
Linux-
远程访问及控制
SSH远程管理SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的Telent(远程登录).RSH(RemoteShell,远程执行命令).RCP(RemoteFileCopy.远程文件复制)等应用相比,SSH协议提供了更好的安全性。配置OpenSSH服务端在Ce
李凌聪
·
2023-12-27 18:43
linux
服务器
运维
基于PC的Linux Wifi
驱动开发
环境搭建向导
基于PC的LinuxWifi
驱动开发
环境搭建向导v1.0-----------------bywaynezou2017-10-12192.168.36.57samsam一、Ubuntu系统安装1、安装ubuntu14.042
进化中的老牛
·
2023-12-27 05:40
Binder子系统驱动架构
Binder作为Android系统的主要进程间通信方式,在驱动层不会有开发的需求,我们主要还是了解下binder在驱动层的运行原理;要想掌握linux
驱动开发
就要理解linux驱动模型,同样道理,要想理解
gomogomono
·
2023-12-26 20:37
Linux系统
Android系统
android
手写promise
手写promise的过程是按照promiseA+标准,先写测试用例,然后测试
驱动开发
,开发一个满足测试用例的promise。
Repeater、
·
2023-12-26 12:30
前端
Linux-
文件权限
Linux系统中运行ls-al命令可以看到以下信息:文件信息第一列代表这个文件的类型和权限第一个字符代表文件是目录,文件或链接文件等。[d]则是目录[-]则是文件[l]则表示为链接文件(linkfile)[b]表示设备文件里面的可供存储的接口设备[c]则表示设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取设备)接下来的字符以三个为一组,且均为“rwx”的三个参数的组合,这三个权限的位置不会改
Minato666
·
2023-12-26 09:57
USB Gadget设备
驱动开发
(三) usb webcam 驱动加载脚本实现
S55webcam.sh文件:#!/bin/shecho$"*****************************************"echo$"***************webcam*****************"echo$"*****************************************"echo$"Usage:$0$1"case"$1"instart)/u
feier_yan
·
2023-12-26 02:17
Linux设备驱动开发
usb
架构
驱动开发
usbwebcam
脚本
USB Gadget设备
驱动开发
(二) USB Gadget UVC 软件流程分析
一、驱动模块注册方法:module_platform_driver_probemodule_platform_driver_probe(ambarella_udc_driver,ambarella_udc_probe);#definemodule_platform_driver_probe(__platform_driver,__platform_probe)\staticint__init__p
feier_yan
·
2023-12-26 02:46
Linux设备驱动开发
usb
架构
驱动开发
UVC开发
Spring注解
驱动开发
(四)
注:此笔记为尚硅谷Spring注解驱动教程(雷丰阳源码级讲解)学习笔记,并同时参考[https://blog.csdn.net/xjhqre/article/details/123264069]博主文章,其中包含个人的笔记和理解,仅做学习笔记之用。14、声明式事务Spring声明式事务是通过AOP(面向切面编程)来实现的,它允许开发者将事务管理的代码从业务逻辑中分离出来,以提高代码的模块化和可维护
666-LBJ-666
·
2023-12-25 15:30
Spring
spring
数据库
java
Spring注解
驱动开发
(一)
注:此笔记为尚硅谷Spring注解驱动教程(雷丰阳源码级讲解)学习笔记,并同时参考[https://blog.csdn.net/xjhqre/article/details/123264069]博主文章,其中包含个人的笔记和理解,仅做学习笔记之用。整个专栏分成了三个大的部分,分别是:容器、扩展原理以及Web1、学习安排1.1、容器容器作为整个专栏的第一大部分,内容包括:AnnotationConf
666-LBJ-666
·
2023-12-25 15:29
Spring
spring
java
后端
Spring注解
驱动开发
(二)
注:此笔记为尚硅谷Spring注解驱动教程(雷丰阳源码级讲解)学习笔记,并同时参考[https://blog.csdn.net/xjhqre/article/details/123264069]博主文章,其中包含个人的笔记和理解,仅做学习笔记之用。8、Bean生命周期简述:1、实例化一个Bean--也就是我们常说的new;2、按照Spring上下文对实例化的Bean进行配置--也就是IOC注入;3
666-LBJ-666
·
2023-12-25 15:59
Spring
spring
java
后端
Spring注解
驱动开发
(三)
注:此笔记为尚硅谷Spring注解驱动教程(雷丰阳源码级讲解)学习笔记,并同时参考[https://blog.csdn.net/xjhqre/article/details/123264069]博主文章,其中包含个人的笔记和理解,仅做学习笔记之用。13、AOPAOP:【动态代理】,指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式Spring的AOP(面向切面编程)是通过动态
666-LBJ-666
·
2023-12-25 15:25
Spring
spring
java
后端
第103天:权限提升-Linux系统&辅助项目&脏牛&Dirty&内核漏洞&SUID&GUID
环境变量,SUDO,权限不当等脏牛漏洞(CVE-2016-5195)DirtyPipe(CVE-2022-0847)SUDO(CVE-2021-3156)Polkit(CVE-2021-4034)案例演示
Linux
Ch4ser
·
2023-12-25 07:53
权限提升
linux
运维
服务器
中北大学 软件构造 U+及上课代码详解
4.软件实现与通常的程序设计的主要区别是软件的(软件的集成与测试)5.按照教材的说法,敏捷开发创造了一些新的技术或实践,如测试
驱动开发
等,但不包括(软件体系结构)6
你怎么睡得着的!
·
2023-12-25 01:08
unity
显卡
驱动开发
DRM入门--Apple的学习笔记
由于之前的blog提及kmscube的源码我没有找到,所以只能在网上搜索了。DRM简介DRM是Linux目前主流的图形显示框架,同时DRM可以统一管理GPU和Display驱动,使得软件架构更为统一,方便管理和维护。而且drm是集成在linuxkernel中的。DRM从模块上划分,可以简单分为3部分:libdrm、KMS、GEM。libdrm:对底层接口进行封装,向上层提供通用的API接口,主要是
applecai
·
2023-12-24 21:31
怎样学习嵌入式C语言编程
目录C语言编程分类c语言入门学习C语言单片机开发C语言linux应用开发C语言linux
驱动开发
C语言开发其他问题参考链接C语言编程分类C语言编程,这里分成这几类:1.c语言入门学习;2.C语言单片机开发
ketaotech
·
2023-12-24 16:41
编程语言
学习
c语言
开发语言
测试
驱动开发
(TDD)
测试
驱动开发
(TDD)是一种软件开发过程,它依赖于非常短的开发周期的重复:首先,开发人员编写一个(最初失败的)自动化测试用例,该用例定义了所需的改进或新功能,然后产生最小量代码以通过该测试,并最终将新代码重构为可接受的标准
魂斗驴
·
2023-12-24 16:49
测试
驱动开发
(TDD)
测试
驱动开发
(TDD)是一种软件开发过程,它依赖于非常短的开发周期的重复:首先,开发人员编写一个(最初失败的)自动化测试用例,该用例定义了所需的改进或新功能,然后产生最小量代码以通过该测试,并最终将新代码重构为可接受的标准
魂斗驴
·
2023-12-24 16:49
为什么开发人员不喜欢 TDD?
测试
驱动开发
(TDD)是一种软件开发过程,依赖于短期开发循环的重复:首先开发人员编写一个自动化测试用例来定义所需的改进或新功能,然后编写代码来通过该测试,最后重构新代码以符合可接受的标准。
极道Jdon
·
2023-12-24 11:21
javascript
reactjs
5、
Linux-
常用命令-文件目录操作(上)
一、说明要执行Linux命令,首先要打开Linux的命令窗口(通常也称之为Shell窗口或终端),在Shell窗口中执行命令。例如我们先执行一个最简单的命令ls,只要在键入“ls”,然后回车,此命令的功能是列出当前目录下的所有子目录和文件。Linux中命令很多,例如:ls,pwd,cd,rm,ping等等。本节就介绍这些命令的作用及使用方法。二、命令格式1、命令的一般格式:command[opti
唯老
·
2023-12-24 00:44
Kali
Linux-
配置Kali的apt命令在线安装包的源为国内源和apt和apt-get的区别
配置apt国内源因为Kali自带的源是国外的,经常会因为网络问题,而无法安装或更新软件包。而且国外的源速度很慢。所以我们直接使用国内的源,方便快速。中科大Kali源debhttp://mirrors.ustc.edu.cn/kalikali-rollingmainnon-freecontribdeb-srchttp://mirrors.ustc.edu.cn/kalikali-rollingmai
学神来啦
·
2023-12-23 17:14
驱动开发
-1
一、驱动课程大纲内核模块字符设备驱动中断二、ARM裸机代码和驱动有什么区别?1、共同点:都能够操作硬件2、不同点:1)裸机就是用C语言给对应的寄存器里面写值,驱动是按照一定的套路往寄存器里面写值2)arm裸机单独编译单独执行,驱动依赖内核编译,依赖内核执行(根据内核指定好的架构和配置去实现)3)arm裸机同时只能执行一份代码,驱动可以同时执行多分代码(且当要操作串口的时候,内核写的一部分代码咱们程
满山的猴子我的腚最红
·
2023-12-23 08:32
ARM开发
驱动开发
arm开发
字符设备
驱动开发
-注册-设备文件创建
一、字符设备驱动linux系统中一切皆文件1、应用层:APP1APP2...fd=open("led驱动的文件",O_RDWR);read(fd);write();close();2、内核层:对灯写一个驱动led_driver.cdriver_open();driver_read();driver_write();driver_close();structfile_operations{int(*
满山的猴子我的腚最红
·
2023-12-23 08:01
ARM开发
arm开发
驱动开发
c#
嵌入式硬件
stm32
前端验收测试
驱动开发
我们听说过很多关于测试
驱动开发
(TDD)的内容。那么什么是ATDD?ATDD代表验收测试
驱动开发
,这是一种定义验收标准并创建自动化测试来验证是否满足这些标准的软件开发方法。
龙测科技
·
2023-12-23 08:00
驱动开发
测试方法论
测试
Linux内核模块文件组成介绍
Linux
驱动开发
主要的工作就是编写模块,一个典型的Linux内核模块文件.ko主要由以下几个部分组成。
D_ovis
·
2023-12-23 08:42
单片机
嵌入式硬件
【Linux API 揭秘】container_of函数详解
我的圈子:高级工程师聚集地我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux
驱动开发
和系统开发,曾就职于世界500强企业!创作理念:专注分享高质量嵌入式文章,让大家读有所得!
dong__ge
·
2023-12-22 13:51
Linux
API接口详解
linux
Linux驱动开发
Linux内核开发
LinuxAPI
iot
linux-
添加开机启动脚本项
我通过linux开发板进行模拟鼠标操作,希望每次linux开机时都能自动配置鼠标,即执行配置脚本。我希望能将执行脚本的命令添加到开机启动项中,下面是实现的记录。只需要修改linux的/etc/rc.local文件即可例如我这里需要加入开机时启动模拟鼠标的命令/root/start_mouse.sh加在文件后面即可最后进行reboot,重启时添加的命令会自动运行
flyingrtx
·
2023-12-21 17:50
linux嵌入式开发
linux
运维
服务器
SAP UI5 应用开发教程之七十九 - 采用测试
驱动开发
理念(Test Driven Development)进行 SAP UI5 应用的功能开发(一)试读版
一套适合SAPUI5初学者循序渐进的学习教程教程目录SAPUI5本地开发环境的搭建SAPUI5应用开发教程之一:HelloWorldSAPUI5应用开发教程之二:SAPUI5的引导过程BootstrapSAPUI5应用开发教程之三:开始接触第一个SAPUI5控件SAPUI5应用开发教程之四:XML视图初探SAPUI5应用开发教程之五:视图控制器初探SAPUI5应用开发教程之六-了解SAPUI5的模
JerryWang_汪子熙
·
2023-12-20 18:08
linux驱动的学习 &
驱动开发
初识
1设备的概念在学习驱动和其开发之前,首先要知道所谓驱动,其对象就是设备。1.1主设备号&次设备号:在Linux中,各种设备都以文件的形式存在/dev目录下,称为设备文件。最上层的应用程序可以打开,关闭,读写这些设备文件,从而完成对设备的操作。为了管理这些设备,系统为设备编了号,每个设备都拥有主设备号和次设备号。主设备号用于区分不同种类的设备,而次设备号用于区分同一类型的多个设备。(对于常用的设备如
mjmmm
·
2023-12-20 01:28
linux
驱动开发
linux驱动
设备
Linux系统结构
系统架构
Linux-
文件的特殊权限
前言我们知道在Linux里文件和目录有r、w、x这三个读、写、执行的权限。但有时还会在权限里看到s和t,例如:s&t.png-18kB这又是代表的什么权限呢?实际上,s和t是Linux里的特殊权限,具体有SUID、SGID、SBIT三种。SUID当s出现在文件所有者的x权限上时,就被称为SetUID,简称SUID。例如前言中的/usr/bin/passwd文件,它的权限状态是:-rwsr-xr-x
agile4j
·
2023-12-19 23:07
Linux-
编写脚本自动备份文件
实验目录一、实验环境:二、实验目的:三、实验要求:四、实验内容:五、实验步骤:六、实验结果与分析:一、实验环境:•虚拟机数量:1•系统版本:Centos7.5二、实验目的:数据备份是系统管理工作中的重要内容。简单的文件备份工作主要是将重要的数据文件,如一些系统和网络服务器的配置文件、用户个人数据文件、数据库文件等复制到一个指定的地方。三、实验要求:显然,备份工作往往是需要反复执行的,而且还可以制定
小史_猿
·
2023-12-19 15:39
Linux
linux
Linux-
批量新建普通用户账号
目录一、实验环境:二、实验目的:三、实验要求:四、实验内容:五、实验步骤:六、实验结果与分析:一、实验环境:•虚拟机数量:1•系统版本:Centos7.5二、实验目的:在创建普通用户时,往往需要同时创建一批用户账号,例如为某个班级的学生各分配一个用户账号,而且还要为这些账号设置初始密码,这对于系统管理员来说是一个十分繁琐的任务。三、实验要求:如果能够通过某种自动化的方式批量创建和管理普通用户账号,
小史_猿
·
2023-12-19 15:39
Linux
linux
Linux-
环境变量与.bash_profile文件
实验目录一、实验环境:二、实验目的:三、实验要求:四、实验内容:五、实验步骤:六、实验结果与分析:一、实验环境:•虚拟机数量:1•系统版本:Centos7.5二、实验目的:修改.bash_profile文件并永久设置环境变量三、实验要求:永久设置环境变量四、实验内容:本实验将以PATH变量和PS1变量为例,演示如何修改.bash_profile文件并永久设置环境变量五、实验步骤:第1步:阅读并
小史_猿
·
2023-12-19 15:09
Linux
linux
Linux-
文件与目录的权限意义
我们都知道Linux系统内的文件有三种身份:所有者、用户组和其他人;并且每种身份都有三种权限:r、w、x;还知道可以通过chown、chgrp、chmod来修改这些权限和属性。但这些权限和属性对于文件和目录,有什么不同呢?了解这些不同点,对于保证数据安全非常重要。接下来就一起来看一下:权限对文件的意义r(read):可读取此文件的实际内容,如读取文本文件的文字内容等。w(write):可以编辑、新
agile4j
·
2023-12-19 14:24
【ros2 control 机器人
驱动开发
】简单双关节机器人学习-example 1
【ros2control机器人
驱动开发
】简单双关节机器人学习-example1文章目录前言一、RR机器人创建descriptionpkg创建demospkg二、创建controller相关创建examplepkg
机器人梦想家
·
2023-12-19 08:31
ROS2机器人操作系统
机器人
人工智能
Linux-
修改字符集、修改用户字符集
进入当前用户下运行命令locale查看当前用户的编码运行ls-la命令,可以看到文件.bash_profile然后vi.bash_profile,进行编辑将LANG=zh_CN.gbk黏贴到.bash_profile文件中,点击Esc,然后保存退出(:wq)运行一下source.bash_profie运行命令locale查看。即可将当前用户的编码改成zh_CN.gbkroot用户的字符集并没有改注
小蜗牛的路
·
2023-12-19 07:54
linux
运维
服务器
Linux下的I2C驱动框架以及代码实现
参考资料:1、LinuxIIC驱动分析—框架分析-知乎(zhihu.com)2、《Linux
驱动开发
指南》第十一章3、《正点原子I.MX6U嵌入式Linux
驱动开发
指南V1.6》4、《Linux设备
驱动开发
详解
yekh_sys
·
2023-12-18 13:59
Linux驱动
嵌入式
IIC协议
Linux驱动开发
U-boot顶层Makefile分析及编译流程
设置目标架构、交叉编译器和配置文件1.6调用scripts/Kbuild.include1.7交叉编译工具变量设置二、makexxx_defconfig过程三、U-boot的make过程本篇文章作为对正点原子的
驱动开发
教程中
lagransun
·
2023-12-18 11:14
U-boot系列
linux
嵌入式硬件
开源
经验分享
U-boot启动流程与加载内核过程
目录一、U-boot启动过程流程图二、U-boot启动过程函数简单注释本篇文章梳理了一下对正点原子的
驱动开发
教程中u-boot启动流程的梳理,制作了一份流程图,并简单的记录了一下各函数的作用,方便回头翻阅
lagransun
·
2023-12-18 11:14
U-boot系列
linux
驱动开发
经验分享
笔记
Linux
驱动开发
BL5372项目BUG(一)--rtc_device_register函数注册失败
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/xi_xix_i/article/details/134388432目录一、问题描述二、结论三、Debug过程四、解决方案题外话一、问题描述在使用linux的RTC框架的时候,使用rtc_device_register()函数时出现内核错误,报错如下
lagransun
·
2023-12-18 11:43
linux
驱动开发
bug
linux
驱动开发
中常用函数--container_of的用法及分析
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/xi_xix_i/article/details/134625972目录1.开发环境2.container_of用法简介3.container_of详解4.container_of测试1.开发环境linux4.192.container_of用法简介
lagransun
·
2023-12-18 11:43
Linux驱动开发常用函数
linux
驱动开发
运维
字符设备驱动框架的编写
一.简介我们在学习裸机或者STM32的时候关于驱动的开发就是初始化相应的外设寄存器,在Linux
驱动开发
中,肯定也是要初始化相应的外设寄存器。
凌肖战
·
2023-12-18 11:13
系统移植篇
Linux驱动学习
linux
arm开发
linux
驱动开发
中常用函数--dev_get_drvdata()与dev_set_drvdata()的用法
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/xi_xix_i/article/details/134608997目录1.开发环境1.dev_get_drvdata()与dev_set_drvdata()函数简介2.dev_get_drvdata()与dev_set_drvdata()函数测试1
lagransun
·
2023-12-18 11:13
Linux驱动开发常用函数
linux
驱动开发
c语言
Linux
驱动开发
学习笔记5《pinctrl和gpio子系统实验》
目录一、pinctrl子系统1.pinctrl子系统简介二、gpio子系统1.gpio子系统简介2.gpio子系统API函数3.与gpio相关的OF函数三、硬件原理图分析四、实验程序编写1.修改设备树文件2.LED灯驱动程序编写3.编写测试APP五、运行测试1.编译驱动程序和测试APP(1)编译驱动程序(2)编译测试APP2.运行测试上一章我们编写了基于设备树的LED驱动,但是驱动的本质还是没变,
ssz__
·
2023-12-18 11:42
Linux驱动开发学习
linux
驱动开发
学习
ubuntu
c语言
Linux
驱动开发
学习笔记4《设备树下的LED驱动实验》
目录一、设备树LED驱动原理二、硬件原理图分析三、实验程序编写1.修改设备树文件2.LED灯驱动程序编写3.编写测试APP四、运行测试1.编译驱动程序和测试APP(1)编译驱动程序(2)编译测试APP2.运行测试一、设备树LED驱动原理在上节中,我们直接在驱动文件newchrled.c中定义有关寄存器物理地址,然后使用io_remap函数进行内存映射,得到对应的虚拟地址,最后操作寄存器对应的虚拟地
ssz__
·
2023-12-18 11:42
Linux驱动开发学习
linux
驱动开发
学习
ubuntu
c语言
正点原子
驱动开发
BUG(一)--SPI无法正常通信
imx6ull的spi适配器驱动程序控制片选分析3.1设备icm20608的驱动程序分析3.2imx的spi适配器的驱动程序分析四、BUG修复测试五、其他问题一、问题描述使用正点的im6ull开发板进行spi通信
驱动开发
实验的时候
lagransun
·
2023-12-18 11:09
正点Linux驱动开发学习笔记
驱动开发
bug
linux
运维
上一页
3
4
5
6
7
8
9
10
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他