自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小默:进无止境

QQ:1274654983 欢迎交流~~

  • 博客(932)
  • 资源 (51)
  • 收藏
  • 关注

原创 分布式锁的最佳实践之Redisson

本文接讲解Redisson在分布式锁的应用实践。Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。

2024-07-18 15:04:46 336

原创 从库存超卖问题分析锁和分布式锁的应用(二)

本文从一个经典的库存超卖问题分析说明常见锁的应用,假设库存资源存储在Redis里面。此时方法操作是先读后写,非原子性操作,是存在并发问题的。JVM本地锁的实现与优缺点在已经分析过了,这里不再赘述。

2024-07-15 16:02:44 209

原创 从库存超卖问题分析锁和分布式锁的应用(一)

本文从一个经典的库存超卖问题分析说明常见锁的应用。

2024-07-12 16:01:27 241

原创 SpringCloud Alibaba Sentinel网关流量控制实践总结

Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。GatewayFlowRule:网关限流规则,针对 API Gateway 的场景定制的限流规则,可以针对不同 route 或自定义的 API 分组进行限流,支持针对请求中的参数、Header、来源 IP 等进行定制化的限流。ApiDefinition:用户自定义的 API 定义分组,可以看做是一些 URL 匹配的组合。

2024-07-08 10:18:59 1139

原创 SpringCloud Alibaba Sentinel 授权规则实践总结

很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。调用方信息通过 ContextUtil.enter(resourceName, origin) 方法中的 origin 参数传入。规则配置resource:资源名,即限流规则的作用对象。

2024-07-05 17:52:01 434

原创 分布式链路追踪Micrometer Tracing和ZipKin基础入门与实践

在分布式与微服务场景下,我们需要解决如下问题:在大规模分布式与微服务集群下,如何实时观测系统的整体调用链路情况。在大规模分布式与微服务集群下,如何快速发现并定位到问题。在大规模分布式与微服务集群下,如何尽可能精确的判断故障对系统的影响范围与影响程度。在大规模分布式与微服务集群下,如何尽可能精确的梳理出服务之间的依赖关系,并判断出服务之间的依赖关系是否合理。在大规模分布式与微服务集群下,如何尽可能精确的分析整个系统调用链路的性能与瓶颈点。

2024-07-02 14:16:44 643

原创 Resilience4j之RateLimiter和常见限流算法总结

Resilience4j提供了一个限流器,它将从epoch开始的所有纳秒划分为多个周期。每个周期的持续时间RateLimiterConfig.limitRefreshPeriod。在每个周期开始时,限流器将活动权限数设置为RateLimiterConfig.limitForPeriod。期间, 对于限流器的调用者,它看起来确实是这样的,但是对于AtomicRateLimiter实现,如果RateLimiter未被经常使用,则会在后台进行一些优化,这些优化将跳过此刷新。

2024-07-02 12:26:51 907

原创 Resilience4j中bulkhead使用实践总结

在各种线程模型和I/O模型中都能很好地工作。它是基于信号量的,与Hystrix不同的是,它不提供“shadow”线程池选项。确保线程池大小正确且与断路器配置一致的责任在于客户端。简而言之,Resilience4j通过两种不同的方法实施了断路器模式以限制并发执行数量:一种是基于信号量的,适用于多种线程和I/O模型;另一种是,利用有界队列和固定线程池。与Hystrix相比,没有提供额外的线程池选项,因此,用户需要自行确保其线程池设置与断路器配置相匹配。

2024-07-01 17:53:00 510

原创 Spring Cloud Circuit Breaker基础入门与服务熔断

当一个组件或服务出现故障时,CircuitBreaker会迅速切换到开放OPEN状态(保险丝跳闸断电),阻止请求发送到该组件或服务从而避免更多的请求发送到该组件或服务。同时,CircuitBreaker还可以提高系统的可用性和健壮性,因为它可以在分布式系统的各个组件之间自动切换,从而避免单点故障的问题。断路器有三个普通状态:关闭(CLOSED)、开启(OPEN)、半开(HALF OPEN),还有两个特殊状态:禁用(DISABLED)、强制开启(FORCED OPEN)。

2024-07-01 16:35:14 715

原创 Spring Cloud OpenFeign基础入门与使用实践总结

OpenFeign是一个声明性web服务客户端。它使编写web服务客户端变得更容易。使用OpenFeign创建一个接口并对其进行注释。它具有可插入的注释支持,包括OpenFeign注释和JAX-RS注释。OpenFeign还支持可插拔编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,以及对使用Spring Web中默认使用的HttpMessageConverter的支持。

2024-06-28 15:50:38 425

原创 Spring Cloud LoadBalancer基础入门与应用实践

Spring Cloud LoadBalancer是由SpringCloud官方提供的一个开源的、简单易用的客户端负载均衡器,它包含在SpringCloud-commons中用它来替换了以前的Ribbon组件。相比较于Ribbon,SpringCloud LoadBalancer不仅能够支持RestTemplate,还支持WebClient(WeClient是Spring Web Flux中提供的功能,可以实现响应式异步请求)LB负载均衡(Load Balance)是什么。

2024-06-28 10:44:28 630

原创 Spring Cloud Consul作为配置中心实践

Consul 提供了一个键/值存储用于保存配置和其他元数据。Spring Cloud Consul Config 是 Spring Cloud Config Server和Client的一个替代方案。配置信息在特殊的“bootstrap”阶段被加载到 Spring Environment 中。配置默认存储在 /config 文件夹下。

2024-06-27 16:09:30 626

原创 SpringCloud Alibaba Seata2.0分布式事务AT模式实践总结

这里我们划分订单、库存与支付三个module来实践Seata的分布式事务。

2024-06-26 12:32:45 752

原创 SpringCloud Alibaba Seata2.0基础入门与安装

单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源。业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证,但是全局的数据一致性问题没法保证。一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。

2024-06-24 17:18:57 469

原创 SpringCloud Alibaba Sentinel规则持久化实践总结

默认情况下,一旦我们重启应用,sentinel规则将消失,生产环境需要将配置规则进行持久化。这里我们实践将Sentinel持久化到Nacos中。

2024-06-24 15:40:11 368

原创 SpringCloud Alibaba Sentinel中@SentinelResource使用实践总结

Sentinel 提供了 @SentinelResource 注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理 BlockException 等。注意:注解方式埋点不支持 private 方法。

2024-06-20 17:51:26 363

原创 SpringCloud Alibaba Sentinel 热点参数限流和系统保护规则

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。Sentinel 利用 LRU 策略统计最近最常访问的热点参数,结合令牌桶算法来进行参数级别的流控。热点参数限流支持集群模式。

2024-06-20 15:49:17 538

原创 SpringCloud Alibaba Sentinel 熔断降级实践总结

除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。

2024-06-20 10:29:19 939

原创 SpringCloud Alibaba Sentinel 流量控制之流控效果实践总结

当 QPS 超过某个阈值的时候,则采取措施进行流量控制。流量控制的效果包括以下几种:直接拒绝、Warm Up、匀速排队。对应 FlowRule 中的 controlBehavior 字段。注意:若使用除了直接拒绝之外的流量控制效果,则调用关系限流策略(strategy)会被忽略。

2024-06-20 09:36:33 285

原创 SpringCloud Alibaba Sentinel 流量控制之流控模式实践总结

举例来说,read_db 和 write_db 这两个资源分别代表数据库读写,我们可以给 read_db 设置限流规则来达到写优先的目的:设置 FlowRule.strategy 为 RuleConstant.RELATE 同时设置 FlowRule.ref_identity 为 write_db。比如对数据库同一个字段的读操作和写操作存在争抢,读的速度过高会影响写得速度,写的速度过高会影响读的速度。然后同时请求资源A、资源B,使B达到阈值,此时A也会返回错误信息。如下,我们给资源B设置规则:QPS/1。

2024-06-19 15:26:04 596

原创 SpringCloud Alibaba Sentinel基础入门与安装

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。

2024-06-19 10:52:57 565

原创 Spring Cloud Alibaba Nacos持久化配置

所谓的持久化就是将Nacos配置持久化存储到数据库里面,在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力。

2024-06-17 17:43:18 301

原创 Spring Cloud Alibaba Nacos作为服务配置中心实践

Spring Cloud Alibaba Nacos作为服务配置中心实践。

2024-06-14 12:07:23 171

原创 Spring Cloud Alibaba Nacos作为服务注册中心实践

本文总结Nacos作为注册中心的应用实践。

2024-06-14 09:40:35 295

原创 Spring Cloud Alibaba Nacos基础入门与安装

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

2024-06-13 17:02:27 913

原创 Spring Cloud Stream 消息驱动基础入门与实践总结

官方定义 Spring Cloud Stream 是一个构建消息驱动微服务的框架。为一些供应商的消息中间件产品提供了个性化的自动化配置实现,引用了发布-订阅、消费组、分区的三个核心概念。简单来讲,就是屏蔽了底层XXMQ,应用层不用关注底层是RabbitMQ还是Kafka。类似于Spring Data抽离持久层屏蔽底层各种数据库的概念。应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream中binder对象交互。

2024-06-13 10:07:28 472

原创 Spring Cloud Bus 消息总线基础入门与实践总结

Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知,然后去更新自身的配置。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道。

2024-06-12 17:08:35 424

原创 Java里强引用、软引用、弱引用、幻引用区别总结

在Java中,引用类型决定了对象的生命周期以及垃圾收集器如何处理这些对象。这里有四种引用类型:强引用、软引用、弱引用和幻象引用(也称虚引用)。这四种引用类型提供了不同程度的控制,使得开发人员能够更精细地管理对象的生命周期和内存使用。

2024-06-12 10:44:53 1007

原创 SpringCloud Gateway中Filters详细说明

前面我们研究了GateWay中各种路由断言的使用。SpringCloud GateWay 还提供了各种过滤器用来对请求和响应进行处理。

2024-06-06 16:25:19 440

原创 SpringCloud Gateway中Route Predicate Factories详细说明

Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 Predicate 对象,Predicate 对象可以赋值给 Route。Spring Cloud Gateway 包含许多内置的Route Predicate Factories。Spring Cloud Gateway包括许多内置的Route Predicate工厂。所有这些Predicate都与HTTP请求的不同属性匹配。多个Route Predicate工厂可以进行组合。

2024-06-06 11:10:53 644

原创 SpringCloud Gateway基础入门与使用实践总结

SpringCloud Gateway 是 Spring Cloud 的一个全新项目,基于 Spring 5.0+Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

2024-06-05 16:42:47 1569

原创 SpringCloud Hystrix服务熔断实例总结

服务熔断是一种自动化的故障隔离机制,用于快速响应故障服务调用,防止调用者线程池被耗尽。服务降级是根据系统状态动态调整服务级别的一种策略,用于在资源受限时提供基础服务,避免系统过载。服务降级每次都会先调用原服务方法,调用失败才会执行服务降级方法;服务熔断状态会直接调用服务降级方法。在实践中,两者常常结合使用,以构建更具弹性和健壮性的分布式系统。Hystrix作为一个容错库,提供了这些机制的实现,允许开发者在微服务架构中更好地控制故障处理和资源管理。

2024-06-05 11:23:39 686

原创 SpringCloud Consul基础入门与注册中心使用实践总结

提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。

2024-06-03 13:35:45 236 2

原创 Python使用错误总结

【代码】Python使用错误总结。

2024-03-07 10:02:44 336

原创 Windows下安装MongoDB实践总结

本文记录Windows环境下的MongoDB安装与使用总结。

2023-12-20 17:03:20 908

原创 Flask应用基础入门总结

如下所示这里会生成850b7054a4f6_.py,其实也就是数据模型(数据库表)迁移脚本。这时查看数据库只有一个表alembic_verison,并且是空的。执行迁移脚本,创建数据表并设置版本号。

2023-12-07 15:51:55 882

原创 Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结

Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0CPU版本总结

2023-11-11 20:46:09 2621

原创 使用Gradle创建SpringBoot项目

Spring Boot Gradle 插件在Gradle 提供Spring Boot 支持。它允许您打包可执行jar 或war 归档文件,运行SpringBoot 应用程序,并使用Spring-Boot-dependencies 提供的依赖管理。

2023-11-05 15:44:44 1623

原创 Gradle中的依赖Dependencies说明与使用总结

Gradle 中的依赖分别为直接依赖,项目依赖,本地jar 依赖。

2023-11-05 14:36:13 4779 1

原创 Vue2.0打包指定路由前缀

Vue2.0打包指定路由前缀

2023-10-10 10:11:22 371

MybatisX idea 快速开发插件jar

MybatisX idea 快速开发插件jar,可直接本地安装,无需从市场下载。

2020-07-28

DubboOPS项目和管理后台jar包

DubboOPS项目和管理后台jar包,主要有dubbo-admin-0.0.1-SNAPSHOT.jar和incubator-dubbo-ops-master

2018-11-07

Struts2Spring4Hibernate4整合

Struts2Spring4Hibernate4整合,Hibernate使用的是注解,没有使用Maven,这个是帮一个小伙伴整合做的demo

2018-11-07

亲测好用的Winhex

亲测好用的Winhex,完美查看编译后的class文件。支持多种语言,解压后选择"setup.exe"进行安装即可!!!

2018-09-02

类文件结构示例

类文件结构示例,在深入浅出JVM博文中进行演示。如果无关,无需下载。

2018-09-02

SpringBoot使用Maven建立多模块工程

SpringBoot使用Maven建立多模块工程,包含父工程,api公用工程,pojo工程和主项目web工程。

2018-08-10

SpringBootMaven分模块实例

Maven分模块架构,框架使用SpringBoot整合SpringMVC、Mybatis。

2018-07-18

Redis Desktop Manager

使用redis远程管理工具(Redis Desktop Manager)进行连接、操作。

2018-06-29

Axis2与Spring整合发布多个WebService

Axis2与Spring整合发布多个WebService,项目使用Maven管理。

2018-05-27

CXF+Spring+MyBatis+Maven

CXF+Spring+MyBatis+Maven项目整合,包含服务端和客户端。

2018-05-05

IDEA导入eclipse常用快捷键

IDEA导入eclipse常用快捷键,方便好用,完美从eclipse过渡到IDEA

2018-04-24

DES加密解密 JS-JAVA

DES加密解密 JS-JAVA,支持JS和JAVA直接相互加密解密,简单引入即可

2018-03-26

CryptoJS v3.1.2.zip

CryptoJS v3.1.2.zip完整加密库,支持常见的多种加密方式。AES,DES,SHA。。。

2018-03-22

AES加密工具类

AES加密解密工具类,解决windows下和linux加密解密不同问题。

2018-03-20

nginx安装脚本

nginx安装脚本,支持一键安装nginx及其依赖如zlib openssl pcre等

2018-02-02

mysql自动备份脚本

linux下定时自动备份mysql数据库,并保存备份文件与备份日志到指定路径下。

2018-01-26

jsoup爬虫实战

使用jsoup进行爬虫并获取模板网页具体数据,获取总页数进行自动翻页处理。

2018-01-19

mysql5.7安装脚本

mysql5.7.16安装脚本,一键安装,安全可靠,方便快捷。

2017-12-15

Socket与ServerSocket编程实践聊天

Socket与ServerSocket编程实践聊天,服务器和客户端频繁通信

2017-11-07

CXF与Spring整合以及所需jar

CXF与Spring整合以及所需jar,包含服务端与客户端。jar包在lib目录下。

2017-11-02

输入一段英文,去掉符号后将英文单词排序输出

如 I love jane who is a pretty girl. One day, I meet her on a sunshine morning... 打印为 I I One a a day girl her is jane love meet morning on pretty sunshine who IT技术系统性、完整视频教程2000G欢迎联系免费赠送,并有许多毕设哦

2021-12-23

mybatisgenerator.zip

mybatis-generator逆向生成工程,Maven工程,纯Mybatis

2021-09-03

PHP课程设计图书管理系统、学生成绩管理系统、学生宿舍管理系统

课程设计包含六个系统,均是PHP+MySQL。包含图书管理、学生成绩管理、学生宿舍管理、学生选课管理、请假管理以及网上图书订购。帮助同学顺利完成课程设计哦,同学就不用花钱买啦。

2020-11-27

ssm+MySQL宠物商店.txt

SSM+mysql实现宠物商店,可在eclipse、MyEclipse、idea下正常运行,webServer为Tomcat

2020-07-10

SpringBoot+thymeleaf+UEditor+不修改上传路径.zip

SpringBoot+Thymeleaf下整合UEditor,这里没有修改图片上传文件,只用默认的图片上传路径。资源有UEditor.1.4.3.3以及自定义Controller。

2020-02-04

jdk6-8String类

jdk1.6 jdk1.7 jdk1.8 64位下的String类,请进行对比研究学习。jdk1.6 jdk1.7 jdk1.8 64位下的String类,

2019-11-20

ElasticSearch.zip

Elasticsearch整合Header插件,安装node和header插件,全程无坑,需要的jar包都有,认真测试过的。

2019-11-15

支付宝对接相关工具和demo.zip

支付宝对接相关工具与电脑网站接入demo,包含电脑网站demo,服务端sdk,开发平台助手

2019-10-30

dhcp+c3p0.zip

dhcp与c3p0数据源整合MySQL完全配置,包含mchange-commons-java-0.2.11.jar,mysql-connector-java-5.0.4-bin.jar,commons-pool-1.3.jar,commons-dbcp-1.2.1.jar以及c3p0-0.9.5.2.jar

2019-10-27

fastdfs完整环境.zip

Centos下搭建fastdfs分布式文件系统,并整合fastdht、nginx进行文件去重。

2019-09-27

mysql-odbc.zip

PowerDesign添加MySQL数据源mysql-connector-odbc,包含32位 64位

2019-08-13

RabbitMQ.zip

Linux下源码编译安装RabbitMQ、Erlang并设置服务开机启动。

2019-08-12

PHP7.2+NGINX Linux环境搭建与脚本

Centos6.8源码编译安装NGINX与PHP7.2,包含源码安装包与NGINX自动安装脚本。

2019-07-01

项目+uploadify+Huploadify.zip

项目+uploadify+Huploadify,包含调试好的两个组件的页面源码、后台源码以及两个组件压缩包

2019-06-12

QRcode生成、解析二维码项目与所有jar

QRcode生成、解析二维码项目与所有jar,注意,是包含生成、解析二维码!

2019-05-08

fckeditor 2.3 兼容chrome解Number转换异常

fckeditor 2.3 兼容chrome解Number转换异常,将下载的jar替换掉即可

2019-05-03

AXURE RP EXTENSION For Chrome插件

AXURE RP EXTENSION For Chrome插件,在浏览器上观看HTML

2019-03-20

jave-1.0.2-jar视频音频处理包

jave-1.0.2-jar视频音频处理包,因为CSDN最低分为一分,所以没法免费贡献给大家。

2018-12-05

Netty权威指南 第2版 带书签目录 高清完整版.pdf

《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内首本深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty 的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。 《Netty 权威指南(第2 版)》适合架构师、设计师、软件开发工程师、测试人员以及其他对Java NIO 框架、Netty 感兴趣的相关人士阅读,通过《Netty 权威指南(第2 版)》的学习,读者不仅能够掌握Netty 基础功能的使用和开发,更能够掌握Netty 核心类库的原理和使用约束,从而在实际工作中更好地使用Netty。

2018-11-20

SpringBoot整合Dubbo和Zookeeper升级版

SpringBoot整合dubbo和Zookeeper,将公共接口抽取到了API项目中。另外还提供了xml方式整合dubbo和Zookeeper。

2018-11-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除