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
Java集合类详解
搜索引擎原理
详解
搜索引擎是一种复杂的软件系统,旨在帮助用户找到互联网上的信息。它们通过索引大量网页并快速响应用户查询来工作。搜索引擎的核心功能包括爬虫(crawling)、索引(indexing)、查询处理(queryprocessing)和排名(ranking)。一、网络爬虫(WebCrawling)网络爬虫(WebCrawling)是搜索引擎的核心组件之一,它的主要任务是发现和获取互联网上的网页内容,以便后续
风不归Alkaid
·
2024-08-30 07:04
搜索引擎
搜索引擎
独立开发者系列(45)——PHP的时间处理
详解
编程里面,时间函数使用相对比较复杂。变化种类比较多,使用场景也比较丰富。(1)基础用法在PHP中,时间戳是一个整数,表示自Unix纪元(1970年1月1日00:00:00GMT)以来的秒数。使用time()获取当前时间戳如果需要对时间戳进行格式化使用date(“Y-m-dH:i:s”)获取当前的时间,按照我们正常的格式输出的时间格式。如果需要将我们看到的时间2020-10-12020-11-151
大梁来了
·
2024-08-30 07:04
转型独立开发者
php
在 PyTorch 中,`permute` 方法是一个强大的工具,用于重排张量的维度。
PyTorch中的permute方法
详解
1.permute方法概述在PyTorch中,permute方法允许用户重新排列张量的维度。
小桥流水---人工智能
·
2024-08-30 06:32
人工智能
机器学习算法
深度学习
pytorch
人工智能
python
MySQL 数据类型
详解
MySQL是一种广泛使用的关系型数据库管理系统,它支持多种数据类型以满足各种应用场景的需求。本文将详细介绍MySQL支持的数据类型、它们的使用场景以及实现原理,并通过图示帮助读者更直观地理解。目录简介数值类型整型浮点型定点型日期和时间类型字符串类型字符串二进制字符串空间数据类型JSON数据类型枚举和集合类型总结简介MySQL支持多种数据类型,分为数值类型、日期和时间类型、字符串类型、空间数据类型、
拾木200
·
2024-08-30 05:57
mysql
数据库
希鹿生活佣金奖励制度
详解
关于新项目:品质特卖私域电商平台,小米融资(天眼查可查),社交电商版的私域唯品会!唯一不同的是,经营者可以赚钱,模式给力!顾客买东西贼划算,也就是性价比超级高!采用品牌方直供模式没有中间商赚差价,以限时特卖的方式帮品牌方提高销量。打爆款卖好货是我们的优势,因为我们几千万会员一起卖同一款商品。至于我为何从希鹿生活转到高省,当然是因为高省APP佣金更高,模式更好,终端用户不流失。【高省】是一个自用省钱
古楼
·
2024-08-30 04:21
JS中【Data】
详解
在JavaScript中,“Date”是一个内置对象,专门用于处理日期和时间。Date对象提供了多种方法,能够让你创建、操作和格式化日期和时间数据。下面我们将详细讲解Date对象的各个方面,包括它的创建、方法、使用场景和一些常见的坑。1.Date对象的创建1.1无参数构造constnow=newDate();如果不传递任何参数,Date对象将会默认创建一个表示当前日期和时间的对象。1.2通过时间戳
OEC小胖胖
·
2024-08-30 04:46
JavaScript
javascript
开发语言
ecmascript
前端
html
C语言文件相关函数
目录一、引言二、文件函数概述1.文件类型指针2.常用文件函数三、文件函数使用
详解
1.打开文件2.关闭文件3.写入文件4.读取文件5.二进制文件操作四、实战应用五、总结本文将详细介绍C语言中文件函数的基本概念
Beginner_bml
·
2024-08-30 04:45
开发语言
c语言
云端技术驾驭DAY07——Dockerfile
详解
、容器镜像制作、私有仓库
往期回顾:云端技术驾驭DAY01——云计算底层技术奥秘、云服务器磁盘技术、虚拟化管理、公有云概述云端技术驾驭DAY02——华为云管理、云主机管理、跳板机配置、制作私有镜像模板云端技术驾驭DAY03——云主机网站部署、web集群部署、Elasticsearch安装云端技术驾驭DAY04——Logstash安装部署及插件模块云端技术驾驭DAY06——容器技术概述、镜像与容器管理、定制简单镜像、容器内安
川川野马
·
2024-08-30 04:45
#
云端技术驾驭之路
云计算
运维
服务器
容器
经验分享
命令模式
详解
命令模式简介:命令模式将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。人话:总体来说,就是一个命令类,一个执行类,命令类包括执行类,然后在外部添加一个总的管理类,来管理命令列表与其他模式比较与修饰器模式对比:与修饰器模式非常像,就是在真正的执行者外面包裹一层修饰类,只不过这里叫做命令类比如做日志操作,事务操作,修饰模式也是可以的啊
胜天半子_王二_王半仙
·
2024-08-30 02:35
设计模式
命令模式
c++
莆田鞋代理货源渠道有哪些:推荐十个代理批发渠道
莆田鞋代理货源渠道
详解
:推荐十大代理批发渠道莆田鞋,作为全国知名的鞋类产品,以其独特的风格和卓越的品质,深受广大消费者的喜爱。如果你想成为莆田鞋的代理商,了解其货源渠道是非常关键的一步。
腕表鞋屋
·
2024-08-30 01:50
15图利用TCP/IP参考模型
详解
PC访问WEB服务器的数据通信过程
当今IP网络数据通信的基本就是TCP/IP参考模型,今天就借助PC访问WEB服务器的数据通信来深度理解下TCP/IP参考模型。TCP/IP参考模型计算机网络:简单的说,计算机网络就是由分布在世界各地的计算机通过交换机、路由器等网络设备使用传输介质(光纤等)连接而成的一个大的网络,用于提供数据通信、资源共享等服务。TCP/IP模型是当今IP网络的基础,它将数据通信的任务划分成不同的功能层次(Laye
82e49a00e1e8
·
2024-08-30 01:12
2020-11-27
八字断婚姻命理
详解
,命理小白一看便可入局之法则!八字断婚姻,主要看夫妻星和夫妻宫,并结合大运和流年进行综合分析。日主的坐支;即是配偶宫,对于男命来说,配偶宫即是妻子居住的地方,叫做妻宫。
易用堂堂主王易用
·
2024-08-30 01:37
MyBatis 环境搭建 2019-03-25
MyBatis各版本下载地址点击Spring各版本下载地址点击Mybatis
详解
http://www.mybatis.org/mybatis-3/zh/configuration.html记录下犯过的错误
琴匣自鸣
·
2024-08-30 00:36
JS中的异步机制
详解
及示例
1、同步概念:JS是单线程语言即:上一行代码执行结束后,才会执行下一行代码,90%以上的代码都是同步代码示例://示例1:console.log(1);console.log(2);//一定是先执行1,再执行2//示例2:console.log(1);//如果出现了执行耗时非常长的同步代码,程序也会等待for(vari=0;i打印10次//不被延时器包裹时:打印i的值为0~9},10)}conso
6230_
·
2024-08-29 21:30
前端基础
javascript
前端
开发语言
学习
改行学it
html
ecmascript
0基础学习Python路径(27)sys模块
Pythonsys模块
详解
1.简介“sys”即“system”,“系统”之意。
星河漫漫l
·
2024-08-29 18:09
python
开发语言
运维
学习
linux
python graph_
详解
Python Graphql
前言很高兴现在接手的项目让我接触到了PythonGraphql,百度上对其介绍相对较少也不够全面,几乎没有完整的中文文档,所以这边也借此机会学习一下Graphql。什么是Graphql呢?Graphql是一个API查询语言,其数据由服务器上的一个Scheme提供,其查询返回的数据依赖请求的时候用户需要的精确数据。列如用户只需要一个name字段,服务器也只返回name的值。参考HelloWord入门
weixin_39761491
·
2024-08-29 18:07
python
graph
Python配置管理工具库之hydra使用
详解
概要在开发复杂的Python应用程序时,配置管理往往是一个重要但容易被忽视的部分。Hydra是一个强大的配置管理工具,它旨在简化配置文件的管理和使用,尤其是在涉及多个配置文件和参数组合的场景下。Hydra提供了一种优雅的方式来组织和访问配置数据,并支持动态生成和组合配置。这对于机器学习、数据科学和大型Python应用程序开发来说尤其有用。本文将详细介绍Hydra库,包括其安装方法、主要特性、基本和
Rocky006
·
2024-08-29 17:35
python
人工智能
开发语言
Python配置管理模块之Hydra使用
详解
概要在现代软件开发中,配置管理是一个至关重要的环节。随着应用程序的复杂性增加,如何有效地管理和组织配置文件成为了开发者面临的一大挑战。Python的Hydra模块为这一问题提供了优雅的解决方案。Hydra是一个用于管理复杂应用程序配置的框架,它允许用户通过命令行参数、配置文件和其他方式灵活地管理配置。本文将深入分析Hydra模块的应用,并通过代码示例展示其强大的功能。Hydra模块概述Hydra是
Rocky006
·
2024-08-29 17:35
数据库
python
开发语言
如何选择合适的
Java集合类
来优化性能
这篇博客将探讨如何根据具体需求选择合适的
Java集合类
,以最大化性能优化。1.明确需求在选择集合类之前,首先要明确你的需求。这包括以下几个关键问题:数据的类型和规模:你需要存储的数据量是多少?
项目笔记与工具库
·
2024-08-29 17:02
java
开发语言
地平线—征程2(Journey 2-J2)芯片
详解
(28)—MIPI RX/TX+SD/SDIO/eMMC Interface Timings
(*^▽^*)错过其他章节的同学可以电梯直达目录↓↓↓地平线—征程2(Journey2-J2)芯片
详解
——目录-CSDN博客10.InterfaceTimings10.2MIPICSIHostRXTimingsMI
零零刷
·
2024-08-29 15:49
智能驾驶AI芯片—提升篇
人工智能
自动驾驶
神经网络
深度学习
硬件工程
嵌入式硬件
硬件架构
地平线—征程2(Journey 2-J2)芯片
详解
——目录
地平线—征程2(Journey2-J2)芯片
详解
(1)-CSDN博客1.芯片概况1.1芯片介绍1.2芯片框图1.3芯片特性地
零零刷
·
2024-08-29 15:49
智能驾驶AI芯片
人工智能
自动驾驶
硬件架构
智能硬件
np.percentile函数
详解
⭐️np.percentile函数np.percentile`是NumPy库中的一个函数,用于计算给定数据数组的指定百分位数。百分位数表示数据中有多少比例的值小于或等于某个值,例如,第25百分位数表示数据中有25%的值小于或等于这个值。np.percentile函数的语法numpy.percentile(a,q,axis=None,out=None,overwrite_input=False,me
肥猪猪爸
·
2024-08-29 14:46
大数据
人工智能
python
numpy
数据结构
数据统计
算法
Tree 树形组件
详解
default-expand-all 动态失效问题
1.更具给的数据依次配置consttreeRef=ref(null)consttreeData=ref([])constprops={//看下他的事例value:"id",label:"name",//按照他的属性名,配置自己的值children:"child"}2.我这边是根据id唯一值来显示选中状态3.渲染是正常请求接口就能出现4.主要是操作其中的数据,比如拿到选中状态的数据,我这边后台只需要
前端-七木
·
2024-08-29 14:43
错误归纳
前端
javascript
vue
Sqli-labs靶场第11关
详解
[Sqli-labs-less-11]
Sqli-labs-Less-11前言:SQL注入的三个条件:①参数可控;(从参数输入就知道参数可控)②参数过滤不彻底导致恶意代码被执行;(需要在测试过程中判断)③参数带入数据库执行。(从网页功能能大致分析出是否与数据库进行交互)利用orderby来测列数测显位:mysql用1,2,3,4Mysql获取相关数据:一、数据库版本-看是否认符合information_schema查询-version(
「已注销」
·
2024-08-29 14:09
sqli-labs
数据库
web安全
网络安全
mysql
sql
c语言宏定义放置位置,c语言宏定义
详解
1,防止一个头文件被重复包含#ifndefCOMDEF_H#defineCOMDEF_H//头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedefunsignedcharboolean;/*Booleanvaluetype.*/typedefunsignedlongintuint32;/*Unsigned32bitvalue*/
weixin_39552304
·
2024-08-29 13:06
c语言宏定义放置位置
C语言宏定义
详解
文章目录标识符#define预编译中的过程替换与优先级宏定义的分号带有副作用的宏和函数的比较特性比较用宏定义实现函数无法实现的功能传类型作为参数字符串拼接补充读完大约需要10分钟标识符#define如何定义一个宏?我们要使用#define来实现#define允许我们把参数替换在文本中,具体的格式是这样的#definename(parament-list)stuff其中的parament-list是
carry_carial
·
2024-08-29 13:34
c语言学习
c语言
c++
c#
【C语言】宏定义
详解
目录C语言宏定义
详解
1.宏定义的概念1.1宏定义的基本概念1.1.1基本语法1.2宏定义的用途1.3语法及用法的表格汇总1.3.1示例2.宏定义的基本使用2.1定义常量2.2定义代码片段2.3带参数的宏
LuckiBit
·
2024-08-29 13:34
C语言
c语言
linux
算法
c++
宏定义
条件编译
探索Stable Diffusion:AI在艺术创作中的无限可能
探索StableDiffusion:AI在艺术创作中的无限可能引言一、StableDiffusion简介定义与历史技术原理概述二、工作原理深入解析扩散模型基础逆向扩散过程
详解
潜空间与变分自编码器(VAE
master_chenchengg
·
2024-08-29 12:30
AI技术探讨
AI
人工智能
AIGC
行业分析
文件上传
详解
文件上传概念文件上传是由于对上传文件未作过滤或过滤机制不严(文件后缀或类型),导致恶意用户可以上传脚本文件,通过上传文件可达到控制网站权限的目的。文件上传原理文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。webshell一种网页后门,以asp、php、jsp等网页文件形式存在的一种命令执行环境。webshel
星|焰
·
2024-08-29 12:00
安全
BarChart使用
详解
及详细属性
本来准备自己写的但是看见这篇文字写得很不错,就直接上地址了:http://blog.csdn.net/github_33304260/article/details/51272078
Andy醒
·
2024-08-29 11:52
Android
BarChart
抖音团购功能开通步骤
详解
抖音作为国内最火的短视频平台之一,一直在不断创新,多次推出了与社交电商相关的功能。其中,抖音团购功能也受到了很多粉丝的关注。那么,抖音团购功能怎么开通呢?下面就让我们来介绍一下。氧惠APP,2023全新模式,0投资,最快63天做到月入十万。我的直推也会放到你下面,我曾经1年做到百万团队,现在加入我也会帮你做到百万团队。【氧惠】百度有几百万篇报道,也期待你的加入。飞智导师,氧惠首码邀请码666999
氧惠_飞智666999
·
2024-08-29 09:43
2021-08-09
一、redis服务配置文件
详解
二、RDB/AOF
详解
及优缺点总结三、rediscluster扩、缩容四、LVS调试算法总结五、LVS的NAT/DR模型实现
小咸鱼Leo00
·
2024-08-29 09:09
RabbitMQ 常见问题与故障排查
5.资源耗尽日志分析1.配置RabbitMQ日志2.日志文件位置3.日志分析工具4.分析日志文件5.常见日志问题及解决方案Docker中日志分析1.查看RabbitMQ日志2.获取详细日志3.日志类型
详解
StaticKing
·
2024-08-29 09:41
RabbitMQ
rabbitmq
分布式
Python分布式任务处理库之dramatiq使用
详解
概要在现代Web应用和数据处理任务中,异步任务处理是一个至关重要的部分。Dramatiq是一个用于分布式任务处理的Python库,旨在提供简单、可靠的任务队列解决方案。与其他任务队列库相比,Dramatiq更加轻量级,且易于上手。它的设计目标是帮助开发者轻松地将耗时的任务放到后台处理,从而提升应用程序的响应速度。本文将详细介绍Dramatiq库,包括其安装方法、主要特性、基本和高级功能,以及实际应
Rocky006
·
2024-08-29 09:41
python
开发语言
Python数据分析利器之groupby和pivot_table使用
详解
概要在数据分析的过程中,数据聚合与数据透视是两项非常重要的操作。Python的Pandas库提供了强大的工具——groupby和pivot_table,帮助我们高效地进行数据聚合和透视分析。本文将详细介绍如何使用这两个功能,并结合示例代码展示它们的实际应用,帮助更好地掌握数据分析的技巧。数据聚合groupbygroupby是Pandas中用于对数据进行分组并进行聚合操作的工具。通过groupby,
Rocky006
·
2024-08-29 09:41
python
数据分析
开发语言
Python在神经网络中优化激活函数选择使用
详解
概要在神经网络中,激活函数扮演着至关重要的角色。它的主要作用是引入非线性因素,使得神经网络能够处理复杂的非线性问题。如果没有激活函数,神经网络仅仅是线性模型的堆叠,无法胜任深度学习中的各种任务。本文将深入探讨几种常用的激活函数,包括Sigmoid、Tanh、ReLU及其变种,并通过具体的代码示例展示它们在Python中的实现和应用。激活函数的重要性激活函数将输入信号进行非线性转换,从而增强神经网络
Rocky006
·
2024-08-29 09:39
python
开发语言
equalsIgnoreCase方法
详解
equalsIgnoreCase方法
详解
大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!
微赚淘客系统开发者
·
2024-08-29 08:08
开发语言
java
Java中indexOf() 方法
详解
Java中indexOf()方法
详解
大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!
省赚客APP开发者@聚娃科技
·
2024-08-29 08:34
java
开发语言
Linux三剑客之sed命令
详解
sed(StreamEditor)是Linux中的一种流编辑器,主要用于文本的过滤和转换。与大多数文本编辑器不同,sed用于非交互式的文本处理,常被用在批处理任务中。它可以对输入的文本流进行逐行处理,并根据脚本或命令对文本进行修改。1.sed的基本语法sed[选项]'script'[文件]script:sed脚本,由命令和模式组成,用来定义对文本进行的操作。[文件]:需要处理的文本文件。如果不指定
promise524
·
2024-08-29 07:55
linux
shell
bash
sed
运维
后端
java jmap jstat_JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用
详解
是什么jps查看所有的jvm进程,包括进程ID,进程启动的路径等等。我自己也用PS,即:ps-ef|grepjavajstack观察jvm中当前所有线程的运行情况和线程当前状态。系统崩溃了?如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的javastack和nativestack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。系统hung住了?
小五咔咔咔
·
2024-08-29 06:52
java
jmap
jstat
C++20三向比较运算符
详解
三向比较运算符可以用于确定两个值的大小顺序,也被称为太空飞船操作符。使用单个表达式,它可以告诉一个值是否等于,小于或大于另一个值。它返回的是类枚举(enumeration-like)类型,定义在与std名称空间中。其运算的结果如下:数据类型值含义如果操作数为整数类型,其结果称为强排序(strong_ordering)strong_ordering::less左边的操作数小于右边的操作数strong
ghost_him
·
2024-08-29 06:50
笔记
c++20
c++
C++设计模式之组合模式
详解
简介组合模式(CompositePattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户端可以统一处理单个对象和组合对象(即对象的集合),从而简化了复杂结构的处理方式。设计理念组合模式通过将对象组织成树形结构,使得客户端能够以相同的方式对待单个对象和对象组合。这种模式的核心思想是:允许客户端以一致的方式处理单个对象和组合对象。组成部分Componen
shuai_258
·
2024-08-29 05:13
算法题
c++全套攻略
c++
设计模式
组合模式
Wonder Dynamics——虚拟角色动画和实时互动生成
二、WonderDynamics实现技术
详解
Wo
爱研究的小牛
·
2024-08-29 05:42
实时互动
电缆护层保护器维护方法
详解
电缆护层保护器维护方法
详解
在电气行业的背景下,电缆作为电力传输的重要载体,其安全运行对于保障电力供应的稳定至关重要。而电缆护层保护器作为电缆的重要组成部分,其维护工作更是不可忽视。
bdzhongbang123
·
2024-08-29 04:07
社交电子
spark mllib 特征学习笔记 (一)
PySparkMLlib特征处理
详解
PySparkMLlib提供了丰富的特征处理工具,帮助我们进行特征提取、转换和选择。以下是PySparkMLlib中常用的特征处理类及其简要介绍。
路人与大师
·
2024-08-29 03:57
spark-ml
学习
笔记
android openGL ES
详解
——剔除
一、正面剔除在绘制3D场景的时候,我们需要决定哪些部分是对观察者可见的,或者哪些部分是对观察者不可⻅的.对于不可见的部分,应该及早丢弃.例如在⼀个不透明的墙壁后,就不应该渲染.这种情况叫做”隐藏⾯消除”(Hiddensurfaceelimination).立方体中的正背面任何物体都有两面性,正面和背面,而观察者只能看到一个面.OpenGL可以通过分析顶点数据的顺序检测到面向观察者的面从而渲染他们,
闲暇部落
·
2024-08-29 02:19
OpenGL
android
功能测试与自动化测试
详解
点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快什么是自动化测试?自动化测试是指利用软件测试工具自动实现全部或部分测试,它是软件测试的一个重要组成部分,能完成许多手工测试无法实现或难以实现的测试。能够正确、合理地实施自动测试,可以快速、全面地对软件进行测试,从而提高软件质量,节省经费,缩短软件发布周期。自动化测试一般分为UI自动化测试和接口自动化测试。UI自动化测试是指基于界面元素的自
测试1998
·
2024-08-29 01:43
python
软件测试
职场和发展
自动化测试
功能测试
测试工具
测试用例
Java中的BPM与工作流引擎
详解
业务流程管理(BusinessProcessManagement,BPM)和工作流引擎在现代企业应用中扮演着关键角色。它们帮助自动化和优化业务流程,提高工作效率。在Java生态系统中,有多个BPM和工作流引擎可供选择,如Activiti和Camunda。本文将详细介绍BPM的基本概念,探讨Activiti和Camunda这两种流行的工作流引擎,并提供一个代码示例展示如何在Java中集成和使用工作流
๑҉ 晴天
·
2024-08-29 00:40
java
java
开发语言
Java 中的线程本地存储(ThreadLocal)机制
详解
在并发编程中,我们经常需要确保某些数据在线程之间是隔离的,以避免多线程竞争带来的数据不一致问题。Java提供了一种方便的机制来实现这种隔离,即ThreadLocal。本篇博客将详细讲解ThreadLocal的工作原理、使用方法以及其在实际开发中的应用场景,并附带代码示例以帮助读者理解。什么是ThreadLocal?ThreadLocal是Java提供的一种线程局部变量,它为每个使用该变量的线程都提
๑҉ 晴天
·
2024-08-29 00:10
java
java
开发语言
Nginx 负载均衡
详解
Nginx负载均衡
详解
一、Nginx简介Nginx是一个高性能的开源Web服务器和反向代理服务器,以其轻量级、高并发、低内存消耗等特点著称。
hong161688
·
2024-08-29 00:07
nginx
负载均衡
运维
上一页
11
12
13
14
15
16
17
18
下一页
按字母分类:
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
其他