自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小伦的博客

生如逆旅,一苇一航。

  • 博客(186)
  • 资源 (8)
  • 收藏
  • 关注

原创 谷粒商城-集群篇

1、介绍1、概述部署流程:kubeadm工具作用:可以在master节点运行kubeadm init初始化一个master,其他节点kubeadm join可以加入master节点中,之后kubeadm就没有作用了。2、环境准备1、准备工作(1)可以使用vagrant的Vagrantfile文件快速创建三个虚拟机k8s-node1,k8s-node2和k8s-node3。Vagrantfile文件内容如下:Vagrant.configure("2") do |config| (1.

2021-04-28 12:56:24 27 1

原创 Sentinel-高并发-谷粒

1、Sentinel1、介绍1、概述(1)高并发系统需要关注的问题只有第7条保证的是系统的稳健,其他几条保证的是系统的快。(2)缓存的法宝2、熔断降级限流(1)熔断A服务调用B服务的某个功能,由于网络不稳定问题,或者B服务卡机,导致功能时间超长。如果这样子的次数太多。我们就可以直接将B断路了(A不再请求B接口),凡是调用B的直接返回降级数据,不必等待B的超长执行。这样B的故障问题,就不会级联影响到A。(2)降级整个网站处于流量高峰期,服务器压力剧增,根据当前业务情况及流量,对一些服

2021-04-28 11:37:55 33

原创 谷粒商城-vagrant学习

1、安装centos71、配置(1)初始化centos7vagrant init centos/7   会在C:\Users\34938目录下生成一个Vagrantfile文件。(2)启动centos7vagrant up  安装过程如下:  该过程会有网络原因导致下载失败,打开Clash for Windonw软件,重试2-3次后成功。下载时间大约23分钟左右。  完成后,在VirturalBox软件中会有存在的centos:...

2021-04-14 16:11:40 16

原创 谷粒商城-高级篇学习

1、商城业务1、整合high-level-client1、介绍1、概述(1)9300:TCPspring-data-elasticsearch:transport-api.jar - spirngboot版本不同 - 7.x已经不建议使用;8后就要废弃(2)9200:HTTP- JestClient:非官方;更新慢。- RestTemplate:模拟发送HTTP请求,ES很多操作需要自己分装,麻烦。- HttpClient:同上。- Elasticsearch-Rest-Cli

2021-04-14 11:47:08 55

原创 谷粒商城学习时遇到的一些问题

1、问题1-Uncaught (in promise) TypeError: Cannot read property ‘xx’ of null1、问题描述  今天在测试将数据保存到ES中时,在“发布商品”时,下面图像内容无法显示:  前端也能从后台拿到相应的数据,前端会有下面的报错信息:ncaught (in promise) TypeError: Cannot read property 'xx' of null  定位到,是D:\03Enviroment\28VSCode\code\re

2021-04-07 19:03:06 59

原创 RabbitMQ消息对列-谷粒

1、介绍1、概述大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力。因为向消息中间件写消息的时间十分短,大大缩短用户时间。JMS和AMQP比较:2、工作流程(1)概念(2)流程3、Docker安装(1)执行下面语句docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 \-p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 \rabbi

2021-04-04 17:21:32 17

原创 Spring Boot整合elasticsearch,报错并解决

问题11、环境Spring Boot:2.1.8.RELEASE;elasticsearch:7.4.2。2、描述  按照elasticsearch官网要求创建单实例,报出下面错误:Error creating bean with name 'esRestClient' defined in class path resource3、解决  在pom文件中添加剔除spring-boot-dependencies中所依赖的ES版本,变成下面这样: <properties>

2021-03-29 09:56:14 31 3

原创 ElasticSearch学习-谷粒商城

1、介绍1、概述网址:https://www.elastic.co/cn/elasticsearch/全文检索属于最常见的需求,开源的ES是目前全文检索引擎的首选。其中的基本属性等和MySQL很像index索引类比库type类型类比表document文档(1)index索引动词:将数据索引进ES中,相当于mysql中的insert功能。名词:相当于mysql的db。(2)Type类型在index中,可以定义一个或多个类型,其中每一种类型的数据可以放到一起。(3)Document

2021-03-28 11:29:30 18

原创 谷粒商城搭建-基础4-品牌管理-分布式基础篇完结

1、使用逆向工程的前端代码这种方式可以快速地搭建前端环境。1、生成菜单目录2、将renren-generator生成的product模块的前端代码brand-add-or-update.vue和brand.vue复制到product模块下此时控制台显示:但是显示的页面没有新增和删除功能,这是因为权限控制的原因。3、更改权限权限定义位置: <el-form-item> <el-button @click="getDataList()">查

2021-03-27 15:12:42 98

原创 虚拟机相关问题

1、挂起的虚拟机无法启动1、问题描述  在学习谷粒商城时,重新打开挂起的虚拟机,报出下面的错误:无法打开内核设备 \\.\Global\vmx86: 系统找不到指定的文件2、解决方式  打开相应的后台服务:...

2021-03-26 19:38:10 16

原创 Vue学习1

1、介绍1、概述Vue是一种渐进式JavaScript框架,由尤雨溪创建,可以动态的构建用户界面。2、特点(1)遵循MVVM模式Model : 模型层主要负责处理交互请求并返回响应的数据。View : 视图层主要负责展示视图。ViewModel : 视图-模型层起到桥梁的作用,一方面响应用户事件并向模型层发送请求,另一方面将模型层返回的数据通过数据数据绑定在视图层中展示。该模式解耦了视图和模型 : 每一个视图都对应一个ViewModel,同时ViewModel与模型建立联系,当接收到用户请

2021-03-26 17:38:54 21

原创 PPT制作学习

1、基础教学  1、主体范本(1)当主题不够的时候,可以通过下面的方式来搜寻主题:(2)挑选适合的版面配置来新增第二张投影片:(3)文字缩进(4)PPT切换效果  当想要去除切换效果时,点击切换的“无”即可。(5)添加动画(6)持续时间(7)动画刷(8)动画窗格  其中的播放数字代表鼠标点击的动作。2、投影母片设计1、操作(1)设置统一模板  操作完成后,关闭母版视图,回到原来的PPT中,可以看到PPT中添加了logo图标。(2)更换统一字形(3)

2021-03-24 15:02:47 48

原创 SpringMVC学习

1 介绍SpringMVC的Web框架围绕DispatcherServlet设计,DispatcherServlet的作用是将请求分发到不同的处理器。​ 当用户发起请求时,会被前置控制器拦截,然后根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应交给中心控制器,控制器使用模型与试图渲染视图结果,将结果返回给中心处理器,再将结果返回给请求者。原理的详细介绍2 第一个SpringMVC2.1 新建项目项目结构步骤新建一个modu

2021-03-21 20:55:36 8

原创 注解和反射学习

1 注解1.1 注解入门Annotation作用不是程序本身,可以对程序做出解释。(这一点和注释comment没有什么区别)可以被其他程序(比如:编译器等)读取。Annotation格式以“@注解名”在代码中存在,还可以添加一些参数值。例如:@SuppressWarnings(value = "unchecked")使用范围可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过放射机制编程实现对于这些元数据的

2021-02-27 11:23:45 22

原创 Java数据结构和算法1-链表_栈

1、数据结构和算法概述1、数据结构和算法的关系数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决。程序 = 数据结构+ 算法。2、线性结构和非线性结构数据结构包括:线性结构和非线性结构。(1)线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。线性结构有两种不同的存储结构,即顺序存储结构和链式存储结

2021-02-27 11:23:33 38

原创 Java数据结构和算法2-递归_排序

1、递归(Recursion)1、介绍1、概述递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。2、使用场景(1)各种数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子的问题(google编程大赛)。(2)各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等。(3)将用栈解决的问题–>递归代码比较简洁。3、递归程序遵守的规则(1)执行一个方法时,就创建一个新的受保护的独立空间(栈空间)。(

2021-02-27 11:23:20 12

原创 Java数据结构和算法3-查找_哈希表_二叉树

1、查找算法在java中,我们常用的查找有四种:(1)顺序(线性)查找(2)二分查找/折半查找(3)插值查找(4)斐波那契查找1、顺序(线性)查找1、需求有一个数列:{1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称。2、代码package com.xiaolun.search;//线性查找public class SeqSearch { public static void main(String[] args) { int arr[

2021-02-27 11:23:05 13

原创 递归和回溯

1、递归1、案例1(1)代码public class RecursionTest01 { public static void main(String[] args) { System.out.println(method(3)); } public static int method(int n) { if (n == 1) { return 1; } else { return n * method(n -

2021-02-27 11:22:53 8

原创 Java数据结构和算法4-图

1、图1、介绍1、概述当我们需要表示多对多的关系时, 这里我们就用到了图。图是一种数据结构数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为点。2、图的基本概念顶点(vertex)边(edge)无向图: 顶点之间的连接没有方向,比如A-B,即可以是 A-> B 也可以 B->A 。路径:: 比如从 D -> C 的路径有D->B->C或者D->A->B->C。有向图:顶点之间的连接有方向,比如A-

2021-02-27 11:22:39 17

原创 输入输出流

1 韩顺平主讲​ java.io编程核心组成为:一个类(File)、一个接口(Serializable)、四个抽象类(InputStream、OutputStream、Reader、Writer)。1、文件流1、介绍(1)文件是数据源(保存数据的地方)的一种,比如word文档,txt文件,声音,图片等。即文件最主要的作用就是保存数据。(2)文件在程序中是以流的形式来操作的。判断输入流和输出流的方法:以内存为参照,如果数据是向内存流动,则是输入流;反之,为输出流。2、分类(1)Java流

2021-02-26 09:32:15 19

原创 设计模式4-韩

1、备忘录模式(Memento Pattern)1、介绍1、概述(1)备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内 部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保 存的状态。(2)可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情, 或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录 模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某 些数据,当要做回退时,可以从备忘录对象里获取原来的

2021-02-26 09:31:30 9

原创 设计模式3-韩

1、模板方法模式(Template Method Pattern)1、介绍(1)概述模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说,模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定 步骤(2)原理图(1)AbstractClass抽象类

2021-02-26 09:30:53 18

原创 设计模式2-韩

1、设计模式七大原则1、目的编写软件过程中,程序员面临着来自 耦合性,内聚性以及可维护性,可扩展性,重 用性,灵活性 等多方面的挑战,设计模式是为了让程序(软件),具有更好(1)代码重用性 (即:相同功能的代码,不用多次编写) 。(2) 可读性 (即:编程规范性, 便于其他程序员的阅读和理解) 。(3)可扩展性 (即:当需要增加新的功能时,非常的方便,称为可维护) 。(4)可靠性 (即:当我们增加新的功能后,对原来的功能没有影响)。(5)使程序呈现高内聚,低耦合的特性。分享金句:设计模式包

2021-02-26 09:30:21 42

原创 设计模式1

1 创建型模式1、单例模式所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。构造器私有的理解:将一个类的构造函数进行私有化,可以使得该类不被实例化继承。此时,对象只能在内部构建(即创建这个类的实例,唯一的办法是提供一个公共静态方法。),并向外提供。这是Java提供的访问控制机制。参考博客:https://blog.csdn.net/qq_36186690/article/details/8294583

2021-02-26 09:29:40 21

原创 多线程讲解

1 线程简介程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。进程是执行程序的一次执行过程,是一个动态的概念。是系统资源分配的单位。如果一个进程中开辟了多条线程,线程的运行由调度器安排调度,调度器是和操作系统相关的,先后顺序是不能人为干预的。通常一个进程包含多干个线程,一个进程中中至少有一个进程。线程是CPU调度和执行的单位。是独立的执行路径。当程序运行时,即使自己没有创建线程,后台也有多个线程,例如主线程,gc线程。线程会带来额外的开销,如cpu调度时间,并发控制开销。每个线

2021-02-26 09:28:59 17

原创 UML学习

1 介绍UML(Unified Modeling Language)统一建模语言,UML式在开发阶段,说明、可视化、构建和书写一个面向对象系统的一种开放方法。模型大多以图表的方式表现出来,一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息的只用的文本。它可以帮助软件开发人员进行思考和记录思路的结果。UML是一种建模语言,而不是一个开发过程。UML包括:事物、关系、图和扩展机制。事物:结构:类、接口、构件(软件的一个文件,比如一个jarb包)和节点等。行为:交互(消息)和状态

2021-02-26 09:28:21 27

原创 JVM学习

1 JVM体系结构概述1、JVM位置JVM是运行在操作系统之上的,它与硬件没有直接的交互。2、JVM体系结构概览在运行数据区,有亮色和暗色的区别:对于亮色所有线程共享,灰色表示线程私有;同时亮色存在垃圾回收机制。3、类装载器-ClassLoader1、介绍(1)负责加载class文件,class文件在文件开头有特定的文件标示,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Exe

2021-02-26 09:27:38 14

原创 JUC学习2

1 流式计算1、四大函数式接口1、接口类型2、实例import java.util.function.Consumer;import java.util.function.Function;import java.util.function.Predicate;import java.util.function.Supplier;public class StreamDemo02 { public static void main(String[] args) { f

2021-02-26 09:26:45 10

原创 JUC学习1

1 介绍1、JUC(java.util.concurrent)是在并发编程中使用的工具类。 (concurrent:并发的,一致的)。(1)进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。(2)线程:通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程

2021-02-26 09:25:43 10

原创 Java基础2

1、Java比较器1、介绍在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种:自然排序:java.lang.Comparable定制排序:java.util.Comparator一般来说,Java中通过接口实现两个对象的比较,比较常用就是Comparable接口和Comparator接口。首先类要实现接口,并且使用泛型规定要进行比较的对象所属的类,然后在该类类实现了接口后,还需要实现接口定义的比较方法,在这些方法中传入需要比较大小的另一个

2021-02-25 09:53:41 26

原创 Java基础1

1 介绍名词解释JDK:Java Development Kit 开发工具包。JRE:Java Runtime Enviroment 运行时环境。JVM:Java Virtual Machine 虚拟机。IDE: Integrated Development Environment 集成开发环境。Java程序运行机制1.1 安装开发环境卸载JDK删除Java的安装目录。删除JAVA_HOME。删除path下关于Java的目录。进行测试 java -version。安装J

2021-02-25 09:53:10 37 1

原创 JavaWeb学习

1 介绍web应用程序编写完毕后,若想提供给外界访问,需要提供一个服务器来统一管理。静态web的缺点web页面无法动态更新,所有的用户看到的都是同一个界面;无法和数据库交互,导致数据无法持久化。动态web的缺点假如服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,然后重新发布(停机维护)。Web服务器服务器是一个被动的操作,用来处理用户的请求和给用户一些响应信息。主要有Tomcat。安装软件的步骤安装或解压。了解配置文件和目录结构。这个软件的作用。1.1 Htt

2021-02-25 09:52:32 42 1

原创 IDEA-debug调试

1、Debug简介和意义1、什么是程序DeBug?Debug,是程序开发人员必会的一项调试程序的技能。企业中程序开发和程序调试的比例为1:1.5,可以说如果你不会调试程序,你就没有办法从事编程工作。2、Debug能帮助我们做什么?(1)追踪代码的运行流程。(2)程序运行异常定位。(3)线上问题追踪。3、Debug对于程序学习者的意义(1)通过调试能够更好的查看程序的执行流程。(2)复杂的程序逻辑,通过老师的口述讲解,很难理解清楚,这个时候借助调试能够很好的帮助同学们理解程序。(3)定位

2021-02-25 09:44:12 12

原创 Docker2-基础

1、Docker常用安装1、安装mydql1、总体步骤(1)搜索镜像docker search xx(镜像名)(2)拉取镜像docker pull xx(镜像名)(3)查看镜像(4)启动镜像(5)停止镜像(6)移除镜像2、操作(1)在搜索镜像后,拉取mysql:5.6镜像docker pull mysql:5.6(2)运行mysql镜像docker run -p 12306:3306 --name mysql -v /xiaolun/mysql/conf:/etc/mys

2021-02-25 09:42:53 20

原创 Docker1-基础

1、介绍1、概述(1)docker出现的原因环境配置如此麻烦,换一台机器,就要重来一次,费力费时。解决上面的问题的方法就是:软件可以带环境安装。即安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。传统上认为,软件编码开发/测试结束后,所产出的成果即是程序或是能够编译执行的二进制字节码等(java为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让维运团队得以部署应用程式,开发需要清楚的告诉运维部署团队,用的

2021-02-25 09:42:15 24

原创 SpringCloud学习9-Seata

SpringCloud Alibaba Seata处理分布式事务1、介绍1、产生原因在分布式前,单机单库没问题。分布式以后,从1:1 -> 1:N -> N: N。总结:一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用,就会产生分布式事务问题。2、概述​ Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。官网地址:http://seata.io/zh-cn/3、作用(1)一个典型的分布式事务过程(2)术

2021-02-25 09:40:17 32

原创 SpringCloud学习8-Sentinel

SpringCloud Alibaba Sentinel实现熔断与限流1 介绍1、官网https://github.com/alibaba/Sentinel中文https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D2、概述一句话解释,之前我们讲解过的Hystrix。3、下载https://github.com/alibaba/Sentinel/releases4、作用5、操作(1)操作APIhttps://spri

2021-02-25 09:39:37 72

原创 SpringCloud学习7-Nacos

1 SpringCloud Alibaba入门简介1、Alibaba出现的原因Spring Cloud Netflix项目进入维护模式新组件功能将以其他替代的方式实现:2、概述官网:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md3、作用4、操作Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Nacos:一个更易于构建云原生应用的动态服

2021-02-25 09:38:51 38

原创 SpringCloud学习6-Stream

1 SpringCloud Stream消息驱动1、介绍1、概述一句话:屏蔽底层消息中间件的差异,降低切换版本,统一消息的编程模型。2、官网英文官网:https://spring.io/projects/spring-cloud-stream#overviewAPI网址:https://cloud.spring.io/spring-cloud-static/spring-cloud-stream/3.0.1.RELEASE/reference/html/中文官网:https://m.w

2021-02-25 09:37:53 11

原创 SpringCloud学习5-config_Bus

1 SpringCloud config分布式配置中心1、介绍(1)分布式系统面临的问题(2)config是什么(3)操作(4)作用(5)与Github整合配置​ 由于SpringCloud Config默认使用Git来存储配置文件(也有其它方式,比如支持svn和本地文件,但最推荐的还是Git,而且使用的是http/https访问的形式)。(6)官网https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.

2021-02-24 09:55:45 11

波士顿平均房价预测_boston.csv

boston.csv文件是一个包含多个特征和平均放假的数据集,通过特征数据的学习,来实现对于波士顿平均房价的预测。

2020-11-21

kubesphere-minimal.yaml

kubespherev2.1的最小化安装文件,可以对应kubernetesv1.17.3版本安装。

2021-04-26

鸢尾花数据_iris.arff.csv

这是一个鸢尾花的特征(sepal_length:花萼长度;sepal_width:花萼宽度;petal_length:花瓣长度;petal_width:花瓣宽度)和标签(setosa(山鸢尾);versicolor(杂色鸢尾);virginica(弗吉尼亚鸢尾))数据,用来KNN,感知器算法的实现的测试数据。

2020-11-20

K-Means算法使用的数据集order.csv

order.csv是K-Means聚类算法使用到的数据集,通过K-Means聚类算法可以实现对于order.csv中的数据按照聚类中心进行聚类

2020-11-24

B站学习-缩放摘要图.7z

PPT缩放动画的一个例子,通过这个阳历,可以明白缩放动画是如何操作的。 PPT缩放动画的一个例子,通过这个阳历,可以明白缩放动画是如何操作的。 PPT缩放动画的一个例子,通过这个阳历,可以明白缩放动画是如何操作的。

2021-03-24

LaTeX公式编写参考文档-UTN28-PlainTextMath-v2.pdf

该资源是一个LaTeX公式编写参考文档,当我们遇到公式不知道怎么编写时,可以通过查阅该API进行公式的快速编写。

2020-11-21

SVD分解使用到的图片

这个压缩包中包含两张用于SVD分解的图片,一张是baby图片,一张是lena的图片。 这个压缩包中包含两张用于SVD分解的图片,一张是baby图片,一张是lena的图片。

2020-12-08

Least_squares_method.csv

该数据包含两列数据,其中,第一列数据是x,第二列数据是y值,主要就是为了通过最小二乘法实现一元线性回归

2020-11-21

空空如也

空空如也

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

TA关注的人 TA的粉丝

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