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
c语言进阶学习笔记
数据库有关
c语言
数据库的概念SQL(StructuredQueryLanguage)是一种专门用来与数据库进行交互的编程语言,它允许用户查询、更新和管理关系型数据库中的数据。关系型数据库是基于表(Table)的数据库,其中表由行(Row)和列(Column)组成,每一行代表一个记录(Record),每一列代表一个字段(Field)。非关系型数据库MongoDB1、分类:大型中型小型ORACLEMYSQL/MSSQ
h海棠溪
·
2024-09-11 00:32
数据库
学习
c语言
linux
C语言
详细笔记--动态存储分配
动态存储分配是指程序运行过程中在需要时显示地申请内存空间、在不需要时释放内存空间的一种方法。通过使用动态存储分配,程序员可以在函数执行部分的任何地方使用动态存储分配函数或者回收内存空间,从而有效地使用内存空间。目录一、malloc()函数二、free()函数一、malloc()函数malloc()函数用于分配内存空间,函数原型如下:void*malloc(unsignedintsize);功能:在
Jasmine5606
·
2024-09-11 00:02
C语言
c语言
笔记
算法
c#
开发语言
c#视觉应用开发中如何使用Emgu CV在C#中进行图像处理?
microPythonPython最小内核源码解析NI-motion运动控制
c语言
示例代码解析python编程示例系列python编程示例系列二python的Web神器Streamlit如何应聘高薪职位
openwin_top
·
2024-09-10 22:51
C#视觉应用开发问题系列
c#
图像处理
开发语言
python 变量
进阶
目标变量的引用可变和不可变类型局部变量和全局变量01.变量的引用变量和数据都是保存在内存中的在Python中函数的参数传递以及返回值都是靠引用传递的1.1引用的概念在Python中变量和数据是分开存储的数据保存在内存中的一个位置变量中保存着数据在内存中的地址变量中记录数据的地址,就叫做引用使用id()函数可以查看变量中保存数据所在的内存地址注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是
ottox
·
2024-09-10 21:25
2020 年 Github 上最牛的 Java
进阶
教程及 Java 实战项目都在这里了!
写在前面大家都知道Github是一个程序员福地,这里有各种厉害的开源框架、软件或者教程。这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将Github上非常棒的Java开源项目整理下来的想法。觉得不错的话,欢迎小伙伴们去star一波。很多小伙伴都不知道学习什么开源项目,这篇文章定能为你解决疑惑。不论你想要看Java教程方向的开源项目、Java实战项目、SpringBoot教程还是说想要看微
C陈三岁
·
2024-09-10 21:12
java
java
github
开发语言
面试
架构
Python史上最全知识重点(超详细版)
进阶
篇
Python
进阶
进程间通信:Manager(内置了好多数据结构,可以实现多进程间内存共享)frommultiprocessingimportManager,Processdefadd_data(p_dict
码农必胜客
·
2024-09-10 21:39
Python零基础入门
python
网络
java
c语言
atomic能用数组的,属性关键字
一.属性关键字的分类?读写权限:readonly、readwrite(默认)原子相关:atomic(默认)、nonatomic(常用)aomic:可以保证赋值和获取是线程安全的。指的是成员属性直接的获取和赋值,不包括操作和访问。eg:用atomic修饰数组,获取和赋值保证线程安全,添加、移除对象,是不保证线程安全的。引用计数retain(mrc)、strong(arc):修饰对象assign(修饰
非著名程序~~~
·
2024-09-10 20:07
c语言atomic能用数组的
【html+css网站设计】
学习笔记
:HTML基础概念1.vscode常用设置1.1打开文件1.2新建文件1.3自动保存(ctrl+S)1.4文件重命名1.5删除文件2.vscode常用快捷键2.1自动补全HTML基本结构2.2标签自动补全
小翔很开心
·
2024-09-10 20:06
html
css
前端
Python的Pillow(图像处理库)非常详细的
学习笔记
Python的Pillow库是一个非常强大的图像处理库。安装Pillow库:在终端或命令行中输入以下命令来安装Pillow:pipinstallpillow安装后查看是否安装成功以及当前版本pipshowPillow升级库:pipinstallpillow--upgrade 一些基础的应用1、图像文件方面的:打开文件1)直接打开文件:这种方式是最常见的直接打开图片文件的方法,以文件路径作为参数,P
深蓝海拓
·
2024-09-10 19:00
机器视觉
pillow学习笔记
pillow
计算机视觉
python
图像处理
mysql之连接符函数使用sql顺序以及键约束介绍
文章目录单表查询1.格式2.关键字连接符操作符等3.分组函数/聚合函数/多行处理函数2.连接查询3.
进阶
类关键字1.union合并查询结果集2.limit分页时间表的键存储引擎mysql执行脚本指令案例
calmtho
·
2024-09-10 19:30
数据库
mysql
【跟上黑马学sql】
学习笔记
-MySQL-DQL-排序查询
DQL排序查询实例#创建一个表createtableemp4(idintcomment'编号',worknovarchar(10)comment'工号',namevarchar(5)comment'姓名',genderchar(1)comment'性别',agetinyintunsignedcomment'年龄',idcardchar(18)comment'身份证号',workaddressvar
学扎娃的小白
·
2024-09-10 19:29
mysql
sql
学习
财富自由
进阶
之路
大家好,我是梦云,今天给大家分享的书是《财富自由之路:3年内让你的个人资产翻一番》,作者博多·舍费尔。无论您的收入高低,对自己收入是否满意,总会有人比您的收入高出许多倍,他们只是知道该如何玩这场关于收入的游戏,他们了解游戏规则,这本书就是关于这些规则,将倾囊相授,让你在不需要延长工作时间或增加工作强度的情况下显著提高收入,3年内资产翻一番,并能在工作中获得享受和满足。一、盘点现状,破解仓鼠之轮困境
梦云666
·
2024-09-10 19:36
MySQL
学习笔记
2—基础+条件+排序+分组查询
DQL语言学习—数据查询语言仅作为
学习笔记
,学习资源来源于B站视频:BV1xW411u7ax1.基础查询语法:select查询列表from表名特点:查询列表可以是:表中的字段、常量值、表达式、函数查询的结果是一个虚拟的表格
Jake_SunJG
·
2024-09-10 18:47
MySQL学习
mysql
单片机之从
C语言
基础到专家编程 - 4
C语言
基础 - 4.14指针
单片机之从
C语言
基础到专家编程-4
C语言
基础-4.14指针文章目录单片机之从
C语言
基础到专家编程-4
C语言
基础-4.14指针4.14指针1指针的概念2指针的声明与初始化3指针的算术运算4NULL指针1)
fancyang
·
2024-09-10 18:44
单片机之从C语言基础到专家编程
单片机
c语言
嵌入式硬件
Android-Jetpack架构组件(二)带你了解Lifecycle,给2021的移动开发一些建议
);}@OverrideprotectedvoidonPause(){super.onPause();myPresenter.onPause();}}classMyPresenter{《Android
学习笔记
总结
flutter架构师
·
2024-09-10 17:06
程序员
面试
移动开发
android
非理工科院校怎么打好数学建模比赛 | 南川笔记
,但毕竟数学建模既要数学理论的支撑(不仅仅是大学里的微积分、线性代数和概率论与统计,更多的是基于微积分的常偏微分方程、基于线性代数的运筹学和基于概率论与统计的统计分析内容),还要编程的支撑(不是常规的
C语言
或者
南川笔记
·
2024-09-10 16:27
C语言
常见运算符
C语言
提供了丰富的运算符,这些运算符用于执行各种类型的操作,比如算术运算、比较运算、逻辑运算、位运算等。下面是一些基本的
C语言
运算符分类及其示例:1.算术运算符加法(+):a+b表示a和b的和。
雪星猫宇
·
2024-09-10 14:50
C语言
c语言
C语言
常用头文件的介绍
一、
C语言
头文件的介绍
C语言
的头文件是包含函数声明、宏定义和类型定义的重要组件,用于在编译阶段将这些信息包含到源文件中。
花开盛夏^.^
·
2024-09-10 14:48
C语言
c语言
开发语言
头文件
freemarker模板
学习笔记
文章目录freemarker常用指令if-elseif-else指令switch,case,default,break指令list,else,items,sep,break指令指令语法指令指令指令指令include指令基础知识带*的pathimport指令assign指令自定义指令参数嵌套内容宏和循环变量freemarker内置函数字符串内置函数数字内置函数哈希表内置函数序列内置函数循环变量内置函
tryCbest
·
2024-09-10 14:17
freemarker
java
spring
boot
VSCode
学习笔记
1.快捷键KeyDescriptionPlatformF1打开命令面板(CommandPalette)Win10Shift+Delete剪切当前光标所在的代码行Win102.文件2.1在文件列表中定位当前文件操作路径:右键单击文件名⇒在右键菜单中点击【RevealinExplorerView】
songyuc
·
2024-09-10 13:15
学习
笔记
C语言
简单复习(在力扣上刷题)【学习记录】
一、魔术索引在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1:输入:nums=[0,2,3,4,5]输出:0说明:0下标的元素为0来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl
清蒸君
·
2024-09-10 13:13
51单片机
c语言
leetcode
typdef 与 struct
typdeftypdef是
C语言
中很重要的关键字,他可以把已有的数据类型定义改成新名字的关键字,提高代码可读性。
经常发呆的柴犬
·
2024-09-10 13:13
c语言
移除链表元素 - 力扣(LeetCode)
C语言
203.移除链表元素-力扣(LeetCode)(点击前面链接即可查看题目)/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*removeElements(structListNode*head,intval){structListNode*cur=h
XYLoveBarbecue
·
2024-09-10 13:42
C语言数据结构练习
链表
leetcode
数据结构
c语言
--力扣简单题目(合并两个有序链表)讲解
题目如下:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]提示:两个链表的节点数目范围是[0,50]-100next=NULL;printf("请输入链表1的内容");wh
.普通人
·
2024-09-10 12:10
c语言
leetcode
链表
c语言
--力扣中等难度题目(删除链表倒数第N个节点)解析
题目如下:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]效果如下:文章目录第一部分第二部分结构体定义:typedefstructNode{intval;structNode*next;}Node;type
.普通人
·
2024-09-10 12:10
c语言
leetcode
链表
c语言
--力扣简单题目(移除链表元素)讲解
题目如下;给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head=[7,7,7,7],val=7输出:[]结构体定义:typedefstructNode{charval
.普通人
·
2024-09-10 12:08
c语言
leetcode
链表
用这7种方法,给你2018年的构图技巧来个升级吧!
高级画面对比构图法就是一些比较
进阶
的构图法,对于新手学习完基本的对比构图法后,可以来进行
进阶
强化。今天,构图君就来用7种高级构图法,帮大家来个对比构图的技巧
进阶
。1、质感对比构图
手机摄影构图大全
·
2024-09-10 12:45
python
学习笔记
08_赋值运算、逻辑运算、表达式、短路原则
python笔记081.赋值运算符num+=1等价于num=num+1num-=1等价于num=num-1num*=1等价于num=num*1num/=1等价于num=num/1num//2等价于num=num//2num%=2等价于num/2的余数num**2等价于num=num*num2.逻辑运算符逻辑运算符包含:not、and、or2.1and的用法:(且、并且)写法:条件1and条件2eg
flamingocc
·
2024-09-10 11:47
数据结构——顺序表
本文将深入探讨顺序表的实现机制,包括其基本原理、关键操作及应用场景,旨在为初学者和
进阶
学习者提供一份全面的指南。
lancyu
·
2024-09-10 11:01
数据结构
开发语言
SQL
进阶
技巧:截止当前批次前的批次量与订单量 | 移动窗口问题
目录0场景描述1数据准备2问题分析3小结0场景描述表A有如下字段,userid(用户ID),batchid(批次ID),orderid(订单ID),createtime(创建时间),同一个用户ID下有多个批次,同一个批次下有多个订单ID,相同批次ID的创建时间是相同的,创建时间精确到了秒。统计,截止对应批次ID的时间点前,该用户下有多少个批次ID,有多少个订单ID,输出的字段应该为用户ID批次ID
莫叫石榴姐
·
2024-09-10 11:29
数字化建设通关指南
#
SQL进阶实战技巧
sql
数据库
大数据
数学建模
hive
数据仓库
数据分析
Python
学习笔记
(三):列表的定义、访问及修改
今天学习了有关列表的定义、访问及修改的方法,在此整理一下。列表的定义与访问name_list=['zhangsan','lisi','wangwu']#创建一个列表name_list[0]='xiaobai'#修改列表中的单个元素print(name_list)#遍历的方式打印列表1foriteminname_list:print(item)#遍历的方式打印列表2i=0foriinrange(le
RANDY_Sw
·
2024-09-10 09:50
Python入门
python
C++
学习笔记
(14)
二、栈解旋异常被抛出后,从进入try语句块开始,到异常被抛出之前,这期间在栈上构造的所有对象,都会被自动析构。析构的顺序与构造的顺序相反。这一过程称为栈的解旋。也就是在执行throw前,在try执行期间构造的所有对象被自动析构后,才会进入catch匹配。在堆上构造的对象肿么办?三、异常规范C++98标准提出了异常规范,目的是为了让使用者知道函数可能会引发哪些异常。voidfunc1()throw(
月夕花晨374
·
2024-09-10 07:08
c++
学习
笔记
【毓秀红林】||君子和而不流(《中庸》
学习笔记
)
第11课:君子和而不流读原文“天命之谓性,率性之谓道,修道之谓教。”各位同仁早上好!今天我们继续学习中庸与赢得客户的72个机会。今天我们学习的是中庸的第11小节:故君子和而不流,强哉矫!中立而不倚,强哉矫!国有道,不变塞焉,强哉矫!国无道,至死不变,强哉矫!悟原理:品德高尚的人,和光同尘而不随波逐流。这是真强大,保持中立而不偏不倚,这是真强大。国家政治清平时不改变志向,这是真正强大国家,艰难困苦时
毓秀红林
·
2024-09-10 06:59
OpenCV计算机视觉学习(16)——仿射变换
学习笔记
OpenCV计算机视觉学习(16)——仿射变换
学习笔记
如果需要其他图像处理的文章及代码,请移步小编的GitHub地址传送门:请点击我如果点击有误:https://github.com/LeBron-Jian
牛马程序员24
·
2024-09-10 06:31
计算机视觉
opencv
学习
《沟通与职业素质》
学习笔记
2008年10月7日
2008年10月21日星期二3.4节成功销售自己的七个步骤理解客户表情、手势的意义面试官喜欢的面试姿态空间须保留人与人之间永远有距离。每个人都有自己的空间。面试时,应试人和主试人必须保持一定的距离,留有适当的空间,不适当的距离会使主试人感到不舒服。如果应试人多,招聘单位一般会预先布置好面试室,把应试人坐的位置固定好。你进面试室后,不要随意将固定的椅子挪来挪去。有的人喜欢表现亲密,总是把椅子往前挪
斯媛创作室
·
2024-09-10 06:02
Python文件操作完全指南:从基础到高级技巧的全面解析
本文已收录于《Python超入门指南全册》本专栏专门针对零基础和需要
进阶
提升的同学所准备的一套完整教学,从基础到精通不断
进阶
深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net
步入烟尘
·
2024-09-10 06:54
Python超入门指南全册
python
开发语言
写作
进阶
课(八):出书流程和市场分析
写作出版:你最关心的出书流程和市场分析一、出版市场分析1、主流文学好出版(但你需要有名气)主旋律文学作品。改革开放、脱贫、抗击疫情……有时代背景的作品。加入作协,国家会帮你出版。出版合集的书也可以加入作协。主流文学变现比较困难。2、网文出版(需要有流量)影响力比较大的网文才能出版,但是网文比较容易变现。网文要日更六千字,保证日更才能做到变现。网文网站一般有日更奖励。锻炼自己的写作能力,写作能力提高
小木山庄的溜溜
·
2024-09-10 05:59
【
学习笔记
】透视HTTP协议(八):请求方法详解
本文是一篇
学习笔记
,学习的课程是极客时间的《透视HTTP协议》。
叶阿猪
·
2024-09-10 05:21
接口测试
计算机网络
HTTP
http
计算机网络
存储课程
学习笔记
3_读写nvme磁盘(清除脏数据,struct nvme_user_io和ioctl进行读写,struct block_device内核提供接口读写)
上篇文章实现在内核模块下插入一个文件系统,实现对磁盘或者目录进行对应格式化(mount)绑定文件系统后,已经可以正常使用。接下来了解对nvme磁盘的控制。0:总结1:初始化nvme磁盘,清空脏数据dd指令2:structnvme_user_io结构体+ioctl实现直接控制nvme磁盘。了解block块3:借助内核接口插入内核模块实现对nvme磁盘的访问。(structblock_device对象
yun6853992
·
2024-09-10 05:18
dpdk学习
nvme
HTML
进阶
: Web Components 原生组件技术
HTML
进阶
:WebComponents原生组件技术文章目录HTML
进阶
:WebComponents原生组件技术WebComponents概念&技术核心1.CustomElements自定义标签1.1注册
超悠閒
·
2024-09-10 04:48
HTML
&
CSS
前端
html
javascript
web
components
组件化
19-
进阶
:Canvas 画板续(兼容触屏设备)
本节知识点JS知识点touch事件触屏设备上,mouse事件已不适用,需转换为touch事件;检测是否为触屏设备方法1://开始绘画if('ontouchstart'inwindow){touchDrawStart();}else{mouseDrawStart();}方法2://开始绘画if('ontouchstart'inwindow){touchDrawStart();}else{mouseD
格林姆大师
·
2024-09-10 04:18
存储课程
学习笔记
1_访问scsi磁盘读写测试(struct sg_io_hdr,ioctl,mmap)
创建虚拟机时,可以选择SCSI,STAT,NVME不同类型的磁盘。0:总结===》了解内核提供的访问scsi的结构和方法(主要是sg_io_hdr_t结构体和ioctl函数)。===》需要读scsi协议文档,了解相关指令,只演示了16字节固定长度读和写指令。===》了解mmap,直接映射磁盘可以实现读写功能。1:简单了解概念。sata是串行接口,访问sata设备,除了使用控制指令(原语交互),就是
yun6853992
·
2024-09-10 04:41
dpdk学习
scsi
PyMuPDF 操作手册 - 01 从PDF中提取文本
文章目录一、打开文件二、从PDF中提取文本2.1文本基础操作2.2文本
进阶
操作2.2.1从任何文档中提取文本2.2.2如何将文本提取为Markdown2.2.3如何从页面中提取键值对2.2.4如何从矩形中提取文本
岳涛@心馨电脑
·
2024-09-10 02:33
Dash
pdf
数据库
pymupdf
【
学习笔记
】无人机系统(UAS)的连接、识别和跟踪(十一)-无人机A2X功能和特性
目录引言6.2高级功能和特性6.2.1A2X通信的授权和配置6.2.2A2X通信6.2.3A2X应用服务器发现6.2.4A2X通信的QoS处理6.2.5A2X服务订阅6.2.6标识符6.2.7EPSA2X与5GSA2X之间的互操作性6.2.8A2X使用的MBS服务描述引言3GPPTS23.256技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-t
瑶光守护者
·
2024-09-10 02:31
5G-A
无人机
学习
笔记
无人机
3GPP
5G
【
学习笔记
】无人机系统(UAS)的连接、识别和跟踪(五)-无人机跟踪
目录引言5.3无人机跟踪5.3.1无人机跟踪模型5.3.2无人机位置报告流程5.3.3无人机存在监测流程引言3GPPTS23.256技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-to-Everything)服务的支持。3GPPTS23.256技术规范:【免费】3GPPTS23.256技术报告-无人机系统(UAS)的连接、识别和跟踪资源-CSD
瑶光守护者
·
2024-09-10 02:01
5G-A
无人机
学习
笔记
无人机
3GPP
5G
【
学习笔记
】3GPP支持无人机的关键技术以及场景-3GPP TS 22.125技术报告
目录引言1范围2引用3定义、符号和缩写4UAS概述5无人机系统(UAS)远程识别要求6无人机使用要求引言这份文件是3GPPTS22.125V19.2.0,主要定义了3GPP系统对无人飞行器(UAV)及其系统(UAS)的支持要求,包括远程识别、使用场景、性能要求等。以下是文件的核心内容:3GPPTS22.125V19.2.0资源下载:【免费】3GPPTS22.125V19.2.0(2024-06)U
瑶光守护者
·
2024-09-10 02:30
5G-A
无人机
学习
笔记
无人机
3GPP
5G
【
学习笔记
】无人机系统(UAS)的连接、识别和跟踪(二)-定义和缩写
引言3GPPTS23.256技术规范,主要定义了3GPP系统对无人机(UAV)的连接性、身份识别、跟踪及A2X(Aircraft-to-Everything)服务的支持。3GPPTS23.256技术规范:【免费】3GPPTS23.256技术报告-无人机系统(UAS)的连接、识别和跟踪资源-CSDN文库3.定义和缩写3.1定义就本文件而言,适用TR21.905[1]中给出的术语和定义以及以下内容。如
瑶光守护者
·
2024-09-10 02:30
5G-A
无人机
学习
笔记
无人机
物联网
3GPP
5G
【
学习笔记
】无人机(UAV)在3GPP系统中的增强支持(四)-无人机系统(UAS)命令与控制(C2)通信用例
引言本文是3GPPTR22.829V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。下载资源:3GPPTR22.829R17EnhancementforUnmannedAerialVehicles资源-CSDN文库主要内容包括:无人机高清视频直播:支持4K乃至8K视频实时
瑶光守护者
·
2024-09-10 02:30
5G-A
无人机
学习
笔记
3GPP
物联网
无人机
5G
笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel与内核进程
kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用
c语言
。
TeYiToKu
·
2024-09-10 02:29
X210嵌入式学习整理
笔记
汇编
linux
嵌入式硬件
c语言
单片机
JDBC 调用函数或存储过程
以上为本人的一些
学习笔记
,如有出错欢迎指正,陆续更新!!!
指间Hrc
·
2024-09-10 01:24
上一页
14
15
16
17
18
19
20
21
下一页
按字母分类:
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
其他