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
Mysql数据库架构设计详解
Windows 环境nginx安装使用及目录结构
详解
一、Windows环境nginx安装及基本使用1、下载nginx-1.27.1最新的主线版本安装nginx/Windows,请下载1.27.1最新的主线版本,nginx的主线分支包含所有已知的修复程序。2、解压缩nginx-1.27.1版本nginx/Windows作为标准控制台应用程序(而不是服务)运行,可以使用以下命令对其进行管理:nginx-sstop快速关闭nginx-squit正常关闭n
w风雨无阻w
·
2024-09-09 21:17
Nginx
windows
nginx
运维
Redis的watch机制
详解
WATCH是Redis提供的一个用于实现乐观锁(OptimisticLock)的命令,通常用于实现事务中的并发控制。它允许客户端监控一个或多个键的变化,并确保事务(MULTI/EXEC)中执行的操作在这些键没有发生改变的情况下才能成功提交。若在事务执行前,某些键被其他客户端修改,事务将被中止,避免潜在的并发修改问题。WATCH的工作机制监听键客户端通过WATCH命令可以监听一个或多个键。执行后,R
半桶水专家
·
2024-09-09 21:46
redis
数据库
缓存
视频的容器格式和编码格式
详解
视频的容器格式和编码格式是视频文件的两个核心概念,它们相互关联但具有不同的功能。以下是详细的解释:1.容器格式(ContainerFormat)容器格式,又称封装格式,指的是视频文件的外壳或容器,它用于封装视频、音频、字幕、元数据(如标题、章节信息等)等各种流媒体内容。容器格式本质上决定了文件的扩展名。常见的容器格式:MP4:支持多种编解码器,广泛用于互联网和移动设备。MKV:支持多轨音频、字幕,
半桶水专家
·
2024-09-09 20:44
音视频
音视频
基于实时深度学习的推荐系统
架构设计
和技术演进
内容包括实时推荐系统的原理以及什么是实时推荐系统、整体系统的架构及如何在阿里云上面实现,以及关于深度学习的细节介绍本文整理自5月29日阿里云开发者大会,大数据与AI一体化平台分论坛,秦江杰和刘童璇带来的《基于实时深度学习的推荐系统
架构设计
和技术演进
阿里云云栖号
·
2024-09-09 19:03
云栖号技术分享
架构
阿里巴巴
深入解析:23种软件设计模式
详解
及其分类(创建型、结构型、行为型)附代码示例DEMO
目录引言一、创建型模式1.简单工厂模式(SimpleFactoryPattern)2.抽象工厂模式(AbstractFactoryPattern)3.单例模式(SingletonPattern)4.建造者模式(BuilderPattern)5.原型模式(PrototypePattern)二、结构型模式1.适配器模式(AdapterPattern)2.桥接模式(BridgePattern)3.装饰器
J^T
·
2024-09-09 19:02
设计模式
C/C++
设计模式
装饰器模式
组合模式
观察者模式
单例模式
23种设计模式
大数据新视界--大数据大厂之
MySQL数据库
课程设计:MySQL集群架构负载均衡故障排除与解决方案
亲爱的朋友们,热烈欢迎你们来到青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实用的内容知识,还可以毫无拘束地畅所欲言,尽情分享自己独特的见解。我真诚地期待着你们的到来,愿我们能在这片小小的天地里共同成长,共同进步。本博客的精华专栏:Ja
青云交
·
2024-09-09 18:26
大数据新视界
Java技术栈
Java性能优化
数据库
MySQL
集群架构
负载均衡
故障排除
算法
监控
备份恢复
负载均衡的常见故障及排除方法
Java 创建型设计模式
详解
Java创建型设计模式
详解
在软件开发中,设计模式是解决特定问题的通用解决方案。设计模式并不依赖于编程语言,但它们在Java等面向对象的语言中非常有用。
li.wz
·
2024-09-09 17:19
JavaSE
设计模式
java
设计模式
【设计模式】第四章:原型模式
详解
及应用案例
系列文章【设计模式】七大设计原则【设计模式】第一章:单例模式【设计模式】第二章:工厂模式【设计模式】第三章:建造者模式【设计模式】第四章:原型模式【设计模式】第五章:适配器模式【设计模式】第六章:装饰器模式【设计模式】第七章:代理模式【设计模式】第八章:桥接模式【设计模式】第九章:外观模式/门面模式【设计模式】第十章:组合模式【设计模式】第十一章:享元模式【设计模式】第十二章:观察者模式【设计模式
Bummon.
·
2024-09-09 17:49
设计模式
原型模式
设计模式
3.创建型设计模式
详解
:生成器模式与原型模式的深度解析
设计模式(DesignPatterns)是软件开发中常用的解决方案,帮助开发者处理常见的设计问题。创建型设计模式专注于对象的实例化,旨在提高系统的灵活性和可维护性。在这篇文章中,我们将深入探讨创建型设计模式中的生成器模式(BuilderPattern)和原型模式(PrototypePattern),详细分析它们的应用场景、优缺点,并通过类图和综合案例加以对比。1.创建型设计模式概述创建型设计模式包
胡耀超
·
2024-09-09 17:47
设计模式
原型模式
设计模式
生成器模式
创建型设计模式
java
后端
大数据新视界--大数据大厂之
MySQL数据库
课程设计:揭秘 MySQL 集群架构负载均衡核心算法:从理论到 Java 代码实战,让你的数据库性能飙升!
亲爱的朋友们,热烈欢迎你们来到青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而我的博客,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实用的内容知识,还可以毫无拘束地畅所欲言,尽情分享自己独特的见解。我真诚地期待着你们的到来,愿我们能在这片小小的天地里共同成长,共同进步。本博客的精华专栏:Ja
青云交
·
2024-09-09 17:17
大数据新视界
Java技术栈
数据库
MySQL
集群架构
负载均衡算法
加权轮询
最少连接
加权最少连接
轮询
随机
源地址哈希
【Python】set() 函数
详解
:集合运算、查找、去重 (附代码示例)
set函数介绍在Python中,集合(Set)是一种无序且元素唯一的数据结构。集合中的元素不能重复,即每个元素在集合中只能出现一次。集合是一种高效的查找结构。Python中的集合(set)通常是通过哈希表实现的。哈希表是一种数据结构,它使用哈希函数将键映射到存储桶(buckets)中,以便在常数时间复杂度内执行插入、删除和查找操作。换言之,无论集合中有多少个元素,查找某个元素所需的时间都是固定的,
Avasla
·
2024-09-09 17:16
Python
python
数据分析
Node.js入门与生态全解析:包管理与构建工具
详解
Node.js入门与生态全解析:包管理与构建工具
详解
目录包管理使用npm和yarn:项目依赖管理的利器创建和发布npm包:实现模块化与共享⚙️构建工具使用Webpack和Babel:高效打包与代码转换配置构建流程
Switch616
·
2024-09-09 17:46
前端
node.js
服务器
前端
es6
前端框架
C++11多线程、进程
详解
(1)
进程线程进程:正在进行的可执行程序线程:进程中的执行路线关系:一个进程必然包含一个主线程,同一个进程中所有的线程共享内存。生成一个进程时其主线程自动从main()函数开始运行,当主线程从main()函数返回时,则整个进程执行完毕。分线程也需要从一个函数开始运行,此函数运行完毕时分线程执行完毕。并发方法:多进程并发与多进程并发。C++11中的thread库#include#includeusingn
大大大冯小小
·
2024-09-09 17:16
c++
开发语言
机器学习案例-决策树实现鸢尾花分类
机器学习案例-决策树实现鸢尾花分类目录机器学习案例-决策树实现鸢尾花分类1.选题目的和意义2.主要研究内容2.1决策树算法分类(区别于树的结构和构造算法)2.2决策树算法
详解
2.3决策树的应用3.算法设计
Ausgelebt
·
2024-09-09 15:08
机器学习相关
python
分类
C++ 友元函数与友元类
详解
文章目录1.简介2.友元函数2.1定义与用法2.2代码示例3.友元类3.1定义与用法3.2代码示例4.注意事项5.总结因为一些企业的测评中多次出现了与友元相关的题目,所以写这篇文章介绍一下友元。1.简介在C++中,类通过封装(Encapsulation)来保护其内部数据,只有类的成员函数才能访问其私有成员。然而,在某些情况下,我们可能希望让某些特定函数或类能够访问另一个类的私有或保护成员,这时就需
小朱在敲代码
·
2024-09-09 15:38
c++
高效的嵌入式系统
架构设计
高效的嵌入式系统
架构设计
1.高效的嵌入式系统
架构设计
2.算法优化1.高效的嵌入式系统
架构设计
设计高效的嵌入式系统架构是确保系统性能和能效的关键。
迷璃学妹
·
2024-09-09 15:37
系统架构
【
详解
之OpenCV中的findHomography()函数 和 cv2.warpPerspective()函数】
文章目录cv2.findHomography()函数介绍:函数原型参数说明返回值使用示例解释cv2.warpPerspective()函数介绍函数定义参数
详解
示例代码cv2.findHomography
01_6
·
2024-09-09 15:06
计算机视觉opencv
opencv
人工智能
计算机视觉
C++:多进程、多线程
文章目录C++中的多进程与多线程
详解
一、前言二、多进程1.定义2.用法3.特点三、多线程1.定义2.用法3.特点四、多进程与多线程的相同点五、多进程与多线程的不同点六、示例:多线程与多进程对比1.多进程示例
小朱在敲代码
·
2024-09-09 15:35
c++
Android的logcat日志
详解
Androidlog系统logcat介绍logcat是android中的一个命令行工具,可以用于得到程序的log信息。下面介绍adblogcat中的详细参数命令以及如何才能高效的打印日志,或把日志保存到我们指定的位置。可以输入adblogcat--help,查看一下一些简单的数据格式:adblogcat--help输出结果:Usage:logcat[options][filterspecs]Gen
明天就是Friday
·
2024-09-09 14:57
android
不只是答题:用WebSocket和SpringBoot让双人PK变得刺激又好玩
架构设计
:采用前后端分离,将WebSocket服务独立部署。前端使用JavaScr
8tydegrees
·
2024-09-09 12:46
websocket
websocket
spring
boot
网络协议
后端
网络
javascript
深度学习与遗传算法的碰撞——利用遗传算法优化深度学习网络结构(
详解
与实现)
self.model.add(layers.Dense(10,activation=‘relu’))self.model.build(input_shape=(4,28*28))self.model.summary()self.model.compile(optimizer=optimizers.Adam(lr=0.01),loss=losses.CategoricalCrossentropy(f
2401_84003733
·
2024-09-09 12:42
程序员
深度学习
人工智能
K8S(Kubernetes)开源的容器编排平台安装步骤
详解
K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述:安装步骤:安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。安装KubernetesMaster:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如APIServer、
爱摄影的程序猿
·
2024-09-09 12:11
开发工具
CICD
系统优化
k8s
容器
devops
论基于架构的软件设计方法及应用
在此项目中,我担任了架构师,负责项目总体
架构设计
工作。本文以该综合管理系统为例,主要论述了基于架构的软件设计方法及应用。在架构需求阶段,以系统的商业需求及质量需求出发标识系统构
zju3080103798
·
2024-09-09 11:40
软考
java
big
data
mysql 新增管理员_操作
MYSQL数据库
给WordPress增加新的管理员账号
网页制作网络技术需要大家共同分享,不能闭门造车,下面是bj-dns文章简介:如何手工给wordpress增加一个管理员帐号。首先,我先设定数据库已经存在了wordpress的表,下面就是操作了。首先我们来到PHPMyAdmin界面。我们主要要操作wp_users和wp_usermeta表。首先操作wp_users表增加一个用户选中wp_users表并且点击界面上的插入按钮(在上面一排操作的中间偏后
仙剑李逍遥
·
2024-09-09 11:08
mysql
新增管理员
python数据库事务_Python数据库事务编程
python操作
mysql数据库
Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。
weixin_39806808
·
2024-09-09 11:07
python数据库事务
Folium:Python地图可视化库使用
详解
{row['Description']}",icon=folium.Icon(color='red',icon='info-sign')).add_to(marker_cluster)#添加多边形folium.Polygon(locations=[[39.9,116.4],[39.95,116.45],[40.0,116.4],[39.9,116.4]],color='blue',fill=Tru
零 度°
·
2024-09-09 11:36
python
python
开发语言
Python中的matplotlib库安装教程:多种方法
详解
在数据可视化的世界里,matplotlib是一个非常重要的工具库。它提供了一整套绘图功能,帮助我们将数据可视化为图表。无论你是数据科学家、工程师,还是只是在数据处理领域有所涉猎,掌握matplotlib的安装方法都能让你的工作更加高效。本文将详细介绍几种在Python中安装matplotlib的方法。方法一:使用pip安装pip是Python包管理工具,使用它安装matplotlib非常简单。以下
代码前哨站
·
2024-09-09 10:01
python
matplotlib
开发语言
论基于架构的软件设计方法(ABSD)及应用
#系统
架构设计
师#软考#论文在分享这片论文之前先小小的打一个广告,本人任职某运营商解决方案架构师职位,因工作需要考取了软考的系统架构师认证,并顺利的通过了考试一点点心得分享如下:选择题(就是刷,刷到你出肌肉记忆
不戴眼镜的朱学长
·
2024-09-09 10:31
系统架构
论文笔记
分布式数据库架构:从单实例到分布式,开发人员需及早掌握?
而开发人员、项目经理,一定要认识到数据库技术正在经历一场较大的变革,及早掌握好分布式
架构设计
,帮助公司从古老的单实例架构迁移到分布式架构,对自己在职场的竞争力来说,大有益处。一、什么是分布式数据库?
我爱娃哈哈
·
2024-09-09 10:31
MySQL实战
分布式
数据库架构
数据库
MySQL 报错: “Host ‘xxx‘ is not allowed to connect to this MySQL server“
mysql-uroot-p输入密码后,选择
mysql数据库
。usemysql;查看当前的用户和权限设置selecthost,userfromuser;更新对应用户的权限,允许从任何主机连接。
不爱开发的干饭人
·
2024-09-09 10:59
mysql
数据库
mysql所支持的比较运算符_Mysql 比较运算符
详解
熟悉了最简单的算术运算符,再来看一下比较运算符。当使用SELECT语句进行查询时,MySQL允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回1,为假则返回0,比较结果不确定则返回NULL。表4-2列出了MySQL5.0支持的各种比较运算符。比较运算符可以用于比较数字、字符串和表达式。数字作为浮点数比较,而字符串以不区分大小写的方式进行比较。下面通过实例来学习各种比较运算符的使
weixin_39799646
·
2024-09-09 09:58
mysql所支持的比较运算符
【Nginx】Nginx
详解
及应用指南
目录一、Nginx是什么?二、Nginx的代理2.1反向代理2.2正向代理2.3反向代理与正向代理对比2.4总结三、Nginx的负载均衡3.1什么是负载均衡?3.2负载均衡算法3.3负载均衡配置示例四、Nginx的动静分离五、Nginx的安装5.1Windows版本下的安装5.2Linux版本下的安装六、Nginx常用命令七、Nginx配置示意图描述7.1基本架构图7.2配置示例7.3解释总结Ng
丶2136
·
2024-09-09 09:52
web
运维
nginx
运维
Redis单线程模型
详解
这里写目录标题Redis单线程模型简介文件事件常用的文件事件处理器客户端与Redis通信的一次流程Redis为什么采用单线程模型Redis为什么要引入多线程呢?为什么Redis单线程模型也能效率这么高?Redis单线程模型简介Redis内部使用文件事件处理器fileeventhandler,这个文件事件处理器是单线程的,所以Redis才叫做单线程的模型。它采用IO多路复用机制同时监听多个socke
TABE_
·
2024-09-09 09:52
Redis
redis
单线程模型
ubantu安装mysql + redis数据库并使用C/C++操作数据库
MySql_ubuntu安装mysql-CSDN博客Ubuntu安装MySQL密码设置_ubuntu安装mysql后设置密码-CSDN博客servicemysqlrestart1C/C++连接数据库C/C++连接访问
MySQL
桐人,奥龙
·
2024-09-09 08:19
数据库
mysql
redis
MySQL数据库
行级锁之间隙锁、临键锁
间隙锁默认情况下,InnoDB在REPEATABLEREAD事务隔离级别运行,InnoDB使用next-key锁进行搜索和索引扫描,以防止幻读。索引上的等值查询(唯一索引),给不存在的记录加锁时,优化为间隙锁。索引上的等值查询(非唯一普通索引),向右遍历时最后一个值不满足查询需求时,next-keylock退化为间隙锁。索引上的范围查询(唯一索引)–会访问到不满足条件的第一个值为止。注意:间隙锁唯
zhxjfjfkkfkfkeo
·
2024-09-09 08:17
mysql
数据库
mysql
【JDBC教科书】阶段式JDBC数据库连接神操作总结
2.2JDBC核心思想2.2.1
MySQL数据库
驱动2.2.2JDBCAPI2.3环境搭建三、JDBC开发步骤【`重点`】3.1注册驱动3.2连接数据库3.3获取发送SQL的对象3.4执行SQL语句3.5
何学长在奔跑
·
2024-09-09 08:16
JDBC
数据库
JDBC
程序人生
经验分享
gee
mysql数据库
_MySQL
集合如果你有更好的想法请在评论区留下您的答案,一起交流讨论说说常见的集合有哪些?答:主要分List、Set、Map、Queue四类,其中包含ArrayList、LinkedList、HashSet、TreeSet、HashMapComparable和Comparator接口的区别?答:其两...»smart-rick2021-02-15JAVA基础面向对象有哪些特征?答:继承、封装、多态JDK与J
weixin_39955142
·
2024-09-09 08:16
gee
mysql数据库
PowerShell 脚本编写 :自动化Windows 开发工作流程
本文将介绍如何使用PowerShell脚本来实现自动化Windows开发工作流程,包括每天清理磁盘、自动备份
MySQL数据库
等。文章目录PowerShell脚本编写:自动化Wind
小Tomkk
·
2024-09-09 07:38
数据库
数据库
windows
PowerShell
使用PHP和MQTT构建高效的物联网数据转发服务器流程
技术栈关键词PHPMQTTMySQLESP8266/ESP32(单片机)DHT11(温湿度传感器)Linux服务器Apache/Nginx二、系统架构系统
架构设计
本项目的系统架构主要由
极客小张
·
2024-09-09 06:32
php
物联网
服务器
单片机
运维
MQTT
数据库
基于ARM芯片与OpenCV的工业分拣机器人项目设计与实现流程
详解
技术栈关键词ARM芯片步进电机控制OpenCV图像识别无线通信模块传感器(如超声波传感器、红外传感器)二、系统
架构设计
符合项目需求的系统架构本项目的系统架构主要由以下几个部分组成:控制单元:基于ARM芯片的主控板
极客小张
·
2024-09-09 06:31
arm开发
opencv
机器人
单片机
计算机视觉
人工智能
物联网
Python数据结构:元组
详解
(创建、访问、不可变特性)
Python中的元组(Tuple)是一种重要的数据结构,与列表类似,但元组是不可变的,这意味着一旦创建,就无法修改。元组的不可变性使其在某些场景下比列表更具优势。本文将详细介绍Python元组的创建、访问、不可变特性,并附上一个综合复杂的例子,全面展示元组在实际编程中的应用。一、创建元组元组的创建非常简单,使用圆括号()将多个元素包裹起来。元组可以包含任意类型的元素,包括数字、字符串、布尔值、甚至
做梦都在改BUG
·
2024-09-09 05:26
python
数据结构
开发语言
学习
Java高级编程—I/O流(包括字节输入流、字节输出流、字符输出流、字符输入流、缓冲流、序列化流、反序列化流等,
详解
附有代码+案例)
文章目录二十七.I/O流27.1概述27.2分类27.3字节输出流27.3.1数据写入本地文件27.3.2换行、续写27.4字节输入流27.4.1读取数据到程序27.4.2循环读取27.4.3拷贝数据27.4.4一次读取多个27.6字符输入流27.6.1FileReader的使用27.7字符输出流27.8.缓冲流27.8.1字节缓冲流27.8.1.1拷贝文件(一)27.8.1.2拷贝文件(二)27
蔚一
·
2024-09-09 05:26
Java知识
java
开发语言
算法
intellij-idea
Linux 中的 find 命令介绍以及使用
文章目录Linux中的`find`命令
详解
及使用示例`find`命令的基本语法常用的`find`命令选项按文件名搜索:`-name`按文件类型搜索:`-type`按文件大小搜索:`-size`按修改时间搜索
XMYX-0
·
2024-09-09 05:25
Centos命令使用
linux
运维
find
wpf 面试
9委托,委托是类型安全的吗10绑定的5种方式11按钮点击后时间是个怎么的过程(路由种冒泡或者隧道
详解
)12程序崩溃如何
云淡风轻的小白
·
2024-09-09 04:51
YOLOv9独家原创改进|使用可改变核卷积AKConv改进RepNCSPELAN4
二、RepNCSPELAN4-AKConv模块
详解
2.1模块简介RepNCSPELAN4-AKConv的主要思想:使用A
今天炼丹了吗
·
2024-09-09 04:48
YOLOv9涨点改进专栏
人工智能
机器学习
python
深度学习
YOLO
目标检测
Java集合中fail-fast和fail-safe机制
详解
在使用集合时候,大家应该都遇到过或听过并发修改异常(ConcurrentModificationException),这其实是Java集合中的一种fail-fast机制,为了避免触发fail-fast机制,Java中还提供了一些采用fail-safe机制设计的集合类,本篇文章就系统的介绍一下这两种机制。一、fail-fast机制1.1什么是fail-fast机制简单的说,这就是系统设计的一种理念,
橡 皮 人
·
2024-09-09 03:45
Java集合
java
集合的fail机制
django 不用自带的mysql_Python MySQL 数据库连接 (三) mysqlclient django默认使用
Mysql驱动介绍MySQL-python(弃用):也就是MySQLdb,是对C语言操作
MySQL数据库
的一个简单封装。遵循了PythonDBAPIv2。
许菲比
·
2024-09-09 03:44
django
不用自带的mysql
Python日志模块
详解
Python日志模块
详解
Python的日志模块(logging)是一个非常强大、灵活的日志记录框架,适用于各种规模的应用程序。它允许开发者将程序执行中的信息输出到多个地方,如控制台、文件、网络等。
WineMonk
·
2024-09-09 03:13
Python
python
logging
云计算架构最全方案
详解
云计算架构最全
详解
(图文全面总结)一、引言云计算已经成为现代企业和科技发展的重要支柱。本文将详细介绍云计算架构的组成部分及其工作原理,帮助读者深入理解这一复杂而强大的系统。
科技互联人生
·
2024-09-09 02:10
科技
数码
人工智能
云计算
架构
mysql创建数据库和表
mysql创建数据库和表一、创建
MySQL数据库
1.1.登录MySQL1.2.创建数据库1.3.使用数据库二、创建MySQL表2.1.创建基本表2.2.查看表结构2.3.插入数据2.4.查询数据2.5.
golove666
·
2024-09-09 02:38
后端
mysql
数据库
关系型数据库
上一页
4
5
6
7
8
9
10
11
下一页
按字母分类:
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
其他