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
数据结构学习实践项目
高阶
数据结构学习
—— 图(3)
文章目录1、最小生成树概念2、Kruskal算法3、Prim算法1、最小生成树概念先看一下连通图和生成树的概念连通图。在无向图中,若从顶点v1到顶点v2有路径,则称顶点v1与顶点v2是连通的。如果图中任意一对顶点都是连通的,则称此图为连通图。生成树:一个连通图的最小连通子图称作该图的生成树。有n个顶点的连通图的生成树有n个顶点和n-1条边。注意这是无向图中的概念这一篇来解决最小生成树问题。生成树是
咬光空气
·
2023-11-04 13:20
高阶数据结构学习
学习
算法
图论
c++
数据结构
高阶
数据结构学习
—— 图(4)
文章目录1、最短路径2、单源最短路径——Dijkstra算法(正权值)3、单源最短路径——BellmanFord算法1、BF优化:SPFA2、BF算法解决不了带负权回路的问题,实际上哪一个算法都无法求出来4、多源最短路径——Floyd-Warshall算法1、最短路径最短路径是在有向图中,找一个顶点到另一个顶点的最短路径,也就是边的权值和最小。2、单源最短路径——Dijkstra算法(正权值)单源
咬光空气
·
2023-11-04 13:11
高阶数据结构学习
数据结构
学习
算法
图论
c++
数据结构学习
笔记 2-2 堆(Heap)与优先队列 与 LeetCode真题(Java)
如果没有学过二叉树建议先去看这篇文章:
数据结构学习
笔记2-1二叉
小成同学_
·
2023-11-04 03:56
数据结构与算法
数据结构
堆
leetcode
java
没有工作经验,考个ACP认证找工作能加分吗?
就像设计师被要求设计出“五彩斑斓的黑”,企业总希望用实习生的工资,要求应届毕业生有1年以上相关工作经验,或者有相关证书,
实践项目
经历。面对现在
兰兰mlx
·
2023-11-03 15:35
2018-10-11
数据结构学习
---循环队列的实现
循环队列是顺序队的一种,意在解决队首和队尾指针同同时等于MAXSIZE-1的时候,会发声假上溢的情况,利用循环队列解决了这个问题判断是否队空,则看rear=front==0判断是否队满,则看(rear+1)%MAXSIZE==front/**学习时间:2018-10-11*学习内容:数据结构之循环队列的实现*学习人:田超*QQ:770925351*Email:
[email protected]
*开发
回不去的温柔
·
2023-11-03 14:33
如何部署 Git 实现多人协同开发
如何部署Git实现多人协同开发☆*o(≧▽≦)o*☆嗨~我是IT·陈寒✨博客主页:IT·陈寒的博客该系列文章专栏:Java学习路线其他专栏:Java学习路线Java面试技巧Java实战项目AIGC人工智能
数据结构学习
文章作者技
IT·陈寒
·
2023-11-03 03:34
Java学习路线
git
【翻译】微软SAR——推荐系统实践笔记
【翻译搬砖】本文为微软推荐系统
实践项目
的SAR样例的翻译文档(译者:Funco),原文地址:SARSingleNodeonMovieLens。
FUNCO_小风
·
2023-11-02 22:52
推荐系统
ElasticSearch
推荐系统
python
微软
协同过滤
机器学习
数据结构学习
笔记(单链表、单循环链表、带头双向循环链表)的增删查改排序等)
数据结构学习
笔记(单链表、单循环链表、带头双向循环链表)的增删查改排序等链表的概念及结构链表结构的分类链表的常用操作实现无头单链表单链表补充单循环链表带头双向循环链表链表的概念及结构概念:链表是一种物理存储结构上非连续
康x呀
·
2023-11-02 03:48
数据结构与算法
C语言
链表
数据结构
数据结构学习
笔记——线性表
线性表的顺序表示(顺序表)特点:1.随机访问:即可以在O(1)时间内找到第i个元素2.存储密度高,每个节点只存储数据元素3.扩展容量不方便(即使采用动态分配,扩展长度的时间复杂度也比较高)4.插入、删除操作不方便,需要移动大量元素顺序表的静态分配#defineMAXsize100//静态顺序表的最大容量typedefstruct//静态顺序表结构{intdata[MAXsize];intlengt
君丿莫悔
·
2023-11-02 03:47
笔记
学习
数据结构
数据结构学习
笔记——链式存储结构
链表:线性表的链式存储结构,链表里面有很多个结点,每个结点由存放数据的数据域和表示数据元素之间的逻辑关系的指针域(C/C++这么用)。单链表:在每个结点中除了包含数据域之外只设置一个指针域,用于指向其后继结点,这样的链表称为线性单向链表,简称单链表。双链表:在每个结点中除了包含数据域之外设置两个指针域,一个用于指向前驱结点,一个用于指向后继结点。注意:若一个结点中的某个指针域不需要指向其他任何结点
HiSi_
·
2023-11-02 03:45
数据结构
数据结构
链表
数据结构学习
笔记——链式表示中的双链表及循环单/双链表
一、双链表(一)双链表的定义双链表是在单链表结点上增添了一个指针域prior,指针域prior指向当前结点的前驱结点,即此时链表的每个结点中都有两个指针域prior和next,从而可以很容易通过后继结点找到前驱结点,故访问前驱和后继结点的时间复杂度都为O(1)。(二)双链表的判空一个带头结点L的双链表,若L->next==NULL时,则该双链表为空;一个不带头结点的双链表,若L==NULL时,则该
晚风(●•σ )
·
2023-11-02 03:44
数据结构
数据结构
笔记
双链表
循环链表
循环单链表
循环双链表
链表
数据结构学习
笔记day2
3.1栈和队列栈和队列的定义和特点:栈是限定仅在表的一端进行插入和删除操作的线性表。插入,删除的一端称为栈顶,另一端称为栈底。不含任何元素的空表称为空栈。栈是一种后进先出的线性表。队列--先进先出顺序栈的表示和实现:附设top指针,指向栈顶元素。另设base指针,指向栈底元素。通常top指向栈顶元素之上的下标地址。stacksize表示栈可使用的最大容量。base==top是栈空标志。链栈的表示和
既白765
·
2023-11-02 00:52
数据结构
学习
小爬虫
实践项目
-正则表达式
^以什么开始.任意字符*出现次数?非贪婪匹配贪婪匹配:自右往左开始匹配非贪婪匹配:自左往右开始匹配()代表提取子串+匹配前面的子表达式一次或多次line='guimadao'apr="(gu.+d)"输出:guimad{2}#匹配确定的2次{2,}#匹配确定的2次{2,5}#最少匹配2次且最多匹配5次x|y#匹配x或y[.*]#必须存在.或*字符[4567]#存在4或5或6或7[0-9]#存在0至
鬼马压刀
·
2023-11-01 17:45
SwiftUI的概述
二、系统支持1、官网要求:iOS:13.0+MacOS:10.15+MacCatalyst:13.0+tvOS:13.0+watchOS:6.0+2、
实践项目
中要求:iOS:14.0+M
写下岁月的痕迹
·
2023-11-01 05:04
2020-06-12时间记录
大概睡了9小时吧,还是有点困,前一天只睡了5小时真的太猛了==今天没干什么事,晚上把创新
实践项目
部署了一下,改了一些bug,没想到部署之后有些样式会和开发环境不一样。明天得好好学习了。
296b871d5cd0
·
2023-11-01 00:17
[java-数据结构与算法-顺序表01]
数据结构与算法一.数据结构分类1.1按逻辑结构划分1.2按物理机构分为:
数据结构学习
的内容是什么?
心尘未泯
·
2023-10-31 19:02
Java
笔记
数据结构
算法
java
c#
数据结构学习
总结
原文链接https://blog.csdn.net/bcbobo21cn/article/details/61614576c#常用数据结构解析http://blog.csdn.net/suifcd/article/details/42869341谈谈在平时使用U3D时经常用到的数据结构和各种数据结构的应用场景吧。1.几种常见的数据结构这里主要总结下小匹夫在工作中常碰到的几种数据结构:Array,A
xch123456nice
·
2023-10-31 19:00
c#
数据结构
arraylist
【数据结构】顺序表实例探究
个人主页⭐个人专栏——
数据结构学习
⭐点击关注一起学习C语言目录导读:1.顺序表的基本内容1.1概念及结构1.2时间和空间复杂度1.3基本操作1.4顺序表的优缺点2.静态顺序表3.动态顺序表4.实现动态顺序表
流浪者与猴
·
2023-10-31 19:22
数据结构学习
数据结构
c语言
链表
c语言创造线性表储存复数,《c语言数结构》第02章 线性表.ppt
数据结构内容——数据的逻辑结构、存储结构和基本运算(计算机处理非数值对象)
数据结构学习
工具——抽象数据类型和伪码(类C)算法效率指标——时间效率和空间效率课堂练习:数据结构课程的起点:第2章线性表2
兜里没有糖了
·
2023-10-31 16:12
c语言创造线性表储存复数
数据结构学习
笔记之字典树(trie)
定义 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。字典树 Trie树查找每个条目的复杂度和字典中条目的个数无关,而是和查找的条目的长度有关。常用的场景有通讯录、最长公共前缀
布鲁斯理
·
2023-10-31 15:36
存储系统设计(HUST)
计算机组成与系统结构
实践项目
资源下载链接:存储系统设计HUST文章目录计算机组成与系统结构
实践项目
1、汉字字库存储芯片扩展实验2、MIPS寄存器文件设计3、MIPSRAM设计4、全相联cache设计5、
万里守约
·
2023-10-30 08:03
头歌Encoder
计算机组成原理
存储器设计HUST
高阶
数据结构学习
—— 图(1)
文章目录1、并查集2、了解图3、邻接矩阵4、压缩路径5、基本概念6、邻接表1、并查集并查集是一个森林,是由多棵树组成的。这相当于整套数据,分成多个集合。查找有交集的集合们,会把它们合并起来,所以叫并查集。一开始拿到的是一堆数据,我们给它们编号,然后放到一个个集合中。如何做编号?如何做集合?我们先建立两个文件,Graph.cpp和UnionFindSet.h。#includeusingnamespa
咬光空气
·
2023-10-29 20:09
高阶数据结构学习
数据结构
图论
c++
学习
高阶
数据结构学习
—— 图(2)
文章目录1、BFS1、DFS1、BFS广度优先。确定从哪个点开始,然后用队列来完成遍历。拿出一个点就把和这个点相连的其它点放进去,但是这样前面放进过队列的也有可能被再次放入,所以需要做好标记。一个队列,一个标记容器。在邻接矩阵里写。voidBFS(constV&src){size_tsrci=GetVertexIndex(src);//队列和标记数组queueq;vectorvisited(_ve
咬光空气
·
2023-10-29 20:35
高阶数据结构学习
数据结构
学习
深度优先
广度优先
图论
c++
如何在深度学习领域取得个人的成功
进行
实践项目
:深度学习最好通过实际项目来学习。选择一个感兴趣的领域,例如计算机视觉、自然语言处理或增强学习,然后开始构建和训练深度学
xw555666
·
2023-10-29 13:13
深度学习
人工智能
初级算法-贪心算法
主要记录算法和
数据结构学习
笔记,新的一年更上一层楼!
997and
·
2023-10-29 10:28
数据结构与算法
算法
贪心算法
数据结构
数据结构学习
——树形结构之递归遍历二叉树
目录一.什么是二叉树二.二叉树分类2.1、完全二叉树2.2、满二叉树2.3、扩充二叉树2.4、平衡二叉树三.二叉树的应用场景四.遍历方式五.为什么要研究遍历六.前序遍历七.中序遍历八.后序遍历九.数据结构专栏一.什么是二叉树二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。二.二叉树分类2.1、完全二叉树若设二叉树的高度为h,除第h层外,其它各层(1~h-1)的结点数都
Hulake_
·
2023-10-29 03:36
数据结构
编程语言技巧及算法运用
数据结构
学习
数据库
递归二叉树
Vue 3中toRaw和markRaw的使用
Java中的静态变量与实例变量☆*o(≧▽≦)o*☆嗨~我是IT·陈寒✨博客主页:IT·陈寒的博客该系列文章专栏:Java学习路线其他专栏:Java学习路线Java面试技巧Java实战项目AIGC人工智能
数据结构学习
文章作者技术和水平有限
IT·陈寒
·
2023-10-28 18:08
Web前端框架
Java学习路线
java
vue.js
前端
前端框架
数据结构学习
笔记(第三章 栈,队列和数组)
目录编辑一、栈1.定义2.基本操作(严蔚敏版)3.栈的顺序存储结构顺序栈的实现栈的基本运算共享栈4.栈的链式存储二、队列1.定义2.基本操作3.队列的顺序存储循环队列4.队列的链式存储结构基本操作5.双端队列三、数组1.定义2.特殊矩阵的压缩存储一、栈1.定义栈是只允许在一端进行插入和删除操作的线性表。栈顶:线性表允许插入删除的一端。栈底:固定的,不允许插入删除的另一端。空栈:不含任何元素的空表。
低调$(生活)
·
2023-10-28 09:03
数据结构
大数据
数据结构
队列
栈
数组
栈和队列求解迷宫问题(
数据结构学习
笔记)
文章目录迷宫问题“栈”求解迷宫问题行走规则算法思路算法代码栈的定义算法设计完整代码最终迷宫路径算法总结“队列”求解迷宫问题算法思路算法代码队列定义算法设计完整代码最终迷宫路径(小迷宫)最终迷宫路径(原题迷宫)算法总结迷宫问题给定一个M*N的迷宫图、入口与出口、行走规则。求一条从指定入口到出口的路径(这里M=8,N=8),所求路径必须是简单路径,即路径不重复(为了方便算法起见,在整个迷宫外围加上一堵
省下洗发水钱买书
·
2023-10-28 09:32
数据结构学习笔记
算法
队列
数据结构
c++
数据结构学习
笔记(第二章:线性表)
第二章:线性表2.1线性表的概念线性表的定义线性结构的特点2.2顺序表(顺序存储)顺序表的定义顺序表的实现(C++实现)顺序表的简单应用2.3线性链表(链式存储)线性链表的定义线性链表的实现(C++实现)线性链表的扩展2.4顺序表和链表在复杂度上的区别插入和删除查找2.5双链表双链表的含义双链表的部分实现2.6循环链表循环链表的含义循环双链表的部分实现2.7静态链表静态链表的定义静态链表的部分实现
LEE
·
2023-10-27 17:38
链表
指针
数据结构
C/C++ 覆盖率统计
实践项目
:WIFI万能钥匙-广告检索端单元测试覆盖率统计待整理。。功能测试覆盖率统计待整理。。
夏国栋
·
2023-10-27 15:32
基于Kubesphere容器云平台物联网云平台Devops实践
基于Kubesphere容器云平台物联网云平台Devops
实践项目
背景公司是做工业物联网相关业务的,现业务是云平台,技术栈后端为Springboot2.7+JDK11,前端为Vue3+Ts,需要搭建自动化运维平台以实现业务代码自动部署上线
风 离
·
2023-10-27 08:24
物联网
devops
运维
kubernetes
jenkins
后端
数据结构学习
笔记——哈希表
注:本文章的内容大部分摘自由李春葆主编的《数据结构教程》1、基本概念哈希表又称散列表,其基本思路是,设要存储的元素个数为n,设置一个长度为m(m>=n)的连续内存单元,以每个元素的关键字ki(0=n时一定能找到空闲单元)。线性探测法的递推描述公式为:线性探测法的优点是解决冲突简单,一个重大的缺点是容易产生堆积问题。这是由于当连续出现若干个同义词时(设第一个同义词占用单元d0,这连续的若干个同义词将
Night_00
·
2023-10-27 08:03
数据结构与算法相关
哈希表
数据结构学习
--双向链表(python)
概念双向链表(Double_linked_list)也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。实现classNode:def__init__(self,data):self.data=data#数据域self.next=None#指针域(直接后继)self.prev=None
雷子_
·
2023-10-27 06:05
高阶
数据结构学习
之跳表
这里写自定义目录标题1相关概念2相关题目1206.设计跳表链接描述代码3skiplist跟平衡搜索树和哈希表的对比1相关概念假如我们每相邻两个节点升高一层,增加一个指针,让指针指向下下个节点,如下图b所示。这样所有新增加的指针连成了一个新的链表,但它包含的节点个数只有原来的一半。由于新增加的指针,我们不再需要与链表中每个节点逐个进行比较了,需要比较的节点数大概只有原来的一半。以此类推,我们可以在第
sakeww
·
2023-10-26 19:19
高阶数据结构
数据结构
学习
链表
数据结构学习
笔记
数据结构学习
笔记复杂度分析为什么要分析时间复杂度大O复杂度表示方法时间复杂度分析几种常见复杂度分析空间复杂度分析最好、最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度数组随机访问的实现低效的“插入”和
Andy_Chen_Hao
·
2023-10-26 19:49
数据结构
算法
考研
Java 新手如何使用Spring MVC 中的查询字符串和查询参数?
探索Java中的静态变量与实例变量☆*o(≧▽≦)o*☆嗨~我是IT·陈寒✨博客主页:IT·陈寒的博客该系列文章专栏:架构设计其他专栏:Java学习路线Java面试技巧Java实战项目AIGC人工智能
数据结构学习
文章作者技术和水平有限
IT·陈寒
·
2023-10-26 06:55
Java学习路线
Web前端框架
java
spring
mvc
解决Vue 3 + Element Plus树形表格全选多选以及子节点勾选的问题
树形表格全选多选以及子节点勾选的问题☆*o(≧▽≦)o*☆嗨~我是IT·陈寒✨博客主页:IT·陈寒的博客该系列文章专栏:Java学习路线其他专栏:Java学习路线Java面试技巧Java实战项目AIGC人工智能
数据结构学习
IT·陈寒
·
2023-10-26 03:01
Java学习路线
Web前端框架
1024程序员节
vue.js
web3
【自研Fe编译器】三、(变量声明+栈分配)基于Flex + Yacc开发的高级语言编译器
项目链接:https://github.com/FeliGame/FeCompiler本项目中的文法和AST数据结构设计参考了北京大学编译器
实践项目
pku-minic.github.io/online-doc
菲利Felicity
·
2023-10-26 02:46
c++
笔记
c语言
算法
数据结构
risc-v
如何学习能减少对现有工作的依赖?
这可能包括在线课程、书籍、工作坊、
实践项目
等。实践和应用:尽可能在实际
舒一笑
·
2023-10-25 23:12
我的成长之路
一笑的职场感悟
学习
程序漫游指南
C语言
数据结构学习
笔记(9)-稀疏矩阵的三元组加乘法、转置
/*稀疏矩阵的三元组顺序表基本表示及加乘法、转置输出结果为:请输入第一个稀疏矩阵的行数,列数,非零元素个数:333请输入稀疏矩阵的行数,列数,非零元素值:111请输入稀疏矩阵的行数,列数,非零元素值:222请输入稀疏矩阵的行数,列数,非零元素值:313输出三元组数组:RowColItem111222313输出稀疏矩阵:100020300稀疏矩阵为3行3列,共3个非零元素.请输入第二个稀疏矩阵的行数
laven_li
·
2023-10-25 20:22
数据结构
c语言
矩阵
Java 新手如何使用Spring MVC 中的双向数据绑定?
☆*o(≧▽≦)o*☆嗨~我是IT·陈寒✨博客主页:IT·陈寒的博客该系列文章专栏:架构设计其他专栏:Java学习路线Java面试技巧Java实战项目AIGC人工智能
数据结构学习
文章作者技术和
IT·陈寒
·
2023-10-25 08:42
Java学习路线
微服务架构设计
java
spring
1024程序员节
【
数据结构学习
记录28】——归并排序
一.原理我们常见的归并排序,又叫做2路归并排序,相当于是将两个顺序表或链表合在一起的操作。如果我们通过二分法来实现,将个长的顺序表一直二分法一直分到最小的子序列,然后从最小子序列逐步合并成大的表,那么最后这个大表就是有序的了。所以这是一个递归的过程,时间复杂度为nlog2nnlog_2nnlog2n二.过程因为是个递归的过程,所以一起展示比较方便假设一个有序表的元素是0~n共n+1个元素,其中开始
康娜喵
·
2023-10-25 00:16
数据结构
链表
数据结构
算法
排序算法
归并
Innovus学习笔记
innovus学习笔记——数字后端ICinnovus学习笔记——数字后端IC_innovus
实践项目
_Mercury.wang的博客-CSDN博客一、物理后端设计流程简介:1、layout版图设计:由fab
而。
·
2023-10-24 13:32
数字后端-Innovus
学习
笔记
MySQL的索引原理
索引的工作原理创建和管理索引索引类型最佳实践总结欢迎来到
数据结构学习
专栏~MySQL的索引原理☆*o(≧▽≦)o*☆嗨~我是IT·陈寒✨博客主页:IT·陈寒的博客该系列文章专栏:
数据结构学习
其他专栏:Java
IT·陈寒
·
2023-10-24 10:19
Java学习路线
1024程序员节
java
mysql
数据库
数据结构学习
:单链表,顺序表和链表的比较
数据结构学习
单链表,顺序表和链表的比较2006-10-2916:26单链表1、链接存储方法链接方式存储的线性表简称为链表(LinkedList)。
aboluo2010
·
2023-10-23 23:42
数据结构
常用数据结构的原理
学习路线专栏~常用数据结构的原理☆*o(≧▽≦)o*☆嗨~我是IT·陈寒✨博客主页:IT·陈寒的博客该系列文章专栏:Java学习路线其他专栏:Java学习路线Java面试技巧Java实战项目AIGC人工智能
数据结构学习
文章作者技术和水平有限
IT·陈寒
·
2023-10-23 23:40
Java学习路线
数据结构学习
数据结构
大话
数据结构学习
笔记(2)
第二章算法算法的定义:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。算法具有5个基本特性:输入,输出,有穷性,确定性和可行性。输入输出:算法剧透零个或多个输入,至少一个输出。有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。确定性:算法的每一步都具有确定的含义,不会出现二义性。可行性:算法的每一步
Knight_Davion
·
2023-10-23 18:12
数据结构学习
之路-链表
链表动态数组的接口设计链表(LinkedList)Java中的接口继承规范(单纯的Java语法,跟数据结构没关系)链表类的设计链表接口的设计链表的练习题删除节点反转链表环形链表双向链表(DoubleLinkedList)双向链表的接口设计双向链表VS单向链表双向链表VS动态数组单向循环链表双向循环链表链表总结学习链表之前,先学习动态数组。数组是一种顺序存储的线性表,所有的元素的内存地址是连续的动态
Struggle¥
·
2023-10-22 21:10
数据结构
学习
数据结构学习
:链表
LinkedList一、什么是链表?二、单向链表代码实现三、双向链表代码实现四、双向链表相比于单向链表的优势?五、链表和数组有什么区别?该如何抉择六、链表的其它操作一、什么是链表?熟悉数组的朋友们可能知道:数组是用一块连续内存空间来存储数据,根据下标访问可以达到O(1)链表正相反,用指针串起一块块不连续的内存空间来存储数据链表同数组一样,都为线性表结构,都支持插入、删除、查询等操作链表衍生出单向链
我爱夜来香A
·
2023-10-22 21:07
数据结构和算法
链表
数据结构
学习
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
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
其他