自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 XP上的最后VS版本和能编译出XP上运行程序的最后VS版本

开发IDE当选择VS时,能在XP上安装的最后VS版本是VS2010,那目前这些版本都相当久远和落后了,那能编译出XP上运行程序的VS版本是哪些呢,如何编译呢?其实,能编译出XP上运行程序的VS版本,直到VS2019 V16.7,还能编译出XP上运行的程序。6)对于QT的开发,QT5.6是最后支持XP的版本,而对应的插件只能安装到VS2013版本。2)同时Windows SDK的版本,也注意,要安装支持XP的SDK,如8.1或10。1)只是,要出现这样的选项,需要在安装VS时,选择相应的组件或选项。

2024-03-22 14:29:03 215

原创 批量转换文件编码格式的方法

在开发的时候,有时会出现:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。: 使用命令行批量转换文件编码,可以编写一个PowerShell脚本来实现。并且文件非常多,想要批量或一键就完成文本文件的编码格式转换,有如下方法,第三种方法最方便。以上是一些常用的方法和工具,可以根据自己的偏好选择其中之一来完成文件编码的转换。文件转换为UTF-8编码。可以根据需要修改文件过滤器和编码类型。替换为转换的目录路径。该脚本将会批量将目录中的所有。

2024-03-22 11:55:33 651

原创 Autodesk CAD如何建立图层方框?

在图层管理器中,点击“新建图层”按钮(通常是一个纸张上方带有加号的图标),以创建一个新的图层。在弹出的对话框中,输入图层名称并选择图层的属性,如颜色、线型、线宽等。在图层管理器中,将新创建的图层设置为可见状态(通常是点击图层名称前面的眼睛图标),并将其他不需要显示的图层设为隐藏状态。在 AutoCAD 中,您可以通过输入“LA”命令或在菜单栏中选择“格式” > “图层管理器”来打开图层管理器对话框。在图层管理器中,通过拖拽图层条目来调整图层的显示顺序,确保图层方框位于所有图层的顶部。

2024-02-23 12:48:09 160

原创 NLP主要研究哪些方向?

当前AI炽手可热,NLP是AI的一个重要方向。NLP 的目标是使计算机能够像人类一样处理和理解自然语言的文本和语音数据。随着深度学习、自然语言处理技术和大模型的的发展,NLP 的应用场景和效果将不断拓展和提升。:将文本数据分为不同的类别或标签,如垃圾邮件检测、情感分析等。:根据用户提出的问题,从文本数据中找到最相关的答案。:识别文本中的命名实体,如人名、地名、组织机构等。:从文本中提取特定类型的信息,如事件、关系等。:生成自然语言的文本,如自动摘要、机器写作等。:将一种语言的文本翻译成另一种语言的文本。

2024-02-23 12:45:06 537

原创 mqtt订阅发布中的topic通配方法

其实,在订阅发布模式中,如果你希望将主题名中具有包含关系的主题也匹配上,通常需要使用通配符或正则表达式来实现。在订阅发布模式中,如果要想将主题名中,具有包含关系的主题,也匹配上,用什么方法呢?1、通配符方式:一些消息代理支持通配符字符,通常使用通配符 + 和 # 来实现包含关系的主题匹配。+:匹配单个层级,例如,A/B/C 和 A/+/C 匹配,但 A/B/C/D 不匹配。#:匹配多个层级,例如,A/B/C 和 A/# 匹配,包括 A/B/C/D。通过使用通配符,可以实现主题名中具有包含关系的主题匹配。

2024-02-22 12:54:13 414

原创 在C++程序中给视频添加文字水印

FFmpeg的使用和水印添加相对还是比较复杂的,需要不断的学习和实践,可以查阅FFmpeg的官方文档和示例来深入了解。当然这个过程还是比较复杂的,需要有一定的多媒体编程能力并使用FFmpeg的多媒体处理功能。有时候,我们需要给视频添加文字或水印,用已有的工具当然最简单,但想在自己的应用中,如C++应用程序中来实现,如何实现呢?2、包含FFmpeg头文件: 在你的C++程序中包含FFmpeg的头文件,以便你可以调用其功能。7、创建水印: 创建水印的图像,通常是一个带有文字的图像。

2024-02-22 08:40:00 808

原创 一个简单Java微服务的实现

现在,便拥有一个简单的Java微服务了,其中包含一个Eureka Server作为服务注册中心,一个微服务提供者和一个微服务消费者相互通信。9、创建另一个新的Spring Boot项目作为微服务消费者,同样使用Spring Initializr创建,并添加相应的依赖。6、创建一个新的Spring Boot项目作为微服务提供者,同样使用Spring Initializr创建,添加相应的依赖。4、创建一个配置文件application.properties,添加Eureka Server的配置。

2024-02-21 14:50:25 885

原创 go语言内存泄漏检查工具

这是一个官方的工具,使用方式灵活多样,可以本地命令行模式,也可以web方式,推荐此工具进行内存分析。2、go tool trace: Go的 trace 工具可以帮助分析应用程序的运行时行为,包括内存分配情况。5、静态代码分析: 使用静态代码分析工具(如 GoLint、Go Vet、Staticcheck 等)可以帮助识别潜在的内存泄漏问题。6、使用监控和度量工具: 集成监控和度量工具(如 Prometheus、Grafana 等)可以实时监测应用程序的内存使用情况,并警报或记录异常情况。

2024-02-21 11:47:37 609

原创 Dell PowerEdge服务器的iDRAC修复方法与步骤

iDRAC是戴尔服务器系列中的一种远程管理功能,它允许用户通过网络远程监控和管理戴尔服务器,即使在服务器关机或操作系统崩溃的情况下也可以进行远程管理。主要包括远程电源控制、远程控制台访问、传感器监控、日志记录、固件更新等功能。通过 iDRAC,用户可以在任何地方远程访问服务器,执行维护任务、监控服务器健康状态、诊断问题等。1、重启服务器:有时简单的重启可以解决iDRAC不响应的问题。我采用了步骤2和步骤3,恢复了正常,也不知道到底是哪个方法修复好了,没有细揪。重新连接电源并启动服务器,检查iDRAC状态。

2024-02-20 13:08:47 854

原创 如何查看Mosquitto的连接数量

这个 API 需要通过配置文件启用。上述配置中,通过 listener 配置项,Mosquitto 启用了两个监听端口,一个是 MQTT 默认端口 1883,另一个是 WebSocket 的端口 9001。使用 mosquitto_sub 工具通过 WebSocket 连接到 $SYS/broker/clients/connected 主题,以实时获取连接的客户端数。1、启用管理 API: 要启用管理 API,你需要编辑 Mosquitto 的配置文件,通常是 mosquitto.conf。

2024-02-20 12:58:15 469

原创 Android开发的调试利器-BlueStacks

开始采用Android Studio自带的模拟器,因为发现其支持的类型极其丰富,于是总想将其折腾好,但结果是浪费了很多时间,仍然是运行极慢,最后干脆放弃。于是有人说用Genymotion,也试了试,但发现其是基于虚拟机的,和本机安装的虚拟机明显冲突,安装就卡壳了,也只能放弃,最终选择了BlueStacks,感觉不错。设置功能,都在右侧,有很多功能图标,包括旋转成竖屏、截屏功能、录屏功能、多开管理、定位、键盘输入、全屏、内存清理、安装应用、模拟器设置等等。安装比较简单,下载的可执行程序,直接下一步安装完成。

2024-02-19 17:21:13 361

原创 AI应用第二弹:心焚-人工智能分类、推送、阅后即焚的新闻app

心焚,一款人工智能分类新闻的新闻客户端采用订阅推送模式,实时推送订阅的重大新闻,阅后即焚,新闻剁手党的好工具,既不错过重大新闻,也不沉醉于冗杂的消息。

2024-02-19 15:00:20 1751

转载 AI应用第一弹:ChatGPT镜像版app

本app开箱即用,也不需要用户登录,因此应用并不会搜集任何用户信息,甚至连你是谁都不知道,所以尽管使用吧。但不要因为没有身份识别,就过分挑战ChatGPT的底线,因为其自觉能力很强,ChatGPT有准确识别提问者意图的能力,即使你打错一个或几个字。ChatGPT镜像版app采用移动互联网技术,将ChatGPT-3.5接入手机app,在中间服务环节做了镜像、去除魔法和免帐号。已知问题,还未与各大应用商店做认证集成,因此本app在安装时,会提示为未知来源应用,可能需要用户确认同意才能继续安装。

2024-01-29 09:50:20 90

原创 Android开发中如何实现语音输入输出

随着AI的快速发展和逐渐普及,手机端应用中的语音功能需求在所难免。那么在Android开发中,如何实现语音输入输出呢?以上是在Android应用中实现语音输入和输出的基本步骤。可以根据你的应用需求进一步定制和改进这些功能。1、添加相关权限:确保你的应用具有录音和网络访问权限。通常,有多种方案,比如直接采用第三方的SDK开发,就是一种好的方案。Android提供的语音识别和语音合成功能来实现语音输入和输出。语音合成,即常说的TTS(text to speech)1、实现语音输出(语音合成)

2024-01-28 10:23:01 415

原创 SSH妙用之(二)端口转发

3、最后的localhost,即运行这个命令的服务器,因为你在此电脑上运行的,所以这儿将此电脑称为本机,命令运行后,你需要输入登录当前电脑localhost的账号和密码,如果没有出现登录提示,说明你已经登录了,而不会再次出现登录提示。7、localhost:即相对于你运行这个命令的服务器,这儿因为命令是运行在www.abc.com上的,因此称之为localhost,用root@localhost访问。4、443:要转发走的端口,即要把对服务器www.abc.com的哪个端口的访问,转发走。

2024-01-26 14:52:08 272

原创 SSH妙用之(一)内网穿透

前者可以租用便宜的linux云服务器,后者即你自己的电脑,将这台电脑通过内网穿透后,做成对外服务器,这台电脑根据情况,可以是linux,也可以是windows。再把上述命令效果解释一遍就是:通过访问远程linux云服务器的3034端口,就相当于访问本地电脑192.168.1.2的3389端口,这样就实现了内网穿透,成功将本地电脑的3389即远程桌面,推到了公网上去。对于有内网穿透需求的人来说,通常采用现成的工具,如ngrok、frp等,这些工具,如果没有明白其原理,那么配置起来,可能难于理解。

2024-01-26 14:00:50 477

原创 如何让haproxy不命中已经失效的服务器

根据服务器的状态,HAProxy将动态地调整请求的路由,确保不会命中已经死掉的服务器。通过配置健康检查,HAProxy将定期检查后端服务器的状态,并在服务器死掉或不健康时自动将其从负载均衡中移除。在上述配置中,inter 参数表示检查的时间间隔,rise 表示允许服务器重新上线之前必须连续成功的次数,fall 表示服务器被标记为不健康之前必须连续失败的次数。最近在做负载均衡时,服务总是不稳定,经过日志分析,发现是haproxy负载代理时,命中了已经失效的服务节点。这些参数可以根据你的需求进行调整。

2024-01-25 17:05:35 514

原创 VirtualBox如何复制虚拟机

但对于virtualbox,则有些不同,如果直接用以上方法,会报磁盘文件的UUID冲突,表示已经有相同的磁盘文件在使用,那么该如何解决呢?对于vmware或virtual pc虚拟机,要想快速复制几个虚拟机,以便集群使用,方法比较简单,例如直接复制其虚拟机相应的磁盘文件和配置文件即可,例如对于vmware,修改vmx文本文件中的内容如虚拟机名称、磁盘文件路径即可,在启动时选择已经复制磁盘文件,便可以成功。当然也可以用第三方的工具。无论哪种方法,都建议在进行操作之前先备份原始的虚拟硬盘文件,以防万一。

2024-01-25 16:59:15 586

原创 文本文件的编码详解

今天在程序调试时,程序中用到一个config.json文件,是UTF-8的格式,这是在win11的nodtepad中显示的编码格式,但复制到win7中使用时,出现一个奇特的现象,报文件格式错误,说出现一个特殊字符不识别,这个特殊字符像一个字母i上面有两点的一个特殊字符,但经过目视检查,没有任何问题,百思不得其解,最后还是chatgpt厉害,直接给出了原因和答案。由此可见,要特别注意UTF-8和UTF-8 BOM的区别,在win7以前的系统上,并不能识别出来,导致程序兼容性问题。但怎么会出现这种问题的呢?

2024-01-24 12:54:33 380

原创 如何开始自己的第一个VUE工程,hello world!

有的,vue通常使用Vue CLI脚手架。Vue CLI 是一个官方提供的标准工具,用于快速搭建和管理Vue.js项目。下面,按照以下步骤,实现自己的第一个hello world VUE工程吧。Visual Studio Code(VSCode): 提供了丰富的插件支持和轻量级的编辑器,是一个流行的选择。以下是一个基本的Vue组件的例子。Sublime Text: 是一个轻量级但功能强大的文本编辑器,也是许多开发者的选择。WebStorm: 是一个功能强大的IDE,专门用于前端和JavaScript开发。

2024-01-24 08:24:25 410

原创 如何让一个域名解析出不同的IP地址

如果只是随机为了减少压力,从域名地址解析就开始,将是一个最佳方案,因为这样一来,从一开始就可以避免单点失效的问题。试想,如果解析到一个IP后,再通过此IP做负载均衡,是不是会存在单点失效的问题?并且有的应用还要区分不同ISP的用户,比如联通用户走联通的线路、电信用户走电信线路,以此来减轻访问压力,同时加快用户的访问速度,这可以通过多线机房的方式实现。但这里有一个特点,即可以填写多个重复的记录,指向不同的IP或域名,这个特征,不是很多人知道的。如下图,可以填写多条相同的记录,指向不同的IP。

2024-01-23 21:18:13 706

原创 Caddy V1.0中配置SSL证书的方法

虽然Caddy V1.0已经是老版本了,但相对于V2.0,V1.0仍然有很多优势,比如简洁方便、依赖少,占用内存少,稳定等,对于发布静态网页或者做反向代理等,已经足够使用了。1、因为Caddy V1.0只支持cert和key证书,因此参考上一篇文章,将cert文件和key文件从pfx文件中分离出来。3、开头的服务域名,填写网站访问的域名,这个域名必须与证书申请的域名保持一致,或者说与证书申请时的通配符关系匹配。特别注意,在配置Caddy V1.0时,端口和{之间,一定要有空格,不能连在一起了,否则会报错。

2024-01-23 19:19:52 538

原创 如何申请到Let‘s Encrypt的免费SSL证书(二)

讲到了申请到Let‘s Encrypt的免费SSL证书的关键点,其中包括工具和要点,一夜醒来有不少网友关注,于是琢磨着这篇文章哪里还有不完善的地方,确实又想到两点,在此要补充完善。接着上次的3个要点,补充4、5两点。特别注意,在此输入密码不会回显,因此必须特别小心。(1)向[email protected]类似的邮箱发邮件,邮件中包含验证码,输入验证码验证。(2)按其提示,在你的域名解析中,增加一项txt解析,相关内容填写其提示要求的内容。4、在申请的交互过程中,有一个重要的步骤是验证域名的所有权。

2024-01-23 18:24:45 427

原创 如何申请到Let‘s Encrypt的免费SSL证书

原来Let's Encrypt推出了一种叫ACME的协议,支持这种协议的客户端,就能和Let's Encrypt建立连接,申请到免费的SSL证书,而这样的客户端非常多,我们用个最方便简单的,用C#写的一个命令行交互申请的客户端win-acme/winacs.exe工具,到github上下载。免费证书3个月,到期后继续申请更新又延长3个月,以此类推,所以这些网站就推出自动更新的服务,再加一个收费。3、如果要分离出crt和key文件来,是需要密码的,而密码是系统默认生成的,如何查看密码呢?不像有些网站的限制。

2024-01-22 21:15:07 422

原创 AI应用第一弹:ChatGPT镜像版app

本app开箱即用,也不需要用户登录,因此应用并不会搜集任何用户信息,甚至连你是谁都不知道,所以尽管使用吧。但不要因为没有身份识别,就过分挑战ChatGPT的底线,因为其自觉能力很强,ChatGPT有准确识别提问者意图的能力,即使你打错一个或几个字。ChatGPT镜像版app采用移动互联网技术,将ChatGPT-3.5接入手机app,在中间服务环节做了镜像、去除魔法和免帐号。已知问题,还未与各大应用商店做认证集成,因此本app在安装时,会提示为未知来源应用,可能需要用户确认不同意才能继续安装。

2024-01-22 19:38:09 1601

原创 Java中有23种设计模式

Java中有23种设计模式,这些模式被分为三类:创建型模式、结构型模式和行为型模式。行为型模式主要关注对象之间的通信。创建型模式主要处理对象的创建过程。结构型模式主要关注类和对象的组合。

2023-04-10 15:31:20 106

原创 spring中用到的设计模式

单例模式(Singleton):Spring 容器默认创建的 Bean 都是单例的,这种机制可以保证 Bean 在应用程序中只有一个实例,从而避免资源浪费和上下文环境不一致的问题。策略模式(Strategy):Spring Security 模块中的认证和授权机制采用了策略模式,根据不同的认证或授权策略来进行相应的处理。观察者模式(Observer):Spring 容器中的事件机制基于观察者模式,当某个事件发生时,相关的监听器会接收到通知并执行相应的操作。

2023-04-10 10:20:28 164

原创 一款好用的ChatGPT工具,安卓app

要找到一款真正好用的chatgpt工具是不容易的,要么注册付费很麻烦,要么很快就不能用了,要么还不是真正的chatgpt。这款解决以上所有问题。

2023-04-10 08:35:41 1997

原创 更新 Android SDK

请注意,您还可以通过 Android Studio 或命令行界面安装新的 SDK 工具或删除现有的 SDK 工具。

2023-04-04 14:04:01 2065

原创 websocket与http的异同

它基于TCP协议,通过HTTP升级(Upgrade)实现了从HTTP到WebSocket的协议转换,因此在建立WebSocket连接时,首先需要发起一个HTTP请求,然后经过握手过程,升级为WebSocket连接。总体来说,WebSocket和HTTP都有自己的优点和缺点,应该根据实际需求来选择合适的协议。相比之下,HTTP是一种单向通信协议,客户端必须先发起一个请求,服务器才能返回响应。每个请求和响应都包含完整的HTTP头信息和正文内容,这些内容可能很大,会增加网络传输的负载和延迟。

2023-04-04 13:56:44 295

原创 Windows7喇叭突然没声音了,怎么办

如果不是硬件问题,通常是服务进程崩溃了。希望这些方法可以帮助您解决音频问题。

2023-04-04 10:23:42 221

原创 如何开发和部署微信小程序

建议您参考微信小程序开发者文档和相关教程,以便更深入地了解和掌握微信小程序的开发和部署。7.发布小程序: 审核通过后,您可以在微信公众平台上发布小程序。在小程序发布后,用户可以通过微信扫描小程序码访问您的小程序。4.设计和开发小程序: 使用开发工具内置的编辑器,使用WXML、WXSS、JavaScript等技术来设计和开发小程序。3.创建小程序: 在开发工具中创建新的小程序,填写相关信息,例如小程序名称、描述和类型。1.注册微信小程序账号: 在微信公众平台注册小程序账号,通过审核后即可开始开发。

2023-04-04 00:18:54 2268

原创 鉴别ChatGPT真伪的最简单方法

鉴别ChatGPT真伪

2023-04-03 23:58:48 5019 1

原创 空间数据管理平台

具备以下功能:空间数据导入:常用GIS数据格式,如shp,mif,dxf,dwg,gdb,gpx,excel,tif,img等矢量及栅格数据格式的导入。导入后形成空间数据库中的表数据。数据管理:包括字段定义等DDL,数据内容管理,数据版本管理,权限控制等新建图层:除了上述通过导入数据生成图层外,平台还支持新建空白图层、通过新建视图以关联多表快速建立图层、新建QGIS图层。数据服务:发布OGC标准的地图服务,管理访问的API Key风格配置:灵活多样的风格设置,以配置生成各种效果的地图,漂

2021-06-01 00:37:45 343

原创 基于SaaS的空间数据管理平台

空间数据管理系统又称为GIS,厂商通常推荐使用桌面工具而不是Web方式进行数据管理,其理由主要是Web管理空间数据,其交互频繁、速度慢和用户体验较差。但桌面工具的使用模式无法和Web系统同日而语,而且桌面软件的安装使用比较复杂,让很多想使用GIS数据的用户望而却步。在WebGIS的行业应用系统中,空间数据管理如果采用桌面工具模式混达,导致技术方案复杂而不稳定,数据一致性最难保障,系统生命力大打折扣。那么有没有一种体验好,功能强大的Web的空间数据管理平台呢?经过一年的攻关打造,现推出一款这样的平台。访问ht

2021-05-28 14:06:03 271 1

原创 自动驾驶汽车,应该纳入特种设备管理

就像电梯一样,自动驾驶汽车,应该纳入特种设备管理

2021-04-30 10:47:14 104

原创 阿里乾坤qiankun

阿里确实为咱们的IT做了很多有益的事情,贡献很大,真的值得表扬一下,特别是对于我们这些程序员来说,前端大家经常用到的antd等很不错的框架,作用非常大。今天为阿里打打广告,点赞!(应该不算是为阿里打广告,说不定是阿里为我打广告呢,如果阿里要是能为我的的赞扬而点赞,那绝对是为我打广告,哈哈)今天为什么拿出来说,最深刻的几个例子,说一下。第一个,github。这两年,特别担心github被封,因为个人觉得,github对于咱们的学习和工作,实在太重要了,所以一旦被封,影响是巨大的,一直担心这个,就想着,要是有

2021-03-05 10:15:59 2926 3

原创 ERROR in The “path“ argument must be of type string. Received undefined

在前端开发中,用webpack打包时,有时候会遇到如题这个错误。比如我机器上的某个工程,以下的webpack的配置:output: {path: ‘./ghpages’,filename: ‘bundle.js’}就遇到这个问题。目前看到的解决方案是换版本,有的换nodejs的版本,有的换webpack的版本。换版本是没有找到根本原因,就跟系统出问题就重装是一个道理。经过分析,出现这个问题的根本原因,是没有publicPath:这一项导致的,而不是因为path,明明path就有值,而且是字符串,

2021-02-26 23:31:26 2833 1

原创 require(‘..‘)是什么意思

在nodejs中,有时候会看到var Form = require(’…’);//注意,我写的是两个点号,这儿居然显示的是三个点号,以下所有三个点号的地方,都是两个点号这样的语句,那么, require(’…’)是什么意思呢?其实,这里的’…‘是表示引用默认文档的意思。大家配置Web服务器,都知道,有一个默认缺省文档,这里的含义类似。如果默认文档是index.js,那么,这里就是’…/index.js’的意思。这个默认文档是可以在package.json中设置:{“main”: “./fil

2021-02-23 20:57:18 2241

原创 react视频教程经典大全

React视频教程课程学习资料经典大全这儿从网上收集了很多学习资料看到有人在大年三十、情人节这些特别的日子里,还努力学习前端技术,甚是感动。似乎看到了当年自己学习计算机的热情,同时贴吧中也有很多迷茫的,特别是不知道如何学,学习的姿势该是如何的,学了后能不能找到工作,能不能找到好工作?作为70后的过来人,我想谈谈学习前端,成为前端开发人员的条件。首先,掌握编程语言、思路和编程技巧,这是基础,基础是很重要的,基础是一层一层的,一般来说是不能跳过去的,比如说前端,如果没有HTML、JS、CSS的基础,一来就学

2021-02-15 15:42:26 226

心焚,一款人工智能分类新闻的新闻客户端

采用订阅推送模式,实时推送订阅的重大新闻,阅后即焚,新闻剁手党的好工具,既不错过重大新闻,也不沉醉于冗杂的消息。

2024-02-19

ChatGPT镜像app

旧版服务停止,发布新版为今后持续服务打下基础。 用集群模式接入ChatGPT-3.5,更稳定快速,开箱即用,不注册、无魔法,工作、学习、生活的好帮手。

2023-04-10

空空如也

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

TA关注的人

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