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++
| Leetcode
C++
题解之第388题文件的最长绝对路径
题目:题解:classSolution{public:intlengthLongestPath(stringinput){intn=input.size();intpos=0;intans=0;vectorlevel(n+1);while(pos1){len+=level[depth-1]+1;}if(isFile){ans=max(ans,len);}else{level[depth]=len;
Ddddddd_158
·
2024-09-06 05:46
经验分享
C++
Leetcode
题解
2022年3月21日
读书笔记
今日阅读1小时,总计1892小时,第1833日阅读《腹地的构建》我认为这些参与并非主要是由特定的官员们的贪欲、无知和本性所决定,而是由一种本身与经济和政治联系在一起的系统的逻辑所决定的:它的两个核心原则是需要获得更多的税课来为国家构建的进程加油,并且需要减少外债及其引发的政治压力。尽管向着这些目标的努力,有时采用了怪异和可怕的形式—特别是自国家权力通常被分割,以及由于不平等条约排除了关税作为民族主
龙套哥萨克海龙
·
2024-09-06 04:21
《童年的秘密》
读书笔记
。P9-27
《童年的秘密》
读书笔记
。P9-27在这一部分主要就《童年秘密》这一本书做了一个概括。全书除“导论”外分为三个部分,共30章。
刘霞辉
·
2024-09-06 04:11
华为OD机试2024年E卷-树状结构查询[200分]( Java | Python3 |
C++
| JsNode | Go | C语言)实现100%通过率
题目描述通常使用多行的节点、父节点表示一棵树,比如西安陕西陕西中国江西中国中国亚洲泰国亚洲输入一个节点之后,请打印出来树中他的所有下层节点输入描述第一行输入行数,下面是多行数据,每行以空格区分节点和父节点接着是查询节点输出描述输出查询节点的所有下层节点。以字典序排序补充说明树中的节点是唯一的,不会出现两个节点,是同一个名字示例1输入5bacadcecfdc输出def思路:根据题意建树,之后从给定的
梅花C
·
2024-09-06 02:02
华为OD题库
华为od
C++
设计模式——职责链模式(chain of Responsibility)
职责链模式在软件的构建中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,若显示指定,将带来发送者与接受者之间的紧耦合。职责链模式就是使多个对象都有机会处理请求,避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递请求,直到一个对象处理它为止。#include#includeusingnamespacestd;enumclassRequestType{R
dailingGuo
·
2024-09-06 02:58
C++设计模式
c++
设计模式
华为OD机试E卷 - 环中最长子串/字符成环找偶数O(Java & Python& JS &
C++
& C )
最新华为OD机试真题目录:点击查看目录华为OD面试真题精选:点击立即查看题目描述给你一个字符串s,字符串s首尾相连成一个环形,请你在环中找出‘o’字符出现了偶数次最长子字符串的长度。输入描述输入是一串小写字母组成的字符串备注1<=s.length<=5x10^5s只包含小写英文字母输出描述输出是一个整数示例1输入alolobo输出6说明最长子字符串之一是“alolob”,它包含’o’2个。
算法大师
·
2024-09-06 02:25
最新华为OD机试
java
华为od
python
javascript
c语言
c++
华为OD机试E卷
华为OD机试E卷 - 找单词(Java & Python& JS &
C++
& C )
最新华为OD机试真题目录:点击查看目录华为OD面试真题精选:点击立即查看题目描述给一个字符串和一个二维字符数组,如果该字符串存在于该数组中,则按字符串的字符顺序输出字符串每个字符所在单元格的位置下标字符串,如果找不到返回字符串“N”。需要按照字符串的字符组成顺序搜索,且搜索到的位置必须是相邻单元格,其中“相邻单元格”是指那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。假定在数
算法大师
·
2024-09-06 02:55
最新华为OD机试
华为od
java
python
javascript
c++
c语言
华为OD机试E卷
C++
开发基础——类对象与构造析构
一、基础概念类:用户自定义的数据类型。对象:类类型的变量,类的实例。类的成员:成员变量和成员函数。成员变量:类中定义的变量。成员函数:类中定义的函数。定义类的代码样例:classClassName{//members};//类定义的右花括号后面必须有分号类的访问修饰符:public、private、protected。public:类的成员可以被类外部的非成员函数访问。private:类的成员可以
程序员与背包客_CoderZ
·
2024-09-06 01:52
C/C++开发基础
c++
开发语言
c语言
linux
【华为OD机试】斗地主之顺子(python, java,
c++
, js)
斗地主之顺子前言:本专栏将持续更新华为OD机试题目,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于OD机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:
[email protected]
;备注:CSDN。题目描述在斗地主扑克牌游戏中,扑克牌由小到大的顺序为:3,4,5,6,7,8,9,10,J,Q,K,A,2,玩
steven_moyu
·
2024-09-06 01:22
华为OD机试
(Py
&
Java
&
C++
&
Js)
华为od
python
java
c++
js
《分享经济》
读书笔记
定义分享经济(SharingEconomy)是指将社会海量、分散、闲置资源、平台化、协同化地集聚、复用与供需匹配,从而实现经济与社会价值创新的新形态。分享经济强调的两个核心理念是“使用而不占有”(AccessoverOwnership)和“不使用即浪费”(ValueUnusedisWaste)[分享经济的特征分享经济的特征可以归纳为五大驱动、三大基石、四低四高。分享经济五大驱动用户驱动。消费者主权
轩滕
·
2024-09-06 01:08
华为OD机试E卷 - 斗地主之顺子(Java & Python& JS &
C++
& C )
最新华为OD机试真题目录:点击查看目录华为OD面试真题精选:点击立即查看题目描述在斗地主扑克牌游戏中,扑克牌由小到大的顺序为:3,4,5,6,7,8,9,10,J,Q,K,A,2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。其中顺子的出牌规则为:由至少5张由小到大连续递增的扑克牌组成,且不能包含2。例如:{3,4,5,6,7}、{3,4,5,6,7,8,9,10,J,Q,K,A}都是
算法大师
·
2024-09-06 01:51
最新华为OD机试
华为od
java
python
c语言
c++
javascript
华为od机试
【
C++
关键字】谈谈你对volatitle、extern 关键字的理解
文章目录1.volatitle的概念2.volatitle的作用3.1.volatitle的概念volatitle关键字用于修饰变量,告诉编译器该变量的值可能会在程序执行的任何时候被外部因素改变,因此编译器不应该对其进行优化。2.volatitle的作用①防止优化1)编译器在优化程序时可能会假设变量的值不会发生改变,特别是对于局部变量,它可能会将变量的值缓存到寄存器中。在某些情况下,volatit
未来可期LJ
·
2024-09-06 01:50
学习总结
opencv
人工智能
计算机视觉
OpenglEs之EGL环境搭建
前言前面我们发布了一系列的入门教程,例如
C++
系列的指针扫盲、多线程的使用等,JNI入门系列,ffmpeg入门系列等,有感兴趣的童鞋们可以关注往回自行查阅。
FlyerGo
·
2024-09-06 00:16
Opengl
音视频
c++
opengl
《代码整洁之道》
读书笔记
《代码整洁之道》
读书笔记
根据书名,可以知道这本书围绕“代码整洁”的思想和方法展开,但是个人认为,它不仅仅强调了代码整洁内容,更多的还包括代码测试、系统设计、并发编程的部分内容。
fsy351
·
2024-09-06 00:41
java
开发语言
2022-01-16
第一部分
读书笔记
1.在你们28岁之前不要结婚,只有到了这个年纪,你们才会对自身、对世界有所了解。一旦你对自己有了清醒的认识和理解,记住你是谁,并且保持住。
素面朝人海
·
2024-09-05 23:34
日记——《七十二堂写作课》
读书笔记
(四)
日记属于叙述文,是把自己每天的所见所闻,感想或行事书写出来。而读者只有自己本身。种类日记可分为很多种,如:商人的商用日记、医生的诊断日记、主妇的家政日记,学生的普通日记等等。目的1.备查检。就是把琐事或对他人的一些答复,写出来,以便日后一查便可明了。2.助修养。日记记录自己的行事,以便能随时查阅,可以发觉自己的缺点并改变。3.作为练习写作的基础。写作的基础是多作,日记是每天都写的,所以也是最适合,
melodyjewellery
·
2024-09-05 23:01
C++
现代教程六
#VariabletemplatestemplateconstexprTpi=T(3.1415926535897932385);#decltype(U)()std::declval()std::decay_t#classdecoration#includenamespacejc{templatestructget_class;templatestructget_class{usingtype=Cl
码力码力我爱你
·
2024-09-05 22:58
C++
教程
c++
开发语言
极限编程
教程
C++
基础知识
1、基本概念1.1引用类型(reference)对一个数据可以使用"引用"(reference)类型,这是
C++
对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名inta;int
小林's freesky
·
2024-09-05 21:54
C++
c++
开发语言
C++
学习笔记(3)
101、从结构体到类对面向对象编程来说,一切都是对象,对象用类来描述。类把对象的数据和操作数据的方法作为一个整体考虑。定义类的语法:class类名{public:成员一的数据类型成员名一;成员二的数据类型成员名二;成员三的数据类型成员名三;......成员n的数据类型成员名n;};注意:类的成员可以是变量,也可以是函数。类的成员变量也叫属性。类的成员函数也叫方法/行为,类的成员函数可以定义在
月夕花晨374
·
2024-09-05 20:45
c++
学习
笔记
C++
设计模式——单例模式
C++
系列文章目录1、
C++
设计模式——单例模式2、文章目录
C++
系列文章目录前言一、饿汉模式二、懒汉模式1.简易版2.局部静态变量保证线程安全(c++11新标准)3.使用静态类析构4.使用智能指针析构总结前言一个类中只产生一个对象
jiaoooooo
·
2024-09-05 19:41
C++
c++
设计模式
单例模式
C++
:面向对象三大特征之封装
还记得上一篇帖子我们所说的访问修饰符吗,在访问修饰符中有一个private,它的作用在于更好的隐藏类的内部实现。所谓封装就是类中成员私有,他人需要按我给定的方式去使用。例如:#includeusingnamespacestd;classstudent{private:constchar*name;intage;public:voidshow(){cout<
学习使我变快乐
·
2024-09-05 18:35
c++
算法
开发语言
一个基于共享内存的内存数据库:1 介绍
这些代码大部分以Linux为目标但部分代码是纯
C++
的,可以在任何平台上使用。
初级代码游戏
·
2024-09-05 18:05
基于共享内存的内存数据库
共享内存
数据结构与算法
github源码指引
数据库
共享内存
c++
内存数据库
c/
c++
:CMakeLists.txt中添加编译/连接选项使用内存错误检测工具Address Sanitizer(ASan)
AddressSanitizer(ASan)是一个快速的内存错误检测工具。从gcc4.8开始,AddressSanitizer成为gcc的一部分。既然是gcc内置的内存检查工具,用起来比第三方的库更方便些。只要指定相应的编译链接参数就可以实现内存泄露检查了,如下是是cmake脚本中增加AddressSanitizer选项的示例:#使用sanitize进行内存泄露检查#编译选项target_comp
10km
·
2024-09-05 18:05
c/c++/c++11
cmake
c语言
c++
cmake
sanitizer
内存泄露
gcc
读《苏东坡传》
说起读书,我又要开始在心里埋怨自己了,不由自主的叹了一口气,大概是为自己的不自律而叹气吧,《苏东坡传》这本书,我大概读了一个月了,也不是该书篇幅长,就是我懒,之前老师让交
读书笔记
的时候,我就只读前面一部分
绿歌x
·
2024-09-05 18:26
深入浅出
C++
——二叉搜索树
文章目录一、二叉搜索树概念二、二叉搜索树操作1.二叉搜索树的查找2.二叉搜索树的插入3.二叉搜索树的删除三、二叉搜索树的实现四、二叉搜索树的性能分析一、二叉搜索树概念 二叉搜索树又称二叉排序树/二次查找树,它是一棵空树或者是每颗子树都具有以下性质的二叉树若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索
程序员Andrew
·
2024-09-05 18:02
C++
数据结构
c++
数据结构
算法
二叉搜索树
树
Leetcode539. 最小时间差
C++
解法#include#include#include#includeusingnamespacestd;structTime{inthour=0;intmin
LonnieQ
·
2024-09-05 18:43
C++
中string类的初步介绍
C语言中的字符串在C语言中,字符串是以'\0'结尾的一些字符的集合,C标准库中提供了一系列str系列的库函数,但这些库函数与字符串是分离的,不符合面向对象的编程思想。string类的大致介绍1.string是表示字符串的字符串类2.string类的接口与常规容器的接口基本相同,又添加了一些专门用来操作string的常规操作3.string在底层实际是basic_string模板类的别名typede
Little At Air
·
2024-09-05 17:58
c++
开发语言
C++
——继承和多态
1.继承1.1继承的概念在过往的文章中介绍过Java的继承,我们这里比较学习
C++
的继承。
犀利卓
·
2024-09-05 17:56
c++
开发语言
C++
——二叉搜索树
1.二叉搜索树在之前的文章中已经在C语言部分介绍过了二叉树的相关知识(传送门),现在在已有的二叉树基础上接触一种新的规则的二叉树——搜索二叉树。未来我们将继续介绍AVL树、红黑树以及set、map容器,这都需要我们对二叉搜索树有一定的理解。1.1二叉搜索树的定义二叉搜索树又叫做二叉排序树、二叉查找树。我们首先给出二叉搜索树的判定条件,或者说是二叉搜索树的特点。只有满足如下特点的二叉树才被称为二叉搜
犀利卓
·
2024-09-05 17:24
c++
开发语言
lambda表达式简析及应用案例
文章目录Lambda表达式的基本概念不同语言中的Lambda表达式示例PythonJava8及以上版本JavaScript(ES6+)
C++
使用场景高级用法注意事项实际应用场景Java应用案例1.数据处理
极致人生-010
·
2024-09-05 16:50
lambda
数据
C++
STL vector用法详解
一:简介:vector是
c++
中一种非常常用的数据类型,也叫不定长数组,是STL的一种容器。我们可以随时向其中插入一个数据,在定义时也不需要指定其大小,使用方便。
buqiming不起名
·
2024-09-05 16:50
c++
开发语言
CCF-CSP认证考试真题(含题解和
c++
代码)
CCF-CSP认证考试真题题解,将不定期更新。如果大家有其他解法、发现我笔误或者可以hack我做法/程序(合法输入导致错误输出)的地方,欢迎通过私聊与我交流。附上刷题网址:CCFCSP计算机软件能力认证模拟考试系统(新版)、CCF计算机职业资格认证考试(旧版,试题更新到202312)2024-06-02第34次CCF计算机软件能力认证试题编号试题名称原题链接题解题解得分、题签202406-1矩阵重
Pujx
·
2024-09-05 16:50
算法
c++
代码随想录算法训练营第一天 | 704二分查找 27移除元素
Leetcode)文章链接:训练营一期day1(qq.com)数组理论基础1.定义:存放在连续内存空间上的相同类型数据的集合2.特征:(1)下标都从0开始(2)内存空间的地址是连续的(3)元素不能删,只能覆盖
C+
筱惜晴
·
2024-09-05 16:18
算法
leetcode
CPP中的lambda表达式
语法在
C++
中,lambda表达式的语法是:[cap
大磕学家ZYX
·
2024-09-05 16:18
CPP语法
容器相关与易错点记录
算法
数据结构
c++
leetcode
《中国旅行记(1816-1817年)——阿美士德使团医官笔下的清代中国》
读书笔记
2
出发1816年2月8日下午3时,克拉克.阿裨尔登上了停泊在斯皮特黑德锚地的英国皇家海军舰船“阿尔卡斯特号”,作为阿美士德勋爵访华使团的一名医生,同时也担任博物学家一职。因为此行,他还得到了一整套用于科学研究的仪器设备,这套设备对于搜集和保存使团到访国家的各种植物,起很大的作用。在博物学家几乎没有涉足过的中国,取得丰富的收获,阿裨尔为比摩拳擦掌,准备大干一场。这是阿裨尔的海上航行,在开始的几天里,难
小雅_草木
·
2024-09-05 16:47
JS语言特性和与流行语言的比较
(1)运行在客户端浏览器上;(2)不用预编译,直接解析执行代码;(3)是弱类型语言(动态语言),较为灵活;(4)与操作系统无关,跨平台的语言;(5)脚本语言、解释性语言;2.说说
C++
,Java,Javascript
飞飞A_00c6
·
2024-09-05 14:04
读书笔记
:《深入理解Java虚拟机》(8)
虚拟机性能监控、故障处理工具JDK命令行工具这些命令在JDK安装目录下的bin目录下:jps(JVMProcessStatus):类似UNIX的ps命令。用于查看所有Java进程的启动类、传入参数和Java虚拟机参数等信息;jstat(JVMStatisticsMonitoringTool):用于收集HotSpot虚拟机各方面的运行数据;jinfo(ConfigurationInfoforJava
Violet永存
·
2024-09-05 14:38
读书笔记
java
开发语言
jvm
移情别恋
c++
ദ്ദി˶ー̀֊ー́ ) ——8.stack&&queue
1.用栈实现队列.-力扣(LeetCode)思路1.将一个栈当作输入栈,用于压入push传入的数据;另一个栈当作输出栈,用于pop和peek操作。2.每次pop或peek时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。classMyQueue{private:stackinStack,outStack;voidin2out(){wh
码码生的
·
2024-09-05 14:08
c++
开发语言
算法
HALCON根据需要创建自定义函数
HALCON支持通过其高级编程接口(HDevelop和C/
C++
、C#、Python等)来创建自定义函数。
视觉人机器视觉
·
2024-09-05 14:06
解决方案
算法
人工智能
计算机视觉
视觉检测
图像处理
深度学习
c语言windows.h file not found,XCode里遇到 #include
file not found的解决方案
最近在学习如何在
C++
里调用Java方法,遇到提示#includefilenotfound的问题。也google了好久都没有找到合适的解决方案。
谦荣
·
2024-09-05 11:15
c语言windows.h
file
not
found
【
读书笔记
】大声朗读推荐书
《朗读手册》77-86页文/杨芝兰阅读和听他人大声朗读对于学习语法和写作作用特别大。就如婴童期的孩子,他们不会说话,但是他们每天都会看到来自家人幸福的微笑,都会听到来自于我们温柔的呼唤和暖心的话语,所以他们学会的第一个技能就是微笑。接着他们开始咿咿呀呀学说话,他们一般最先学会的是爸爸和妈妈,因为他们可能听到最多的就是来自于抱自己的人:来!小乖乖,爸爸(妈妈)抱一抱!当然如果孩子一直是爷爷奶奶带,他
杨芝兰河南尉氏
·
2024-09-05 11:04
鸿蒙(API 12 Beta6版)图形【使用Drawing实现图形绘制与显示 (C/
C++
)】方舟2D图形服务
场景介绍NativeDrawing模块提供了一系列的接口用于基本图形和字体的绘制。Drawing绘制的内容无法直接在屏幕上显示,需要借用XComponent以及NativeWindow的能力支持,将绘制的内容通过NativeWindow送显。接口说明Drawing常用接口如下表所示。接口名描述OH_Drawing_BitmapCreate(void)创建一个位图对象。OH_Drawing_Bitm
移动开发技术栈
·
2024-09-05 10:42
鸿蒙开发
c语言
c++
harmonyos
openharmony
移动开发
鸿蒙
鸿蒙系统
鸿蒙(API 12 Beta6版)图形【NativeBuffer开发指导 (C/
C++
)】方舟2D图形服务
场景介绍NativeBuffer是提供共享内存的模块。开发者可以通过NativeBuffer接口实现共享内存的申请、使用、属性查询、释放等操作。针对NativeBuffer,常见的开发场景如下:通过NativeBuffer提供的NativeAPI接口申请OH_NativeBuffer实例,获取内存的属性信息,把对应的ION内存映射到进程空间。接口说明接口名描述OH_NativeBuffer_All
移动开发技术栈
·
2024-09-05 10:42
鸿蒙开发
c++
harmonyos
c语言
openharmony
鸿蒙
C++
图形图像
VScode
C++
一键注释
1.注释:首选选中要注释的部分;intmain(){usingnamespacestd;cout>weight;stringgain="A10%increaseraises";stringwt=boost::lexical_cast(weight);gain=gain+wt+"to";//stringoperator()weight=1.1*weight;gain=gain+boost::lexi
东半球第一攻城狮
·
2024-09-05 10:11
vscode
c++
ide
何坤松
读书笔记
2:学习工作和生活中的幸福方法,都在这(内含决策的好工具)
何坤松
读书笔记
《幸福的方法》今天何坤松继续分享《幸福的方法》这本书的
读书笔记
。本书的第二篇,包括三个章节,分别分享了幸福的学习法、工作法和生活法,其中生活上侧重于亲密关系。。
何坤松
·
2024-09-05 10:07
鸿蒙(API 12 Beta6版)图形【NativeImage开发指导 (C/
C++
)】方舟2D图形服务
场景介绍NativeImage是提供Surface关联OpenGL外部纹理的模块,表示图形队列的消费者端。开发者可以通过NativeImage接口接收和使用Buffer,并将Buffer关联输出到OpenGL外部纹理。针对NativeImage,常见的开发场景如下:通过NativeImage提供的NativeAPI接口创建NativeImage实例作为消费者端,获取与该实例对应的NativeWin
移动开发技术栈
·
2024-09-05 10:38
鸿蒙开发
harmonyos
c语言
c++
openharmony
鸿蒙
鸿蒙系统
图形图像
C/
C++
获取 linux 的所有 USB声卡ID及其信息
使用`popen()`函数参考1参考2在Linux下,要获取USB声卡的ID和名称信息,通常你需要结合多个系统命令和接口,因为C/
C++
标准库本身并不直接提供这样的功能。
彷徨而立
·
2024-09-05 09:30
c语言
c++
linux
2024华为OD机试真题-反射计数Python-C卷D卷-200分
2024华为OD机试最新E卷题库-(C卷+D卷+E卷)-(JAVA、Python、
C++
)目录题目描述输入描述输出描述用例1题目解析代码题目描述给定一个包含0和1的二维矩阵。
2024剑指offer
·
2024-09-05 09:00
python
华为od
C#与.NET
前言C#源于C、
C++
和Java,采二家之所长并增加了自己的新特性。C#是一种基于.net平台的语言,它能让程序员在此平台上很方便的开发.net程序。
Freesial_
·
2024-09-05 08:59
C#笔记
c#
开发语言
《大秦帝国》
读书笔记
第二十三天:谢谢当头一棒,让嬴政彻底完成统一大业!
大秦帝国一:当头一棒,对嬴政助力多多继续拜读孙皓晖先生历史小说《大秦帝国》。现在给我强烈的感觉,要是秦始皇能够再说话,一定会说:——谢谢当头一棒,让嬴政彻底完成统一大业。啊?为什么?当头一棒!怎么当头一棒,还能成为感谢的对象。新华词典有云:当头一棒:1.比喻促人醒悟的警告。参看〖当头棒喝〗。2.比喻给人以突然打击。二:两次深刻教训秦王嬴政在嬴政亲政后,通过持续不断努力,一直顺风顺水。但有两件大事给
我爱刨根问底58
·
2024-09-05 08:17
上一页
8
9
10
11
12
13
14
15
下一页
按字母分类:
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
其他