自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

边城水手的专栏

像鱼一样自由的飞翔

  • 博客(96)
  • 资源 (35)
  • 收藏
  • 关注

原创 django urllib2来做http proxy,非常简单~~

from django.http import HttpResponseimport urllib2Prefix="http://www.abc.com/"opener = urllib2.build_opener(urllib2.ProxyHandler({'http':Prefix}))urllib2.install_opener(opener)def api(request)

2017-07-11 10:52:41 1527

原创 在64位contos上安装内存池(Memory Pool) tcmalloc

1,安装tcmalloc所需的libunwind库[64位系统需要安装,32位系统无需安装]wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gztar zxvf libunwind-0.99-alpha.tar.gzcd libunwind-0.99-alpha/CF

2012-12-13 11:34:08 1914

原创 memcached与redis技术的对比试验

本文以高性能nginx服务器为应用背景,想利用缓存技术来减轻系统负荷,加快响应时间,从而增加web服务器的吞吐量。redis是一种分布式内存数据库,memcached是一种内存缓存技术,它们都采用key-value方式来存取数据。不同的是redis具有硬盘备份技术,重启不丢失数据,而memcached是纯内存,重启会丢失数据。采用思路是:当nginx入口模块拿到数据请求,过滤内容无关字

2012-11-08 10:50:01 1652

原创 linux 文件行处理命令

linux下的文件类型LINUX中的文件类型d  目录文件。l  符号链接(指向另一个文件,类似于瘟下的快捷方式)。s  套接字文件。b  块设备文件,二进制文件。c  字符设备文件。p  命名管道文件。-  普通文件,或更准确地说,不属于以上几种类型的文件。重点注意的是普通文件,在查看文件类型的时候使用file命令和ll命令结合来查看文件的类型设备文件分为Block Devi

2012-10-30 15:45:07 2378

转载 杜绝“野指针”

“野指针”不是 NULL 指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if 语句很容易判断。但是“野指针”是很危险的,if 语句对它不起作用。“野指针”的成因主要有两种:(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL 指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法

2012-09-26 10:28:35 705

原创 linux进程相关的命令

Linux下面的进程涉及的命令有: at, bg, fg, kill, crontab, jobs, ps, pstree, top, nice, renice, sleep, nohup。(1)任务前后台运行切换指定后台运行:command &比如:    sleep 1s &将其调回前台 fg即可前台到后台vi .bashrc然后在vi里用ctrl

2012-09-25 15:32:00 1004

原创 centos-5.8安装gnome桌面系统,安装并配置vncserver远程登录

第一步:安装gnome桌面系统安装过程:# wget http://www.vpsyou.com/sh/xwindow.sh;# sh ./xwindow.sh;如果该链接下载不下来,可以直接创建xwindow.sh,并运行之,内容如下:#!/bin/sh# This script is FREE and written by www.vpsyou.com# ins

2012-09-24 18:04:42 7810

转载 深入学习Make命令和Makefile

一、都是源文件太多惹得祸当我们在开发的程序中涉及众多源文件时,常常会引起一些问题。首先,如果程序只有两三个源文件,那么修改代码后直接重新编译全部源文件就行了,但是如果程序的源文件较多,这种简单的处理方式就有问题了。设想一下,如果我们只修改了一个源文件,却要重新编译所有源文件,那么这显然是在浪费时间。其次,要是只重新编译那些受影响的文件的话,我们又该如何确定这些文件呢?比如我们使用了

2012-09-22 17:28:22 1931 1

原创 vim配色方案设置(更换vim配色方案)

(1)安装vim后,执行命令  whereis vim 你会看到返回结果:vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz注意:/usr/share/vim 为vim为用户提供的共享数据或设置方案选择(2) 在你的家目录下创建.vimrcset tabstop=4set softtabstop=4

2012-09-14 19:50:24 8861

转载 10个非常不错的CSS技巧

在这里,巧妙的运用CSS的技巧,可以让你不用修改HTML就能得到很好的博客或者模板外观。我收集了一些非常有用的CSS技巧让我们设计博客时更炫更酷。设计模版和博客主题时,我经常“不断推敲和尝试CSS(Hit and Trial CSS ),我只看哪种配色方案和哪种CSS属性的结合能使页面的元素更完美。对了。之所以说是“不断推敲和尝试CSS”是因为在得到

2012-09-11 11:14:08 703

原创 C++里的强制类型转换符reinterpret_cast、static_cast 、dynamic_cast、const_cast 区别

C 风格(C-style)强制转型如下:(T) exdivssion // cast exdivssion to be of type T函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式

2012-08-30 10:42:33 3948

原创 SVN使用手册

1、检出svn  co  http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码svn  co  svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码svn  checkout  http://路径(目录或文件的全路径) [本地目录全路径] --usern

2012-08-28 10:09:04 938

转载 C语言注释风格(函数、功能、输入、输出、返回)

C语言编程规范-注释  规则:1:一般情况下,源程序有效注释量必须在20%以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改

2012-08-21 10:47:03 23775

原创 程序员在linux下有用的终端命令

文件编码转换工具enca:enca -L zh_CN -x UTF-8 file 将文件编码转换为"UTF-8"编码enca -L zh_CN -x UTF-8 file2 假如不想覆盖原文件可以这样打开ISO文件:mount -o loop test.iso /cdrom   将ISO文件挂载到cdrom文件夹中umount /cdrom  取消挂载修改默认启动的操作系

2012-08-17 11:42:59 2591

原创 vim 参考手册

索引跳转undo代码折叠缓冲区标签文件打开与保存插入光标移动复制粘贴删除缩进查找替换bookmarksctagsbash自动补全分屏diff其他 跳跃指令 (jumps)跳跃指令类似于游览器中的按钮CTRL-] -> 跟着link/tag转入 (follow link/tag)CTRL-o -> 回到上一次的jump (go back)CTRL-i -> 跳

2012-08-15 14:52:27 556

原创 CentOS中vsftp安装与配置

1. 安装使用chkconfig --list来查看是否装有vsftpd服务;使用yum命令直接安装:yum -y install vsftpd然后为它创建日志文件:touch /var/log/vsftpd.log2.建立ftp用户及主目录:    # mkdir /var/ftp    # useradd -d /var/ftp ftp3. 配置vsftp服

2012-08-12 23:45:14 3630

原创 C++ 中的特殊关键字

typename1)typename   var_name;表示var_name的定义还没有给出,这个语句通常出现在模版的定义内,例如:       template          void   f()   {           typedef   typename   T::A   TA;   //   声明   TA   的类型为   T::A

2012-08-09 09:35:35 794

转载 c++中如何写参数不定的函数

#include stdio.h>#include stdarg.h>       //要包含这个头文件void variable(int i, ...){    int j = 0;      va_list arg_ptr;    //第1步,定义这个指向参数列表的变量va_start(arg_ptr, i);//第2步,把上面这个变量初始化.即让它指向参数列表

2012-08-08 16:04:39 12910

原创 C++代码规范

目录一、      头文件   11.    define的保护...12.    头文件依赖...13.    内联函数...14.    -inl.h文件...15.    函数参数顺序...16.    包含文件的名称及次序...2二、      作用域   31.    非成员函数、静态

2012-08-07 10:23:47 768

转载 linux 除了某个文件或某个文件夹以外全部删除

比如一个目录下有1,2,3,4,5这五个文件,现在我需要删除除了2以外的所有文件,那么我可以使用find .  ! -name 2 -exec rm -f {} \;当然你还可以配合着 -maxdepth 来更精准的删除了.下面演示删除的范围仅限于当前目录.find .  -maxdepth 1 ! -name 2 -exec rm -f {} \;下面提供Linux下find

2012-08-06 14:00:15 866

转载 批量修改文件名后缀

可以复习一下xargs的用法,和变量的一些高级操作技巧如何批量把若干文件从一个扩展名改为另一个扩展名?比如把后缀gz,改为zip答:1.for file in *.gz; do mv $file `basename $file .gz`.zip; done 或(也适合ksh) for file in *.gz; do mv $file ${file%.gz}.zip; done

2012-06-25 16:51:03 1023

转载 linux 转换文件名编码和文件编码

查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim 中可以直接查看文件编码:set fileencoding即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在~/.vimrc 文件中添加以下内容:set encoding=utf-8 fileencodings=ucs-bom,utf-8,

2012-06-25 16:50:26 483

原创 用JAVA实现的第二类读者写者问题

//--Semaphore.javapackage rw;public class Semaphore { private int value;//记录希望访问临界资源的线程的计数器个数 public Semaphore(int i) { this.value=i; } public synchronized void P() { value--; if(val

2012-03-13 10:47:21 2026

转载 C/C++面试、笔试题目(五)

1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C

2012-02-24 17:20:32 540

转载 C/C++面试、笔试题目(四)

一位同学整理的常见笔试/面试题目,答案仅供参考,不代表本人观点。 这个东西有些参考价值,和同学讨论一下发现还是有些错误,1.已知strcpy函数的原型是:char * strcpy(char * strDest,const char * strSrc);1.不调用库函数,实现strcpy函数。2.解释为什么要返回char *。解说:1.strcpy的实现代码

2012-02-24 17:16:20 599

转载 C/C++面试、笔试题目(三)

预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,

2012-02-24 17:13:20 582

转载 C/C++面试、笔试题目(二)

4.    static有什么用途?(请至少说明两种)1,在函数中定义的STATIC变量在函数重复调用时维持其值不变,不在执行此变量的初始化代码。2可以定义一个作用郁为当前文件的变量。2,7.    引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是

2012-02-24 17:11:27 4005

转载 C/C++ 笔试、面试题目(一)

C/C++ 笔试、面试题目大汇总 1.求下面函数的返回值(微软)int func(x) {     int countx = 0;     while(x)     {           countx ++;           x = x&(x-1);      }     return countx; }

2012-02-24 17:08:55 1093 1

原创 fedora 14 安装 gforce310 驱动

今天早上要在fedora下玩一个类似跑跑卡丁车的游戏,无奈驱动不支持3D,因此开始了一早上的装驱动之旅,网上资料很多,但都不实用,经过摸索最终解决,将我的经验分享下来吧。我的uname -r为:2.6.35.6-45.fc14.i686.PAE错误提示信息为:ERROR: You appear to be running an X server; please exit X befor

2011-11-03 11:53:09 868

转载 java static final 初始化

1.static修饰(类变量)一个属性字段,那么这个属性字段将成为类本身的资源,public修饰为共有的,可以在类的外部通过test.a来访问此属性;在类内部任何地方可以使用.如果被修饰为private私有,那么只能在类内部使用. public class T

2011-07-06 14:46:11 1472 2

原创 嵌入式技术开发学习

嵌入式技术开发学习经验1、关于ARM和嵌入式系统方向2、学习嵌入式的一点建议3、ARM开发经典学习网站推荐4、谨献给为了知识执着的嵌入式初学者5、单片机破解的常用方法及应对策略6、嵌入式人才的发展方向7、嵌入式软件测试的十大秘诀8、嵌入式系统软件及编程语言9、我的嵌入式之路10、嵌入式核心书籍11、嵌入式内功.扎马步12、关于C的0x8本“经书”[嵌入式必读]13、想成为嵌入式程序员应知道的0x10个基本问题14、嵌入式内功.葵花宝典15、嵌入式OS你用了吗16、vxworks测试题及解答17、offs

2011-04-24 21:12:00 1937 1

原创 [Ubuntu] Dell Optiplex 380 使用Ubuntu 10.04没有声音 -- Ubuntu 10.04 has no sound in Dell Optiplex 380

<br /><br />Because the Dell Optiplex 380 is too new to Ubuntu, so the drivers of sounds is not really well.<br />After I update the OS from 9.10 to 10.04, there is no sounds!<br /> <br />But at last, I found the way to resolve this.<br /> <br /> <br /> 

2011-04-21 17:34:00 1148

转载 install flash media server3.5 on ubuntu server 10.04

Run the following commands to install Flash® Media Server on Ubuntu: markus@ubuntu:~$ wget markusbe.com/ifu markus@ubuntu:~$ bash ./install-fms-3.5.3-ubuntu These commands download and run the install script. Ubuntu version support Ubuntu version 32 Bit 64

2011-04-14 14:52:00 1555

原创 单一IP地址对多域名-Ubuntu下的一IP多域名解决方案

比如你的WEB工程的文件名为vpsonorg步骤一:设定一个站点配置文件:在使用winscp登录后在/etc/apache2/sites-available/目录下建立一个文件vpsonorg然后在文件中输入如下的内容。ServerAdmin [email protected] /var/www/vpsonorgServerName vpson.orgS

2011-02-24 16:37:00 1196

原创 ubuntu server 10.04 搭建JSP环境

1 安装java<br />sudo apt-get install sun-java6-jdk sun-java6-fonts sun-java6-plugin<br />可能会先要求装jre,装就是了<br />sudo update-java-alternatives -s java-6-sun<br /> 2 环境变量<br />sudo vim /etc/environment<br />加入 JAVA_HOME=/usr/lib/jvm/java-6-openjdk/<br />PATH改为如下

2011-02-13 17:00:00 535

原创 ubuntu下SVN服务器安装配置

<br />ubuntu下SVN服务器安装配置 一、SVN安装<br />1.安装包<br />$ sudo apt-get install subversion<br />2.添加svn管理用户及subversion组<br />$ sudo adduser svnuser<br />$ sudo addgroup subversion<br />$ sudo addgroup svnuser subversion<br />3.创建项目目录<br />$ sudo mkdir /home/svn<br

2010-12-01 23:03:00 497

原创 ubuntu server 升级桌面系统+远程登录

安装桌面系统sudo apt-get install x-window-system-core #安装x-windows的基础sudo apt-get install gdm #安装登录管理器 还可以为kdm/xdmsudo apt-get install ubuntu-desktop #安装Ubuntu的桌面 还可以为Kubunut-desktop/ Xubuntu-desktopsudo apt-get install gnome-core #安装GNOME的一些基础安装远程登录1。安装

2010-12-01 16:23:00 1006

原创 一些图论、网络流POJ题总结、汇总

<br /><br />最短路问题<br />此类问题类型不多,变形较少<br />POJ 2449 Remmarguts' Date(中等)<br />http://acm.pku.edu.cn/JudgeOnline/problem?id=2449<br />题意:经典问题:K短路<br />解法:dijkstra+A*(rec),方法很多<br />相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144<br />该题亦放在搜索

2010-11-30 10:09:00 819 2

原创 POJ1149最大网络流

 这道题目的大意是这样的:有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。    问总共最多能卖出多少头猪。    举个例子来说。有 3 个猪圈,初始时分别有 3、 1 和 10 头猪。依次来了 3 个顾客,第一个打开 1 号 和 2 号猪圈,

2010-11-28 15:11:00 850 1

转载 Perl VS PHP

Perl VS PHP 比較表<br />這份之前找到的 Perl VS PHP 的對照表, 不過原始網站連不進去, 幸好當初有另存下來. 先貼起來放著. 以防流失...<br />原始網站: Perl/Php Translation<br />其它參考可見: PHP in contrast to Perl <br /> td { font-family: helvetica, arial;}pre, xmp { font-family: courier;}a {

2010-11-11 17:33:00 1968

《Optimizing software in C++》

An optimization guide for Windows, Linux, and Mac platforms By Agner Fog. Technical University of Denmark.

2022-02-07

tpd_reactor_proactor.pdf

reactor和proactor的区别

2021-08-23

WiscKey - Separating Keys from Values.pdf

We present WiscKey, a persistent LSM-tree-based key-value store with a performance-oriented data layout that separates keys from values to minimize I/O amplification. The design of WiscKey is highly SSD optimized, leveraging both the sequential and random performance characteristics of the device. We demonstrate the advantages of WiscKey with both microbenchmarks and YCSB workloads. Microbenchmark results show that WiscKey is 2.5×–111× faster than LevelDB for loading a database and 1.6×–14× faster for random lookups. WiscKey is faster than both LevelDB and RocksDB in all six YCSB workloads.

2021-03-30

Data Page Layouts for Relational Databases.pdf

Relational database systems have traditionally optimized for I/O performance and organized records sequentially on disk pages using the N-ary Storage Model (NSM) (a.k.a., slotted pages). Recent research, however, indicates that cache utilization and performance is becoming increasingly important on modern platforms. In this paper, we first demonstrate that in-page data placement is the key to high cache performance and that NSM exhibits low cache utilization on modern platforms. Next, we propose a new data organization model called PAX (Partition Attributes Across), that significantly improves cache performance by grouping together all values of each attribute within each page. Because PAX only affects layout inside the pages, it incurs no storage penalty and does not affect I/O behavior. According to our experimental results (which were obtained without using any indices on the participating relations), when compared to NSM (a) PAX exhibits superior cache and memory bandwidth utilization, saving at least 75% of NSM’s stall time due to data cache accesses, (b) range selection queries and updates on memory-resident relations execute 17-25% faster, and (c) TPC-H queries involving I/O execute 11-48% faster. Finally, we show that PAX performs well across different memory system designs.

2021-03-30

Transactional Information Systems.pdf

事务锁

2021-03-30

On Optimistic Methods for Concurrency Control.pdf

乐观锁协议

2021-03-30

Principles of Distributed Database Systems.pdf

Principles of Distributed Database Systems

2021-03-30

Presto-SQL-on-Everything.pdf

SQL引擎构建

2021-03-29

A Critique of ANSI SQL Isolation Levels.pdf

SQL事务隔离级别经典论文

2021-03-29

内存分配器dlmalloc 2.8.3源码浅析.doc

内存分配器dlmalloc 2.8.3源码浅析.doc

2021-03-01

Column_Store_Tutorial_VLDB09.pdf

Column_Store_Tutorial_VLDB09.pdf

2021-03-01

内存分配器dlmalloc 2.8.3源码浅析.pdf

内存分配器dlmalloc

2021-02-01

rocksdb-rof.pdf

Optimization of RocksDB for Redis on Flash

2021-02-01

Memory_Barriers_a_Hardware_View_for_Software_Hacke.pdf

Memory_Barriers_a_Hardware_View_for_Software_Hacke.pdf

2021-02-01

malloc.pdf

malloc.pdf

2021-02-01

java中文api1.6

CHM格式的电子文档,JAVA1.6的API,非常好用哦

2012-05-17

ubuntu server最佳方案

文档是ubuntu server最佳方案的说明,你可以参照文档来一步步配置你自己的ubuntu服务器哦

2012-05-17

简明_Python_编程规范

文档中是详细的简明_Python_编程规范,对于初学者很有帮助哦

2012-05-17

JAVA实现哲学家就餐问题

用JAVA实现哲学家就餐问题,本源码中采用的是奇数号哲学家先拿左手后拿右手,而偶数号哲学家采用先拿右手后拿左手的策略来预防死锁。

2012-03-06

linux下C语言SOCKET编程客户端、服务器端代码

linux下C语言SOCKET编程客户端、服务器端代码

2011-11-04

北京大学计算机系汪小林算法课讲义

对一种算法设计思想的理解或探讨 对一类或一个问题的探讨及算法设计与分析 对某种或某类算法的优化方法的介绍 对较难练习或习题的解题报告 对某个知识点的理解或理解思路

2011-02-05

flex中文教程-flex中文帮助文档

该部分文档的内容是为用户提供关于Adobe®Flex 工作机制的一个快速综述。通过本书的学习,你可以创建你的Flex 应用程序,并将它与你以前所熟悉的Web 开发技术 进行比较,以领会Flex 的内涵和精髓。

2011-02-05

高级排序算法C++源码

源码中含有多个快速排序算法的类。而且还可以比较它们的排序速度。

2010-04-16

大整数类的C++源码实现

这是一个C++程序源码,其中实现了长整数的加减乘除操作。可供参考。。。

2010-04-16

C程序中嵌入汇编语言

这是一个简单的C语言中嵌入汇编代码的实例,通过这个例子你可以清楚的了解到代码的结构。

2010-04-16

银行顾客排队&同步互斥操作C++源码

这个程序实现了银行中多个柜台,多个队列,在WINDOWS下对同步互斥变量的操作。

2010-04-16

多进程多线程快速排序C++源码

这是在WINDOWS下实现的多进程多线程的快速排序程序,其中为了加快排序速度使用了文件映射技术。

2010-04-16

麻将游戏C++面向对象程序源码

这是一个用C++实现的麻将游戏,界面为控制台,干净简洁,实现了麻将游戏的基本原理。

2010-04-16

CDM 2.02.04(usb转串口).exe

这是一个将USB转为多串口的驱动程序。非常方便。双击运行之后就可以插入你的多口USB线了。

2010-04-16

贪吃蛇游戏源码(C++)

用C++控制台实现了贪吃蛇游戏,程序注释较详细。

2010-04-10

离散数学教程习题解答(屈婉玲)

北京大学出版社 离散数学教程习题解答 屈婉玲 主编

2010-04-10

gvim7.1工具包

windows下的GVIM工具 更灵活更方面 同时也可以作为过渡到LINUX下的过渡练习工具

2010-04-10

Visual Assist(c++助手)

用于VC下的快速辅助编程 有快速注释 关键字提示 关键字高亮等功能

2010-04-10

80x86汇编工具包

包含了MASM系列的汇编工具 用于学习80X86汇编语言

2010-04-10

面向对象五子棋VC程序

VC下用MVC框架实现了五子棋程序,可插拔的接口,如果有兴趣可以扩展为更高级的界面。

2010-01-05

空空如也

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

TA关注的人

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