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语言
|笑谈函数指针与数组
C语言
函数指针和函数指针数组:代码世界的“神秘宝藏”家人们,今天咱来唠唠
C语言
里超“哇塞”的函数指针和函数指针数组,这俩可堪称代码宇宙中的“神秘宝藏”,一旦掌握,那编程水平直接“起飞”,在代码江湖中“大杀四方
小邓儿◑.◑
·
2025-01-23 01:52
c语言
初识
C语言
|数组的应用之——矩阵你会不?
今天,咱们要探讨的主题是如何在
C语言
中处理数组矩阵,并求出其中的最大值及其下标。一、什么是数组矩阵?数组矩阵,简单来说,就是二维数组。
小邓儿◑.◑
·
2025-01-23 01:22
矩阵
c语言
数据结构
Windows 11安全中心闪退解决方法
详解
Windows11安全中心闪退解决方法
详解
近期,部分Windows11用户反馈在使用Windows安全中心时遇到了无法开启、点击即闪退的问题,且在任务栏的安全中心图标上显示有黄色的感叹号。
mmoo_python
·
2025-01-23 01:52
windows
安全
嵌入式Linux系统学习记录13
在
C语言
中,构造数据类型(也叫复合数据类型)包括结构体(struct)、共用体(union)和枚举类型(enum)。这些类型允许用户根据需求创建复杂的数据结构。
hhdk1
·
2025-01-23 01:20
linux
学习
算法
如何在 Linux 上安装 C 和 GCC 编译器?
我们知道在Linux上安装
C语言
可能看起来令人生畏,但不要担心;我们已经为您提供了分步指南!在Linux中使用终
新华
·
2025-01-22 23:41
编程
C语言教程
linux
c语言
C语言
学习:指针
1.指针指针本质上就是内存地址。inta=10;//定义一个整型变量int*p=&a;//定义一个指针变量,指向a的地址在这个例子中:a是一个普通的整型变量,值为10&a获取变量a的内存地址p是一个指针变量,存储了a的地址*p可以访问a中存储的值2.指针的定义语法指针的定义遵循以下格式:基类型*指针变量名;这里的基类型决定了指针指向的数据类型。例如:int*p;//指向整型的指针char*p;//
wsy0903@@@
·
2025-01-22 23:40
Linux编程
嵌入式
学习日记
c语言
学习
开发语言
K8S中Service
详解
(二)
Service类型Service的资源清单文件:---kind:Service#资源类型apiVersion:v1#资源版本metadata:#元数据name:service#资源名称namespace:dev#命名空间spec:#描述selector:#标签选择器,用于确定当前service代理哪些podapp:nginxtype:ClusterIP#Service类型,指定service的访问
元气满满的热码式
·
2025-01-22 23:40
kubernetes
网络
linux
锁争用
详解
锁争用(LockContention)是并发编程中常见的问题,特别是在多线程或多进程环境下。当多个线程或进程竞争同一把锁时,会导致系统负载升高,性能下降。以下是锁争用导致系统负载高的详细原理:1.锁的基本概念锁:用于控制对共享资源的访问,确保同一时间只有一个线程或进程可以访问资源。锁争用:当多个线程或进程同时尝试获取同一把锁时,只有一个线程或进程能够成功获取锁,其他线程或进程会被阻塞,直到锁被释放
缘来是黎
·
2025-01-22 23:40
linux
service
java
jvm
开发语言
Linux 权限体系
详解
:、777、755、644、600、chmod、chown、chgrp 和 umask;SUID、SGID 和 Sticky Bit;ACL (访问控制列表) 是什么?
文章目录1.引言1.1为什么学习Linux权限?1.2本文目标2.Linux权限基础概念2.1权限模型2.2权限类型2.3权限表示法2.3.1字母表示法2.3.2数字表示法2.3.3字母与数字表示法对比2.3.4案例:字母与数字的权限切换3.常见权限分配方法对比表格3.1使用`chmod`分配权限3.2使用`chown`和`chgrp`修改拥有者和用户组3.3使用`umask`设置默认权限4.高级
小胡说技书
·
2025-01-22 23:39
手册/开发
图谱
运维
linux
运维
服务器
GCC只能编译
C语言
吗?Objective-C 1.0和2.0有什么区别?
乔布斯离开苹果公司后成立了NeXTSTEP公司,买下了Objective-
C语言
的授权。GCC对Objective-
C语言
的支持是在1992年加入的,具体是在GCC1.3版本中首次引入的。
程序员小迷
·
2025-01-22 22:04
编程语言
小话ios
编译器
c语言
ios
开发语言
objective-c
gcc
msvc
clang
HTTPS keytool工具使用(高频)
以下是keytool命令的一些常用选项及其
详解
:基本语法keytool[options]选项列表生成密钥库-genkeypair:生成密钥对。-alias:密钥库条目的别名。
笑锝没心没肺
·
2025-01-22 22:03
Linux
#网络安全
https
网络协议
http
Spring Boot 框架整体启动流程
详解
基于SpringBoot版本:3.1Java:17SpringBoot的入口即为xxApplication类的main方法:@SpringBootApplicationpublicclassSpringBootDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(SpringBootDemoApplicat
阿提说说
·
2025-01-22 22:01
Spring
Boot
3.x
精讲
java
spring
spring
boot
3
大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(5)
全解11——Chatbot:融合大模型的多模态聊天机器人(5)前言本篇摘要11.Chatbot:融合大模型的多模态聊天机器人11.5Chatbot的特殊Events11.5.1各事件总演示11.5.2
详解
龙焰智能
·
2025-01-22 22:00
gradio
events
undo
retry
like
edit
【数据结构】
C语言
顺序栈和链式栈入栈和出栈操作
C语言
顺序栈和链式栈入栈和出栈操作1、栈的基本概念2、栈的存储形式3、示例代码:(1)顺序栈:(2)顺序栈的应用:【十进制转二进制】(3)链式栈1、栈的基本概念栈是一种逻辑结构,是特殊的线性表。
秋风&萧瑟
·
2025-01-22 22:29
数据结构
数据结构
c语言
算法
代码提交与别人的代码发生冲突时解决办法
详解
当你的代码提交与别人的代码发生冲突时,通常是因为多人在同一个文件或代码段上进行了修改。解决冲突是协作开发中常见的任务,以下是一些步骤和建议来帮助你解决代码冲突。文章目录1.检测冲突2.查看冲突文件3.手动解决冲突4.标记冲突解决5.完成合并6.使用工具辅助解决冲突7.避免冲突的建议8.如果冲突复杂,寻求帮助1.检测冲突冲突通常在执行gitpull或gitmerge时被检测到。Git会提示你哪些文件
匹马夕阳
·
2025-01-22 21:25
开发工具
git
C语言
-构造数据类型
1、构造数据类型结构体、共用体、枚举。2、结构体1、结构体的定义结构体是一个自定义的复合数据类型,它允许将不同类型的数据组合在一起。struct结构体名{数据类型1成员变量1;数据类型2成员变量2;数据类型3成员变量3;数据类型4成员变量4;}2、结构体变量的定义数据类型变量;3、结构体的初始化1、全部初始化structstudents={"zhangsan",'m',19,100};2、局部初始
落幕
·
2025-01-22 21:53
c语言
开发语言
c#视觉应用开发中如何在C#中进行图像颜色空间转换?
microPythonPython最小内核源码解析NI-motion运动控制
c语言
示例代码解析python编程示例系列python编程示例系列二python的Web神器Streamlit如何应聘高薪职位在
openwin_top
·
2025-01-22 21:21
C#视觉应用开发问题系列
c#
开发语言
计算机视觉
视觉检测
.net
【大模型】ChatGPT 提示词优化进阶操作实战
详解
目录一、前言二、ChatGPT提示词几个基本的优化原则2.1明确的提示词2.1.1提示词具体而清晰2.1.1.1操作案例演示2.2确定焦点2.2.1操作案例演示2.3保持提示词的相关性2.3.1什么是相关性2.3.2提示词相关性操作案例一2.3.2提示词相关性操作案例二三、ChatGPT提示词进阶及常用优化策略3.1提示词常用优化策略总结3.2ChatGPT提示词优化操作实战3.2.1身份设定3.
小码农叔叔
·
2025-01-22 21:51
AI大模型实战与应用
ChatGPT提示词优化进阶
ChatGPT提示词优化
ChatGPT提示词优化技巧
ChatGPT提示词优化原则
ChatGPT提示词常用技巧
嵌入式驱动开发
详解
10(MISC杂项实现)
文章目录前言MISC设备驱动简介重要结构体API函数MISC实现框架后续参考文献前言MISC驱动也叫做杂项驱动,也就是当我们板子上的某些外设无法进行分类的时候就可以使用MISC驱动。MISC驱动其实就是最简单的字符设备驱动,通常嵌套在platform总线驱动中,MISC设备驱动简介所有的MISC设备驱动的主设备号都为10,不同的设备使用不同的从设备号。随着Linux字符设备驱动的不断增加,设备号变
嵌入~狮
·
2025-01-22 20:50
Linux驱动
驱动开发
ARM中断控制器
二.为什么汇编代码调用c函数需要设置栈之前看了很多关于uboot的分析,其中就有说要为
C语言
的运行,准备好栈。而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有栈指针初始化这个动
HNUlanwei
·
2025-01-22 20:46
ARM9—S3C2440学习
局部变量
汇编语言
编译器
汇编
Ubuntu常用指令及用法
详解
1.ls这个相当于Windows下的dir命令,可以列出当前窗口或指定窗口下的内容。2.rm这个相当于Windows下的del和rmdir命令,可以删除文件及文件夹。常见用法:rm-rf/home/ubuntu/.cache(删除/home/ubuntu/.cache这个文件夹)禁忌:rm-rf/*这个命令会删除根分区下所有文件,在某些efi机器上还会删除主板固件,造成主板固件丢失从而无法开机(比
我的混世小魔王
·
2025-01-22 20:45
ubuntu
Bootstrap4网格系统
详解
一、基本概念Bootstrap4的网格系统是其核心部分,它基于一个12列的布局,能够帮助你轻松创建响应式的网页布局。这种网格系统可以让你将页面内容划分为不同的行和列,使得内容在不同设备上都能呈现出最佳的显示效果。二、容器(Container)容器的作用:容器是用来包裹页面内容的元素,它提供了一个水平居中的布局空间,并为内部的行和列设置了合适的内边距。容器的类型:**.container:**这是一
半点寒12W
·
2025-01-22 19:40
css
css3
用
c语言
程序编写天干地支,农历中天干地支的计算【C代码】
【本程序在DEVC++4.9.9.2下编译通过】有关农历的东西有以下几篇文章:/*函数名称:intGetChineseEra(intyear,intflag)函数功能:返回某年对应的天干和地支。flag=0返回天干flag=1返回地支。函数参数:year要查询的年;如:1984年,天干:GetChineseEra(1984,0)地支:GetChineseEra(1984,1)*/unsignedi
陈姜梅子
·
2025-01-22 18:59
用c语言程序编写天干地支
差分进化算法 (Differential Evolution) 算法
详解
及案例分析
差分进化算法(DifferentialEvolution)算法
详解
及案例分析目录差分进化算法(DifferentialEvolution)算法
详解
及案例分析1.引言2.差分进化算法(DE)算法原理2.1
闲人编程
·
2025-01-22 17:57
python
算法
python
开发语言
选择
DE
差分进化算法
变异
conv2former模型
详解
及代码复现
模型背景在Conv2Former模型提出之前,视觉识别领域的研究主要集中在两个方向:传统卷积神经网络(ConvNets)新兴的视觉Transformer(ViTs)ConvNets通过堆叠基本模块和采用金字塔结构取得了显著进展,但往往忽略了全局上下文信息的显式建模。ViTs则通过自注意力机制有效捕捉全局依赖关系,在多个视觉任务中展现出优异性能。然而,ViTs在处理高分辨率图像时面临计算成本过高的问
清风AI
·
2025-01-22 17:26
深度学习算法详解及代码复现
深度学习
人工智能
python
神经网络
conda
C语言
编程题—1+2+3+....+n(循环)
1+2+3+....+n(循环)#includemain(){inta=1,sum=0,n;printf("Inputn:");scanf("%d",&n);do{sum+=a;a++;}while(a<=n);printf("sum=%d\n",sum);}
止酒
·
2025-01-22 17:56
C语言练习题
c语言
《
C语言
入门100例》(第2例) 给定 n,求 1 + 2 + 3 + ... + n 的和给定 n,求 1 + 2 + 3 + ... + n 的和
【第02题】给定n,求1+2+3+…+n的和|四种解法文章目录主要知识点习题1.剑指Offer64.求1+2+…+n题目描述初见思路代码2.SumProblem题目描述初见3.剑指Offer57-II.和为s的连续正数序列题目描述初见思路代码总结主要知识点计算时注意数值计算在计算机内的溢出。与理论计算不同,算法设计中要时刻注意数值计算溢出的情况,以计算n∗(n+1)/2n*(n+1)/2n∗(n+
leapold_Z
·
2025-01-22 17:54
c++
leetcode
React框架
详解
:从入门到精通(详细版)
文章目录前言一、官方网站二、安装React使用CreateReactApp手动安装三、React核心概念1.组件化2.JSX3.虚拟DOM4.Props和State四、生命周期方法五、新特性介绍1.Hooks2.ContextAPI六、状态管理1.Redux2.Mobx3.ReactContextAPI七、最佳实践1.组件划分2.代码复用3.性能优化4.错误边界结语前言React是由Faceboo
布兰妮甜
·
2025-01-22 17:53
#
React
react.js
前端
前端框架
Mybatis-Plus基本使用:从入门到精通
Mybatis-Plus基本使用:从入门到精通一、Mybatis-Plus简介1.1核心特点1.2快速启动二、基本使用
详解
示例一:CRUD操作示例二:条件查询示例三:分页查询示例四:自动填充示例五:代码生成器三
DTcode7
·
2025-01-22 17:52
sql数据库相关
数据库
mysql
SQL
数据库开发
sql
HTML 元素
详解
:从入门到精通
HTML(HyperTextMarkupLanguage)是构建网页的基础语言,而HTML元素则是构成网页的基本单位。无论是网页的结构、内容还是样式,都离不开HTML元素。本文将深入探讨HTML元素的概念、结构、属性以及常见的使用方法,帮助你从零开始掌握HTML的基础知识,并逐步进阶到更复杂的应用。什么是HTML元素?HTML元素是构成HTML文档的基本单位,它由开始标签、内容和结束标签组成。每个
浪浪山小白兔
·
2025-01-22 16:19
html
前端
【Springboot】——响应与分层解耦架构
博主现有专栏:C51单片机(STC89C516),
c语言
,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结
Y小夜
·
2025-01-22 16:49
架构
spring
boot
后端
java
spring
Python 调用 Ollama 库:本地大语言模型使用
详解
ollama是一个用于调用本地大语言模型(LargeLanguageModels,LLMs)的Python库,旨在提供简单、高效的API接口,以便开发者能够方便地与本地的大语言模型进行交互。以下是关于如何在Python中使用ollama库的详细介绍。1.安装Ollama在使用库之前,请确保安装了ollama。你可以通过以下命令安装:pipinstallollama如果你尚未安装Python的包管理
kdayjj966
·
2025-01-22 15:05
python
详解
Python迭代器:轻松搞懂工作原理、用法和最佳实践
迭代器引入如果开发中有以下需求,如何解决?classStuSystem(object):"""学生管理系统"""def__init__(self):self.stus=[]defadd(self):"""添加一个新的学生:return:"""name=input("请输入新学生的姓名:")tel=input("请输入新学生的手机号:")address=input("请输入新学生的住址:")new_
kdayjj966
·
2025-01-22 15:05
python
开发语言
C++线程库std::thread和std::async的用法
详解
目录一、背景二、并发编程的背景三、std::thread3.1创建和启动线程3.2线程的参数传递3.3线程的生命周期管理3.4线程同步四、std::async与std::future4.1创建异步任务4.2使用std::launch控制执行策略4.3std::future与std::promise4.4异步任务的取消与超时五、实战案例:并发文件处理5.1使用std::thread实现一、背景C++
大王算法
·
2025-01-22 15:04
c++
开发语言
Python中enumerate函数的使用
详解
Python中enumerate函数的使用
详解
在Python编程中,我们经常需要遍历列表或其他可迭代对象,并同时获取元素的索引值。
落英缤纷H
·
2025-01-22 15:00
python
开发语言
linux
Python
【云原生】Prometheus Pushgateway使用
详解
目录一、前言二、Pushgateway概述2.1什么是Pushgateway2.1.1Pushgateway在Prometheus中的位置2.2为什么需要Pushgateway2.3Pushgateway作用2.4Pushgateway工作原理2.5Pushgateway使用场景2.6Pushgateway优缺点三、Pushgateway部署3.1二进制安装3.1.1下载安装包3.1.2解压安装包
小码农叔叔
·
2025-01-22 12:14
微服务链路追踪与监控
Pushgateway
Pushgateway使用
Pushgateway详解
Pushgateway使用详解
Pushgateway搭建
Python识别处理验证码技术
详解
目录一、验证码的种类二、OCR技术简介三、使用OCR技术识别验证码1.安装所需库2.下载和处理验证码图片3.使用OCR进行识别4.完整代码示例四、处理复杂验证码五、案例:识别古诗文网验证码六、总结验证码作为一种常见的安全手段,广泛应用于各种网站和应用中,以防止自动化脚本的恶意攻击。然而,在自动化测试或数据抓取过程中,识别验证码成为了一个不得不面对的问题。本文将详细介绍如何使用Python来识别和处
傻啦嘿哟
·
2025-01-22 12:43
python
开发语言
SQL进阶——JOIN操作
详解
在数据库设计中,数据通常存储在多个表中。为了从这些表中获取相关的信息,我们需要使用JOIN操作。JOIN操作允许我们通过某种关系(如相同的列)将多张表的数据结合起来。它是SQL中非常重要的操作,广泛应用于实际开发中。本章节将深入讲解SQL中的各种JOIN类型,并通过大量示例展示如何在实际应用中使用这些连接操作,特别是在C++与SQL数据库连接的场景下。1.内连接(INNERJOIN)、左连接(LE
m0_74825656
·
2025-01-22 12:39
面试
学习路线
阿里巴巴
sql
数据库
oracle
Node.js HTTP模块
详解
:创建服务器、响应请求与客户端请求
Node.jsHTTP模块
详解
:创建服务器、响应请求与客户端请求Node.js的http模块是Node.js核心模块之一,它允许你创建HTTP服务器和客户端。
m0_74823021
·
2025-01-22 12:08
面试
学习路线
阿里巴巴
node.js
http
服务器
python之.pyc文件
最典型的例子就是
C语言
。解释型语言就没有这个编译的过程,而是在程序
diantuge7474
·
2025-01-22 11:35
java
运维
python
掌控 React 表单:
详解
受控组件和非受控组件
大家好,我是长林啊!一个爱好JavaScript、Go、Rust的全栈开发者;致力于终生学习和技术分享。本文首发在我的微信公众号【长林啊】,欢迎大家关注、分享、点赞!在开发过程中,经常涉及到用户输入的表单处理;表单可以分为两种类型:受控表单(ControlledComponents)和非受控表单(UncontrolledComponents)。这两种表单在处理用户输入和状态管理时有着不同的方式。例
·
2025-01-22 11:48
STM32特殊功能引脚
详解
文章·STM32特殊功能引脚能当作GPIO使用嘛
详解
!!!
STM32特殊功能引脚本篇
详解
文章仅以STM32F103C8T6芯片来讲解,STM32芯片除了普通的GPIO引脚以外,还有专门的特殊功能引脚,这些特殊功能引脚用于晶振信号的输入,控制单片机的复位,Booto
看,是大狗
·
2025-01-22 10:28
嵌入式硬件
STM32特殊功能引脚
STM32特殊功能引脚详解文章
STM32特殊功能引脚服用
STM32
AFIO
特殊引脚
python3.6 split用法_对sklearn的使用之数据集的拆分与训练
详解
(python3.6)
研修课上讲了两个例子,融合一下。主要演示大致的过程:导入->拆分->训练->模型报告以及几个重要问题:①标签二值化②网格搜索法调参③k折交叉验证④增加噪声特征(之前涉及)fromsklearnimportdatasets#从cross_validation导入会出现warning,说已弃用fromsklearn.model_selectionimporttrain-test_splitfromsk
weixin_39849054
·
2025-01-22 10:57
python3.6
split用法
反转字符串中的单词 II:Swift 实现与
详解
网罗开发(小红书、快手、视频号同名) 大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、HarmonyOS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。图书作者:《ESP32-C3物联网工程开发实战》图书作者:《SwiftUI入门,进阶与实战》超级个体:CO
网罗开发
·
2025-01-22 10:54
Swift
vue.js
嵌入式开发中的
C语言
技巧
在嵌入式开发中,
C语言
是最常用的编程语言之一。由于嵌入式系统通常资源受限(如内存、处理能力、功耗等),因此开发者需要在使用
C语言
时特别关注效率、可靠性和可维护性。
为也科技
·
2025-01-22 09:50
c语言
开发语言
单片机
mcu
Java实战:Spring Boot application.yml配置文件
详解
本文将详细介绍SpringBootapplication.yml配置文件的使用和配置项。我们将探讨application.yml文件的基本概念,以及如何使用它来配置SpringBoot应用程序的各个方面。此外,我们将通过具体的示例来展示如何配置不同的SpringBoot组件,如数据源、数据库、缓存、邮件服务等。本文适合希望深入了解SpringBoot配置文件的开发者阅读。一、引言在SpringBo
m0_67403143
·
2025-01-22 09:18
面试
学习路线
阿里巴巴
java
spring
boot
网络
Ubuntu 20.04 安装 docker
详解
前言首先登录官网观摩观摩:docker安装本文将详细介绍docker在Ubuntu20.04上的安装,以及docker命令的一些使用。例如一些常见的错误:Jobfordocker.servicefailedbecausethecontrolprocessexitedwitherrorcode.See"systemctlstatusdocker.service"and"journalctl-xe"f
s清风s
·
2025-01-22 09:15
Linux
linux
ubuntu
docker
C语言
指针与内存管理:指针使用、内存泄漏与调试技巧
系列文章目录01-
C语言
从零到精通:常用运算符完全指南,掌握算术、逻辑与关系运算02-
C语言
控制结构全解析:轻松掌握条件语句与循环语句03-
C语言
函数参数传递深入解析:传值与传地址的区别与应用实例04-
大模型铲屎官
·
2025-01-22 07:37
C语言从入门到精通
c语言
开发语言
指针
内存管理
调试
C语言
数据结构深度解析:结构体与联合体的实战应用与技巧
系列文章目录01-
C语言
从零到精通:常用运算符完全指南,掌握算术、逻辑与关系运算02-
C语言
控制结构全解析:轻松掌握条件语句与循环语句03-
C语言
函数参数传递深入解析:传值与传地址的区别与应用实例04-
大模型铲屎官
·
2025-01-22 07:37
C语言从入门到精通
c语言
数据结构
结构体
联合体
编程
开发语言
全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南
系列文章目录01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南02-玩转LangChainMemory模块:四种记忆类型
详解
及应用场景全覆盖03-全面掌握LangChain:
大模型铲屎官
·
2025-01-22 07:36
现代大模型技术与应用
langchain
python
大模型
LLM
上一页
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
其他