自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(308)
  • 资源 (244)
  • 收藏
  • 关注

原创 探索程序设计中的常见陷阱与解决方案

本文深入探讨了程序设计中常见的几个问题,包括参数溢出、字符串长度计算以及除零错误。通过具体代码示例和实际案例分析,展示了如何识别并解决这些常见的编程错误。文章不仅提供了问题的解释,还给出了优化建议,引导读者在实际编程中避免这些陷阱。

2025-03-18 16:59:12 255

原创 同步与并发编程中的竞态条件和信号问题

本文将探讨多线程编程中的两个案例,程序112中的同步问题以及程序113中的信号处理问题。案例112展示了由于线程同步不当导致的程序挂起,而案例113则揭示了在多线程环境中处理信号时可能遇到的竞态条件问题。通过这两个例子,我们将学习如何识别和解决多线程编程中的常见问题。

2025-03-18 16:57:46 369

原创 C++编程实践:栈操作与内存管理

本文通过C++编程实践,探讨了栈的基本操作及内存管理技巧。展示了如何通过栈类实现数据的推送与弹出,并引入了内存检查机制以防止数据被破坏。文章还讨论了全局变量的使用,以及如何通过蛮力和简单技巧解决编程问题。

2025-03-18 16:55:16 329

原创 C++内存管理:从内存泄漏到野性输出

本篇博客通过对特定的C++程序示例进行分析,揭示了内存泄漏、内存破坏以及构造函数和析构函数调用的正确时机等关键内存管理问题。通过详细的代码讲解和问题诊断,引导读者理解内存管理的重要性并掌握相应的解决策略。

2025-03-18 16:48:27 160

原创 程序员的幽默与智慧:代码背后的故事

本篇博文以轻松幽默的笔触,解读了程序代码与程序员文化之间的关系。通过展示两个程序案例,我们不仅学习到了编程知识,还洞察到了程序员群体的思考方式、幽默感以及对编程语言和软件工程的独到见解。

2025-03-18 16:47:47 326

原创 探索代码的深意:程序设计与计算机思维

本文通过分析三段代码实例,探讨了计算机编程中的常见问题及其背后的原因,包括变量作用域、浮点数精度问题以及键盘布局的历史。通过这些问题,我们能够更好地理解程序设计的基本原理以及计算机科学的发展历史。

2025-03-18 16:38:56 211

原创 编程中的常见问题与用户反馈

本文通过展示真实用户与程序交互中遇到的问题,揭示了软件开发中的挑战。章节描述了用户反馈的不可预测性,以及程序设计与实际需求之间的差异。通过一系列编程实例,探讨了程序编译失败、环境因素对系统行为的影响,以及逻辑错误导致的问题。文章最终强调了理解用户需求和进行彻底测试的重要性。

2025-03-18 16:38:09 263

原创 从计算器代码错误中汲取编程智慧

本文探讨了在编写四则运算计算器程序时所遇到的常见错误及其解决方法。通过分析程序代码,我们发现除以零、非法运算符输入等错误可能导致程序异常。同时,文章也引出了如何利用错误处理来预防软件被非法修改的话题。

2025-03-18 16:24:52 296

原创 编程疑难杂症的解决之道

本文将探讨一系列编程问题及其解决方案,包括对复制构造函数调用时机的深入理解、数据类型细节差异的提醒、结构体数据字节问题的处理、字符串比较函数strcmp的正确使用、以及C++中const修饰符的特性和预处理器的运用等。文章通过提供实际案例和解题步骤,旨在帮助读者掌握编程中的常见问题,并提出相应的解决策略。

2025-03-18 16:22:22 520

原创 代码中的隐秘世界:程序调试与多线程安全

本文探讨了编程中的常见问题,通过分析特定代码段展示了程序员在调试和优化代码时可能遇到的困惑。例如,通过变量调整延迟时间却未达预期效果的困惑,以及多线程环境下数据安全的问题。同时,还涉及了代码跨语言翻译时可能出现的误解,以及现实中解决实际问题的巧妙方法。

2025-03-18 16:05:19 216

原创 程序设计中的常见陷阱与解决方案

本文通过分析两个典型的程序设计案例,揭示了在文件操作和内存管理中常见的编程陷阱。第一个案例展示了如何将FILE类型数据复制到ostream,同时指出了可能遇到的编译错误和运行时问题。第二个案例则通过创建一个v_string类,展示了过度谨慎编程可能导致的问题,并分析了错误的深层原因。文章旨在通过具体案例,为读者提供避免这些常见错误的策略。

2025-03-18 16:00:10 373

原创 理解C++拷贝构造与赋值操作的陷阱

本文通过分析两个C++程序示例,深入探讨了拷贝构造函数和赋值操作符的调用时机及其潜在问题。第一个程序展示了拷贝构造函数和赋值操作符的意外行为,而第二个程序则揭示了因不当内存管理导致的内存破坏问题。文章旨在帮助读者深刻理解C++中类对象的构造、复制和销毁机制。

2025-03-18 15:54:03 328

原创 C++编程陷阱与计算机科学幽默

本文通过分析几个C++编程示例揭示了类型转换、函数重载以及数组操作中的常见问题。同时,文章以幽默风趣的方式介绍了计算机科学家对编程语言、硬件和软件哲学的独到见解。

2025-03-18 15:30:08 295

原创 C++编程中常见错误及其解决方案

本文根据提供的章节内容,详细探讨了C++编程中常见的错误和解决方案。内容涵盖了宏的使用、比较操作符的误用、内存管理问题、浮点数精度问题、异常处理以及文件操作等多个方面。通过分析具体案例和给出相应的代码示例,文章旨在帮助程序员避免在编程实践中遇到的常见陷阱。

2025-03-18 15:27:59 269

原创 编程技巧与效率:三段代码的启示

本文将探讨三位程序员面对编程挑战时的不同处理方式。通过分析他们的代码,我们将看到位操作的巧妙应用、语言选择的巧妙之处以及性能优化的重要性。

2025-03-18 15:27:00 278

原创 C++编程中的陷阱与启示:字符处理与精度问题

本篇博客深入探讨了C++编程中的两个常见问题:字符输出与浮点数精度。通过分析具体程序示例,揭示了字符变量在不加处理的情况下进行算术运算可能导致的非预期输出,以及浮点数在金融软件中的精度误差问题。文章不仅提供了问题的解答,还强调了编程中遵循最小惊讶定律的重要性,以及如何通过测试和验证来预防此类问题。

2025-03-18 15:15:05 303

原创 深入理解复制构造函数的正确编写方式

本文详细探讨了复制构造函数的基本概念、常见错误以及如何正确编写。通过分析具体代码示例,揭示了错误使用复制构造函数可能导致的内存崩溃问题,并给出了正确的编写方法。同时,文章穿插了书籍中的相关内容,如日常生活问题、计算机定律等,为理解复制构造函数提供了更丰富的背景知识。

2025-03-18 15:13:45 269

原创 编程教学中的自动与静态变量陷阱

本文从作者教授C语言编程时的一次尴尬经历引入,通过一个关于自动变量和静态变量的测试题目,揭示了编程中常见的陷阱,并通过教堂使用电脑的幽默故事,以及一个矩阵乘法程序的错误,强调了编程细节的重要性。

2025-03-18 14:57:14 255

原创 程序员的奇思妙想与代码的陷阱

本章通过一系列程序员们开发的程序示例,展示了编程中的小技巧和潜在的错误。从一个简单的邮政编码比较程序,到一个复杂的C语言大赛,本章揭示了代码的巧妙之处和易于出现的问题。同时,也讨论了如何在实际编程中避免这些陷阱,确保程序的正确性和健壮性。

2025-03-18 14:49:42 362

原创 编程新手的那些尴尬时刻

在本书的第5章中,作者通过一系列编程案例回顾了初学者们常见的错误。这些程序不仅是对过去编程经历的幽默回顾,也让我们意识到,即便是经验丰富的程序员,也会犯下看似愚蠢的错误。文章通过反思这些“专业错误”,揭示了编程学习和实践中的挑战与乐趣。

2025-03-18 14:43:16 119

原创 深入C++:从便携到平台差异的探讨

本章节通过两个实际案例,探讨了C++编程中的便携性问题以及平台差异对程序行为的影响。第一个案例通过为Rio MP3播放器编写Linux软件的经历,揭示了即使是最基本的数据块结构也可能因未识别的控制字节而出现问题。第二个案例则通过一个简单文件写入程序在UNIX和Windows平台上的不同表现,突显了平台特有的二进制数据处理差异。本章内容不仅提供了编程实践中的具体问题和解决方案,还启发读者深入思考便携性和平台兼容性的深层含义。

2025-03-18 14:42:55 738

原创 编程中的简单逻辑与文件读取技巧

通过一个牧羊农民与邻居的对话,引入了一个简单的算法问题,即通过羊腿的数量除以4来估算羊群的数量。接着,探讨了一个检查文件中是否包含特定魔数的程序,并提出了对程序可能存在的问题的分析。最后,通过一个错误的文件读取代码示例,揭示了可移植性问题的重要性。

2025-03-18 14:42:07 386

原创 C++编程中的位操作与函数重载的挑战

本文讨论了在C++编程中常见的两个问题:位操作的微妙之处以及函数重载时的隐式类型转换问题。通过分析书中提供的程序示例,我们探讨了如何正确地处理位操作和避免类型转换导致的函数调用错误。

2025-03-18 14:31:55 205

原创 探索C++编程与数据结构:从临时文件名到二叉树搜索

本文通过分析两个程序案例,探讨了C++编程中的字符串使用和二叉树数据结构。第一个案例揭示了使用C++标准库中的字符串类时可能遇到的问题,而第二个案例则展示了构建二叉树并在其中查找数据时的性能挑战。

2025-03-18 14:31:13 290

原创 代码注释与实际应用中的陷阱

本篇博客通过分析几个程序代码案例,探讨了代码注释的重要性以及在实际应用中可能遇到的一些常见陷阱。通过这些案例,我们了解到即使看似简单的程序也可能隐藏着意外的错误,同时也指出了良好的编码习惯和注释是预防和发现错误的关键。

2025-03-18 14:28:01 365

原创 编程疑难杂症:C++编程问题的解答与思考

本文汇总了多个C++编程中可能遇到的问题及其解答,深入分析了每个问题的背景、原因和解决方案。通过对问题的讨论,我们可以更好地理解C++编程的复杂性以及如何处理编程中的异常情况。

2025-03-18 14:26:27 319

原创 程序员日常:错误与解决之道

本章通过日常生活中的小故事,展示了程序员在日常工作中遇到的一些常见问题及其解决方案。从简单的编程错误到对程序的误解,章节中的例子生动地描绘了编程过程中的小陷阱以及如何一步步解决问题的过程。通过这些案例,读者可以了解到在编程实践中如何避免常见的错误,并学习如何更加高效地调试和优化代码。

2025-03-18 13:29:32 286

原创 探索编程历史与故障处理的艺术

本章通过回顾编程历史上的重要时刻,如第一个“计算机虫”和“Hello World”程序的出现,展示了编程早期的趣事以及如何处理故障。通过幽默的对话和故事,揭示了计算机故障和编程错误的典型场景,引发对编程实践和故障处理技巧的深入思考。

2025-03-18 13:24:56 288

原创 编程初体验:学习过程中的乐趣与挑战

本文通过分享一位编程初学者在学习过程中的小故事,揭示了编程学习中的实际挑战与趣味。章节内容展示了编程中的常见错误,如数组越界和字符变量使用不当等。同时,作者通过这些错误来教学,让读者理解编程的严谨性以及解决问题的乐趣。文章结尾给出了对编程教学和学习的启发。

2025-03-18 13:19:47 209

原创 探索计算机编程与硬件问题的奥秘

本文以幽默诙谐的方式探讨了计算机编程中的一些常见问题,包括栈空间溢出、指针使用不当,以及硬件故障的排查。通过程序示例和实际案例,展示了如何诊断和解决编程与硬件相关的难题。

2025-03-18 12:46:43 251

原创 《如何不使用C++编程》:编程启示录

《如何不使用C++编程》是一本通过分析111个有缺陷的程序和3个成功的例子,带领读者发现并修正代码错误的书籍。作者Steve Oualline通过实际案例,从简单的字符错误到复杂的多线程问题,为程序员提供了一个既有趣又实用的学习工具。书中的谜题挑战读者的编程技巧,提示和答案帮助读者更深入地理解C++编程的精髓。

2025-03-18 12:38:33 176

原创 C++编程实践:优化与避错的艺术

本文深入探讨了C++编程中常见的问题及其解决方案,包括内存管理、字符串处理、I/O效率优化以及避免常见错误的实践。通过对特定问题的分析和改进策略,本文旨在提供给读者更加高效和安全的编程方法。

2025-03-18 12:35:59 243

原创 程序效率与逻辑错误的反思

本文通过分析两段程序代码,探讨了程序效率低下和逻辑错误的问题。第一个程序描述了一个数据发送速率不达标的情况,而第二个程序则展示了代码中隐藏的逻辑错误。通过案例分析,我们能够对编写高效、逻辑正确的代码有更深入的理解。

2025-03-18 12:26:58 258

原创 程序设计与问题解决的艺术

本文通过两个编程案例探讨了C++中自定义运算符重载的使用以及问题解决的技巧。第一个案例展示了增量运算符的不同定义方法及其对程序输出的影响。第二个案例则揭示了通过观察和经验来解决实际问题的重要性。文章最后还穿插了一则轶事,讲述了一位系统管理员如何通过小技巧巧妙地解决了工作中遇到的问题。

2025-03-18 12:15:21 148

原创 探索编程的奥秘与幽默:代码中的智慧

本文将带你走进编程的奇妙世界,通过分析几个有趣的代码示例,揭示编程逻辑的幽默与智慧。从一个简单的加法程序开始,探讨了编程中的逻辑错误与安全问题,再通过一个计算器程序展示了编程结构的实用性,最后以一个复制程序结束,反思软件设计的哲学。每一个程序都不仅仅是代码的组合,它们蕴含了程序员对于问题解决的思考和对编程文化的态度。

2025-03-18 12:11:03 351

原创 程序错误分析:深入理解C++编程陷阱

本文通过分析两个具体的C++程序案例,揭示了编程中常见的错误及其成因。第一个程序尝试向日志文件和屏幕输出消息,却产生了意想不到的结果,原因在于对文件流操作的理解和使用不当。第二个程序试图实现一个简单的链表类,但由于对C++对象生命周期和指针操作的误解,导致程序崩溃。通过对这些问题的分析,我们不仅可以学习如何避免这些错误,还能加深对C++语言特性的理解。

2025-03-18 11:57:21 233

原创 掌握C++内存管理和类设计的进阶技巧

本文探讨了通过重载new和delete操作符来跟踪内存泄漏的技术,以及如何设计安全的栈类以防止越界错误。通过具体示例,揭示了C++中内存管理的复杂性和类设计中的常见错误。

2025-03-18 11:55:32 311

原创 程序设计中的自我认知与异常处理

本文通过两个程序设计案例,探讨了程序员在编码时可能遇到的问题,以及如何通过程序自我诊断来避免错误。第一个案例展示了自我意识的重要性,程序员在站立时因使用不熟悉的打字方法导致错误输入,强调了对环境变化的自我感知。第二个案例则讲述了异常处理的重要性,一个设计健壮的栈类在使用时仍然会导致程序崩溃,通过异常捕获解决了问题。文章结合案例分析,提出了在编程中需要具备的自我意识和异常处理能力。

2025-03-18 11:54:38 260

原创 代码中的陷阱与维护的艺术

本章通过两个示例程序揭示了代码中可能隐藏的陷阱和维护的挑战。第一个程序中的静态易失性整型变量的使用似乎毫无意义,而第二个程序通过位运算操作展示了缺少注释的代码可能造成的困惑。最后,通过NASA航天飞机发射失败的案例,讨论了在处理多进程和嵌入式系统时程序员面临的竞态条件和其他难以发现的bug。

2025-03-18 11:52:30 295

原创 C++预处理器:灵活性与风险并存

本章通过一系列编程示例,揭示了C++预处理器的强大功能以及它可能带来的错误。从简单的宏定义到复杂的错误处理宏,作者通过实际案例展示了预处理器使用的灵活性和风险。这些示例不仅为读者提供了编程技巧,更重要的是提醒我们,在使用预处理器时应小心谨慎。

2025-03-18 11:52:29 254

C++编程错误解析:111个失败案例

本书通过111个编程失败案例和3个成功案例,引导读者发现并理解C++编程中的常见错误。作者Steve Oualline利用真实世界中的代码问题,设计了一系列挑战,让读者在不超过40行的代码段中找出错误。这些案例从简单的单字符错误到复杂的多线程错误不等,旨在帮助读者提升编程技能,尤其是调试和语言运用能力。书中不仅提供了线索帮助读者解决问题,还附有详细的答案解析。

2025-03-19

商户打赏文案分享!1

现在的你,只需要去富裕信息网发布一篇原创的文章,该篇文章的下方会带有一个大大的“打赏”俩字按钮,只要有这个按钮,所有看到这篇文章的人都可以给你打赏,土豪这么多,

2022-08-08

使用说明1

使用说明初始界面输入数据输入网址:http://null_633_8338.gitee.io/flighttime/添加机场数据确认每一行机场数据都输入完整后,

2022-08-08

Omnibit全向车-原地漂移1

2.小车的速度选最大值(255),循环让小车车头向左漂移1秒,再让车头向右漂移1秒,接着让车尾向右漂移1秒,然后让车尾向左漂移1秒。积木搭建步骤详见全向车安装图

2022-08-08

用户手册1

基于kaggle数据集的数据分析用户手册目录 第一章 功能介绍 1 1.1 前端 1 1.2 后端 1 1.2.1 数据预处理 1 1.2.2 特征提

2022-08-08

UbuntuU盘启动安装盘制作图文教程1

UbuntuU盘启动安装盘制作图文教程第一步:准备工作软件:1,ultraiso软碟通,下载链接:http://www.skycn.com/soft/858.h

2022-08-08

算法设计作业_王劲松1

}}P24.EX4解:由题意知:h是一个随机变量,设其期望和方差分别为E(h)和Var(h),由切比雪夫不等式知:由题意可知I=E(h),从算法中我们知道随机取

2022-08-08

iOS原生地图开发进阶——使用导航和附近兴趣点检索1

iOS原生地图开发进阶——使用导航和附近兴趣点检索1

2022-08-08

维护人员需求调查问卷1

A.存在 B.不存在挂失操作与更换新卡对后台数据的改变你偏向于:给予前台,财务权限,记录操作人员的信息前台,财务操作后经过你的同意其他—————————————

2022-08-08

计科一班陈伟航数据库第一次试验报告1

2.完成如下的查询要求及更新的要求 3.补充题:(1) 统计各系的男生和女生的人数 4.选做题:对每门课增加“先修课程”的属性,用来表示某一门课程的先修课程,每

2022-08-08

第5次作业1

第5次作业1

2022-08-08

IEEE trans期刊整理1

IEEE trans期刊整理1

2022-08-08

实验十七 特殊计数器的实现1

二、实验仪器及器件1.实验箱、万用表、示波器 三、实验预习1. 预习时序逻辑电路设计方法 四、实验原理 略五、实验内容用JK触发器和门电路设计一个特殊的十进制同

2022-08-08

山东农业大学创新创业实践学分认定管理办法1

2.实践项目类:完成的校级以上创新创业训练计划项目等 3.发明创造类:发明、实用新型、外观设计等获授权或已成功申请专利 2.专业主任或学院指定的认定人员审核本专

2022-08-08

常用ORACLE知识浅析1

DB_NAME:数据库名,建库的时候起的名字INSTANCE_NAME:实例名,一般与数据库名相同,也可以不同(常见于RAC)ORACLE_SID:操作系统层面

2022-08-08

数据库复习1

数据库复习1

2022-08-08

Plotter简要使用011

Plotter简要使用011

2022-08-08

面向对象程序设计实验-18计科3班-20181101047-范少帅-第3次1

2、熟练掌握类的构造方法、析构方法的特点和作用 3、理解对象的引用模型 2、各种构造方法 3、功能完善的设置日期的set方法及重载 4、获取年、月、日的get函

2022-08-08

Legendre多项式1

证明: Legendre方程 令 ,Legenre多项式简化为 ,问题等价于验证 考虑 ,两边求次导数,由Leigniz公式 左边等于右边,就得到了

2022-08-08

算法说明1

图4-1 test1数据滤波后的波形图2. test2数据的结果波峰点的序号:9 91 197 290 384 479 575 667波谷点的序号:51 166

2022-08-08

如何custom validation annotation1

如何custom validation annotation1

2022-08-08

关系模式1

关系模式:将各个实体转化为关系模式:会员(账号,密码,姓名,邮箱,电话,地址)订单(订单号,订购日期,发货日期,订单总价)图书(图书号,书名,图书类别,出版社,

2022-08-08

1160300909-张志路-词法分析实验报告1

②分支结构中的if和else ③循环结构中的do和while ②关系运算符 ③逻辑运算 ②用于句子结尾的界符,如“

2022-08-08

服务软件动名词分析1

第二章 服务概述2.1服务概述对外,客户可以查询房屋价格并申请贷款。对内,实现抵押物预评、正式下单、自动派单、抵押物评级、黑白名单管理、限额管理、预警管理,及后

2022-08-08

RemNote协作翻译说明1

注意: 翻译文档中有单引号, 双引号等符号时, 一律使用中文全角符号, 否则容易造成软件崩溃高亮颜色跟代码深度绑定, 所以颜色(Red, Yellow等)不翻译

2022-08-08

SQL语言特点 高级动态类型语言1

SQL语言特点 高级动态类型语言1

2022-08-08

HCNA-AI题库1

HCNA-AI题库1

2022-08-08

MeetingFilm订单接口1

MeetingFilm订单接口1

2022-08-08

201933070085-陈冰-C语言实验3分支结构1

② 找出各分支中的错误 ③ 找出各条件中的错误 ④ 找出各种条件组合中的错误 ⑤ 找出各条路径中的错误 ② 在输入百分制成绩前要有提示 ③ 在输入百分制成绩后,

2022-08-08

华为云资源申请操作流程1

扫描下面截图二维码注册账号(如果注册过华为云账号且已实名直接登录)注册完毕后需要实名认证,实名认证后再进行登录,登陆后会进入如下页面:(一定认真填写信息,避免审

2022-08-08

2017.8 张章1

2.第j个隐藏神经元的输出为:,Φ为激活函数 3.隐藏层是全连接到输出层的,第j个神经元的输出为:,Vij是隐藏层到输出层的权重 2.保存机制:学习输入的信息是

2022-08-08

刘冰毕业论文修改意见1

刘冰毕业论文修改意见:参考文献格式不正确,请参照模板修改;总体感觉论文写的很仓促,有太多地方语句不通顺,组织得不合理,不系统;答辩需要做ppt,讲10分钟左右,

2022-08-08

alter table test rename test1; --修改表名alter table test add colum

--删除表列alter table test modify address char(10) --修改表列类型||alter table test change

2022-08-08

移动web和响应式第4天课堂笔记1

移动web和响应式第4天课堂笔记(本课程共4天)目录 移动web和响应式 1 目录 1 一、手指滚滚屏 2 二、zepto 3 2.1 概述 3 2.2 选择器

2022-08-08

欧拉函数 1

欧拉函数 1

2022-08-08

组49_项目启动文档1

项目启动文档NBAlabala数据分析系统2015-3-8nbalabala团队2015-3-8nbalabala团队2015-3-8nbalabala团队20

2022-08-08

各類演算法比較1

**多種演算法比較Scores:Linear regression score: 0.9101721045818417Neural network regres

2022-08-08

15180600229卞金玲1

15180600229卞金玲1

2022-08-08

Unity3D中通过代码自动为GameObject添加相应的组件1

方法一:在代码的开头添加以下语句即可:RequireComponent(typeof(GUIText))]public class HappinessInFro

2022-08-08

0.CodeBlocks +mingw64 编译64位程序配置方法1

2. 就用默认的gnu gcc compiler,有的攻略要点copy弄一个新的,再指定mingw64的编译器路径,这样反而无法编译 3. debugger一定

2022-08-08

空空如也

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

TA关注的人

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