自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

转载 【STM32】串口通信---用代码与芯片对话(转载)

Author:AXYZdong 自动化专业 工科男有一点思考,有一点想法,有一点理性!定个小小目标,努力成为习惯!在最美的年华遇见更好的自己!CSDN@AXYZdong,CSDN首发,AXYZdong原创唯一博客更新的地址为: ???? AXYZdong的博客 ????在这里插入图片描述文章目录前言一、串口通信基本知识二、编程思路usart.husart.cmain.c宏定义三、总结前言开发板:stm32f407VET6开发环境:keil5 MDK串口通信的相关知识,请参

2020-09-05 09:55:07 443

转载 Linux简易命令整理(转载)

Linux简易入门Linux 概述1.11 Linux 是什么1.2 虚拟机1.3 centOsLinux 基本知识2.1 Linux基本常识2.2 Linux 终端常用的基本命令3.1 ls 命令3.2 mkdir命令3.3 cd 命令3.4 创建文件3.5 路径3.51 绝对路径3.52 相对路径3.6 删除3.7 切换用户3.8 复制3.9 移动3.10 vim编辑器Linux的基本命令二4.1 重定向4.2 查看文件4.3 权限4.4 添加用户4

2020-09-04 13:44:57 198

转载 MySQL安装教程---Windows10(转载)

MySQL安装教程第一步 下载资源个人推荐从官网上下载压缩包下载MSI进行安装的话也不是不可以只是安装过程中会有MySQL其他的软件,例如MySQL出的可视化界面 MySQL Workbench等等一堆软件最最关键的是MSI方式安装的MySQL没有办法改安装路径(可能是有办法改但是我没有找到)总之下载压缩包就对了在这里插入图片描述第二步 解压资源到目标路径在这里插入图片描述第三步 创建配置文件我刚开始安装的时候也很纳闷这个配置到底要不要写,因为我在之前的笔记本上安装的时候没记得动过配置

2020-09-04 10:22:15 694 1

转载 数据库实践丨MySQL多表join分析(转载)

Join并行Join并行多表join介绍多表Join的方式不使用Join buffer使用Join buffer3. Join执行流程(老执行器)多表join介绍JOIN子句用于根据两个或多个表之间的相关列来组合它们。 例如:Orders:OrderIDCustomerIDOrderDate1030821996-09-1810309371996-09-1910310771996-09-20Customers:CustomerIDCustomer

2020-09-03 14:10:08 209

转载 将dump文件导入oracle之后导出为CSV文件和SQL文件(转载)

将dump文件导入oracle之后导出为CSV文件和SQL文件文章目录将dump文件导入oracle之后导出为CSV文件和SQL文件前言大佬给的解决方法。导出CSV文件导出SQL文件前情回顾思路dbf文件总结前言Windows10安装oracle 19c数据库+PLsql详细安装过程导入.dump文件到Oracle 19c的操作步骤现在要把导入的.dump文件导出为CSV文件和SQL文件。大佬给的解决方法。使用plsql。导出CSV文件步骤一,登入plsql(注意选nor

2020-09-03 09:39:12 339

原创 【剑指Offer】41.2 字符流中第一个不重复的字符(转载)

NowCoder题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 “go” 时,第一个只出现一次的字符是 “g”。当从该字符流中读出前六个字符“google" 时,第一个只出现一次的字符是 “l”。解题思路import java.util.*;public class Solution {private int[] cnts = new int[256];private Queue queue = new LinkedList<>()

2020-09-02 13:28:17 72

转载 操作系统概论【三】- - 进程调度与死锁(转载)

文章目录第三章、进程调度与死锁一、进程调度的功能与时机功能时机二、进程调度算法选择调度方式和算法的若干准则调度算法a.先来先服务调度算法b.短进程优先调度算法c.优先权调度算法俩种类型:优先权类型存在的问题e.时间片轮转调度算法时间片大小的确定f.多级队列调度算法g.多级反馈队列调度算法三、实时系统中的调度实现实时调度的基本条件a.提供必要的调度信息b.系统处理能力强c.采用抢占式调度机制(广泛)d.具有快速切换机制常用的实时调度算法a.最早截止时间优先算

2020-09-02 09:48:14 211

转载 Postgresql跟踪plpgsql插件plpgsql_check(转载)

plpgsql_check插件,用于解决plpgsql相关的问题,比如,对象是否定义,检测类型的一致性,类型定义错误,SQL注入,性能分析,未使用变量或者参数等等PostgreSQL 9.5以上均支持改插件git地址:https://github.com/okbob/plpgsql_check#tracer安装:unzip /home/postgres/plpgsql_check-master.zipchown -R postgres.postgres plpgsql_check-master

2020-09-01 15:21:36 540

转载 MySQL中如何设置 auto_increment 重新计数 主键id从1开始(转载)

在使用auto_increment时,应该注意一个小问题, 当进行delete from 表名称 清空表的时候,重新插入数据 , 发现auto_increment主键字段计数不是从1开始的,而是接着最新插入的数据id开始!那么如何重新计数呢?可以使用以下命令:方法1delete from 表名称;alter table 表名称 auto_increment=1#–这种方法处理的好处就是 可以设置auto_increment 为任意值开始自增#–提示:如果表列和数据很多,速度会很慢,如90多万条

2020-09-01 10:24:14 1550 1

转载 算法(Java实现)-详谈递归(迷宫回溯问题)(转载)

1、递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题, 同时可以让代码变得简洁。2、递归调用的机制(1)打印问题看下面代码:public class RecursionTest {public static void main(String[] args) {// TODO Auto-generated method stub//通过打印问题,回顾递归调用机制test(4);}//打印问题.public static void

2020-08-31 14:14:19 148

转载 【Java】parseInt() 和valueOf() toString()的区别(转载)

1.parseInt()就是把String类型转化为int类型。如 String a= “123”;int b = Integer.parseInt(a);这样b就等于123了。2.ValueOf()方法比如说 Integer.valueOf()是把String类型转化为Integer类型(注意:是Integer类型,而不是int类型,int类型是表示数字的简单类型,Integer类型是一个引用的复杂类型)如:String a= “123”;Integer c =Integer.value

2020-08-31 09:27:25 78

转载 Python爬虫系列之微信小程序逆向某优选爬虫签名算法(转载)

代码仅供学习交流,请勿用于非法用途直接上代码import hashlibfrom parser import parseParamfrom sign import sign接口秘钥,代码仅供学习,不提供暴露签名secret = “”def md5(s):m = hashlib.md5()m.update(s.encode(“utf-8”))return str(m.hexdigest()).lower()def getSign(params, header):paramStr = “

2020-08-28 14:00:36 648

转载 JavaScript 技术篇-js检测对象类型实例演示,js的3种对象类型(转载)

JavaScript 的对象类型共有 3 种:Object、Date、Array判断是否为数组对象。判断依据:myArray.constructor 可以返回对象的构造函数,除了 Date 和 Array 对象外,其余的都是 Object 对象。function isArray(myArray) {return myArray.constructor.toString().indexOf(“Array”) > -1;}123判断是否为日期对象。function isDate(my

2020-08-28 10:35:48 143

转载 HBase-架构原理组件,写数据流程,读数据流程解析(转载)

文章目录架构原理写数据流程读数据流程架构原理在这里插入图片描述1)HDFSHDFS 为 HBase 提供最终的底层数据存储服务,同时为 HBase 提供高可用的支持。2)Client利用 RPC 机制与 Master 和 RegionServer 通信,并维护Meta Cache 来加快对HBase的访问。Client 访问用户数据前需要首先访问 ZooKeeper,找到 hbaes:meta 表的 Region 所在的位置,最后才能找到用户数据的位置去访问,不过 client 端会做 c

2020-08-27 13:35:03 119

转载 数据仓库你需要知道的3个区别(转载)

一、OLTP和OLAP的区别OLAPOLTP全称On-line Analytical ProcessingOn-line Transaction Processing应用场景数据仓库数据库核心维度、度量、下钻、上卷、切片、切块、旋转ACID(原子性、一致性、孤立性、持续性)关注点事后的分析,从统计的角度去看待业务发生的节点关注完成这件事情,准确无误的执行二、传统数仓和互联网数仓的区别传统数仓互联网数仓行业金融、电信、保险、证券电商、短视频、出行、团购、外卖行业特点

2020-08-27 09:39:57 341

转载 python+opencv代码给证件照换底色(别再用PS啦)(转载)

CSDN博客中关于修改证件底色的博文还不少。昨天看到一个小姐姐的博文很有意思。链接https://blog.csdn.net/weixin_41261833/article/details/107071806于是结合自己掌握的,写下自己的。我不管,自己的博文才方便查找。读取图片import cv2import numpy as np读取照片image=cv2.imread(‘zhanjian.jpg’)#显示cv2.imshow(‘image’,image)#无限等待cv2.wait

2020-08-26 15:47:36 346

转载 LNMP网络架构部署及应用(含discuz论坛的搭建)(转载)

文章目录前言1.2:MySQL安装配置1.3:PHP解析环境的安装1.4:配置Ngnx支持PHP环境1.5:常见的PHP开源产品介绍二:LNMP应用部署(实操)2.1:Nginx安装2.1.1:编译安装步骤2.1.2:使用systemctl控制2.1.3:开启nginx,关闭防火墙2.2:mysql编译安装2.2.1:安装mysql环境依赖包2.2.2:cmake配置和make和make install2.2.3:设置/usr/local/mysql目录的权限2.2.4:编辑配

2020-08-26 10:01:40 266

转载 在测试过程中,我们是如何去定位前后端问题的?(转载)

场景:清晰的记得那天是项目要上线,但是由于某种原因,页面可以打开,但是在点击任意链接后,没有实现该功能,且还会抛出异常提示?此时,作为测试的我们,应该是要协助开发去定位问题:1、可以通过谷歌浏览器中的开发者工具来定位问题打开F12 或是谷歌浏览器右上角的三个小点,开启开发者工具2、在开发中工具中,选择Network3、刷新当前页面,并对有问题的地方进行点击,Network会抓取当前的页面的内容在这里,有返回接口,也有些其他的数据,在这里,我们重点观察有问题的哪些地方比如页面中有一个下拉框,但

2020-08-25 13:48:20 823

转载 你的Web系统真的安全吗?(转载)

千里之堤,溃于蚁穴。在Web系统中,一个小小的漏洞,往往能引发极其严重的后果。因此,Web安全是每个系统在设计、开发、运维时必须要重点考虑的问题。现如今很多Web系统所采取的防御措施是偏向于基础和简单的,往往只针对常见的安全漏洞做了防御,比如:CsrfXSSsql注入等等。这些基础的防御措施是必须要做的,且实施的成本不高,但它们只是系统安全防御中的基础部分。很多开发人员在意识中认为做好这些就足够应付大部分情况了,这种想法是非常危险的。实际上,除了这些基础且标准化的漏洞,每个业务系统本身的业务逻辑

2020-08-25 09:20:03 142

转载 初识mybatis及搭建(转载)

概念MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录它属于orm框架的一种orm框架o object 对象r relationship 关系m mapping 映射对象关系映射ORM框架主要有五种

2020-08-24 14:41:42 65

转载 【算法】快速排序(转载)

额外空间法利用额外两个数组存储,数值划分的两部分。再重新放回双指针法定义指针(注意位置为待移动位置)划分区间递归排序import java.lang.Integer;import java.util.HashMap;import java.util.;import java.lang.;/**注意当选取j分界,则不能选取j当基准值。(可以选取i|一半,否则出现死循环)quickSort(arr, l, j);quickSort(arr, j+1, r);*/publi

2020-08-24 11:37:22 102

转载 Hadoop中的文件压缩和压缩算法配置详解(转载)

在MapReduce的Shuffle阶段,可以看到数据通过大量的拷贝,从map阶段输出的数据,都要通过网络拷贝,发送到reduce阶段,这一过程中,涉及到大量的网络IO,如果数据能够进行压缩,那么数据的发送量就会少得多,那么如何配置hadoop的文件压缩呢,以及hadoop当中的文件压缩支持哪些压缩算法呢?1、hadoop当中支持的压缩算法文件压缩有两大好处,节约磁盘空间,加速数据在网络和磁盘上的传输前面我们的hadoop的版本经过我们重新编译之后,我们可以看到我们的hadoop已经支持所有的压缩格式

2020-08-21 13:48:22 563

转载 SSM第四讲 Mybatis原理及开发流程(转载)

Mybatis原理及开发流程Mybatis介绍原理及开发流程log4j日志操作三种操作方式CRUD总配置文件说明mapping映射文件说明一、MyBatis介绍1.什么是MyBatisMyBatis 本是apache的一个开源项目iBatis, 2010年 迁移到了google code,并且改名为MyBatis 。是一个基于Java的持久层ORM关系映射框架MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手

2020-08-21 10:16:53 145

转载 Linux Centos系统管理操作(转载)

Linux Centos系统管理操作查看当前服务器主机名称[root@CDH01 ~]# hostname//修改主机名[root@CDH01 ~]# vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=CDH01//并重启设备,重启后,查看主机名,已经修改成功123456修改linux的主机映射文件(hosts文件)[root@CDH01 ~]# vim /etc/hosts127.0.0.1 localhost loca

2020-08-20 16:47:35 145

转载 C盘AppData文件占用83.7G?*(转载)

C盘隐藏文件AppData文件占用空间83.7G?今天无意中看到我的C盘居然只有21.8G了,我所有的软件都是安装在E盘,为什么C盘还是无缘无故的少了这么多空间呢,经过一个一个文件夹的寻找,终于在C盘的用户下面找到了一个名为AppData的隐藏文件那真是不看不知道,一看吓一跳,这个文件居然占用空间83.7G后来我以为电脑中毒了,然后百度了一下这个文件夹是干嘛用的可以看到,这个文件夹里面全是存放应用的数据和缓存文件,删了他就罢工,不删空间占用太大,真是吃一堑长一智同行们,以后应用程序光安装在其他盘

2020-08-20 15:53:48 2136

转载 Linux反弹shell姿势总结(转载)

Linux反弹shellBash反弹shellnc反弹shellpython反弹shellphp反弹shell使用php的exec函数反弹shell使用php的fsockopen远程连接Perl反弹shellRuby反弹shellJava反弹shell其他反弹shell姿势Linux反弹shell场景非常常见,常用于目标主机反弹shell给攻击机。攻击机监听相应端口,目标机执行反弹shell,getshell!Bash反弹shell目标机:bash -i >& /

2020-08-20 09:42:27 280

转载 python从入门到放弃篇41(selenium库,requests库,lxml库,time库,os模块,jieba库,pyecharts库)实现爬取书籍信息,并进行可视化(转载)

我们这次的案例网址是:https://book.douban.com/tag/%E7%BC%96%E7%A8%8B。最近在研究爬虫和数据可视化的结合,所以,时间上分配的有点不太宽裕。爬虫部分的完整代码:from selenium import webdriverfrom lxml import etreeimport requestsimport timeimport osoptions = webdriver.ChromeOptions()options.add_argument(’–h

2020-08-19 15:12:08 125

转载 LeetCode MySQL 1412. 查找成绩处于中游的学生(转载)

文章目录题目解题题目表: Student±--------------------±--------+| Column Name | Type |±--------------------±--------+| student_id | int || student_name | varchar |±--------------------±--------+student_id 是该表主键.student_name

2020-08-19 09:37:30 185

转载 零起步教你搭建Discuz!论坛(转载)

这段时间,拜美国所赐,大家对鲲鹏生态非常关注,特别是基于鲲鹏920cpu的鲲鹏架构服务器,引起了大家的激烈讨论。应该说大部分网友对鲲鹏架构服务器还是持支持态度的,但是部分不太了解具体情况的网友,特别是一些被以前此起彼伏的“伪自主,真诈骗”的新闻伤心了的网友,对此还是持怀疑态度的。有质疑才有进步,批判“假恶丑”才能发现“真善美”,我们就现身说法,通过具体的应用来展示鲲鹏服务器的能力。当然,鲲鹏服务器现实中大部分是用在大数据和AI处理等地方,说实话,这有些太高端,咱就不做实验了,这次通过在鲲鹏服务器上部署大家

2020-08-18 13:53:55 492

转载 白嫖服务器——搭建个人简历网站(转载)

前言阿里云ECS训练营开课了,这是我第二天打卡任务,制作个人简历网站搭建个人简历网站一. 白嫖服务器二. 设置镜像三. 设置安全组四. 制作简历及将简历上传服务器制作简历安装FileZilla上传简历一. 白嫖服务器由于阿里云搞活动,学生可以免费领取6个月的服务器,反正免费的不要钱,所以心动不如行动,赶紧领取搭建个人博客吧。领取地址在这里插入图片描述而且只要通过考试还可以续费6个月,具体规则可以自己去看在这里插入图片描述由于我领取的时候没有截图,就随便找了一张图大家好参考,比

2020-08-18 10:04:23 767

转载 LeetCode 27. 移除元素(转载)

题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。12345示例 2:给定 nums = [0,1

2020-08-17 13:21:52 46

转载 Linux下并发程序设计(3)——Unix间通信方式(转载)

线程共享同一进程的地址空间,这个地址空间的代码和全局变量每个线程都可以访问,这样就使得线程的通信很容易。但是在进程中不同的进程有不同的地址空间,那么两个进程之间如何进行通信就成了一个难题,实际中Linux有很多机制来实现两个进程间的通信。 我们都知道Linux是从Unix发展来的,早期的Unix进程间通过无名管道(pipe)、有名管道(fifo)、信号(signal)的方式进行通信。在System V中进程间通信又有共享内存(share memory)、消息队列(message queue)、信号..

2020-08-17 09:50:36 126

转载 从零搭建Spring Boot脚手架(2):增加通用的功能(转载)

前言上一篇说了我要一步步地搭建Spring Boot脚手架,首先会集成Spring MVC并进行定制化以满足日常开发的需要,我们先做一些刚性的需求定制,后续再补充细节。如果你看了本文有什么问题可以留言讨论。多多持续关注,共同学习,共同进步。Gitee:https://gitee.com/felord/konoGitHub: https://github.com/NotFound403/kono统一返回体在开发中统一返回数据非常重要。方便前端统一处理。通常设计为以下结构:{“code”:.

2020-08-14 13:57:09 134

转载 Spring 源码解读第七弹!bean 标签的解析(转载)

Spring 源码解读继续。本文是 Spring 系列第八篇,如果小伙伴们还没阅读过本系列前面的文章,建议先看看,这有助于更好的理解本文。Spring 源码解读计划Spring 源码第一篇开整!配置文件是怎么加载的?Spring 源码第二弹!XML 文件解析流程Spring 源码第三弹!EntityResolver 是个什么鬼?Spring 源码第四弹!深入理解 BeanDefinition手把手教你搭建 Spring 源码分析环境Spring 源码第六弹!松哥和大家聊聊容器的始祖 Defa

2020-08-14 10:18:28 142

转载 Vue + Spring Boot 项目实战(二十一):缓存的应用(转载)

重要链接:「系列文章目录」「项目源码(GitHub)」本篇目录前言一、缓存:工程思想的产物二、Web 中的缓存1.缓存的工作模式2.缓存的常见问题三、缓存应用实战1.Redis 与 Spring Data Redis2.Redis 安装3.Spring Data Redis 配置4.缓存实现5.验证小结前言大家好,这次过了三个月,再次创下新的记录,大概鸽真的是人类的本性。不过好在大多数读者看这个教程的目的是做毕业设计,前面的内容都做出来再修修补补一下,老师大概率也不会为难

2020-08-13 13:15:09 332

转载 解决MyQL数据库中1045错误的方法——Windows系统S(转载)

注:大家可以要评论了,评论我能看到在各种各样的适用场所,MySQL会出现各种各样的问题,经过足足半年的长跑,我的数据库终于修复了Bug,可以重新使用了。数据库出问题,那可能是家常便饭了。经过这足足半年的煎熬,我决定在以后的日子里,记录下我在使用数据库时遇到的色彩缤纷的问题,以及这些问题的解决方法。由此,今天写了这篇博客。首先,给大家看看,这个问题是什么样子的。我在这里用到的MySQL可视化工具为Navicat。这个错误是这样说的:1045 Access denied for user ‘roo

2020-08-13 09:07:52 487

原创 远程控制软件vnc,推荐三款你绝对会喜欢的远程控制软件vnc

远程控制软件vnc不是很多,而且基本上都是英文的。所以可能会比较的难找一点。专业的就更少了。远程控制软件vnc需要的是简单方便快捷明了。所以接下来小编给大家推荐三款你绝对会喜欢的远程控制软件vnc。第一款:IIS7服务器管理工具这个工具里面的VNC功能可以说是使用感非常棒的。它可以一键导出或导入,还可以一键批量打开VNC,还可以一键批量关闭VNC,还有到期提醒,还有多台VNC 自定义备注,自定义分组。最后还支持win、linux批量管理,这是非常好用的功能了。能省去您一台台记录IP、密码,点下就能瞬间打

2020-08-12 11:03:22 741

转载 Linux系列第三谈(Linux常用命令:文件查看、Linux软硬链接、Vim编辑器)(转载)

在这里插入图片描述写博客即是为了记录自己的学习历程,也希望能够结交志同道合的朋友一起学习。文章在撰写过程中难免有疏漏和错误,欢迎你在下方留言指出文章的不足之处;更多内容请点进????我的博客K????阅览。临渊羡鱼,不如退而结网。一起加油!Linux系列第一谈:阿里云服务器基本Linux操作(开启安全组、使用面板搭建环境 使用命令行搭建环境 安装jdk、tomcat、Docker)Linux系列第二谈(开机关机、Linux中的文件、目录管理、基本属性)一、Linux常用命令文件查看1、cat

2020-08-12 10:04:05 202

转载 关于java对象的反序列化时产生的异常补充:java.io.StreamCorruptedException: invalid type code: AC(转载)

关于java对象的反序列化时产生的异常补充:java.io.StreamCorruptedException: invalid type code: AC大家好,我是一位在java学习圈中不愿意透露姓名并苟且偷生的小学员,如果文章有错误之处,还望海涵,欢迎多多指正问题描述:// 在向一个文件写入可序列化对象时,每次在文件的末尾添加一个或多个可序列化的对象,// 于是使用了FileOutputStream(文件名,true)间接的构建了ObjectOutputStream流对象原因:// 在一个文

2020-08-11 14:50:22 423

转载 SpringBoot优雅的实现分页功能及原理简析(转载)

前言分页功能是我们开发过程中常见的一个小功能,如何快速高效的实现一个分页功能呢。本文将带领大家快速搭建一个分页功能。引入依赖com.github.pagehelperpagehelper5.1.2实体封装接收分页参数实体封装需要分页的实体继承该实体,用以接收分页的参数public class BasePageReqListMsg {protected final static int SIZE = 20;protected final static int NO = 1;pro

2020-08-11 09:28:38 1389

空空如也

空空如也

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

TA关注的人

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