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设备 (转)
这里只描述在
嵌入式
系统里面用得最为广泛的3种设备。1.字符设备(chardevice)字符设备是Linux最简单的设备,可以像文件一样访问。初始化字符设备时,它的设备驱动程序向Li
timequark
·
2025-02-10 17:04
Embedded
System/RTOS
linux
数据结构
struct
buffer
linux内核
cache
安全见闻(网络安全篇)
spm_id_from=333.337.search-card.all.click如涉及侵权马上删除文章1.编程语言C语言:一种通用的、面向过程的编程语言,广泛应用于系统软件和
嵌入式
开发。
.Ayang
·
2025-02-10 15:19
渗透测试学习笔记
安全
web安全
网络安全
网络
计算机网络
2025系统设计架构师备考计划
并不断反思总结学习内容:第四版的系统架构设计师教程分为21个章节,分别如下:计算机组成与体系结构操作系统数据库系统计算机网络系统性能评价开发方法系统计划系统分析与设计方法软件架构设计设计模式测试评审方法
嵌入式
系统设计开发管理信息系统基础知识基于中间件的开发安全性和保密设计系统的可靠性分析与设计软件的知识
极客风暴(Cyber Wave)
·
2025-02-10 13:23
系统设计架构师
经验分享
学习方法
程序人生
06 在MSYS2中编译树莓派裸机程序,并在QEMU中运行
作者将狼才鲸创建日期2022-11-14Gitee源码和工程地址:才鲸
嵌入式
/开源安防摄像机(
嵌入式
软件)CSDN文章地址:项目介绍:开源安防摄像机(
嵌入式
软件)4)完整的环境安装步骤写在前面,我会提供已经安装好各种工具的
才鲸嵌入式
·
2025-02-10 11:39
9
嵌入式QEMU教程
嵌入式
单片机
arm
MCU
linux
04 在MSYS2中安装QEMU
作者将狼才鲸创建日期2022-11-14Gitee源码和工程地址:才鲸
嵌入式
/开源安防摄像机(
嵌入式
软件)CSDN文章地址:项目介绍:开源安防摄像机(
嵌入式
软件)4.2MSYS2中安装QEMU因为我已经有了
才鲸嵌入式
·
2025-02-10 11:09
9
嵌入式QEMU教程
嵌入式
单片机
c语言
arm
stm32
Lua语言的语法糖
Lua语言的语法糖Lua是一种轻量级、高效且灵活的脚本语言,它广泛应用于游戏开发、
嵌入式
系统和其他需要高性能的场景。其简洁明了的语法以及强大的功能使得Lua在开发者中备受欢迎。
霍璟琅
·
2025-02-10 10:05
包罗万象
golang
开发语言
后端
STMicroelectronics 系列:STM32L1 系列_(14).STM32L1系列中断处理
STM32L1系列中断处理中断概述中断是
嵌入式
系统中一个非常重要的机制,用于处理外部事件和内部事件,使得系统能够高效地响应各种需求。
kkchenkx
·
2025-02-10 07:31
单片机开发
stm32
嵌入式硬件
单片机
SGP.02-v4.2-001
2.4OTACommunicationonES5(SM-SR-eUICC)2.4.3SMS在eUICC(
嵌入式
通用集成电路卡)远程配置和管理系统中,OTA(空中传输)通信由SM-SR(订阅管理-服务器)
SofterICer
·
2025-02-10 06:19
eSIM
物联网
5G
网络
安全
如何确认Linux
嵌入式
系统的触摸屏对应的是哪个设备文件(/dev/input/event1)?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?
Linux
嵌入式
系统的输入设备的设备文件有什么特点?
昊虹AI笔记
·
2025-02-10 04:34
嵌入式
Linux系统
linux
嵌入式
Linux2月10日学习笔记
1.ShellShell是一种用于用户与操作系统交互的一种高级命令行环境。它允许用户通过输入命令来执行操作,如文件管理、目录遍历、文本处理、网络操作等。Shell的意思是“外壳”,在Linux中它是一个程序,它负责接收用户的输入,根据用户的输入找到其他程序并运行。一输入一个命令为例,shell负责接受字符并显示,执行后解析并寻找相应的程序(通过环境变量path),执行程序在我们输入命令后,shel
sky102003.
·
2025-02-10 04:31
学习
笔记
linux
嵌入式
基础学习|C语言篇——结构体(含进阶)
结构体数据类型基本数据类型整型浮点型字符型构造类型数组结构体结构体:用来处理,现实生活中,更复杂的数据的描述用来描述复杂数据的一种用户自定义的数据类型描述学生信息://简单点name//"tom"sex//""age//intsno//intscore//float//详细点namesexagesnoscoreaddresstelqqemailparent...//结构体类型定义---定义(从无到
DXX——
·
2025-02-10 02:46
数据结构
算法
c语言
手把手教你学固件开发(1.1)--DMA固件
3.2启动DMA传输3.3中断处理4.参考资料4.1官方文档4.2在线资源5.常见问题及解决方法5.1数据传输不完整5.2性能问题5.3调试技巧总结DMA(DirectMemoryAccess)固件在
嵌入式
系统和高性能计算中非常重要
小蘑菇二号
·
2025-02-10 02:13
1024程序员节
嵌入式
系统中C++基础知识精髓
大家好,我在工作经常发现小伙伴们遇到一些C++的问题都是对基础知识不熟悉或理解混乱所导致的。正所谓万丈高楼平地起,作为一名合格的程序员来说,没有良好的基本功很难达到一定的高度。而工作中大部分编程问题都是基本功不扎实所导致,所以决定花些时间来整理C++相关的基本知识和基本概念供大家参考理解,每一个知识点都结合相关的代码进行验证。本文基本上涵盖了C++最常用的知识点,希望对小伙伴们有所帮助。1.C++
嵌入式开发星球
·
2025-02-09 23:54
鸿蒙万物互联人工智能之卓越
c++
开发语言
数据库
学习记录
Day2(JDBC)
文章目录Day2JDBC简介JDBC的流程DriverManagerl类数据库URL详解Connection类ResultSet类释放资源Statement对象介绍CRUD操作建立JDBC工具类Day22019年7月6日。这是我学习数据库的第二天。这一天,我学到了以下的知识。JDBC简介JDBC(JavaDatabaseConnectivity),SUN公司为了简化、统一对数据库的操作,定义了一套
赈川
·
2025-02-09 21:07
JDBC
JDBC
MySql
Java
串口调试可能遇见的常见问题和排查方法
串口UART作为
嵌入式
应用和通讯领域中最常用的接口之一,接口协议虽然简单,但在实际应用中不同设备之间的通讯也会存在各种小问题,下面对使用中各种常见的问题做下总结和梳理,可作为调试参考。
苏州稳联
·
2025-02-09 16:36
物联网
嵌入式硬件
信息与通信
嵌入式
Linux驱动学习_简单了解Cortex-A7 MPCore架构
Cortex-A7MPcore处理器支持1~4核,通常是和Cortex-A15组成big.LITTLE架构的,Cortex-A15作为大核负责高性能运算,比如玩游戏啥的,Cortex-A7负责普通应用,因为CortexA7省电。Cortex-A7本身性能也不弱,不要看它叫做Cortex-A7但是它可是比Cortex-A8性能要强大,而且更省电。Cortex-A7MPCore支持在一个处理器上选配1
Les maths
·
2025-02-09 15:31
linux
运维
服务器
Ardiuno之esp32 st7789显示屏利用TJpg_Decoder库读取sd卡中的图片
前言:因为空闲时间比较多,看了不少
嵌入式
开发的教程,过年期间整了一块240*240的st7789屏幕,之前使用micropython开发,但是感觉图片加载速度慢,而且库非常少,没办法读取sd卡里面的图片
wangjingsong_810
·
2025-02-09 14:51
c++
OpenMV和K210(fron ChatGPT)
OpenCV2.树莓派(RaspberryPi)与OpenCV安装OpenCV学习资源3.香橙派(OrangePi)与OpenCV安装OpenCV学习资源综合学习资源OpenMV和K210是两个流行的
嵌入式
视觉平台
overwizard
·
2025-02-09 14:21
个人
图像处理
计算机视觉
学习
自动化
机器人
数据库操作与数据管理——Rust 与 SQLite 的集成
SQLite是一个轻量级的关系型数据库,适合
嵌入式
应用和小型项目。我们将利用rusqlite库高效地与SQLite进行交互。1.使用rusqlite进行基本CRUD操作1.1rusqlite
m0_74824802
·
2025-02-09 14:51
面试
学习路线
阿里巴巴
数据库
rust
sqlite
微信小程序开发学习笔记——3.6【小案例】熟练使用事件与数据绑定取随机值
>>跟着b站up主“咸虾米_”学习微信小程序开发中,把
学习记录
存到这方便后续查找。课程连接:https://www.bilibili.com/video/BV19G4y1K74d?
Qy_cm
·
2025-02-09 13:47
小程序开发学习笔记
微信小程序
学习
笔记
【GitLab CI/CD 实践】从 0 到 1 搭建高效自动化部署流程
在移动端开发、鸿蒙开发、物联网、
嵌入式
、云原生、开源等领域有深厚造诣。图书作者:《ESP32-C3物联网工程开发实战》图书作者:《SwiftUI入门,进阶与实战》超级个体:CO
网罗开发
·
2025-02-09 12:08
python集
运维
gitlab
ci/cd
自动化
(盈鹏飞
嵌入式
SBC-T113全志T113-i主板)-Qt5.12图形库配置说明(可选组件)
SBC-T113产品特性:采用Allwinner公司Cortex-A7双核T113-i处理器,运行最高速度为1.2GHZ;内置64位玄铁C906RISC-VCPU和DSP,提供高效的计算能力;支持1080P视频编码,多格式1080P60fps视频解码(H.265,H.264,MPEG-1/2/4)支持LVDS/MIPI-DSI,分辨率最高1920x1080;支持512-1GBytesDDR3SDR
szembed
·
2025-02-09 11:59
T113-i/T113-S3
qt
开发语言
T113 Linux Qt
本文移植的硬件平台来自于盈鹏飞
嵌入式
的SBC-T113S(处理器是T113-S3)主板。
szembed
·
2025-02-09 11:58
T113-i/T113-S3
linux
qt
运维
(盈鹏飞
嵌入式
SBC-T113全志T113-i主板)-配置Buildroot
SBC-T113产品特性:采用Allwinner公司Cortex-A7双核T113-i处理器,运行最高速度为1.2GHZ;内置64位玄铁C906RISC-VCPU和DSP,提供高效的计算能力;支持1080P视频编码,多格式1080P60fps视频解码(H.265,H.264,MPEG-1/2/4)支持LVDS/MIPI-DSI,分辨率最高1920x1080;支持512-1GBytesDDR3SDR
szembed
·
2025-02-09 11:58
T113-i/T113-S3
网络
大数据
linux
嵌入式
硬件篇---OpenMV串口流和缓冲区
文章目录前言流和缓冲区1.流(Stream)的含义定义在OpenMV中的体现2.缓冲区(Buffer)的含义定义在OpenMV中的实现3.流与缓冲区的协同工作数据发送流程数据接收流程4.缓冲区管理的关键方法发送缓冲区管理接收缓冲区管理示例代码5.流控制与缓冲区溢出预防6.实际应用场景场景1:实时传感器数据传输需求实现场景2:高速图像传输需求总结总结前言以上就是今天要讲的内容,本文简单介绍了Open
Ronin-Lotus
·
2025-02-09 10:51
嵌入式硬件篇
嵌入式硬件
python
OpenMV
UART
流和缓冲区
基于OSAL的
嵌入式
裸机事件驱动框架——DEMO
感谢大佬分享B站up主【架构分析】
嵌入式
祼机事件驱动框架DEMO演示,使用OSAL的任务事件,定时器以及消息队列功能进行一个简单的使用演示有两个任务LED任务-定时器1事件:500ms闪烁一次-定时器2
小朱炖粉条
·
2025-02-09 09:47
OSAL
嵌入式
事件驱动
嵌入式
开发:傅里叶变换(1):理论
目录1.傅里叶变换的四种类型2.计算机处理的核心方法:离散傅里叶变换(DFT)3.实数DFT与复数DFT4.实际应用中的关键挑战傅立叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。傅里叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅里叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和
魂兮-龙游
·
2025-02-09 09:43
嵌入式开发
人工智能
傅里叶变换
滤波
离散傅里叶变换
DFT
基于OSAL的
嵌入式
裸机事件驱动框架——整体架构调度机制
参考B站up主【架构分析】
嵌入式
祼机事件驱动框架感谢大佬分享任务ID:TASK_XXXTASK_XXX在系统中每个任务的ID是唯一的,范围是0to0xFFFE,0xFFFF保留为SYS_TSK_INIT
小朱炖粉条
·
2025-02-09 09:42
OSAL
嵌入式
事件驱动
C语言结构体位域定义详解与实例
经常应用于:
嵌入式
、网络协议字段定义、状态量等。
W说编程
·
2025-02-09 08:34
C/C++
c语言
数据结构
缓存
嵌入式硬件
嵌入式
学习-----liunx中断相关编程
设备树里使用中断①interrupt-parent=你要用哪一个中断控制器里的中断?②interrupts你要用哪一个中断?Interrupts里要用几个cell,由interrupt-parent对应的中断控制器决定。在中断控制器里有“#interrupt-cells”属性,它指明了要用几个cell来描述中断。例如一个cell来表明使用“哪一个中断”另一个cell来描述中断,一般是表明触发类型。
agentky
·
2025-02-09 06:50
嵌入式学习
Golang操作sqlite3数据库教程
sqlite概述sqlite是
嵌入式
关系型数据库引擎,官方描述为自包含的、无服务的、零配置并支持事务的关系型数据库引擎。我们在产品开发过程中经常使用,可以快速进行产品验证和部署,快速实现产品演示。
梦想画家
·
2025-02-09 04:36
#
Golang
数据库
sqlite
golang
【
学习记录
】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)
文章目录0.前言1.功能设计2.数据处理3.项目结构4.功能实现4.1.初始化4.2.地图基础功能模块4.2.1.放大缩小功能,图层管理功能4.2.2.地图测量功能,几何绘制功能4.3.导航规划功能模块4.4.POI检索功能模块4.5.专题数据加载5.总结0.前言本人只是一个普普通通的GIS学生,下面是记录我的写的一个作业demo的内容,可能会存在一定的错误,欢迎在评论区\私信交流!*完整功能展示
Simon_Fitz
·
2025-02-09 04:31
学习
javascript
嵌入式
基础学习|C语言篇——指针(含进阶)二
指针操作字符一维数组字符型的一维数组字符串字符数组的形式---栈上的数据可读可写字符串常量区---常量区的数据,只能读,不能改intputs(constchar*s)constchar*p//const--限定为只读//const离谁近,就限定谁(就近原则)constchar*p//const此时是限定基类型的--表示将基类型限定为只读//准确说,是限定了通过*p的方式访问到的基类型为只读char
DXX——
·
2025-02-08 23:03
学习
c语言
开发语言
C语言中的共用体(Union):
嵌入式
开发中的节省内存利器
在进行
嵌入式
开发时,我们常常会听到这样一句话:“内存就是金钱。”
TNT_JQR
·
2025-02-08 23:32
c语言
嵌入式硬件
单片机
嵌入式
工程师面试经验分享与案例解析
嵌入式
工程师岗位受到众多求职者的关注。面试流程严格,技术要求全面,涵盖C/C++编程、数据结构与算法、操作系统、
嵌入式
系统开发、硬件驱动等多个方向。
嵌入式Jerry
·
2025-02-08 23:32
面试
面试
经验分享
职场和发展
嵌入式硬件
linux
物联网
云原生
C++ 是一种功能强大且灵活的编程语言,广泛应用于系统编程、游戏开发、
嵌入式
系统和高性能计算等领域。
1.安装C++编译器要编写和运行C++程序,你需要一个C++编译器。常用的编译器有:GCC(GNUCompilerCollection):适用于Linux和macOS。Clang:适用于macOS和Linux。MicrosoftVisualC++:适用于Windows。你可以通过以下方式安装编译器:Linux:使用包管理器安装GCC,例如sudoapt-getinstallg++。macOS:安装
Kingdom_Garden
·
2025-02-08 21:18
C++
开发语言
c++
开发语言
deepseek来讲lua
Lua是一种轻量级、高效、可嵌入的脚本语言,广泛应用于游戏开发、
嵌入式
系统、Web服务器等领域。以下是Lua的主要特点和一些基本概念:1.特点轻量级:Lua的核心非常小,适合嵌入到其他应用程序中。
狂爱代码的码农
·
2025-02-08 20:41
VOIP那些事
kamaimio
ASPICE标准:汽车软件与
嵌入式
系统开发的黄金准则-亚远景
ASPICE(AutomotiveSPICE)标准应运而生,为汽车软件和
嵌入式
系统的开发提供了框架和准则。
亚远景aspice
·
2025-02-08 16:11
aspice
Spring Boot 需要独立的容器运行吗
SpringBoot不需要独立的容器运行,它内置了一个
嵌入式
的Web服务器(如Tomcat、Jetty或Undertow),所以可以直接作为一个独立的应用程序运行,而不需要外部的Servlet容器。
秋恬意
·
2025-02-08 15:37
spring
boot
后端
java
嵌入式
硬件篇---OpenMV的硬件流和软件流
文章目录前言一、硬件流控制(HardwareFlowControl)1.基本原理RTSCTS2.OpenMV中的实现•硬件要求•代码配置•工作流程二、软件流控制(SoftwareFlowControl)1.基本原理XONXOFF2.OpenMV中的实现•代码配置•工作流程三、硬件流控制vs软件流控制对比四、在OpenMV中的综合应用示例五、注意事项1.硬件兼容性2.波特率匹配3.缓冲区管理4.抗干
Ronin-Lotus
·
2025-02-08 15:35
嵌入式硬件篇
嵌入式硬件
OpenMV
硬件流
软件流
python
C/C++
嵌入式
面试题
目录C面试题Linux系统编程网络编程C++STLQT数据库BS开发C面试题1、描述⼀下gcc的编译过程?gcc编译过程分为4个阶段:预处理、编译、汇编、链接。预处理:头⽂件包含、宏替换、条件编译、删除注释编译:主要进⾏词法、语法、语义分析等,检查⽆误后将预处理好的⽂件编译成汇编⽂件。汇编:将汇编⽂件转换成⼆进制⽬标⽂件链接:将项⽬中的各个⼆进制⽂件+所需的库+启动代码链接成可执⾏⽂件2、内存的最
残念惭忆
·
2025-02-08 15:02
面试题
c语言
c++
开发语言
日拱一卒(20)——leetcode
学习记录
:大小为 K 且平均值大于等于阈值的子数组数目
一、题目给定数组,统计数组中长度为k的子数组且该子数组的平均值大于threshold的数量二、思路滑动窗思路,计算长度为k的滑动窗的平均值,关键点在于,每滑动一次,只需要去掉头增加尾,而不需要重新全部计算,进而将计算量从O(n*k)降低为O(n)三、题解classSolution:defnumOfSubarrays(self,arr,k,threshold):curr=sum(arr[:k])n=
特立独行的Q
·
2025-02-08 14:00
leetcode
学习
算法
嵌入式
面经-c/c++面经-软件开发面经<9/30>--C/C++常见面试题(四)
高级专栏系列:
嵌入式
面经解析大全专栏链接:
嵌入式
/C++面试题解析大全
嵌入式
面经解析大全目录详情:
嵌入式
面经111道面试题全解析C/C++可参考
嵌入式
项目交流分享链接:
嵌入式
项目交流分享(附源码)安卓高频面经解析大全专栏链接
爱打球的程小员许乔丹
·
2025-02-08 14:28
c++
c语言
开发语言
嵌入式
面试
嵌入式
面试题 C/C++常见面试题整理_7
一.什么函数不能声明为虚函数?常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。1.为什么C++不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。2.为什么C++不支持构造函数为虚函数?因为构造函数本来就是为了明确初始化对象成员才产生的,虚函数表的
嵌入式_笔记
·
2025-02-08 14:25
面试
面试
专科生的
嵌入式
开发之路
俗话说的好,高中不努力,大学指定没戏,哈哈,谁说的,当然是我说的。高考结束了,我成功以320分的优异成绩成为了一个地道的专科生,高中玩嗨了,这回选志愿就傻眼了,这点分可选的学校并不多,要不再复习一年??敖,还是算了吧。报志愿的时间到了,通过一番的筛选,第一志愿秦皇岛职业技术学院,为啥选这主要是看学校环境好啊,海边走路就到了,第二志愿邯郸学院,原因是这是个本科专科一体的学校,而且邯郸据说美女多,能和
lzs_blog
·
2025-02-08 13:20
嵌入式开发之路
嵌入式开发
嵌入式开发经历
专科生嵌入式开发
双非硕士的抉择:自学
嵌入式
硬件开发还是深入Linux C/C++走软开?
今天给大家分享的是一位粉丝的提问,双非硕研一是自学
嵌入式
走偏硬件还是说深入学习Linuxc/c++走软开呢?接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。
程序员yt
·
2025-02-08 13:16
学习
c++
计算机网络
嵌入式硬件
中微CMS8S5898:8051系列高性价比MCU,赋能多样化应用
在
嵌入式
系统领域,8位MCU凭借其成本低、功耗小、易于开发等优势,依然在众多应用场景中占据重要地位。
MOS管-冠华伟业
·
2025-02-08 12:43
单片机
人工智能
嵌入式硬件
AUTOSAR汽车电子
嵌入式
编程精讲300篇-基于FPGA的CAN FD汽车总线数据交互系统设计
目录前言汽车总线以及发展趋势汽车总线技术汽车总线发展趋势CANFD总线国内外研究现状2系统方案及CANFD协议分析2.1系统控制方案设计2.2CANFD总线帧结构分析2.2.1数据帧分析2.2.2远程帧分析2.2.3过载帧分析2.2.4错误帧分析2.2.5帧间隔分析2.3位流编码以及位时序分析2.3.1位流编码分析2.3.2位时间分析2.3.3位时间切换及位同步分析本文篇幅较长,分为上中下三篇,文
格图素书
·
2025-02-08 10:29
fpga开发
汽车
ESP32开发
学习记录
---》GPIO
she2025年2月5日,新年后决定开始充电提升自己,故作此记,以前没有使用过IDF开发ESP32因此新年学习一下ESP32。ESPIDF开发环境配置网上已经有很多的资料了,我就不再赘述,我这里只是对我的学习经历的一些记录。首先学习一个芯片我们当然先使用的GPIO设置啦,GPIO对一个单片机来说相当于各个语言的helloworld。那么第一章学习我们就从GPIO配置开始吧,学习一个单片机的最应该做
且撷相思红豆枝
·
2025-02-08 10:53
ESP32IDF
c++
算法
开发语言
MongoDB开发规范与数据建模
文章目录MongoDB开发规范MongoDB数据建模
嵌入式
文档一对一关系模型
嵌入式
文档模型子集模式
嵌入式
文档一对多关系模型
嵌入式
文档模型子集模式文档引用一对多关系模型物联网时序数据建模MongoDB开发规范命名原则数据库名使用小写字符
胡尚
·
2025-02-08 09:18
深入学习总结笔记
#
MongoDB篇
mongodb
oracle
数据库
上一页
1
2
3
4
5
6
7
8
下一页
按字母分类:
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
其他