自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

水上铁的专栏

技术,管理

  • 博客(68)
  • 资源 (14)
  • 收藏
  • 关注

原创 【必看】AI自动剪辑时代来临——AutoCutVideo产品需求梳理

各位自媒体创作者、视频达人们,想必你们也厌倦了反复剪辑、删减无数“阿”、“这个”的烦恼吧!本人近期经常需要录制并制作一些课程视频,亲身体验下来,感觉录制不复杂,但剪辑视频的时间居然比录制视频的时间还要长。主要原因是录制视频的时候都比较口语化,所以会有很多如“阿”,“这个”,“那个”这些语气词或者一句话多个停顿,这就需要在剪辑视频的时都需要把这些都一个一个删除掉,非常消耗时间。而且本人的普通话也不是非常的标准,导致在识别字幕的时候,会经常出现错别字或重叠字,所以改字幕内容的话也是很耗时间。

2025-03-04 20:49:10 825

原创 用auto-py-to-exe轻松打包你的Python应用

开发Python应用的最后一步,就是打包给别人使用,否则自己给自己玩那就没什么意思了,以往使用命令打包会比较麻烦。今天,我们就来介绍一个极其实用的工具——,帮你把繁琐的打包工作变得简单快捷!

2025-03-02 20:09:00 371

原创 办公自动化之自动生成微信回复开发篇

目前市面上所有微信自动化都有一定的封号风险,微信肯定有防外挂的机制的。在研究本方案之前是已经实现UIA自动输入了的,但发现AI回复太快时微信就会触发退出登录这种情况,后续已经调整为UIA随机停顿从而模拟人输入的速度,但想了下还是不对外开放这个代码了,如果你就要这个版本,也可以联系我取要。本方案是AI回复的内容自动保存到系统粘贴板中,用户只需要在微信输入框中CTRL+V复制进来就可以,只是多一个操作,但操作是绝对安全了

2025-03-01 18:43:28 749

原创 纯视觉方案实现微信聊天信息识别并保留对话结构,为AI自动回复提供支持

通过纯视觉的方案把微信聊天信息识别出来并保留对话结构信息,方便后续转成AI需要的历史聊天数据,让AI自动生成回复。后续结合RPA截屏和deepseek就可以实现自动回复任何人的信息了,当然再成熟些的话,不单微信,其它任何文本类的IM的回复都是可以的。

2025-02-28 23:01:35 137

原创 办公自动化之微信自动回复

在现代职场中,微信已经成为我们日常沟通的重要工具。然而,面对每天大量的信息,手动回复不仅耗时,还可能影响工作效率。为了解决这一问题,我们可以借助自动化技术,实现微信的自动回复功能。本文将详细介绍如何通过一系列步骤,利用AI技术实现微信自动化回复。相比之前的微信自动化回复,需要破解微信或授权自己的账号给软件,非常不安全,而本方案就是通过屏幕截图获取信息,纯人类视觉操作,不破解任何软件,也不会私下获取个人信息,更安全更放心。

2025-02-27 21:10:48 265

原创 [特殊字符] 手把手教你本地安装 OmniParser:办公自动化项目必备的利器

个人从事RPA开发多年,我一直有一个观点:AI和RPA结合就相当于人的大脑和手脚的结合,可以自动化任何电脑操作,当然也就能实现真正的办公自动化。本文是大纲下的直接实践的一部分,欢迎大家关注我,我会完成这个大纲所有的文章编写和功能开发,直到形成一个企业级的产品。

2025-02-26 12:00:24 1237

原创 不再等待!PyTorch离线安装让开发更高效

我们知道,每开发一个AI应用的时候,都需要创建一个conda虚拟环境并且要安装pytorch。这个库如果每新创建一个新的conda环境的时候都需要重新下载一次,那将会消耗非常多的时间。而且国内的环境大家都懂。经常会导致下载失败。所以对于经常开发AI应用的开发者来说,离线安装pytorch是一个非常有用的技能,当然也有其它一些好处网络环境受限时也能安装安装速度快版本控制更可靠。

2025-02-25 19:13:10 954

原创 UIAutomation开发常用方法的参考文档

由于UIAutomation的官方文档只有一个github中的readme文件,只是简单的使用示例,具体使用还需要在代码中查找,非常不方便。经过我多年使用UIAutomation开发的经验和整理,把常用的功能梳理成本文档,作为我的开发参考使用,这样就不用每次都翻代码了,同时也可以使用AI编程时作为参考文档使用。

2025-02-24 12:42:55 514

原创 使用 DeepSeek + OmniParser v2 + UIAutomation 实现 GUI 应用自动化测试的探索

本文介绍了一种基于DeepSeek和的 UI 自动化测试方案。该方案通过结合 AI 技术和传统的自动化测试工具,实现了更加智能化的 UI 测试过程。尽管目前仍存在一些问题,但随着技术的不断进步,该方案有望在未来成为 UI 自动化测试的主流方法之一。后续我也会更具体更详细逐一实现这个方案,并形成一个企业级可用的产品,欢迎大家关注我。

2025-02-24 12:12:20 1256

原创 使用PHP开发linux运维工具

PHP一般情况下是无法直接开发linux运维的,市面上的linux运维工具大多使用python语言开发,如宝塔面板。虽然PHP也有system,exec等执行系统命令的方法,但这些方法一般是在PHP的用户下执行,权限非常有限,无法达到运维要求,而且这些方法都是全部执行完才返回结果,对于执行时间比较长或者想看执行过程日志的运维需求,很难实现。好在PHP有SSH2扩展,有了它,就可以轻松实现所有运维的需求。首先SSH2可以使用任何账号登录,甚至root都可以,因此权限的问题可以完全不用担心。第二SSH2是

2021-01-26 17:17:01 248

原创 实现网站系统一键安装的小韦云面板

小韦云面板是在linux上搭建网站系统的服务器管理工具,基于容器能实现一键安装PHP/MYSQL/redis/memcached等常用服务。它采用小韦云开发框架 + ssh2 + 容器docker + shell技术实现,全部源码在gitee和github上开源,安装地址即开源地址。它操作简单,无需linux操作经验,无需熟悉容器技术,使用一键部署功能输入域名即可部署好一个网站。同时它支持PHP,MYSQL等软件多个版本切换,满足各种网站的对运行环境的要求产生背景docker容器在云服务时代使用比较广.

2020-12-30 17:30:40 294

转载 部署与BSN版本一样的Fabric1.4.3

由于之前开发和测试都是在Fabric2.0的基础上,最近为了调试BSN的链码,而BSN给出的go版本的预置链码需要用到Fabric目录下的core/chaincode/shim,而2.0新版本的shim已经不在core/chaincode这个目录,因此需要部署与BSN版本一样的Fabric1.4.3版本。首先需要下载Fabric代码(2.0只需要下载fabirc-sample就好,之前没下Fabric),并检出1.4.3版本git clone https://github.com/hyperled

2020-05-27 11:42:35 521 1

转载 在开发者模式下调试BSN链码(一)

Fabric 支持开发者调试模式,这样极大方便我们开发和调试链码。启动开发调试环境在此之前我们部署Fabric或部署链码都是在一个gitbash环境下进行,而开发环境需要同时开启三个gitbash界面,充当三个终端。1号终端 -启动网络进入fabric-samples里的chaincode-docker-devmode目录cd $GOPATH/src/github.com/hyperledger/fabric-samples/chaincode-docker-devmode1号

2020-05-27 10:10:07 506

转载 与BSN的链码进行通信互动

在上一节完成链码部署后,就可以与链码进行通信互动了。互动有多种方式,如通过SDK编程,也可以使用peer节点使用命令行操作完成。本节先使用后者实现预置链码包介绍通过区块链服务网络开发者手册可知,BSN提供的预置链码包提供了五个方法,我们逐一来操作处理1、增加数据(set)输入参数说明baseKey:需要保存的唯一的主键标识baseValue:保存的数据信息例:{"baseKey":"str","baseValue":"this is string"}其中baseKey是不能为..

2020-05-26 15:01:49 599

转载 2.1 运行测试网络

使用以下命令进入到测试网络目录cd fabric-samples/test-network安装成功后会显示下图的提示信息本文由小韦云原创,转载请注明出处:https://www.bctos.cn/doc/5/1812,否则追究其法律责任

2020-05-26 14:48:32 180

转载 2.0 部署Fabric测试网络

网上有个2.0的部署教程,要先下载代码再通过make all 编译生成二进制文件,但并没有错,但这种编译方式我执行了一天一夜还没执行完,只能放弃,重新研究官方手册(https://hyperledger-fabric.readthedocs.io/zh_CN/latest/install.html),发现官方的方法其实不需要编译,人家已经编译好,我们只需要下载就好。最简单的方式就是直接执行下面的命令就好curl -sSL https://bit.ly/2ysbOFE | bash -s它其实是下

2020-05-26 14:37:35 3858 4

转载 1.5 Go语言安装

参考资料:https://www.runoob.com/go/go-environment.html国外官网打不开,下载要使用国内地址:https://golang.google.cn/dl/下载文件,注:版本号(1.13.8)可能会更新,请在上面的下载地址网页查看最新的版本号cd ~wgethttps://dl.google.com/go/go1.13.8.linux-amd64.tar.gz解压到/usr/local目录下tar -C /usr/local -xzf go1.13..

2020-05-26 11:33:39 190

转载 1.4 Docker-Compose安装

打开网址https://github.com/docker/compose/releases从github上查到最新版本是 1.26.0-rc2(如果有更新的版本,可以不用和我的一样)因此安装命令是:如果你看到的不是 1.26.0-rc2 版本,把命令里的 “1.26.0-rc2” 换成你看到的就行curl -L "https://github.com/docker/compose/releases/download/1.26.0-rc2/docker-compose-$(uname

2020-05-26 11:31:48 241

转载 1.3 CentOS Docker 安装

安装方法直接参考Docker手册及安装说明就行,比较简单中文:https://www.runoob.com/docker/centos-docker-install.html英文官网:https://docs.docker.com/install/linux/docker-ce/centos/由于我是直接使用root操作,因此所有命令不需要加 sudo 前缀安装后测试下,查看版本号docker --version设置为docker开机自启动chkconfig docker on

2020-05-26 11:28:40 162

转载 1.2 CentOS7安装gcc

https://www.cnblogs.com/liutongqing/p/11277306.html由于后面编译Fabric代码需要用到gcc,正常会自动安装,但这个安装时间实在太长了(一般都需要8个小时以上),因此还是提前安装用比较好,Fabric2.0的代码编译需要的gcc版本刚好是上文中的8.3.0版本1核1G内存的虚拟机,足足安装了8个多小时,而且安装过程C盘差点空间满了,建议安装之前确硬盘空间要有20G以上本文由小韦云原创,转载请注明出处:https://www.bctos.cn/d

2020-05-26 11:26:37 626

转载 1.1 在VMware下安装Centos7

从国内镜像下载Centos7的IOS安装,下载网址:http://mirrors.nju.edu.cn/centos/7.7.1908/isos/x86_64/PS:复制上面的在迅雷中下载比较快些我已经安装VMware,如果没有安装,要先安装,我安装的版本是点上面的创建新的虚拟机,按照下面图示安装开启虚拟机,进入centos安装全程慢慢等待即可下面这个界面需要等待一下,等它自动安装完安装完就可以点软件选择选择

2020-05-26 11:09:57 143

转载 Fabric-CA 架构及安装

一、Fabric-CA架构官方手册给的图示根据自己理解整理的图示总结: Hyperledger Fabric CA由服务端和客户端组件组成 Fabric CA Server服务端由一个树形结构的服务器集群组成,有一个ROOT节点(Root Server)和诺干个不同层级的中间节点(Intermediate Server)组成,如节点A,B是同级关系,它的上级为ROOT节点,而节点C,D的上级是节点B,因此中间CA节点上级可以是ROOT节点,也可以是其它中间节点。 与

2020-05-25 11:48:39 1181

转载 CA配置说明

Fabric-CA提供3种方式来配置服务端和客户端:CLI命令行界面 环境变量 配置文件在本节的其它教程中,我们一般是通过对配置文件进行更改来实现,当然我们其实也可以通过配置环境变量或CLI命令行来实现的。举个例子,假如我们有下面这个客户端的配置文件tls: # 开启 TLS (默认: false) enabled: false # 客户端侦听端口的TLS (默认: false) certfiles: client: certfile: cert.pem

2020-05-25 11:48:07 1059

转载 Fabric-CA服务端配置教程

初始化服务端启动服务端配置数据库配置LDAP设置集群设置多个CA注册中间CA升级服务端服务端运维本文由小韦云原创,转载请注明出处:https://www.bctos.cn/doc/4/1838,否则追究其法律责任...

2020-05-25 11:37:38 799

转载 Fabric-CA客户端配置教程

决定Fabric-CA客户端的目录是因素优先级如下:如果设置了–home命令行选项,请使用其值 否则,如果设置了FABRIC_CA_CLIENT_HOME环境变量,请使用其值 否则,如果设置了FABRIC_CA_HOME环境变量,请使用其值 否则,如果设置了CA_CFG_PATH环境变量,请使用其值 否则,请使用$HOME/.fabric ca client下面的教程是假设客户机配置文件存在于客户机的目录中。注册引导程序标识注册新身份注册对等身份获取身份混合器凭证本文由小韦

2020-05-25 11:19:10 571

转载 Fabric-CA Server服务端命令详解

Hyperledger Fabric 证书颁发服务端的命令使用说明用法: fabric-ca-server [command]可用命令: init 初始化fabric-ca服务 start 启动fabric-ca服务 version 显示Fabric CA Server的版本信息标识参数:基础配置 --address string fabric-ca-server的

2020-05-25 10:47:34 2221

转载 Fabric-CA Client客户端命令详解

Hyperledger Fabric 证书颁发客户端的命令使用说明客户端的主命令用法: fabric-ca-client [command]可用命令: affiliation 管理附属关系 certificate 管理证书 enroll 登记身份 gencrl 生成CRL gencsr 生成CSR getcainfo 获取CA证书链和idex公钥 identity 身份管理 reenroll 重新登记身份

2020-05-25 10:12:43 2702 1

转载 安装nodejs依赖

完成上面的js文件编写后,接下来就是在xiaowei-app目录中执行npm install安装依赖模块npm install这样它就会根据我们之前的package.json的设置安装相关模块如果出现以下错误gyp ERR! find VSgyp ERR! find VS msvs_version not set from command line or npm configgyp ERR! find VS VCINSTALLDIR not set, not running in V

2020-05-25 09:53:36 3968

转载 编写nodejs代码

这部分内容参考:https://www.jianshu.com/p/a671c3002b64并作为简化先在github.com目录下创建一个项目目录,名叫xiaowei-appcd $GOPATH/src/github.com/mkdir -p fabric-sdk/xiaowei-appcd fabric-sdk/xiaowei-app然后在这个目录创建几个js文件1、新建 package.json{ "name": "fabcar", "version": .

2020-05-23 16:29:40 1101 2

转载 3.2 安装golang SDK

下载SDK包打开gitbase , 然后执行下面的命令下载源码go get github.com/hyperledger/fabric-sdk-go由于国内的网络环境的原因,下载时间超长,而且容易出错,需要多试几才行。之前想通过下载ZIP包来代替,但在执行下面的make depend会报以下错误fatal: not a git repository (or any of the parent directories): .gitmake: *** [Makefile:244: de

2020-05-23 16:26:18 227

转载 3.1 链码介绍

介绍说明在之前两章为了让大家从主流的概念入门,一直使用智能合约这个词来理解Fabric的链码,因为两者概念是一样的,只是由于智能合约这个在以太坊等其它区块链使用比较多,比较广泛,因此在这里也这么叫,好让大家更好的入门。但在Fabric中,智能合约对应的英文是chaincode,翻译为链码更合适些,因此从本章开始以后都使用链码代替之前智能合约。Fabric的链码支持golang,nodejs,java,python这几种语言开发,大家可以根据自己所长选择其中一种。本人精通PHP开发(可惜没有P

2020-05-23 16:24:22 333

转载 使用nodejs的SDK执行更新操作

上一节讲了查询链码操作,这一节我们重点来讲解下更新链码的操作打开$GOPATH/src/github.com/hyperledger/fabric-samples/fabcar/javascript/invoke.js文件,我们来看看代码。首先下面部分代码同admin基本一样,不在详述。'use strict';const { Gateway, Wallets } = require('fabric-network');const fs = require('fs');const p.

2020-05-23 16:21:13 322

转载 使用nodejs的SDK执行查询操作

由于在test-netword在执行./network.sh deployCC -l javascript已经部署好了链码,因此我们直接查询已经安装的链码就好。同前两节一样,我们重点来讲解下查询链码的代码打开$GOPATH/src/github.com/hyperledger/fabric-samples/fabcar/javascript/query.js文件,我们来看看代码。首先下面部分代码同admin基本一样,不在详述。'use strict';const { Gateway..

2020-05-23 16:14:26 457

转载 注册用户账号

在上一节中注册管理员了,接下来我们需要使用这个管理员账号来注册用户,因此本节我们重点来讲解下注册用户的代码打开$GOPATH/src/github.com/hyperledger/fabric-samples/fabcar/javascript/registerUser.js文件,我们来看看代码。首先下面部分代码同admin一样,不在详述。'use strict';const { Wallets } = require('fabric-network');const FabricCAS.

2020-05-23 16:03:58 1729

转载 注册管理员账号

在上一节中执行query和invote前,必须要先注册管理员,因此本节我们重点来讲解下注册管理员的代码打开$GOPATH/src/github.com/hyperledger/fabric-samples/fabcar/javascript/enrollAdmin.js文件,我们来看看代码。开启javascript的严格模式,目的是指定代码在严格条件下执行。严格模式下你不能使用未声明的变量'use strict';加载fabric证书服务const FabricCAServices.

2020-05-23 15:46:06 1582

转载 使用Fabcar的js版本sdk测试

在第二章第5节里(2.5 通知智能合约与网络互动),我们使用了peer节点的命令行方式与网络进行了互动。在本节里,我们将需要SDK与网络互动,直接使用编写的代码与网络互动,为后面实现各种业务功能打基础。在Fabirc的开发SDK里,有java,nodejs,golang,python这四种语言的版本供大家选用,这次我们选用nodejs版本,对于一个web开发者来说它是最简单最方便入门的,当然如果你精通java或其它两种语言,那另当别说。为了方便入门,这次直接使用Fabric2.0 提供fab..

2020-05-23 15:17:34 278

转载 启动带Fabric-CA服务网络

这部分在第二章入门-运行第一个测试网络中有详细讲解,这里简单温习一下# 定位到test-network目录cd $GOPATH/src/github.com/hyperledger/fabric-samples/test-network# 先删除之前的网络信息 ./network.sh down # 启动网络 ./network.sh up # 创建通道 ./network.sh createChannel # 部署Fabcar链码,这次部署的是js版本的合约 ./net..

2020-05-23 15:05:12 453

转载 安装启用Fabric-CA服务

Fabric-CA 是Fabric的证书服务模块,由于我们之前的test-network网络并没有使用Fabric-CA,默认使用的是cryptogen来生成证书。由于本次需要用到Fabric-CA,好在test-network也是支持的,只需要修改下network.sh文件,把CRYPTO常量由cryptogen修改为Certificate Authorities即可# Using crpto vs CA. default is cryptogenCRYPTO="cryptogen"修..

2020-05-23 15:03:58 297

转载 2.6 运行第一个测试网络总结

通过前面几节内容,我们已经能正常启动一个网络,并且完成智能合约部署与交互。测试结果后可以通过下面命令./network.sh down关闭网络,该命令会自动删除之前创建的docker容器,peer节点, orderer服务,通道,智能合约等。流程总结先在本地启动网络为peer和orderer创建证书和密钥 创建系统通道并且生成创世块 启动peer和orderer节点然后创建应用通道创建应用通道 把两个peer节点加入通道 把orderer节点加入通道接着部署智能合约

2020-05-21 10:45:48 526

转载 2.5 通知智能合约与网络互动

上一节完成智能合约(链码)部署后,我们就可以与Fabric网络进行互动。正常情况这一步是通过编写业务系统代码,然后来与Fabric网络实现互动的,这样用户就可以像正常操作网页一样来操作区块链。但到目前为此我们还没开发网页,因此只能先通过命令行的方式与区块链网络进行互动。由于智能合约是部署到peer节点上的,因此我们需要通过peer CLI(像windown下的cmd,liunx下的shell)与网络进行交互,peer CLI允许我们从CLI调用已部署的智能合约,更新通道或安装和部署新的智能合约。接着

2020-05-21 10:40:33 1288

职业化IT团队的讲议及PPT

什么是职业化,在IT团队中职业化的要求是什么?如何让一个IT团队以及团队中的每一个成员都能做得职业化?

2011-08-05

cacahemacache.class.phpp

thinkphp cache memcache 缓存类,很实用

2011-04-28

thinkphp2.0全部手册

ThinkPHP 2.0完全开发手册;ThinkPHP 2.0开发技巧;ThinkPHP 2.0 Q&A;ThinkPHP-2.0-API

2011-04-28

ThinkSNS2.0改进版代码包

内置的超级管理员 - 账号:admin@admin.com - 密码:cde3CDE# 安装方法 - 程序包放入服务器 - 导入数据库文件ts_2_0.sql 新增加的功能 - 新浪式的两栏页面 - 新增举报功能 - 新增敏感词过滤功能 - 热门话题的自动生成+后台手动设置 - 微博的删除为假删除 - 后台操作生成操作Log - 新增微博关注的分组功能 - 新增"分享到微博"功能 - 完善微博广场(全新的UI、新增名人堂功能、热门转发和热门话题可以屏蔽某些话题)

2011-04-01

ThinkSNS2.0管理员使用指南

在右侧界面中,第一个栏目显示服务器信息,第二个栏目显示用户信息,再接下去为各 个应用的统计信息栏,当安装某个应用后会自动显示其统计栏,最底部的一个栏目为开发团 队信息。

2011-02-23

ThinkSNS2.0开发手册

各位亲爱的用户朋友们,经历了很长时间的等待,我们终于发布了全新的ThinkSNS2.0,一直以来都有一批忠实的用户陪伴在我们身边,让我们即使在很困难的情况下也没有忘记自己的使命,感谢你们一直以来的支持,新的产品虽然还不够完善,相信经过我们共同的努力,一定可以把她打造成一流的社区软件!

2011-02-23

ThinkSNS2.0

新版的ThinkSNS将定位于基于微博客的多应用SNS系统,帮助用户打造注重交流、沟通的垂直类社区网站,新版本的ThinkSNS具备如下特性: 完整的微博系统 内置接入多个应用平台,无限应用扩展 支持wap,并提供手机客户端,包括iphone和android 多系统账号登录支持,新浪微博,豆瓣等 集成整合各社交媒体平台,账号绑定与关联 通过小插件和大型应用双重机制扩展. 应用的开发和扩展更加独立、灵活

2011-02-23

项目经理必备的截图标注工具FsCapture

作为项目经理的我,经常写产品说明文档,我最基本的需求就是以下三点: 1, 方便地截图; 2, 简单做出漂亮的标注 3, 标注支持中文 最新版本的FsCapture刚好满足了我这些需求,而且还可以设置快捷键,软件小巧轻便,十分好用,实在是项目经理必备的好工具。

2010-11-20

JS_UI_gouwei

多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加

2010-03-26

bug管理系统--我的备份

bug管理系统bug管理系统bug管理系统bug管理系统bug管理系统bug管理系统bug管理系统bug管理系统bug管理系统

2010-01-20

Selenium 中文API

Selenium 中文APISelenium 中文APISelenium 中文API

2010-01-15

selenium学习使用资料

Selenium简介,selenium RC使用简单温习,Selenium命令.

2010-01-10

PHP程序员常备手册

PHP程序员常备手册PHP程序员常备手册PHP程序员常备手册PHP程序员常备手册PHP程序员常备手册PHP程序员常备手册

2010-01-06

thinksns1.6

这是thinsk1.6版本,比较适合项目的二次开发或者直接建站

2010-01-06

空空如也

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

TA关注的人

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