自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2023年图灵奖揭晓,你怎么看?

计算机科学的进步不仅推动了技术的发展,也在塑造我们的日常生活和工作方式。行业发展的方向:图灵奖得主的研究领域通常代表了计算机科学中的前沿问题和未来发展的趋势。例如,如果获奖者是在人工智能、机器学习或量子计算等领域的贡献,这表明这些领域将是科技进步的重点,可能会吸引更多的研究投资和人才。图灵奖的获奖者和他们的工作常常被作为教材的一部分,用来启发和培养未来的计算机科学家。2023年图灵奖的揭晓不仅是对个别科学家的杰出贡献的认可,它还具有更深层的意义,包括对整个计算机科学领域的影响以及对未来技术发展的指引。

2024-04-15 14:58:28 116

原创 程序员如何搞副业?

然而,许多程序员并不满足于仅仅在一家公司工作,他们渴望通过副业来实现个人价值的最大化,增加收入,甚至探索自己的创业梦想。开发插件和工具: 开发软件工具、插件或应用程序,为其他开发人员提供解决问题的工具。咨询服务: 利用自己的专业知识提供技术咨询服务,帮助企业解决他们的技术难题或优化他们的软件开发流程。在选择副业时,要考虑到自己的兴趣、技能和时间,并确保在主业和副业之间取得平衡,以避免过度劳累。软件产品: 开发并销售自己的软件产品,可以是工具、应用程序或者解决特定问题的软件。

2024-04-15 14:54:36 211

原创 为什么你要选择成为一名程序员

为什么你要选择成为一名程序员

2024-04-15 14:51:08 238

原创 如何分辨几类网线 如何制作网线的工作笔记

网线制作以及分辨

2023-08-03 11:36:11 395

原创 网络基本知识点 网络通信 网络划分 协议 网络分层

网络初识1.网络通信2.网络划分3.网络通信基础4.端口号5.协议6.网络分层6.1 划分方式6.1.1 OSI七层(一种偏理论的模型,并没有实际落地)6.1.2 TCP/IP 五层/四层 模型6.2封装和分用7.网络套接字编程7.1套接字分类:8.MAC地址1.网络通信网络中主机间的进程通信2.网络划分(1)局域网:一般来说,某个小范围组建的网络,内部可以传输数据 路由器(2)广域网WAN :将很多局域网链接起来,组成很大范围的网络,(全球公认的广域网,通过网络运营商提供网络服务,来访问),公网

2022-05-31 17:07:48 528 3

原创 软件测试基础 按照测试对象划分 界面测试(UI测试.响应式页面 可靠性测试 容错性测试 文档测试 平台测试 易用性测试等

软件测试进阶1.APP 的测试2. 按照测试对象划分2.1界面测试(UI测试)3.响应式页面4.可靠性测试5.容错性测试6.文档测试7.平台测试:7.1 PC:7.2.手机端:8.易用性测试(用户体验测试)9.安装卸载测试10.安全测试11.性能测试12.内存泄漏测试(慢性病)13.界面常见错误14.按照是否运行划分1.静态测试2.静态测试的标准:3.动态测试15.按照是否手工划分1.手工测试2.非手工测试(测试)16.按照是否查看代码划分1.黑盒测试2.黑盒测试设计测试用例的方法?3.按照开发阶段分的哪几

2022-05-26 16:57:45 1217

原创 java基础面试常见问题大集合

1.字符集和字符编码字符集:字符的集合—ASCII码表字符编码:字符的种类非常多,需要按照一定的规则对字符进行存储2.类型转换在写代码的时候,可能会存在不同类型之间的相互操作或者赋值隐式类型转换:在编译代码时,编译器进行的转换----表现:小类型给大类型赋值显示类型转换:需要用户自己手动进行—表现:将大类型赋值给小类型----默认情况下编译器会报错-----手动进行3.前后置 ++ 的区别前置 ++ 先加1 ,在使用后置++ 先使用,在加1前置 ++和后置++ 单独使用,两个效果一

2022-04-25 23:04:05 787

原创 Linux系统的安装部署 VMware软件安装 在VMware上安装linux系统 在宿主机上安装配置开发环境 制作交叉编译工具链

Linux系统的安装部署Linux系统的安装部署一、 VMware软件安装:二、在VMware上安装linux系统三、在宿主机上安装配置开发环境1.安装编译环境:2.安装编辑工具vim3.修改目录 opt 所有者四、制作交叉编译工具链1.解压2.安装 crosstool-ng的软件依赖包:3.编译安装的 crosstool-ng**4.执行 menuconfig 配置工具链**4.1 Paths and misc options --->4.2 Number of parallel jobs4.3

2022-04-20 17:25:41 1537

原创 各种排序的复习笔记

1、直接插入排序int* sortedSquares(int* a, int n, int* returnSize){ *returnSize=n; if(n==0) return a; a[0]=a[0]*a[0]; int j; for(int i=1;i<n;i++){ int temp=a[i]*a[i]; for(j=i-1;j>=0;j--){ if(temp<a[j]) a[j+1]=a[j]; else break; } a[j+1]

2022-04-11 21:04:22 166

原创 软件测试常见问题 开发模型 PC端qq登录测试用例 BUG的相关问题 测试用例设计的常用方法

测试基础1.软件测试和软件研发的区别2.软件测试和软件调试的区别软件测试在不同公司的定位一个优秀的软件测试人员所具备的素质3. 什么是需求4.PC端qq登录测试用例5.测试用例5.1 测试用例的优点:6.BUG7.开发模型7.1.瀑布模型7.2.螺旋模型7.3增量模型,迭代模型7. 4 敏捷模型7.5 V模型7.6 W模型(双V模型)8. 软件测试的生命周期(软件测试的流程)9.什么是BUG10 .BUG的级别5. bug 生命周期10.测试人员因为一个bug和开发人员产生冲突,该怎么做?11. 测试用例的

2022-04-10 20:49:06 2211

原创 第一天算法基础打卡——二分查找以及寻找重复的数字

第一天算法基础打卡寻找重复数字二分查找二分查找寻找第一个错误的版本号搜索插入的位置寻找重复数字方法一:哈希表 / Set利用数据结构特点,容易想到使用哈希表(Set)记录数组的各个数字,当查找到重复数字则直接返回。class solution{ public int FindRepeatNumber(int[] nums){ Set<Integer> dic = new HashSet<>(); for(int num = 2;num <1

2022-04-10 17:13:14 1815

原创 学习多线程基础 计算机是如何工作的以及操作系统简述

计算机如何工作1 .计算机发展历史2.冯诺依曼体系3.计算机的祖师爷3.CPU基本工作流程3.1 逻辑门3.2 门电路3.2.1 非门3.2.2 与门3.2.3 异或门3.2.3 算术逻辑单 ALU4.外存 VS 内存5.控制单元CU6.编程语言6.1程序7. 操作系统7.1 管理:7.2 PCB7.3 调度信息:7.4 调度算法7.5 进程执行表现的特性8. 虚拟地址空间(虚拟内存)9. 进程间通信1 .计算机发展历史2.冯诺依曼体系CPU 中央处理器: 进行算数运算和逻辑判断存储器:

2022-03-23 15:40:01 242

原创 JavaScript基础语法 JavaScript 的对象和 Java 的对象的区别

JavaScript基础语法1.初始JavaScript1.1 简单介绍1.2 JS 能做的事情1.3 JS 、HTML 和 CSS 的关系1.4 JS运行过程2. JavaScript的组成3.基于JavaScript 实例3.1 用 JavaScript 输出文本3.2 用 JavaScript 改变HTML元素3.3 JavaScript 用法3.3.1 1.初始JavaScript1.1 简单介绍简称 JS是世界上最流行的编程语言之一是一个脚本语言,通过解释器运行主要是在客户端(浏

2022-03-22 16:55:01 2364 1

原创 Linux的基本使用 Linux中的符号 Linux权限 文件类型以及访问权限

1.Linux关于路径:./ 表示当前这个目录, …/表示上一季度目录— 表示从上一个路径切换到当前路径时,表示-上一个路径可以使用绝对路径,也可以使用相对路径linux本地文件/目录的绝对路径,是 / 开头2.常见的命令2.1 lscd路径: 切换到某个目录ls路径:列出该路径文件夹下一级的文件ls + 回车 = ls ./ + 回车 (相对路径写法)cd/ 切换到根目录ls / bin = ls./bin =ls binls / bin: 绝对路径ls./bin =ls

2022-03-21 19:37:53 2088 2

原创 CSS略详细的基础 助你一臂之力

CSS1.CSS是什么?层叠样式表CSS能够对网页中的元素位置的排版进行像素级精确控制,实现梅花页面的效果,能够做到页面的样式和结构分离2. 基本语法规范选择器 + {一条 / n条声明}选择器决定针对谁修改声明决定修改啥声明的属性是键值对.使用;区分键和值<style>p{/*设置字体颜色*/color:red;/*设置字体大小*/font-size: 30px;}</style><p> hello </p>注意:

2022-03-16 17:33:26 780 1

原创 HTML基础 冲冲冲

HTML基础1.1 HTML结构1.2 HTML文件基本结构1.3 HTML中标签的参差结构1.4 快速生成代码框架2.HTML常见标签2.1 注释标签2.2标题标签:h1 - h62.3 段落标签:p2.4换行标签 :br2.5 格式化标签2.5 图片标签:img2.6 超链接标签:a2.6.1 外部链接2.6.2 内部链接2.6.3空链接2.6.4下载链接2.6.5网页元素链接2.6.6锚点链接2.7 表格标签2.8 合并单元格2.9 列表标签2.10 表单标签2.10.1 form标签2.10.2 i

2022-01-13 15:29:40 432 2

原创 7类排序总结 插入 选择 交换 快排 归并排序 快来冲冲冲

排序1.排序的定义2.插入排序2.1直接插入排序2.2 希尔排序3.选择排序3.1 直接选择排序4.堆排序5.交换排序5.1 冒泡排序5.2 快速排序5.2.1 Hoare版5.2.2 挖坑法5.2.3前后指针6.快速排序优化6.1 三数取中法7.归并排序7.各大排序万能总结1.排序的定义排序:所谓排序,就是使用一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作稳定性:根据在排序过程中没有间隔或者插入就是稳定内部排序:数据元素全部放在内存中的排序外部排序:数据元素太多不能同时

2021-11-15 21:26:44 1316 1

原创 优先级队列 (堆)常用接口介绍 堆的存储 堆的创建

优先级队列【堆】1.优先级队列1.1 概念1.2常用接口介绍1.2.1 PriorityQueue的特性1.2.2 PriorityQueue常用接口介绍1.2.3 优先级队列的应用2 优先级队列的模拟实现2.1 堆的概念2.2堆的存储方式2.3 堆的创建2.3.1堆的创建2.3.2 堆的创建(普通)1.优先级队列1.1 概念队列:是一个先进先出的数据结构,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素出队列。数据结构应该提供两个基本的操作:1.返回最高优先级对象2.添加新的对象

2021-11-09 16:09:28 582

原创 数据结构 二叉树 完全二叉树和满二叉树 以及二叉树的基本操作。你难道不想看看吗 觉得你想看。嘿嘿

二叉树1.树的基本概念1.1树的概念:1.2树的相关概念1.3树的表示形式1.5树的应用2.二叉树的概念以及特性2.1 二叉树的概念2.2两种特殊的二叉树2.3二叉树的性质2.4二叉树的存储2.5二叉树的基本操作2.5.1前序遍历2.5.2 中序遍历2.5.3 后序遍历2.5.4 层序遍历3.二叉树的基本操作3.1 获取二叉树中节点个数3.2获取二叉树中叶子节点的个数3.3获取二叉树中第k层节点的个数3.4 获取树的高度3.5 查找值为data的节点,并返回1.树的基本概念1.1树的概念:树是一种非线

2021-11-01 21:35:02 757 2

原创 数据结构中的队列以及相关的题型

队列1.队列的概念2.队列的使用3.队列的模拟实现4.队列循环4.1循环队列的引入4.2 循环队列使用4.3 如何区分空与满5.相关题型5.1. 用队列实现栈。5.2. 用栈实现队列。5.3. 实现一个最小栈1.队列的概念只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头2.队列的使用底层使用LinkedList实现的注意:Queue是个接口,在实例化时必须实例化对象LinkedList的对

2021-10-30 15:52:36 412 1

原创 栈概念 转化为循环 括号匹配 逆波兰表达式 模拟实现 干货满满

栈1.栈的概念及使用1.1栈的概念1.2栈的使用1.2.1常用方法1.3栈的应用场景1.3.1改变元素的序列1.3.2将递归转化为循环1.3.3 括号匹配1.3.4逆波兰表达式1.3.5 栈的压入,弹出序列1.4 栈的模拟实现1.5 栈,虚拟机栈。栈帧有什么区别?1.栈的概念及使用1.1栈的概念栈:是一种特殊的线性表,值允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除的一端称为栈顶,另一端称为栈底。后进先出压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶出栈:栈的删除操作叫做。出数

2021-10-25 21:23:38 257

原创 javase 中类和对象 继承和多态 接口 异常 String类 总结思维导图 快保存,方便复习

2021-10-22 21:08:40 221

原创 java中泛型和包装类

泛型和包装类1.了解泛型(Generic)1.1泛型方法1.2实现代码1.3利用object实现1.4泛型1.5泛型的使用2.包装类2.1基本数据类型和对应的包装类2.2装箱和拆箱2.3 自动装箱和自动拆箱1.了解泛型(Generic)Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。假定我们有这样一个需求:写一个排序方法,能够对整

2021-10-17 21:58:12 125

原创 JAVA中 初始集合框架 时间复杂度 空间复杂度

初始集合框架 时间复杂度 空间复杂度1.什么是集合框架2.集合框架的重要性3.所涉及的数据结构4.算法效率5.时间复杂度5.1时间复杂度的概念6.空间复杂度1.什么是集合框架Java的集合框架可以看作是一个容器,是定义在包下的一组接口和其实现类。将多个元素置于一个单元内,用于对这些元素的存储,检索,管理,也就是增删改查。2.集合框架的重要性有助于我们便捷,快速的写出高效,稳定的代码学习背后的数据结构知识,有助于理解各个集合的优缺点以及应用场景3.所涉及的数据结构数据结构:是计算机存储,组

2021-10-17 20:35:39 477

原创 Java基础思维导图

2021-10-17 17:24:31 57

原创 Java中的接口

Java中的接口1.接口的概念2.语法规则3.接口使用4.接口特性5.实现多个接口6.接口间的继承7.深拷贝和浅拷贝8.接口与类相似点9.接口与类的区别10.接口和抽象类的区别1.接口的概念比如 笔记本上的usb口,电源插座接口是多个类的公共规范,是一种引用数据类型2.语法规则将 class 关键字换成 interface 关键字,就定义了一个接口public interface 接口名称{//抽象方法}接口名称的规则:创建接口时,接口名称以大写字母 I 开头接口命名一般使用“形容

2021-09-28 21:29:54 187 2

原创 Java中的多态

多态1.概念2.分类3.实现多态条件4.重写5.向下转型和向上转型6.多态的优缺点1.概念对于同一行为,不同的子类对象有不同的表现。例如:动物吃东西,狗吃肉,猫吃鱼多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:例子:比如电脑上的按键,在不同的情况下有不同的作用。比如我们按下 F1 键这个动作:1.如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;2.如果当前在 Word 下弹出的就是 Word 帮助;3.在 Wi

2021-09-23 15:24:32 117 2

原创 java中的继承

继承1.继承概念2.Java中继承的语法格式3.在子类中访问继承体系中的成员4.继承对象中,子类对象构造5.this 和 super6.访问权限7.继承方式7.1单继承7.2多层继承8 . final关键字9.继承的特性1.继承概念实现代码复用 子类必须要添加一些新的内容,必须要体现出父类的不同 体现程序中分层设计—反映出事物由简单到复杂的认知优点:重复的方法不需要自己来实现,直接从父类中继承子类继承父类的行为和特征,使得子类具有和父类相同的实例域和方法。2.Java中继承的语法格式必须要有

2021-09-16 15:00:57 156

原创 Java中的封装 代码块分类

封装1 封装1.1 封装的优点1.2 实现Java封装的步骤1.3 Java 封装类的例子1.4 访问限定符2.static2.1 static修饰成员变量2.2 static修饰成员的方法2.3 static成员变量初始化3.代码块3.1 代码块概念以及分类1 封装定义:将数据和操作数据有机的结合 隐藏对象的属性和实现细节,反对对外公开接口和对象进行交互封装最主要的功能就是我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程序码更容易理解和维护,也加强了程序码的安全性

2021-09-11 17:43:32 264 3

原创 Java中的类和对象

对象和类1. 对象和类1.1 java中的对象1.2 Java中的类1.3类的实例化1.4 类和对象的说明2.this的引用2.1 this引用的特性3.对象的构造及初始化3.1.构造方法3.2 构造方法《补充》3.3 默认初始化1. 对象和类对象:对象是类的一个实例,由自己的状态和行为。举个例子,一个人是一个对象,人自己具备一些属性(性别 外貌 性格)类:类是一个模板,描述一个对象的行为和状态举例子:汽车为类,具体发每辆汽车是该汽车类的对象1.1 java中的对象对比现实对象和软件对象,它

2021-09-11 16:40:15 331 2

原创 Java数据类型 变量定义 基本类型 类型转换 转义字符

一些重要的知识点1. 什么是数据类型2. Java中的数据类型2.1 内置数据类型2.2 引用类型3.变量定义及使用3.1 Java局部变量3.2 实例变量3.3 类变量(静态变量)4.基本类型及封装类5.类型转换5.1 强制类型转换5.2 自动类型转换5.3 隐含强制类型转换6.Java中的转义字符1. 什么是数据类型变量就是申请内存来存储值。在创建变量的时候,需要在内存中申请空间。内存管理根据变量的类型为变量分配存储空间,分配到空间只能用来存储该类型数据。因此,通过定义不同类型的变量,可以在内存中储

2021-08-19 10:59:41 221

原创 Java中的运算符

运算符1.什么是运算符2.算数运算符2.1 基本四则运算符:加减乘除模2.2 增量运算符自增/自减运算符3.关系运算符4.逻辑运算符4.1 逻辑与 &&4.2 逻辑 ||4.3 逻辑非 !4.4 短路求值1.什么是运算符计算机的最基本的用途之一就是执行数学运算int a = 10;int b- 20;a+b;a<b;java 中的运算符分为:**算术运算符 关系运算符 逻辑运算符 位运算符 以为运算符以及条件运算符 **2.算数运算符2.1 基本四则运算符:加减乘除

2021-08-14 15:57:34 210

原创 Java中数据类型与变量

文章目录1.字面常量2.数据类型2.1 什么是字节3.变量3.1 变量概念3.2 语法格式3.3 整型变量3.3.1整型变量3.3.2 长整型变量3.3.3短整型变量3.3.4 字节型变量3.4浮点型变量3.4.1 双精度浮点型3.4.2 单精度浮点型3.5 字符型变量3.6 布尔型变量3.7 类型转换3.7.1 自动类型转换(隐式)3.7.2 强制类型转换(显式)3.8 类型提升3.8.1 int与long之间3.8.2 byte与byte的运算1.字面常量常量即程序运行期间,固定不变的量为常量

2021-08-12 16:27:06 239

原创 初识Java(补充)

Java时一门程序设计语言,提供了许多软件体系和规范的技术体系一次编写 到处运行语言没有跨平台一说(跨平台指该种语言所写的应用程序可以在不同的操作系统中运行)c语言写一个程序:只要该程序不涉及到系统编程相关的内容 程序写完之后,可以在不同操作系统上进行编译运行c语言利用不同的编译器(不同系统下)编写程序,假如在Windows下可执行程序只能在Windows下运行。只能在当前的系统下运行。如果涉及到系统编程,想要在不同系统中进行编译,在写程序的时候就需要考虑到各种不同操作系统提供系统api函..

2021-08-12 14:57:48 54

原创 Java的发展 Java在不同系统下的开发环境 Java语言特性 Java实现跨平台

初识Java一 、Java的语言概述1.1 Java是什么?1.2 Java语言重要性1.3 java语言发展简史1.4 java 的语言特性1.5 Java实现跨平台1.5.1 祖师爷如何实现一次编写 可以在其他系统中运行?1.5.2 JDK JRE JVM 的区别二、Java开发环境安装一 、Java的语言概述1.1 Java是什么?Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

2021-08-10 16:19:01 2792 2

原创 字符函数和字符串函数

字符函数和字符串函数1.函数介绍1.1strlen2.2strcpy2.3 stract2.4 strncpy2.5 strncmp2.6 strstr2.7 strerror2.8 memcpymemmove2.字符分类函数1.函数介绍1.1strlen1.字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。2.参数指向的字符串必须要以 ‘\0’ 结束。注意函数的返回值为size_t,是无符号的( 易错 )3.学会strl

2021-06-22 21:22:19 99

原创 数据类型详解 数据的存储 大小端 原反补码

数据的存储1.数据类型详细介绍1.1数据类型介绍1.2类型的基本归类1.2.1 整形1.2.2 浮点型1.2.3构造类型1.2.4 空类型2.整形在内存中的存储2.1 原码2.2 反码2.3 补码3.大小端字节序3.1什么是大小端3.2为什么有大小端3.3 判断大小端4.浮点型在内存中的存储解析1.数据类型详细介绍1.1数据类型介绍char //字符型数据short //短整型int //整形long //长整形long long //更长的整形float //单精度浮点

2021-06-20 23:23:49 226 2

原创 数据库系统概述 数据库系统的组成 数据库系统内部体系结构 数据库系统 的外部体系结构

2021-06-17 15:55:29 207

原创 实用调试技巧 vs中的快捷键 Windows环境调试测试介绍 编程常见错误

实用调试技巧1. 什么是bug??2.调试是什么?2.1调试的基本步骤3.Debug 和 Release的介绍4.Windows环境调试测试介绍4.1 调试环境的准备4.2 学会快捷键4.2.1 窗口快捷键4.2.2 项目功能快捷键4.2.3 查找相关快捷键4.2.4 代码快捷键4.2.5 调试快捷键4.2.6 编辑快捷键4.3调试的时候查看程序当前信息4.3.1 查看临时变量的值4.3.2 查看内存信息4.3.3 查看调用堆栈4.3.4 查看汇编信息4.3.2 查看寄存器信息5.如何写出好的(易于调

2021-06-16 16:52:44 295

原创 三子棋C语言

三子棋C语言game.hsanziqi.cgame.cgame.h#pragma once//函数的声明,头文件的引入# define ROW 3# define COL 3#include<stdio.h>#include<stdlib.h>#include<time.h>void InitBoard(char board[ROW][COL], int row, int col);void PlayerTime(char board[ROW][COL

2021-06-14 22:48:36 105 3

空空如也

空空如也

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

TA关注的人

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