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
ruby+网络编程
Linux
网络编程
(二)-分层模型02:TCP/IP四层模型(应用层、传输层、网络层、链路层)【数据:发(应用层->传输层->网络层->链路层)、接(链路层->网络层->传输层->应用层)】
TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示:协议类型一般在应用开发过程中,讨论最多的是TCP/IP模型。数据流向:发送数据:应用层-->传输层-->网络层-->链路层;接收数据:链路层-->网络层-->传输层-->应用层;
u013250861
·
2023-08-02 00:19
#
Linux/网络编程
网络
linux
tcp/ip
学习中遇到的好博客
小文件:零拷贝技术传输大文件:异步IO、直接IO:如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io+直接io(123条消息)Linux
网络编程
|彻底搞懂零拷贝(zero-copy)技术_socket
偏安一隅,占山为王
·
2023-08-02 00:29
学习
Go经典阻塞式TCP协议流解析的实践
1.Go经典阻塞I/O的TCP
网络编程
模型Go语言诞生十多年来取得了飞速发展,并得到了全世界开发者的广泛接纳和应用,其应用领域广泛,包括:Web服务、数据库、
网络编程
、系统编程、DevOps、安全检测与管控
Tony Bai
·
2023-08-01 22:34
网络
java
go
gwt
epoll
1000+份计算机paper,卡耐基梅隆大学,芝加哥大学,facebook,google,微软,twitter等大牛一作,持续更新中...
复杂而有序的数据结构
网络编程
那些事儿牛B的基础组件中间件很重要高大上的分布式接近原始的LinuxOS阅读工具✈原文链接复杂而有序的数据结构No.TitleTranslation(参考)Company1《
Linux技术狂
·
2023-08-01 21:47
c++
c语言
linux
p2p
udp
kotlin web_使用Kotlin进行类型安全的Web
如果您不能在网络上使用某种语言,它并不是很好,因此在本文中,我们将讨论Kotlin中的
网络编程
。当然,您可以编写与Java中相同的servlet,也可以在Ko
diluan6799
·
2023-08-01 20:59
字符串
列表
编程语言
python
java
Posix API原理返回值说明
文章目录1、概述2、connect函数3、listen函数4、accept返回值处理5、recv返回值处理5.1、LT\ET模式读取数据6、send返回值处理1、概述主要介绍
网络编程
中,使用到的一些系统调用解释
讳疾忌医丶
·
2023-08-01 20:19
Linux
系统编程
网络
后端技术趋势指南|如何选择自己的技术方向
但同时也存在一些通用的技术要求,比如熟悉编程语言,数据结构与算法,
网络编程
,TCP/IP协议,数据库,中间件,高性能,高可用技术。后台技术演进架构演进随着PC局域网
Linuxer_Martin
·
2023-08-01 14:39
后端
系统架构
技术方向
UNIX
网络编程
卷一 学习笔记 第十一章 名字与地址转换
到目前为止,本书中所有例子都用数值地址表示主机(如206.6.226.33),用数值端口号来标识服务器(如端口13代表daytime服务器)。但出于某些理由,我们应使用名字而非数值:名字比较容易记住;数值地址可以变动而名字保持不变;随着往IPv6上转移,数值地址变得非常长,手工键入数值地址更易出错。域名系统(DomainNameSystem,DNS)主要用于主机名和IP地址之间的映射。主机名既可以
吃着火锅x唱着歌
·
2023-08-01 13:48
UNIX网络编程卷一(第三版)
unix
网络
学习
UNIX
网络编程
卷一 学习笔记 第十四章 高级I/O函数
有3种方式可在涉及套接字的IO操作上设置超时方法:1.调用alarm,它在指定超时期满时产生SIGALRM信号。此方法涉及信号处理,而信号处理在不同的实现上存在差异,且此方法可能干扰进程中已经执行过的alarm调用,可能使之前已经设置的超时时间被覆盖或者被忽略。2.在select函数中阻塞等待IO(select函数有内置的时间限制),以此代替直接阻塞在read或write调用上。3.使用较新的SO
吃着火锅x唱着歌
·
2023-08-01 13:48
UNIX网络编程卷一(第三版)
unix
网络
学习
UNIX
网络编程
卷一 学习笔记 第十五章 Unix域协议
本书中,作者说Unix域数据报套接字是不可靠的,这一说法已经过时,当前大多实现中,Unix域套接字都是可靠的,不论是数据报套接字还是字节流套接字。Unix域协议不是一个实际的协议族,而是单个主机上执行客户/服务器通信的方法,所用API是套接字API。Unix域协议可视为IPC(进程间通信)方法之一。Unix域提供两类套接字:字节流套接字和数据报套接字。使用Unix域套接字的理由:1.在源自Berk
吃着火锅x唱着歌
·
2023-08-01 13:48
UNIX网络编程卷一(第三版)
网络
unix
学习
UNIX
网络编程
卷一 学习笔记 第八章 基本UDP套接字编程
UDP是无连接不可靠的数据报协议,不同于TCP提供的面向连接的可靠字节流。使用UDP编写的常见程序有:DNS、NFS、SNMP。以下是典型的UDP客户/服务器程序的函数调用,客户不与服务器建立连接,而是只使用sendto函数给服务器发送数据报,发送时必须指定目的地的地址作为参数。服务器也不接受来自客户的连接,而是直接调用recvfrom函数,等待某个客户的数据到达,recvfrom函数将返回所接收
吃着火锅x唱着歌
·
2023-08-01 13:18
UNIX网络编程卷一(第三版)
网络
unix
学习
UNIX
网络编程
卷一 学习笔记 第十三章 守护进程和inetd超级服务器
守护进程是在后台运行且不与任何控制终端关联的进程。Unix系统通常有很多守护进程在后台运行(约20到50个的量级),执行不同的管理任务。守护进程由系统初始化脚本(在开机时运行)启动,而没有控制终端是系统初始化脚本中启动进程的副作用。但守护进程也能在某个终端由用户在shell提示符下键入命令行命令启动,这样的守护进程必须亲自脱离与控制终端的关联,从而避免与作业控制、终端会话管理、终端产生的信号等发生
吃着火锅x唱着歌
·
2023-08-01 13:18
UNIX网络编程卷一(第三版)
unix
网络
学习
UNIX
网络编程
卷一 学习笔记 第二十六章 线程
在传统UNIX模式中,当一个进程需要另一个实体完成某事时,它就fork一个子进程,并让子进程去执行处理,Unix上大多网络服务器程序就是这么写的。这种范式多年来一直用得很好,但fork调用存在一些问题:1.fork调用代价大。fork函数要把父进程的内存映像复制到子进程,并在子进程中复制所有描述符,如此等等。当今实现使用写时复制技术,用以避免在子进程在真正需要自己的副本前就把父进程的数据空间复制到
吃着火锅x唱着歌
·
2023-08-01 13:46
UNIX网络编程卷一(第三版)
unix
网络
学习
【Linux】 UDP网络套接字编程
作者:阿润菜菜专栏:Linux系统
网络编程
文章目录一、网络通信的本质(port标识的进程间通信)二、传输层协议UDP/TCP认识传输层协议UDP/TCP网络字节序问题(规定大端)三、socket编程API
阿润021
·
2023-08-01 12:45
Linux系统网络编程
网络
linux
udp
面试-
网络编程
HTTPTCPUDPSocketWebSocketrestful风格Socket是什么?Socket是应用层与传输层的一个抽象,将复杂的TCP/IP协议隐藏在Socket接口之后,只对应用层暴露简单的接口Socket是一种特殊的文件,他也有文件描述符,进程可以打开一个Socket,并像文件一样对他进行读写操作而不关系数据是怎么在网上上传输的,Socket是一个TCP连接的两端Socket如何表示唯
追寻9
·
2023-08-01 09:28
面试
网络
面试
websocket
python
网络编程
之websocket
我们知道一般我们的请求都是http请求,由客户端发起,然后待服务端返回数据之后,这一个请求就结束了。但是,有些情况下,服务端需要主动给客户端发消息(比如推送一些消息),服务端与客户端需要进行双向交流,此时,http就显得有些无能为力了。所以就有了全双工的websocket:即客户端与服务端建立连接之后,就可以双向通信了。服务端无需等待客户端发送请求消息,也可以通过websocket的连接主动给客户
2907857659
·
2023-08-01 06:42
websocket
python
iOS线程间通信总结
使用及原理实现☞iOSNSNotification使用及原理实现☞iOS内存管理浅析☞iOSblock深入浅出☞iOSdispatch浅析☞iOSrunloop由浅入深☞iOSruntime详解☞iOS
网络编程
浅析
FengyunSky
·
2023-08-01 05:25
从零开始学python(十三)爬虫工程师自动化和抓包
前言回顾之前讲述了python语法编程必修入门基础和
网络编程
,多线程/多进程/协程等方面的内容,后续讲到了数据库编程篇MySQL,Redis,MongoDB篇,和机器学习,全栈开发,数据分析,爬虫数据采集前面没看的也不用往前翻
天天不吃饭阿
·
2023-08-01 02:40
python开发
python
python爬虫
python
爬虫
自动化
python开发
selenium
抓包
Python爬虫
跟我一起从零开始学python(十一)简述spark
前言回顾之前讲述了python语法编程必修入门基础和
网络编程
,多线程/多进程/协程等方面的内容,后续讲到了数据库编程篇MySQL,Redis,MongoDB篇,和机器学习,全栈开发,数据分析前面没看的也不用往前翻
天天不吃饭阿
·
2023-08-01 02:39
python开发
python
数据分析
python
spark
开发语言
数据分析
大数据
计算机
从零开始学python(十二)如何成为一名优秀的爬虫工程师
前言回顾之前讲述了python语法编程必修入门基础和
网络编程
,多线程/多进程/协程等方面的内容,后续讲到了数据库编程篇MySQL,Redis,MongoDB篇,和机器学习,全栈开发,数据分析前面没看的也不用往前翻
天天不吃饭阿
·
2023-08-01 02:38
python开发
python
python爬虫
python
爬虫
开发语言
Python开发
数据采集
【
网络编程
】I/O复用
文章目录一、select系统调用1.1、文件描述符就绪条件(socket可读条件)1.2、处理带外数据二、poll系统调用三、epoll系列系统调用3.1、内核事件表3.2、epoll_wait函数3.3、LT和ET模式3.4、EPOLLONESHOT事件四、select、poll、epoll三组I/O复用函数比较一、select系统调用 select系统调用的用途是:在一段指定时间以内,监听用
Rockict_z
·
2023-07-31 14:59
网络编程
网络
【
网络编程
】服务器程序框架
文章目录1、服务器基本框架2、两种高效的事件处理模式2.1、Reactor模式(由同步I/O模型实现)2.2、Proactor模式(由异步I/O模型实现)2.3、模拟Proactor模式(由同步I/O模型模拟实现)3、两种高效的并发模式3.1、半同步/半异步模式3.2、领导者/追随者模式1、服务器基本框架 这张图既可以用来描述一台服务器的基本框架,也可以用来描述一个服务器集群的基本框架,下面这张
Rockict_z
·
2023-07-31 14:29
网络编程
网络
服务器
【
网络编程
】有限状态机实例:HTTP请求的读取与分析
一、概念 有限状态机是逻辑单元内部的一种高效编程方法。对于它的实例——HTTP请求的读取与分析功能的实现来讲,它的两种有限状态机构成分别称为主状态机和从状态机,并且主状态机是在内部调用从状态机的。 在代码中,主状态机使用checkstate变量来记录当前的状态。其中,一共有以下两种状态。CHECK_STATE_REQUESTLINE,表示当前行是请求行,主状态机调用parse_requestl
Rockict_z
·
2023-07-31 14:29
网络编程
网络
http
【
网络编程
】IO复用的应用一:非阻塞connect
在connect连接中,若socket以非阻塞的方式进行连接,则系统内设置的TCP三次握手超时时间为0,所以它不会等待TCP三次握手完成,直接返回,错误为EINPROGRESS。 所以,我们可以通过判断connect时返回的错误码是不是EINPROGRESS来实现非阻塞的connect,如果当前是EINPROGRESS并且socket可写,则说明链路建立成功。此时调用getsockopt来清
Rockict_z
·
2023-07-31 14:58
网络编程
网络
(一)CSharp-
网络编程
一、OSI参考模型(1)物理层作为原始的位流或电气处理。(2)数据链路层负责建立、维持和释放数据链路的连接。(3)网络层选择合适的网间路由和交换结点,以确保数据及时传送。网络层将数据链路层提供的帧组织成数据包,包中封装有网络层包头、其中含有逻辑地址信息(源站点和目的站点地址的网络地址)(4)传输层,为两个端系统(也就是源站和目的站)的会话层之间,提供建立、维护和取消传输连接的功能,并负责可靠地传输
CRongQ
·
2023-07-31 14:18
计算机网络
tcp/ip
python脚本教程-学习Python的教程?:python 脚本菜鸟教程
Python作为一门面向对象的性语言,其实它的学习也很简单-配置-Python基础(语法、、数据类型、高级变量、函数、Python高级特性)-面向对象编程、面向对象高级编程-错误、调试、测试-
网络编程
、
weixin_37988176
·
2023-07-31 12:53
django入门与学习-django的安装与测试-1
寒假期间大师兄给我们布置了使用django结合python实现爬虫数据的展现任务,又由于之前一直接触的是C++,没有python和
网络编程
的基础,所以学习起来很吃力,中间也遇到了很多非常莫名奇妙的问题,
派生阳光
·
2023-07-31 12:22
django
python
django
python
linux -
网络编程
一网络基本概念和Socket编程
目录1网络基础概念1.1协议1.2分层模型1.3数据通信过程1.4网络应用程序的设计模式1.5以太网帧格式1.6网络名词术语解析(自行阅读扫盲)2SOCKET编程2.1socket编程预备知识2.2socket编程主要的API函数介绍目标:了解OSI七层、TCP/IP四层模型结构了解常见网络协议格式掌握网络字节序和主机字节序之间的转换(大端法和小端法)说出TCP服务器端通信流程说出TCP客户端通信
cat_fish_rain
·
2023-07-31 12:14
网络编程
linux
网络
服务器
linux -
网络编程
-多线程并发服务器
目录1.三次握手和四次挥手2滑动窗口3函数封装思想4高并发服务器学习目标:掌握三次握手建立连接过程掌握四次握手关闭连接的过程掌握滑动窗口的概念掌握错误处理函数封装实现多进程并发服务器实现多线程并发服务器1.三次握手和四次挥手思考:为什么TCP是面向连接的安全可靠的传输????TCP是面向连接的安全的数据传输,在客户端与服务端建立建立的时候要经过三次握手的过程,在客户端与服务端断开连接的时候要经历四
cat_fish_rain
·
2023-07-31 12:13
服务器
网络
C++
Python基础教程:Socket
网络编程
网络编程
是指编写程序使其能够通过网络连接与其他计算机进行通信。Python作为一种强大的脚本语言,也提供了丰富的库来支持
网络编程
,如socket、asyncio、http.client等。
陆理手记
·
2023-07-31 12:03
Python教程
python
网络
Socket
网络编程
学习笔记 (10)简易聊天室案例
1.聊天室数据传输设计必要条件:客户端、服务器必要约束:数据传输协议原理:服务器监听消息来源、客户端链接服务器并发送消息到服务器1.1客户端、服务器数据交互client发送消息到服务器端,服务器端回复消息也就是回送消息。1.2数据传输协议如上图,数据在传输的时候,需要在尾部追加换行符,也就是说原来5个字节的数据,在实际传输时,是有6个字节长度的。1.3服务器、多客户端模型在客户端有多个情况下,客户
鮀城小帅
·
2023-07-31 09:48
#
Socket
网络
学习
服务器
聊天室
JavaEE|
网络编程
之套接字 TCP
文章目录一、ServerSocketAPI构造方法常用方法二、SocketAPI构造方法常用方法注意事项三、TCP中的长短连接E1:一发一收(短连接)E2:请求响应(短连接)E3:多线程下的TCP回响服务器说明:这部分说实话有点懵,理解上有点吃力,这里暂时先放到这,有新的认识再进行回来修改。一、ServerSocketAPI它是创建TCP服务端Socket的api构造方法方法签名说明ServerS
安苒_
·
2023-07-31 09:16
JAVA
EE
java-ee
计算机网络
多线程
网络编程
IO多路复用 [select版] (TCP网络聊天室)
//head.h头文件//TcpGrpSer.c服务器端//TcpGrpUsr.c客户端select函数功能:阻塞函数,让内核去监测集合中的文件描述符是否准备就绪,若准备就绪则解除阻塞。原型:#include#include#include#includeintselect(intnfds,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,struct
Hellomino_
·
2023-07-31 08:14
网络编程
网络
tcp/ip
php
网络编程
IO多路复用 [epoll版] (TCP网络聊天室)
//head.h头文件//TcpGrpSer.c服务器端//TcpGrpUsr.c客户端通过IO多路复用实现服务器在单进程单线程下可以与多个客户端交互APIepoll函数#includeintepoll_create(intsize);功能:创建一个epoll句柄//创建红黑树根节点epoll把要监测的事件文件描述符挂载到红黑树上参数:size没有意义,但是必须>0返回值:成功返回根节点对应的文件
Hellomino_
·
2023-07-31 08:44
网络编程
网络
php
开发语言
网络编程
、
网络编程
的三要素、TCP/UDP通信、三次握手和四次挥手
网络编程
一、初始
网络编程
1.1什么是
网络编程
1.2BS/CS的优缺点二、
网络编程
三要素2.1IP2.1.1InetAddress2.2端口2.3协议三、UDP通信程序3.1发送数据3.2接受数据3.3聊天室
叶落闲庭
·
2023-07-31 08:25
#
JavaWeb
网络
tcp/ip
udp
1.netty介绍
基于事件驱动(点击一个按钮调用某个函数)的网络应用框架,高性能高可靠的网络IO程序基于TCP,面向客户端高并发应用/点对点大量数据持续传输的应用是NIO框架(IO的一层层封装)TCP/IP->javaIO和
网络编程
默默努力的小老弟
·
2023-07-31 07:42
netty
netty
JAVA
网络编程
(一)
网络编程
概念:在两台不同的计算机之间传递数据客户端::手机app浏览器桌面qq等应用程序服务器端:存储/处理数据(二)URL什么是URL:统一的资源定位示列:http://www.baidu.com
Hasaki丶疾风
·
2023-07-31 05:07
libuv库学习笔记-networking
Networking在libuv中,
网络编程
与直接使用BSDsocket区别不大,有些地方还更简单,概念保持不变的同时,libuv上所有接口都是非阻塞的。
biuheartburn
·
2023-07-31 02:10
java
c++
学习
笔记
网络
「
网络编程
」传输层协议_ TCP协议学习_及原理深入理解(二 - 完结)[万字详解]
「归属专栏」
网络编程
「主页链接」个人主页「笔者」枫叶先生(fy)目录二、TCP协议2.9TCP连接管理机制2.9.1三次握手2.9.2四次挥手2.9.3演示查看TIME_WAIT和CLOSE_WAIT状态
枫叶先生
·
2023-07-30 23:19
#
网络编程
网络
tcp/ip
学习
小研究 - Java 虚拟机实现原理分析
目录1概述2Java平台分层原理3虚拟机工作原理4虚拟机内存管理5类加载机制6结束语1概述Java语言的闪耀点是其跨平台特性,使其征服了
网络编程
界,而Java虚拟机以其独特的作用及强大的功能支撑起Java
放羊的牧码
·
2023-07-30 20:07
#
小研报
java
jvm
开发语言
小妍报
跨平台
类加载
解释器
Python
网络编程
详解:Socket套接字的使用与开发
Python
网络编程
详解:Socket套接字的使用与开发1.引言
网络编程
是现代应用开发中不可或缺的一部分。通过
网络编程
,我们可以实现不同设备之间的通信和数据交换,为用户提供更加丰富的服务和体验。
念广隶
·
2023-07-30 19:21
python
网络
python
智能路由器
【Linux】网络基础
作者:阿润菜菜专栏:Linux系统
网络编程
文章目录一、协议初识和网络协议分层(TCP/IP四层模型)认识协议TCP/IP五层(或四层)模型二、认识MAC地址和IP地址认识MAC地址认识IP地址认识以太网和互联网三
阿润021
·
2023-07-30 19:16
Linux系统网络编程
linux
网络
arm开发
Socket
网络编程
目录一、Socket
网络编程
二、Socket
网络编程
的步骤三、Socket
网络编程
API1.socket()函数1.1作用1.2函数原型2.connect()函数2.1作用2.2函数原型3.bind()
星筠君辰
·
2023-07-30 18:44
网络
服务器
tcp
udp
python套接字编程_Python套接字编程(1)——socket模块与套接字编程
在Python
网络编程
系列,我们主要学习以下内容:5.常见的Python异步编程框架6.协程在Python
网络编程
中的使用本文介绍Python下的基本套接字编程,主要基于socket模块,包括简单的TCP
唐小受和邱小胖
·
2023-07-30 16:43
python套接字编程
【Python
网络编程
——使用套接字Socket 客户端 服务端】
Python
网络编程
——使用套接字SocketSocket简介服务端客户端运行结果Socket简介Socket又称"套接字",应用程序一般通过"套接字"向网络发出请求,或应答网络请求,使两台主机或者一台计算机上的进程间可以进行通信
xiaoweiwei99
·
2023-07-30 16:42
java
网络
tcp/ip
服务器
eclipse
开发语言
Python
网络编程
,TCP,TCP客户端/服务端,socket套接字
demo.py(TCP客户端):importsocketdefmain():#1.创建tcp的套接字tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#2.链接服务器#tcp_socket.connect(("192.168.33.11",7890))server_ip=input("请输入要链接的服务器的ip:")server_
houyanhua1
·
2023-07-30 16:12
Python+
Python
网络编程
TCP
套接字
socket
《TCP IP
网络编程
》第十三章
第13章多种I/O函数13.1send&recv函数Linux中的send&recv:send函数定义:#includessize_tsend(intsockfd,constvoid*buf,size_tnbytes,intflags);/*成功时返回发送的字节数,失败时返回-1sockfd:表示与数据传输对象的连接的套接字和文件描述符buf:保存待传输数据的缓冲地址值nbytes:待传输字节数f
jay神
·
2023-07-30 15:42
《TCPIP网络编程》
网络
tcp/ip
服务器
网络编程
netty简介
它大大简化了
网络编程
,如TCP和UDP套接字服务器。“快速和简单”并不意味着生成的应用程序将受到可维护性或性能问题的影响。Netty经过精心设计,并积累了许多协议(如ftp、smtp、htt
乐乐Java路漫漫
·
2023-07-30 14:48
rpc
netty
netty
socket
go
网络编程
学习笔记6(安全)
简介尽管互联网最初被设计为可以承受敌对代理攻击的系统,但它过去一直是在一个可信的实体和合作的环境中发展起来的。可惜现在已经时过境迁。垃圾邮件,拒绝服务攻击,网络钓鱼这些东西使得每一个上网者都需要自行承担风险。应用程序应当在复杂的互联网环境中仍然可以正确工作。“正确”不光意味着程序功能的正确,同时还意味着要确保数据传输过程中的保密性和完整性,甚至只允许合法用户进行访问和其它问题。这自然使得编程更加复
GeminiGirl0604
·
2023-07-30 14:44
Unix
网络编程
小结——简单的服务器实现
1.前言要实现一个简易的服务器,需要几个步骤来与客户端建立连接,并接收客户端的数据进行处理。上图是实现TCP客户/服务器程序需要使用到的基本套接字函数。本篇以实现服务器端为主。2.socket()首先要调用socket函数得到一个监听套接字文件描述符作为起始,用于后续使用bind()和listen()使用时需要包含头文件“#include”。server.cpp#includeintmain(in
Blu_
·
2023-07-30 14:44
笔记
服务器
网络
unix
上一页
62
63
64
65
66
67
68
69
下一页
按字母分类:
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
其他