自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前后端交互的方式能分为几种

例如,用户在前端提交一个订单,前端将订单信息发送到消息队列,后端的订单处理系统从消息队列中获取订单信息进行处理。例如,后端处理完订单后,将订单状态更新信息发送到消息队列,前端从消息队列中获取订单状态更新信息进行展示。1. 基于 HTTP 的 RPC:如 gRPC,使用 HTTP/2 作为传输协议,定义了严格的服务接口和数据类型,具有高效、可靠的特点。2. 基于其他协议的 RPC:如基于 TCP 或 UDP 的 RPC 框架,通常具有更低的延迟和更高的性能,但实现相对复杂。**一、HTTP 请求交互**

2024-08-26 22:08:17 352

原创 如何在vue3实现一个简单的仪表盘

当前数值:{{currentValue}}

2024-08-26 16:24:56 107

原创 用php写一个简单的后端代码

或 $arr = array('apple', 'banana', 'orange');- fopen() 、 fwrite() 、 fclose() :以传统方式打开、写入和关闭文件。- 关联数组: $arr = ['name' => 'John', 'age' => 30];- fopen() 、 fread() 、 fclose() :以传统方式打开、读取和关闭文件。= (不等于)、 < 、 > 、 <= 、 >= 等。4. 赋值运算符: = 、 += 、 -= 、 *= 、 /= 等。

2024-08-26 15:04:46 285

原创 什么是分库分表

同时,还需要注意分库分表带来的复杂性,如跨库查询、事务处理等问题,合理设计系统架构,以确保系统的稳定性和性能。分表可以将数据分散到多个小表中,减少单个表的数据量,从而提高查询和写入的性能。- 按照字段的业务相关性,将一个表中的字段拆分成多个表。分库是将一个大型数据库按照一定的规则拆分成多个独立的数据库,每个数据库可以部署在不同的服务器上。分表则是将一个数据库中的大表按照特定的规则拆分成多个小表,以提高数据的查询和存储效率。- 根据业务需求和数据特点选择合适的分库分表规则,确保数据的均匀分布和查询的高效性。

2024-08-26 14:44:50 113

原创 type的一些基础语法

基本类型包括 number (数字)、 string (字符串)、 boolean (布尔值)等。- let 和 const 声明变量,与 JavaScript 类似。- 固定长度的数组,且每个元素的类型可以不同。- 使用类型加上方括号表示数组类型。- 类或对象必须符合接口定义的结构。- 组织代码为模块,可导入和导出功能。- 类的结构可以基于泛型类型参数。- 指定参数类型和返回值类型。- 可以适用于多种类型的参数。- 告诉编译器一个值的具体类型。- 描述对象的结构和类型。- 一组命名的常量。

2024-08-26 14:26:34 76

原创 鸿蒙开发语法基础

通过 Intent 传递数据在不同的 AbilitySlice 之间进行通信。- 常见的组件如按钮( Button )、文本( Text )等。- 在页面中可以将数据与组件的属性进行绑定,实现动态更新。- 在 Java 或 JS 代码中处理页面的逻辑。二、JS(JavaScript)开发基础语法。// 子类可以添加新的成员变量和方法。- 使用 XML 布局文件定义页面的结构。- 条件语句和循环语句的语法基本相同。- 通过设置属性和绑定事件来实现交互。// 页面显示时的逻辑。// 页面隐藏时的逻辑。

2024-08-26 14:22:29 173

原创 vue3语法汇总

Click me</button> 或 <button @click="handleClick">Click me

2024-08-26 14:10:35 210

原创 JavaScript 的主要语法要点汇总

使用 Promise 和 async/await 处理异步操作。- 数组方法如 push 、 pop 、 slice 等。使用 var 、 let 、 const 声明变量。- const :声明常量,一旦赋值不能再改变。- 使用 class 定义类(ES6 引入)。- 使用 function 关键字定义函数。- 创建对象的方式有对象字面量、构造函数等。- var :函数作用域,存在变量提升。- let :块级作用域。- 支持匿名函数和箭头函数。五、对象与面向对象编程。

2024-08-26 11:57:35 165

原创 go语言语法基础

可以为结构体定义方法,使用 func (receiverName structName) methodName(parameters) returnTypes {}。- 使用 func 关键字定义函数,如 func functionName(parameters) returnTypes {}。- 切片:动态数组,可使用 make 创建或通过字面量初始化,如 s := []int{1, 2, 3}。- 使用 go 关键字启动一个协程,如 go functionName()。

2024-08-26 11:49:25 198

原创 go语言和C++在创建函数的时候会发生什么

同时,函数可以接受不同的输入参数,执行特定的逻辑操作,并返回相应的结果,实现特定的功能需求。同时,明确函数的参数列表和返回值类型。只有在函数被调用时,才会为函数的局部变量分配内存空间,包括参数变量和在函数内部声明的变量。- Go:函数中的局部变量也在栈上分配内存,但如果变量逃逸分析确定变量需要在函数调用结束后仍然存在,那么变量会被分配到堆上,由 Go 的垃圾回收器自动管理内存,无需手动释放。- Go:函数在 Go 中是一等公民,可以将函数赋值给变量,也可以将函数作为参数传递给其他函数或者从函数中返回函数。

2024-08-26 11:08:49 231

原创 在go语言和C++语言函数结束后会发生什么

如果函数在执行过程中抛出了异常并且没有被捕获,函数会立即结束,在栈展开过程中,会调用已经构造的局部对象的析构函数,以进行适当的资源清理。- Go:Go 有垃圾回收机制,对于通过 new 创建的内存空间(类似 C++中的堆内存分配),在不再被引用时会由垃圾回收器自动回收,无需手动管理内存,大大降低了内存泄漏的风险。如果是基本数据类型,其存储的值不再存在;2. 如果函数中有参数是通过引用或指针传递的对象,函数结束时不会影响这些对象的生命周期,除非在函数内部对它们进行了特殊的操作(如删除指针指向的对象等)。

2024-08-26 10:57:08 239

原创 在go语言的反射是什么

反射可以用于读取配置文件,并将配置项的值动态地设置到相应的结构体字段中,实现应用程序的动态配置。反射可以用于检查结构体的字段和数据库表的列之间的对应关系,并自动进行数据的转换和填充。通过反射,可以遍历结构体的字段,获取字段的名称和值,并将其转换为 SQL 查询的条件和参数。- 例如,当从数据库中查询数据时,ORM 框架可以使用反射来将查询结果映射到结构体对象中,使得开发者可以以面向对象的方式操作数据库数据。- 通过反射可以根据数据的格式动态地填充结构体的字段,实现灵活的反序列化功能。

2024-08-26 01:08:01 165

原创 Go 语言泛型

在 Go 1.18 及更高版本中引入了泛型,允许函数和类型在定义时使用类型参数,从而可以编写更通用、可重用的代码,避免了大量重复的代码逻辑。这里定义了一个自定义的约束接口`Comparable`,只有实现了这个接口的类型才能用于`Max`函数。这个函数可以对任何类型的切片进行操作,传入一个切片和一个函数,函数用于对切片中的每个元素进行转换。2. 类型安全:在编译时确保类型的正确性,减少运行时错误。这定义了一个通用的链表类型,可以存储任何类型的值。**五、泛型的优势****三、泛型类型**

2024-08-26 01:04:41 264

原创 常见的算法汇总

从数列中挑出一个元素,称为“基准”,重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准的后面(相同的数可以到任一边)。- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。- Prim 算法:从一个任意的顶点开始,每次选择一条权值最小的边,将其连接的顶点加入到生成树中,直到所有顶点都被加入。- 从图的某个顶点出发,依次访问其所有相邻顶点,然后再访问这些相邻顶点的相邻顶点,直到访问完所有顶点。

2024-08-26 01:00:11 269

原创 黄帝内经汇总

将自然界的五种基本物质(木、火、土、金、水)与人体的五脏(肝、心、脾、肺、肾)、五腑(胆、小肠、胃、大肠、膀胱)、五官(目、舌、口、鼻、耳)等对应起来,形成了一个相互关联的系统。五脏(肝、心、脾、肺、肾)主藏精气,六腑(胆、小肠、胃、大肠、膀胱、三焦)主传化水谷和排泄糟粕。病因主要包括外感六淫(风、寒、暑、湿、燥、火)、内伤七情(喜、怒、忧、思、悲、恐、惊)、饮食不节、劳逸失度、外伤等。治疗上,采用调整阴阳的方法,如“寒者热之,热者寒之”,即对于寒证采用温热的方法治疗,对于热证采用寒凉的方法治疗。

2024-08-26 00:55:30 254

原创 java内存泄漏的排查思路

2. 长时间运行的方法:如果一个方法执行时间非常长,并且在执行过程中占用了大量的局部变量和对象引用,这些对象可能会一直存在于栈帧中,直到方法执行结束。如果有很多这样的长时间运行的方法同时执行,可能会导致栈空间的压力增大,虽然不一定是真正的泄漏,但可能会影响程序的性能。例如,在一个长时间运行的服务中,如果某个对象被错误地存储在一个全局变量中,即使该对象已经完成了它的任务,它也不会被回收。例如,一个缓存了大量用户数据的应用,如果用户数据在使用后没有从缓存中移除,随着时间的推移,缓存会越来越大,导致内存泄漏。

2024-08-25 23:59:26 90

原创 Android的常见hook工具

15篇汇总占位。

2024-08-25 23:58:53 39

原创 JVM的直接内存

15篇占位。

2024-08-25 23:58:16 34

原创 TCP三次握手和四次挥手的形象表示

这就是第二次挥手,服务器向客户端发送一个 ACK 报文,表示确认收到了客户端的关闭请求,但自己还没准备好关闭连接。你听到朋友的回应后,再次喊了一声:“好呀,那我们开始聊天吧。”这就是第三次握手,客户端向服务器发送一个 ACK 报文,表示确认收到了服务器的回应,现在连接建立成功,可以开始传递信息了。首先,你(客户端)相当于想和朋友(服务器)开始交流,你就向朋友喊了一声:“嘿,我想和你聊天,你在吗?”这就是第四次挥手,客户端向服务器发送一个 ACK 报文,表示确认收到了服务器的关闭请求,现在连接完全关闭。

2024-08-25 23:57:43 107

原创 JVM垃圾回收算法汇总

占位15篇。

2024-08-25 23:54:43 49

原创 如何在前端代码中使用地图

无论使用哪种方式,都可以根据具体需求进行地图的定制和交互操作,如添加标记、绘制多边形、显示信息窗口等。同时,要注意遵守各个地图服务的使用条款和限制。1. 注册 Google Cloud 平台账号并获取 API 密钥。**一、使用第三方地图 API(以百度地图为例)**1. 注册百度地图开发者账号并获取密钥(AK)。**三、使用 Google Maps API****二、使用 Leaflet 库**

2024-08-25 23:50:34 76

原创 电脑管家查杀引擎分析笔记

与之形成鲜明对比的是国际知名的卡巴和 BD 引擎,它们通常在发展过程中,先维护较多的同家族特征,随后在“收缩”过程中,用一条 obj 通杀,显得章法自如、张弛有度。腾讯电脑管家的 TAV 查杀引擎有其独特之处,例如在杀毒后能够还原部分被病毒破坏的注册表和文件,内存查杀方面也表现不错,可扫描内存、创建和病毒一样的互斥以防止病毒再次运行。值得一提的是,逆向 TAV 的特征库可以发现,外挂特征数量比病毒、后门特征都多,排在特征数量第二位,腾讯电脑管家可谓“外挂杀手”。尽管使用了索引复用,但并没有优化。

2024-08-25 23:42:26 483

原创 go语言的unsafe包

不同的操作系统和硬件架构可能有不同的内存布局和对齐方式,因此使用`unsafe`包的代码可能在不同平台上表现不同,甚至可能在某些平台上无法正常工作。例如,可以将一个`*int`类型的指针转换为`*float64`类型的指针,但这种转换是非常危险的,可能导致不可预期的结果,因为不同类型在内存中的布局不同。- 使用`unsafe`包进行的操作不被 Go 语言的安全机制保证。在 Go 语言中,`unsafe`包提供了对 Go 程序内存布局的低级访问,它允许进行一些不被普通 Go 代码保证安全的操作。

2024-08-25 23:10:33 212

原创 go语言如何解决野指针问题

如果使用了动态分配的内存(如通过 make 或其他内存分配函数),在不再需要时及时释放,避免出现内存泄漏和潜在的野指针问题。正确的做法是在需要返回指针时,确保指向的内存在函数返回后仍然有效,比如可以使用全局变量或动态分配的内存。使用 new 或从其他合法的内存分配操作获取指针,并确保在使用指针期间内存一直有效。// 局部变量在函数结束时被释放,但指针仍然存在,此时指针就成为了野指针。// 指针在整个程序运行期间一直指向有效的内存。// 创建一个指针指向一个新分配的整数内存。一、确保指针指向有效的内存。

2024-08-25 22:14:26 90

原创 在go语言中什么情况下会引起Panic

fmt.Println(<-ch) // 从已关闭的通道接收数据也可能引发 panic,具体取决于接收时机。ch <- 10 // 向已关闭的通道发送数据会引发 panic。当进行类型断言时,如果实际类型与断言的类型不匹配,会引发 panic。对一个未初始化的指针(空指针)进行解引用操作会引发 panic。运行这段代码会引发 panic,因为除数不能为零。访问超出数组或切片长度的索引会导致 panic。四、发送或接收已关闭的通道数据。

2024-08-25 21:37:18 208

原创 中草药汇总

补气升阳,固表止汗,利水消肿,生津养血,行滞通痹,托毒排脓,敛疮生肌。归脾、肺、心、肾经。大补元气,复脉固脱,补脾益肺,生津养血,安神益智。利水渗湿,健脾止泻,除痹,排脓,解毒散结。2. 桂枝:味辛、甘,性温。发汗解肌,温通经脉,助阳化气,平冲降气。归肺、胆、脾、大肠、小肠经。清热燥湿,泻火解毒,止血,安胎。养血调经,敛阴止汗,柔肝止痛,平抑肝阳。壮肾阳,益精血,强筋骨,调冲任,托疮毒。1. 当归:味甘、辛,性温。归心、脾、胃、肝、胆、大肠经。活血祛瘀,通经止痛,清心除烦,凉血消痈。归心、肺、脾、肾经。

2024-08-25 11:16:04 136

原创 后端开发可能遇到的问题

技术解决方案:采用安全的编程规范,如对用户输入进行严格的验证和过滤,防止 SQL 注入攻击。- 技术解决方案:可以采用性能优化技术,如数据库索引优化、缓存技术(如 Redis 缓存)、负载均衡(将请求分发到多个服务器上)、异步处理(将耗时操作放入后台异步执行)等。- 原理:在团队协作开发中,不同的开发人员可能会同时对后端代码进行修改,如果版本管理不当,就容易出现代码冲突和混乱。- 原理:业务的发展可能会带来新的功能需求和业务逻辑的变化,如果后端系统的架构不够灵活,就难以进行扩展和修改。

2024-08-25 01:47:35 116

原创 数据迁移,数据整合,数据恢复

也可以使用数据仓库技术,将多个数据源的数据存储在一个集中的数据仓库中,方便进行查询和分析。在迁移过程中,可以先进行小规模的测试迁移,确保数据的准确性和完整性后,再进行大规模的迁移。总之,后端开发中的数据挑战多种多样,需要开发人员具备扎实的技术功底、丰富的经验和良好的团队协作能力。只有这样,才能在面对各种数据难题时,找到有效的解决方案,为企业的数字化发展提供坚实的支撑。原理:数据迁移的目的是将旧系统中的数据完整地转移到新系统中,同时要保证数据的格式和结构在新系统中能够被正确识别和使用。

2024-08-25 01:45:18 321

原创 奇经八脉汇总

位置:起于胞中,下出于会阴,并在此分为三支:一支沿腹腔前壁,挟脐上行,与足少阴经相并,散布于胸中,再向上行,经咽喉,环绕口唇;- 位置:位于人体前正中线,起于胞中,下出于会阴,经阴阜,沿腹部和胸部正中线上行,至咽喉,上行至下颌部,环绕口唇,沿面颊,分行至目眶下。- 位置:位于人体后正中线,起于胞中,下出于会阴,向后行于腰背正中,上至项后风府穴,进入脑内,上行巅顶,沿前额下行鼻柱,止于上唇系带处。- 位置:起于足跟外侧,沿下肢外侧上行至肩部,经颈部、耳后,前行至额部,分布于头侧及项后,与督脉会合。

2024-08-24 21:20:31 146

原创 五脏六腑汇总

关联表现:肝的功能正常时,情绪舒畅,气血调和,眼睛明亮,指甲坚韧。- 关联表现:心的功能正常时,面色红润光泽,舌色淡红,脉象和缓有力,神志清晰,思维敏捷。主通调水道,调节水液的代谢。- 关联表现:脾的功能正常时,消化功能良好,面色红润,肌肉丰满,四肢有力。- 关联表现:肾的功能正常时,骨骼健壮,头发乌黑,生殖功能正常,听力敏锐。- 主要功能:主疏泄,调畅气机,促进血液和津液的运行,调节情志,促进消化;- 关联表现:胆的功能正常时,消化功能良好,若胆功能失常,可能出现口苦、黄疸、胁痛、消化不良等症状。

2024-08-24 21:18:50 266

原创 什么是RCE漏洞

通常是由于应用程序对用户输入没有进行充分的验证和过滤,导致攻击者可以通过构造恶意输入,让应用程序在执行过程中执行攻击者指定的代码。- 例如,一个文件管理系统中,允许用户通过输入文件名进行文件搜索,如果应用程序直接将用户输入的文件名拼接到系统命令中执行,攻击者就可以通过注入恶意命令来执行任意代码。如果应用程序允许用户输入的内容被直接作为代码执行,就可能出现代码注入漏洞。- 如果应用程序在反序列化用户输入的数据时没有进行充分的安全检查,攻击者可以构造恶意的序列化数据,导致在反序列化过程中执行任意代码。

2024-08-24 21:14:34 85

原创 Android开发如何实现性能优化

例如,一些第三方库的初始化可以在使用到该库的第一个页面的 onCreate 方法中进行,而不是在 Application 的 onCreate 方法中进行。例如,在遍历大量数据时,如果不需要随机访问,可以使用迭代器遍历集合,而不是使用索引遍历,这样可以提高遍历的效率。例如,将从网络获取的图片缓存到磁盘中,下次加载时先从磁盘缓存中读取,如果没有再从网络获取,提高数据的加载速度。- 使用合适的图片加载库,如 Glide 或 Picasso,这些库可以自动管理图片的内存缓存和磁盘缓存,避免内存溢出。

2024-08-24 21:11:53 211

原创 如何实现页面跳转

目标位置</a> ,然后在另一个位置设置链接 <a href="#section1">跳转到目标位置

2024-08-24 21:06:17 371

原创 windows注册表在网络安全领域的作用

系统状态变化跟踪:注册表的变化可以反映出系统的各种状态变化,包括硬件设备的添加或删除、软件的安装与卸载、系统设置的更改等。- 阻止恶意软件的运行:了解注册表中与系统启动、服务启动等关键环节相关的键值,网络安全人员可以通过修改这些键值,来阻止已知的恶意软件的启动和运行,从而达到防范恶意软件的效果。通过分析注册表在事件发生前后的变化,可以了解到攻击的方式、途径以及可能涉及的软件或系统组件,这有助于对安全事件进行调查和溯源,为后续的安全防护措施提供依据和参考。

2024-08-24 21:02:57 258

原创 什么是RNN

为了克服这些挑战,后来发展出了长短期记忆网络(LSTM)和门控循环单元(GRU)等改进的 RNN 变体,它们通过引入门控机制更好地处理长期依赖问题,提高了 RNN 的性能和实用性。在每个时间步,网络接收当前输入和上一个时间步的隐藏状态,经过计算产生当前时间步的输出和新的隐藏状态。1. 反馈连接:RNN 引入了反馈连接,允许信息在时间步上循环传递,使得网络能够处理序列数据,如时间序列数据、自然语言文本等。1. 处理序列数据:擅长处理具有时间顺序或先后关系的序列数据,能够捕捉序列中的上下文信息和长期依赖关系。

2024-08-24 21:01:05 138

原创 Go Micro如何实现注册与发现

通过以上步骤,在 Go Micro 中实现了服务注册与发现,服务在启动时会将自己注册到注册中心,其他服务可以通过注册中心发现并调用目标服务。- 在 main 函数中,调用 service.Run() 启动服务,此时服务会将自身信息注册到注册中心。- 在你的服务代码中,首先需要初始化一个 Micro 服务对象。- 在需要调用其他服务的代码中,创建一个 Micro 客户端。// 创建 Consul 注册中心。// 其他服务初始化代码...// 初始化服务其他代码...// 创建客户端其他代码...

2024-08-24 20:57:22 262

原创 文件后缀是什么

例如,对于一些特定类型的文件,如可执行文件(通常具有“.exe”、“.dll”等后缀),文件系统可能会设置不同的权限和访问控制机制,以确保系统的安全性。例如,当用户双击一个“.pdf”文件时,操作系统会查找与“.pdf”后缀关联的 PDF 阅读器应用程序,并启动该程序来打开文件。例如,在硬盘的文件分配表(FAT)或其他文件系统结构中,文件名和后缀作为一个整体被存储在特定的位置,以便在需要时能够快速找到文件。应用程序在处理文件时,通常会依赖文件后缀来确定文件的格式和内容结构,以便正确地解析和处理文件。

2024-08-24 12:53:32 217

原创 一些电网内部配网考试知识点汇总

**一、开关柜相关**开关柜应分为断路器室、母线室、电缆室和控制仪表室等金属封闭的独立隔室,其中断路器室、母线室和电缆室均有独立的泄压通道;断路器室的活门应标有母线侧、线路侧等识别字样;开关柜应采用不同源、不同原理的两套电气指示装置;开关柜内二次回路接线端子应具备防尘与防潮功能;开关柜柜内开关设备可选用负荷开关、断路器、负荷开关-熔断器组合电器、隔离开关等,各设备的功能和性能应满足相关标准的规定;开关柜柜内负荷开关可选用二工位或三工位负荷开关;弹簧操作机构应采用手动或电动机储能,可紧急跳闸;环网柜、二次回

2024-08-24 12:28:54 549

原创 钢琴中伴奏怎么加花

比如在抒情的歌曲中,为伴奏的和弦添加回音效果,能营造出浪漫的氛围,让听众沉浸在温柔的音乐中。(1)和弦内音跳进:在伴奏的和弦进行中,可以使用和弦内音的跳进,增加音乐的张力。比如在鼓点或贝斯的节奏中,使用节奏模进可以让伴奏更加有力,为歌曲提供稳定的节奏基础,让听众更容易跟随节奏舞动。例如在歌曲的不同段落中,使用相似的和弦模进,能使音乐更加统一,让听众感受到音乐的整体性。比如在鼓点或贝斯的节奏中,重复一些特定的节奏模式,能让伴奏更加有力,为歌曲提供稳定的节奏基础。节奏的变化可以为伴奏带来不同的动感和韵律。

2024-08-24 12:28:40 211

原创 钢琴中双音六度八度的作用

音响效果:八度音程在听觉上具有相似性,高八度的音听起来像是低八度音的重复,但更加明亮和尖锐。- 和声作用:在和声中,八度音可以加强某个音的力度和稳定性,也可以用来丰富和声的层次感。- 和声作用:双音可以作为和声的基本单位,通过不同的双音组合可以构建出各种和声进行。- 和声作用:在和声中,六度音程可以增加和声的色彩和变化,同时也具有一定的稳定性。- 和声进行:六度音程常常出现在和声进行中,与其他音程配合,营造出丰富的和声效果。- 和声伴奏:在伴奏中,八度音可以用来强化和声的根音,使和声更加稳定和有力。

2024-08-24 12:27:54 163

空空如也

空空如也

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

TA关注的人

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