自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TCP/IP协议栈学习ing

Android, Linux,TCP/IP Stack~~~~

  • 博客(113)
  • 资源 (19)
  • 论坛 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 5分钟掌握矩阵乘法的Strassen算法

By LongLuo机器学习中需要训练大量数据,涉及大量复杂运算,例如卷积、矩阵等。这些复杂运算不仅多,而且每次计算的数据量很大,如果能针对这些运算进行优化,可以大幅提高性能。一、矩阵乘法假设AAA为m×pm \times pm×p的矩阵,BBB为p×np \times np×n的矩阵,那么称m×nm \times nm×n的矩阵CCC为矩阵AAA与BBB的乘积,记作C=ABC = ABC=...

2019-08-18 18:41:55 503

原创 经典算法:从约瑟夫问题说开去

By LongLuo约瑟夫问题是每个学计算机的同学都会遇到的经典编程题,下面我们就来通过这道题对好好学习下算法和编程吧,Let’s go!一、约瑟夫问题简介据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,...

2019-08-18 11:15:50 137

翻译 掌握Java: HashMap

HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地存、取value。下面就来分析HashMap的存取。一、定义HashMap实现了Map接口,继承AbstractMap。其中

2016-09-22 09:27:58 511

翻译 关于Java Collections应知应会

翻译 By Long Luo下面这些问题Stackoverflow上关于Java collections提问和讨论最多的问题。在你阅读这些问题之前,有必要先阅读下这篇文章3分钟速读:图解Java Collections的接口以及类层级关系。1. 什么时候用LinkedList?什么时候用ArrayList?ArrayList本质上是一个数组。它的元素可以直接通过

2016-09-12 11:40:41 580

翻译 Java Array最重要的10个方法

本文将展示Java Array的最重要的10个方法:0. 声明一个数组String[] aArray = new String[5];String[] bArray = {"a","b","c", "d", "e"};String[] cArray = new String[]{"a","b","c","d","e"};1. 打印数组int[] intArray = { 1, 2, 3, 4,

2016-09-09 09:20:25 808

翻译 关于Java字符串(String)10个最常见问题

Java语言中,String一直很基础,但很多人都很多概念还是很模糊。这里我们选取了网络上最常见的10个问题,希望通过1. 如何对字符串进行比较?用“==” 还是equals()?简单来说,如果引用是否相同那么使用==, 判断值是否相等则用equals()。除非你想判断2个字符串是否是同一对象,否则你都应该使用equals()。2. 为什么在安全敏感信息场合应该用char[]而不是string?St

2016-09-08 14:54:16 706

翻译 3分钟速读:图解Java Collections的接口以及类层级关系

翻译 By Long Luo本文翻译自The Interface and Class Hierarchy Diagram of Java Collections,主要通过一系列简单易懂的图片让你迅速了解Java容器类,容器接口以及类层级关系。大段文字会看得很烦,图片才是王道!一、 Collection vs Collections“Collection”和”Collections”是2个完全不同的概

2016-09-08 10:25:08 1493

原创 5分钟学会Java反射

By Long Luo 最近在部门内部做了一次知识分享,关于***Java反射***,因此有了这篇文章:《5分钟学会Java反射》。这篇文章篇幅不长,用了大量示例,力求在很短的时间里让大家明白Java反射知识。关于Java反射,我们需要弄懂以下几个问题:反射是什么?反射有什么用?怎么用反射?下面我们来一一进行讲解:一、反射是什么?Reflection的意思是“反射、映象、倒影”,用在J

2016-09-07 11:05:21 1057

原创 Android自定义View: 如何实现类钟摆的动画效果?

By Long Luo继第一篇Android自定义View:如何实现一个模拟时钟?,我们使用Android自定义View实现了一款模拟表盘,第二篇Android自定义View:另一种实现手表指针转动的方法我们又通过另外一种方法实现了手表指针的另外一种转动实现。在日程生活中,我们常见的挂钟实际都是有个钟摆的,那么,如果我们想在我们所作的模拟时钟实现这种钟摆动画呢?那么具体应该如何实现呢?一、钟摆遇到问

2016-09-06 20:08:19 1819

原创 Android自定义View:另一种实现手表指针转动的方法

By Long Luo在上一篇Android自定义View:如何实现一个模拟时钟?中我们实现了一款模拟时钟。在上一篇中,我们使用了Canvas中的canvas.rotate()方法让坐标系旋转从而绘制出指针。但是,其实我们也可以使用另外一种方法去实现指针绘制,这种更直观,更容易理解。一. 绘制指针要绘制指针,需要知道指针的起点和终点,而起点就是圆心,终点就需要根据指针的sin及cos值及圆心进行对应

2016-08-26 09:15:04 1023

原创 Android自定义View:如何实现一个模拟时钟?

By Long LuoAndroid中自定义控件一直都是Android开发中的一个难点。最近看大牛@Tomcat的猫写的《Android群英传》里面的第六章Android绘图机制及处理技巧,里面通过Canvas实现了一个如下所示的仪表盘:在书中详细描述了如何实现这个仪表盘,这里就不赘述了,可以参考其具体实现代码。但是这个表盘的指针是静止不动的,如果我们能让这个表盘的指针展示当前时间,随着时间而转动,

2016-08-05 15:47:59 1498

原创 VR晕眩原因及解决方法

前言随着VR产业渐渐进入人们的视线,VR热潮正处于爆发前期。纵观国内几家VR领域的尖端企业,中国的VR硬件与国际水准相比并不低。如果以“国际标准”Oculus的VR硬件来说,可以说与其基本持平。对于过国内广大普通产品使用者来说无疑是个好消息,国内的VR团队在保持硬件的技术过关的前提下,性价比颇高。VR晕眩的问题没有解决

2016-07-25 15:59:13 5340

原创 Android编译时出现aapt.exe finished with non-zero exit value 1错误的解决方法

By Long Luo昨天在开发一个项目时,在Android Studio中编译时,gradle编译之后出现了如下错误:Error:Execution failed for task ':samples-simplevideowidget:processDebugResources'.> com.android.ide.common.process.ProcessException: org.g

2016-06-01 22:20:35 19480 6

原创 Android Launcher 学习笔记

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-03-24 14:26:02 668

原创 学钢琴最重要的是什么?

文/ Long Luo今天下午去玛格丽特音乐文化教育中心以地板价试听了一节钢琴课,学到了很多东西,再结合自己的一些思考,在此简单记录下来。对于成人学钢琴来说,一大问题是时间有限,如果你是个上班族,不可能有很多时间让你去学习和练习,所以你得用脑子去学习。美女老师说,你的脑子里得时时刻刻有钢琴这东西。这种潜意思的学习,你可以在脑海中想象去弹琴,多思考,多分析,多总结,带着疑问去学习,这样才会学得快。学习

2016-02-22 01:24:31 1353 1

原创 我的手机必备App

By Long Luo今天重新刷了下手机,结果之前的备份都是2个月前的,刷完机我就想了下,我手机必备App是哪些呢?列出了下面这张必备App清单:新闻ZAKER: 查看新闻,根据你的爱好订阅文章新浪微博:作为微博的重度用户,微博的媒体属性很强,大于其社交属性。我的不少朋友已经告别微博了,但是我还是喜欢微博。与其在微信上与熟悉的人聊天,不如在微博上和陌生人交流。网易新闻:交互做的很好,163评论

2015-04-22 00:41:28 2593

原创 10分钟掌握XML、JSON及其解析

By Long Luo个人博客链接引言NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满足人的生产生活需要而产生的。具体到小小的一个手机,里面蕴含的技术也是浩如烟海,是几千年来人类科技的结晶,单个人穷其一生也未必能掌握其一角。不过个人一直认为基本的技术和思想是放之四海而皆准的,许多技术未必需要我们从头到尾再研究一遍,我们要做的就是站在巨人的肩膀上,利用其成果来为人们的需求服务。随着移

2015-04-21 17:53:18 8277

原创 面试算法题:爬楼梯,N级楼梯有多少种走法?

By Long Luo个人博客链接最近去面试时,在一家小公司面试时,公司小BOSS给我出了一道算法题:一个人爬楼梯,一步可以迈一级,二级,三级台阶,如果楼梯有N级,要求编写程序,求总共有多少种走法。这个问题应该是一个很老的题目了,用中学数学来说,就是一个排列组合问题。当时拿到这个题目之后,首先想到使用递归的思想去解决这个问题:N级楼梯问题可以划分为:N-1级楼梯,N-2级楼梯,N-3级楼梯的走法之

2015-04-21 17:50:32 14870 4

原创 Google多线程面试题: 4个线程向4个文件里写入数据, 每个线程只能写一个值

By Long Luo个人博客链接最近在学习Java多线程时,遇到了一个下面的笔试题,题目如下: 编写一个程序,程序会启动4个线程,向4个文件A,B,C,D里写入数据,每个线程只能写一个值。 线程A:只写A 线程B:只写B 线程C:只写C 线程D:只写D 4个文件A,B,C,D。 程序运行起来,4个文件的写入结果如下: A:ABCDABCD...

2015-04-21 17:46:55 4391 2

原创 一道迅雷面试题:求出一个字符串中每个字母出现的次数

By Long Luo个人博客地址上次在迅雷面试的时候,遇到了一个算法题,题目是:有一个很长很长的字符串,全部都是由大写字母组成,要求求出其中每个字母在这个字符串中出现的次数。不允许使用STL中的方法。当时拿到这个题目,我首先想到了以下几个方法:穷举法,一个个比较,最后算出每个字母出现的次数,这种方法可行,但不轻巧与优雅。每个字符与’A’想减,会得到一个值,统计下这个值出现次数,和方法1类似。

2015-04-21 17:44:23 2437 1

原创 一个用于批量下载网络图片的Shell脚本

By Long Luo最近为了做好一个天气预报的项目,需要从Yahoo下载一些天气图标,但是由于图标比较多,有80多张。图标是存储在Yahoo Image网站上的。迅雷不支持https的下载,虽然可以在浏览器下载,但是在浏览器下载太慢,于是写了一个批量下载图片资源的Shell脚本,完美的解决了这个问题。Yahoo天气图标的地址规则如下:`https://s.yimg.c

2014-09-13 23:15:11 5896

原创 如何使用Google Volley网络库发起带Header的HTTP请求?

public void makeHTTPrequest(String url) { MyLog.d(TAG, "makeHTTPrequest, url=" + url); mQueue = VideoApplication.getInstance().getRequestQueue(); JsonObjectRequest jsonObjReq

2014-09-07 12:58:35 12772 3

原创 第一个Web前端开发项目:天气应用

By Long Luo最近几天学习了下网页开发,通过学习,完成了第一个Web前端开发项目:天气应用数据源是Yahoo! Weather使用了jQuery库开发,虽然现在啥都不会,也就到处copy。Created by Long Luo at 2014-09-07 11:36:20 @Shenzhen, China.

2014-09-07 11:44:16 2220 1

翻译 Android音频: 如何使用AudioTrack播放一个WAV格式文件?

翻译 By Long Luo原文链接:Android Audio: Play a WAV file on an AudioTrack译者注:1. 由于这是技术文章,所以有些词句使用原文,表达更准确。2. 由于水平有效,有些地方可能翻译的不够准确,如有不当之处,敬请批评指正.3. 针对某些语句,适当补充了上下文及更适合中文阅读,尽量做到信达雅。如果你已经成功地了解了关

2014-06-22 17:49:47 10545 1

原创 如何通过笔迹分析一个人的性格?

By Long Luo## 字如其人我个人是一直相信"字如其人"的,因为我相信一个人愿意去把字写的好看,一定是花了不少精力去学习,同时加以练习。TA至少具有以下几个特点:强力的毅力:想练好字一定是需要花费不少时间去分析一些好字,具体好在什么地方,结构,字的笔画,字形,连笔,分解。然后辅以大量的练习才能达到一定的成就。这就需要TA能够静下心来去练习。

2014-06-11 21:21:07 3781 1

原创 WWDC2014总结之iOS8篇

By Long Luo2014.06.03 Apple举行了万众瞩目的WWDC2014,发布了OS X Yosimite和iOS8,最近几天看了一部分Keynote,从网上搜集了一部分资料,将这次WWDC14的一些新功能点汇总出来,同时加入了自己的一些想法,探讨下码农群体应该注意哪些趋势。Continuity & Seamlessly总体来说:系统功能更加完善,更加

2014-06-06 00:45:22 1633

原创 我看车展感(tu)想(cao)

By Long Luo2014年的06月01日,去参观了2014年深圳·香港·澳门国际车展,算是第一次参加车展吧,按照惯例谈谈感(tu)想(cao)吧:1. 学到的东西:英语:车展:Auto Show or Motor Show手动挡:MT(Manual Transmission)自动挡:AT(Automatic Transmission)手自一体:AMT(Aut

2014-06-03 00:45:41 2212 1

翻译 iOS编程基础: Hello World App是如何运作的?

翻译 By Long Luo原文链接:iOS Programming Basic: How Does the Hello World App Work?译者注:1. 由于这是技术文章,所以有些词句使用原文,表达更准确。2. 由于水平有效,有些地方可能翻译的不够准确,如有不当之处,敬请批评指正.我希望你享受了第一个iOS编程教程,同时已经创造了你的第一个App。在进入下

2014-05-05 21:12:41 1482

原创 学车科目二要点总结

By Long Luo2014年的51 3天假期,有2个上午都去学车去了,因为不久之后我就要去考试了,总之呢,很多事情都是做的越早越好。今天把科目二考试的一些注意事项给记下来:0. 准备工作上车之后,第一步是调好靠背,后视镜,注意座椅不要调到太靠前,系好安全带。后视镜要保持后轮车毂在后视镜中间位置,把手在后视镜上方。松手刹,踩住离合器和刹车,离合器踩到底,挂一档起步

2014-05-03 13:18:10 3768 1

原创 一道有趣的算法题:仿照Excel的列编号,给定一个数字,输出该列编号字符串

By Long Luo最近遇到一个算法题:仿照Excel的列编号,给出一个数字,输出该列编号字符串。例如:A对应1,Z对应26,AA对应27,AZ对应52 ......这个题目是一个典型的26进制思路去处理,但是这个题目里面有很多陷阱,在1, 26, 52等特殊情况进行考虑,经过晚上接近1个小时的编写,完成的代码如下:C++代码如下:#inclu

2014-05-02 22:58:30 3497 1

原创 如何设计一个优秀的App?

By Long Luo题目有点标题党了,因为这是一个非常大的课题,涉及面的东西之多,可以写好几本书了。这几年,体验了很多App,也亲自写了一些App,最近又去思考了一些东西,在此把自己的一些想法写出来,希望能够抛砖引玉,一起交流一些想法。1. App是为了解决什么问题?App, 也就是 应用软件。在PC互联网时代,传统企业顶多爷就是一个IT部分,负责公司

2014-04-13 22:32:50 4041 1

原创 Android App性能优化笔记之一:性能优化是什么及为什么?

By Long Luo周星驰的电影《功夫》里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”。在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住这个时机,迅速开发出产品,成为至关重要的一环。相对传统互联网时代的PC产品,用户对移动端产品的容忍度更低。而一款移动应用在推出的时候可能只是接近完成的状态,这就需要通过快速的迭代开发来更新产品,不

2014-04-12 15:33:54 22480 5

原创 游戏引擎学习笔记:介绍,架构,设计及实现

By Long Luo从小到大,虽然玩过的游戏不少,但是从写程序开始,目前为此仅仅写过2个游戏。其一是2011年在MTK平台下写的贪食蛇,其二是2010年在嵌入式开发板上写过一个迷宫的游戏。第一个代码量大概有3000行左右,第二个有2000行左右。这2个游戏都很简单,而且网上有很多现成的例子可供参考,因此难度也比较低。这2天把拖延了好久的《Android应用开发揭秘》的游戏

2014-04-08 08:11:58 8988

原创 学车思考之一:方向盘转多少,车轮就转多少度对吗?

By Long Luo最近一个月在驾校学车,前2次去练车,总是不得要领,连曲线行驶开不好,被教练狂K。经历了当学渣的痛苦之后,痛定思痛,立志成为学霸。1. 面临问题:我分析遇到的问题之后,得出我面临的几个问题:方向盘打法不规范;离合器踩的不到位,车速偏快;不清楚方向盘转的度数和车轮转的度数关系;不记得当前车轮方向。清楚自己的问题就好办了,那就各个击破

2014-04-06 20:36:31 296221 28

翻译 介绍一个提高Android ListView或GridView的Smoothie库

翻译 By Long Luo     原文链接:Introducing SmoothiePattrn UI中的很大一部分是在滑动时从云端获取图片列表。所以我花了相当长的一段时间去调试,以获得滑动时的体验尽可能的流畅。在过去的几周里,我一直在试图解耦代码,完成了一个很小的库:Smoothie。Smoothie提供了一个简单的API来异步加载ListView/GridV

2014-02-15 12:47:13 3245

翻译 提升Android ListView性能的几个技巧

如何提高Android ListView的性能?这里翻译了一篇国外的技术文章,论述了ListView的原理,及提高表现性能的几个技巧:1. View是如何回收的? 2. View Holder该如何写? 3. 异步加载网络资源;4. IO线程和UI线程冲突时应该如何做?5. 人机交互;6. ListView滑动及fling各应该如何处理。 同时针对这些情况,提供了代码示例,希望对大家有所帮助。

2014-02-14 23:24:31 3555 2

原创 Android UI Layout总结之5大布局

By Long Luo在一个Android应用中,Layout是开发中的一个很重要环节,Layout是组成UI不可缺少的一部分。## Android UI 核心类在Android应用构建UI的方法有以下几种:单纯使用JAVA代码使用XML完全定义界面结合使用两者,在XML中定义,在JAVA中引用和修改Android SDK中关于UI的核心类:Andr

2014-01-23 18:14:20 6373

原创 情歌有多动听,你就有多怀疑

By Long Luo最近没怎么写东西的缘故是因为担心自己看的东西太少,读的东西太少,而想的太多。2014年的第一月也很快就要过去了,而我还没有对自己过去的一年里做出一点小结,就在这里随便扯几点吧!比如我的大学好友雷大才子,精通几门外语,学富五车,不仅文章写得好,又懂音乐,还会写诗作画,更是一名勤劳的Blogger,每次看他的博文,总能学到很多东西。### 一、Dest

2014-01-22 00:17:20 3631 7

原创 最近几天的日志和Todos

By Long Luo距离过年只有几天时间了,这2周是过年前的最后2周了。回想上一周,好像也没有完成什么事,就过去了。Guitar爬吉他音阶的时候对12345671还不太熟悉,但今天知道了1品就相当于一个半音,所以4弦空弦就相当于2,那3和4就很容易知道了,3弦空弦是5,2弦空弦是7。对于弦乐器来说,手指放轻松很重要,而且手指要求十分灵活,目前这一点对我来说还不是特

2014-01-20 23:54:34 1243

原创 试听了一节吉他课

By Long Luo又是一个周末,说明这一周又飞速的过去了,我的时间沙漏的沙子实在是过的太快了,尤其是在这个年龄,几乎是哭着送走每一天的。上午起床后想把WordPress Android客户端自己编译出来的,下载好了之后,可是编译遇到大问题,现在还没用解决,希望再花一个小时可以搞定。最近想做一个项目:主页和博客应用。可以做到展示我写的博客,给自己2周的时间,我相信我可以完

2014-01-19 19:35:56 1434 1

深入剖析printf函数

去年写了2篇深入分析printf函数的合集文章,分别是: 1. 深入剖析printf函数(上):如何不借助第三方库在屏幕上输出"Hello World"? http://blog.csdn.net/tcpipstack/article/details/8490811 第一篇主要讲述printf函数的具体调用过程、系统调用及如何使用汇编语言实现一个简单的printf函数; 2. 深入剖析printf函数(下):---形参列表和格式化输出是如何做到的? http://blog.csdn.net/tcpipstack/article/details/8279584 第二篇讲述的是printf的详细形参列表和格式化输出是如何做到的,并列举了一个串口的printf函数的详细实现来进行说明。

2013-12-25

详解C语言Struct(结构体)系列之一

详解C语言Struct(结构体)系列的第一部分的全部文章合集,具体分析文章见: http://blog.csdn.net/column/details/structure.html 第二季近期会很快提供

2013-12-23

Tcpdump For Android

首先把该文件root过的android手机的一个目录,并增加执行权限 > adb shell # cd /data # mkdir bin # exit > adb shell push tcpdump /data/bin/ > adb shell > # chmod a+x /data/bin/tcpdump 抓取网络日志,并发送到当前目录: # /data/bin/tcpdump -n -s 0 -w /mnt/sdcard-ext/aaa.pcap > adb shell pull /mnt/sdcard-ext/aaa.pcap aaa.pcap

2013-12-16

FFMpeg完美入门资料

开源FFMpeg学习资料,强烈推荐,包括FFMpeg架构、FFMpeg裁剪等。

2013-08-26

Android反编译工具包

Android反编译工具包,包括Apk反编译、Java反编译等。

2013-08-26

FFMpeg开发指南

FFMpeg开发指南, 非常好的资料。这是第一部分

2013-08-26

SQLiteExpertSetup最新专业版破解版

目前为止最新专业版破解版。 SQLiteExpertSetup.rar(官方最新专业版安装文件+破解文件)

2013-05-14

Mac_OS_X系统入门指南

Mac OS X 系统入门指南 与学习Mac OS X的一起努力!

2013-04-27

搜索引擎的高级使用(以Google为例)

Google搜索引擎高级搜索技巧 需要介绍吗?

2013-04-27

elua0.8_lua_lm3s8962烧写文件

elua0.8_lua_lm3s8962烧写文件,直接用LM Flash Prorammer软件烧写进开发板即可。

2013-01-06

32/64位pdf虚拟打印机

32/64位自适应pdf虚拟打印机 经测试,该虚拟打印机完全支持windows7系统,不管是64位还是32位都完全可以使用。

2012-11-23

《大话数据结构》所附源码

《大话数据结构》一书中所附全部源代码,推荐!

2012-11-20

华为公司内部Linux培训教程

华为公司内部Linux培训教程,对Linux的基本介绍,命令行操作有一个初步的介绍!

2012-11-20

Windows批处理Bat语言教程

Windows批处理Bat语言完整教程,希望对你编写批处理Bat脚本有所帮助!

2012-11-20

网易技术部的MySQL中文资料

网易技术部的MySQL中文资料,资料很详实丰富,强烈推荐!

2012-11-20

精通UNIX Shell脚本编程(英文版)

精通UNIX Shell脚本编程(英文版)

2012-10-30

GCC内嵌汇编语法

如何在GCC实现C语言中内嵌汇编,很好的资料

2012-10-30

White House 客户端安卓源码

White House安卓客户端安卓源码

2012-10-31

32位x86汇编语言简明教程

32位x86汇编语言简明教程,详实细致,推荐!

2012-10-31

tcpipstack的留言板

发表于 2020-01-02 最后回复 2020-01-02

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

TA关注的人 TA的粉丝

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