自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(210)
  • 资源 (236)
  • 收藏
  • 关注

转载 提高编程技能最有效的方法

提高编程技能最有效的方法2011年2月21日陈皓发表评论阅读评论 5,046 次点击    <br />StackExchange.com上有两个贴子(贴子一,贴子二),贴子名叫“What is the single most effective thing you did to improve your programming skills?” – 对你的编程技术提高最有效的一件事是什么?回复的人中给了很多很不错的建议,我把他们总结了一下,十条,相信一定会对你有用。(注意:顺序是我

2011-04-02 10:57:00 762

转载 游戏程序员养成计划

<br /><br />与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料。<br />         首先你要精通一门高级语言,比如C++或者C#,其次,要有良好的英文阅读能力。对游戏开发者来说英文阅读能力是最重要也是最基本的工具之一,因为你遇到的大部分资源都将是英文的,不要总等着别人为你翻译。慢慢尝试着阅读英文资料,你会发现其实也并没有那么难:)<br

2011-03-27 11:38:00 638

原创 case 语句注意

<br />case语句中若不加大括号则不能声明新的变量或者函数。。。<br /><br /><br />case 1:<br /><br /><br />break;<br /><br /><br /><br /><br />case 1:<br />{<br />}<br />break;

2011-03-26 10:19:00 681

转载 OGRE编译

<br />如今流行用OGRE做游戏了,直接用GL写个效果要几百行,OGRE一行代码就搞定了,让人们可以专心的把精力用于游戏的设计与逻辑上。不过OGRE的编译链接设置那相当相当繁琐啊。。搞了我整整三天。记一下~免得忘了。<br />环境是VS05,用的sdk是1.7.0(final),直接构建编译SDK的方式:<br />1、首先去http://www.ogre3d.org/官网下一个SDKv1.7.0的开发包,DOWN下来发现是个EXE,实质上还是压缩的RAR文件,直接双击它会解压到当前目录下,但

2011-03-09 10:19:00 734

转载 [c、c++]宏中"#"和"##"的用法(zz)

<br />[c、c++]宏中"#"和"##"的用法(zz)宏中"#"和"##"的用法<br />一、一般用法<br />我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.<br />用法:<br />#include<cstdio><br />#include<climits><br />using namespace std; <br />#define STR(s)     #s<br />#define CONS(a,b)  int(a##e##b)in

2011-03-08 10:17:00 488

原创 Python学习收藏

<br />学习Python最方便的参考书莫过于官方文档。Windows的安装文件里自带一个CHM格式的官方打包文档,内容非常完整。初学的话,把Tutorial浏览一遍,然后结合着Language Reference和Standard Library写程序即可入门。<br />如果想要找Python相关的书,以下是一些经典书目:<br />* A Byte of Python:入门书<br />* Learning Python:入门书<br />* Programming Python:较

2011-02-12 11:13:00 567 1

原创 网络代码平台tortoise svn+google code

<br />首先从http://tortoisesvn.tigris.org/中下载最新的tortoisesvn客户端,一路安装下去即可。<br /><br />接着在google上申请一个账号,申请好登陆之后,点击右上角的【我的账户】,在产品界面中选择【代码】,在新的界面中总侧边栏中选择【项目托管】,在新界面中的底部有【Create a new project】,点击它,按照向导创建你的项目,不过要注意的是Project name:这一项是你将来项目域名的一部分,不要有空格在字母或数字之间。这

2011-02-10 23:55:00 713

原创 使用delegate进行解耦

在MVC架构下,使用Observer(观察者)模式将核心逻辑代码与UI界面代码分离似乎天经地义的事,这样做的好处是核心逻辑代码可以独立于UI代码而存在,从而达到重用的目的。但不幸的是,从笔者经手的代码看,很多程序员并没有注意到这一点。主要问题可能包括以下两个方面: 第一是核心逻辑代码与UI界面代码相互调用关系错综复杂。由于核心逻辑代码不独立,因而很难进行提取复用。这种情况相对比较常见。 第二个问题解释起来可能更复杂一些。由于缺乏从核心逻辑代码到UI界面代码的回调机制,程序员可能会被迫使用一些极端的手法来达到

2011-02-10 21:51:00 840 1

转载 google的开源项目总结

<br />google的开源项目值 得我们一用的,这些项目很有意义,甚至可以直接用在我们自己的工作上!学习编程的的一个比较好的方式就是阅读优秀项目的源代码,从而能够了解作者的方法、 思路、技巧,另外阅读源代码对于一些朋友是枯燥乏味的,这是就可以看看项目的readme,找到项目的闪光点,我们不做开拓者那我们就做实践者和使用者, 呵呵,下面是这些项目的列表,在这里存档,已备今后查阅之用<br /> 文本文件处理:<br />Google CRUSH (Custom Report

2011-02-10 11:04:00 4736

转载 fstream.getline的坑

<br />wfstream f(data_file, wfstream::in);<br /><br />    while( !f.eof() && f.good() )<br />    {<br />        TCHAR sz[1024 * 128 ] = {0};<br />        f.getline(sz, (sizeof(sz) / sizeof(wchar_t)) - 1);<br />    }<br />两个说明,一是fstream.getline的第二个参数需要传入字符数

2011-01-29 21:05:00 1597 1

转载 优秀程序员的十个习惯

在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个条目成为你的习惯,那么你才能真正算得上是优秀程序员。 1. 学无止境。就算是你有了10年以上的程序员经历,你也得要使劲地学习,

2011-01-29 20:16:00 704

转载 一些STL,string的算法

<br />toupper, tolower<br />地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法:<br /><br />string s("heLLo");<br />transform(s.begin(), s.end(), s.begin(), toupper);<br />cout << s << endl;<br />transform(s.begin(), s.end(), s.begin(), tolower);<br />c

2011-01-29 19:52:00 589

转载 svn里的branch、trunk、tag的用处

<br />这只是个说明,你不按说明来办事也不会怎么样,svn照样工作得很好。<br />branches:分枝<br />当多个人合作(Sally和John)时,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原

2011-01-28 22:33:00 604

原创 几个STL算法:includes,set_difference、set_intersection、set_symmetric_difference、set_union, pre_permutation, next_permutation

includes:测试有序序列中是否包含另一个序列的全部元素。templatebool includes(inputIterator1 first1, inputIterator1 last1,                     inputIterator2 first2, inputIterator2 last2);templatebool includes(inputIterator1 first1, inputIterator1 last1,                     inputI

2011-01-28 22:15:00 3067

原创 seekg()与tellg()相关文件操作

<br />对输入流操作:seekg()与tellg()<br />对输出流操作:seekp()与tellp()<br />下面以输入流函数为例介绍用法:<br />seekg()是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。<br />对于第一个参数,可以是正负数值,正的表示向后偏移,负的表示向前偏移。而第二个参数可以是:<br />ios::beg:表示输入流的开始位置<br />ios::cur:表示输入流的当前位置<br />ios::end:表示输入流的结束位置<br /

2011-01-28 20:24:00 1025

原创 用_makepath和_splitpath构造路径&分解路径

<br />#include <iostream><br />#include <cstdlib><br /><br />using namespace std;<br /><br /><br />const int MAX_PATH_ = 256;<br />const int MAX_DRIVE = 16;<br />const int MAX_DIR = 128;<br />const int MAX_FILE_NAME = 128;<br />const int MAX_EX

2011-01-28 10:39:00 678

原创 自己写的一个智能指针类

<br />#pragma once<br />template <typename T><br />class PtrData<br />{<br /> friend class CSmartPtr<T>;<br />public:<br /> explicit PtrData( const T* pT):p_(pT) { count_ = 1; }<br /> ~PtrData() { delete p_; count_ = 0; }<br /> void operator ++ () { ++coun

2011-01-27 23:02:00 554

原创 google protocol buffer试用

从http://code.google.com/p/protobuf/上下载protobuf-2.3.0,解压后,打开vsprojects文件夹,然后用VS2005打开protobuf开始编译,然后生成libprotobuf,libprotobuf-lite,libprotoc三个lib,同时生成了include文件夹。。。具体操作看vsprojects下面的readme文件来看。。。。之后新建一个记事本txt文件(book.txt)在里面写package tutorial;message Person {

2011-01-27 21:08:00 904 1

转载 关于 SetProcessWorkingSetSize 和内存释放

<br />在应用程序中,往往为了释放内存等,使用一些函数,其实,对于内存操作函数要谨慎使用,比如大家常常想到的 SetProcessWorkingSetSize,其实对于windows来说,系统会自动在程序闲置时(如程序被最小化)释放内存的,自己用内存释放 时,往往会造成一些莫名的内存错误,造成自己的应用程序及系统不稳定。<br /><br />具体原理有人已经写得很清楚了,以下为转帖的几个帖子,供参考:<br />=====================================

2011-01-26 16:55:00 614

转载 如何高效地管理时间

<br />如何高效地管理时间<br />现代人的生活节奏越来越快,压力也越来越大。经常会听到白领人士抱怨一个星期有三到四天的时间在加班,没有时间锻炼身体,身体经常处在一种透支的状态;也有人抱怨,虽然现在的职位已经到了中层管理层,但是没有安全感,因为知识的更新速度太快。<br />其实大家都感觉到时间是个瓶颈,每天列了一大堆的计划,晚上回顾的时候,却发现忙的都是一些琐碎的事情,重要的事情却没有干,这都是因为缺乏时间管理的技能,不能很好的运筹时间。<br />时间是世界上最充分的资源,每个人都拥有

2011-01-26 10:35:00 575

原创 在C++中创建持久对象

 持久对象(persistent objects)广泛应用于游戏、分布式数据库系统、多媒体以及图形应用程序中。目前C++并不直接支持持久性(persistence)(但有一些在C++未来版本中添加持久性和反射(reflection)的建议)。持久对象可以在创建它的程序的作用域之外保持自身状态。把对象写入一个文件并在以后重建之,或者把对象传送到一台远程机器,就是这样的例子。对持久性的支持并不象第一眼看上去那样简单,同一对象的大小和内存布局在不同的平台上可能并不相同,而不同的字节次序(byte ordering

2011-01-21 00:25:00 503

原创 boost::shared_ptr的线程安全性

<br />boost::shared_ptr的win32实现中,没有使用类似mutex机制却能够实现线程安全。<br /><br />线程安全主要就是保证引用计数机制的线程安全<br /><br />win32实现中关键在于使用了<br />BOOST_INTERLOCKED_DECREMENT以及BOOST_INTERLOCKED_INCREMENT<br /><br />在interlocked.hpp中可以看到<br /><br />#if defined( BOOST_USE_

2011-01-19 11:36:00 1751

原创 istream_iterator, ostream_iterator,copy以及文件序列化

<br />#include <iostream><br />#include <fstream><br />#include <algorithm><br />#include <cassert><br />#include <numeric><br />#include <string><br />using namespace std;<br />int main()<br />{<br /> vector<int> vec_int;<br /> for (int i=0; i<10; i++)<br

2011-01-17 23:54:00 880

原创 MMORPG开发入门[转]

原著:Radu Privantu  翻译:pAnic  2005年5月11日    原文出处:http://www.devmaster.net/articles/building-mmorpg    -------------------------------------------------------------------    译者序:这是一篇讲解如何开发一款MMORPG的入门文章,作者本人也是一款游戏的开发者,文中的内容源于实践,有很高的参考价值。很多人都想拥有

2011-01-08 22:28:00 512

原创 [转载]关于C++,我觉得好的设计法则

<br />以前是一个人闷头写代码。工作久了,发现同行们的代码基本都不能看,当然不少还来自大公司。因此大公司的代码也基本不能看。在学校里就听说过许多同学的憧憬,要进什么大公司学技术,现在看来真是好笑,能学到才怪呢。<br />游戏行业我还蛮清楚,暴雪不知道,反正一直很崇拜,代码应该牛逼,看招聘就能看出来,不懂游戏的别来这里玩。牛逼。<br />其他公司,包括所有的日本公司+中国公司代码都不堪入目。<br />1.首先我觉得写代码之前要了解自己,所为有所为,有所不为,并不是所有优雅的东西都是每个人

2011-01-08 21:58:00 576

原创 C+文件读写mode参数

<br />ios::in和ios::out分别表示读打开和写打开 <br /> ios::app表示在文件末尾追加 <br />ios::ate:打开文件之后令读写位置移至文件尾端(at   end)<br />ios::ate是打开文件时定位到文件末尾<br /> ios::trunc:将先前的文件内容移除(Remove)

2011-01-04 09:56:00 684

原创 Thrift vs. Protocol Buffers

<br />http://incubator.apache.org/thrift/<br />http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking<br />http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/overview.html<br />简介<br />Thrift是Facebook的核心框架之一,使不同的开发语言开发的系统可以通过该框架实现彼此的通信

2010-12-22 14:03:00 1426

原创 Boostpro下载编译好的boost库-.-

<br />http://www.boostpro.com/

2010-12-06 11:25:00 3946 1

原创 sprintf与snprintf

<br />int sprintf( char *buffer, const char *format [, argument] ... );<br />除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明

2010-12-03 13:11:00 3040

转载 风雨20年:我所积累的20条编程经验

<br />作者Danylko是一位资深开发顾问,DCS公司的创始人。 <br /><br />从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。<br />我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面就是我至今最难忘的经验。<br />1. 估算解决问题所需要的时间。<br />不要怕,承认吧!我曾见过一些程序员

2010-12-02 21:20:00 400

原创 阶段总结20101202

<br />一、解决装备技能的按钮闪烁问题时,用到了STL的算法std::includes(...); std::set_intersection(...); 第一个算法判断一个容器是否包含于另外一个容器,返回bool;第二个算法查找两个容器的公共元素并将其放于第三个容器中,返回第三个容器的迭代器。需要注意的是这两个算法都要求其容器是有序的其实升序排列的。所以用set会很方便。。。<br />// 1<br /><br />std::set<int> int_set1;<br />for (int i=0;

2010-12-02 21:07:00 416

转载 怎么炼成高手

<br />这是今天和校招新同事交流时的总结,希望校招新同事能够回顾,也能够写出自己的总结。<br /> <br />一、什么是代码高手?你怎么证明自己是代码高手?<br /><br /><br />知道许多代码技巧、JS炫彩技巧的人大有人在。你知道多少个.net函数,这一点都没有意义。你知道多少个新鲜IT名词,多少技术介绍,这也没有意义。做,真正做一个原型,做一个项目,解决你手头棘手的问题,这才有意义。<br /><br /><br />1、快速准确的理解别人说的-〉<br /><br /><br /

2010-11-29 10:19:00 364

原创 一点总结,提醒自己

基本的基本知识,今天跟服务器ZJ调试消息的收发的时候,有个bug,挑来调去用log,最后检查出来是这2个小错误。。。发现工作后基础知识有遗忘~~~~特记下来。1. switch_case 语句,如果要多个case执行同一句语句要写成:case A:case B:case C:      do_something();     break;不能写成:case A:        B:        C:    do_something():    break;就算你写错了,编译器也不能帮你检查出这个错误(我用

2010-11-25 21:36:00 531 1

转载 网游UI解决方案的选择(CEGUI/MYGUI/Hikari/Scaleform/...)

<br />网游UI解决方案的选择<br />作者 鸣·铭<br />转载请注明出自http://www.mobilegamebase.com<br />    由于新项目动工,UI方面需要确定方向,所以最近纠结于各种解决方案的选择。以下是对各方案的比较,仅供参考,希望对同样纠结于此的朋友有所帮助:)<br />1.沿用当前的UI<br />    公司是从2D游戏起家的,2D游戏本身就相当于一套庞大的UI,所以这方面有所积累。这套UI系统至少是经过几十万玩家测试,稳定性自然不必说,而且

2010-11-24 21:57:00 1581

转载 3D游戏引擎剖析

<br />原文作者:Jake Simpson <br />译者: 向海 <br />Email:[email protected]  <br />第1部分: 游戏引擎介绍, 渲染和构造3D世界 <br />介绍 <br />  自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎"。 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和声音创造新的游戏,

2010-11-24 21:36:00 1201

转载 FreeType编译及使用心得收藏

<br />FreeType是一款字体服务库,它支持多种字体,并且提供高效,高质量的文字。<br />freetype相关介绍见:http://blog.csdn.net/ganxingming/archive/2006/06/05/774796.aspx<br /><br />1, 编译FreeType<br />解压后进入./include/freetype,复制config到当前文件夹,随便去个什么名,这里我用custom_config<br />然后进入 ./builds/win32/vis

2010-11-24 21:34:00 4638 3

转载 如何成为一名专家级的开发人员

1、专注。要选择一个平台,一个行业,然后在这个领域内专注一段时间(最少要6年)。我现在应该是linux 上C/C++开发,要专注这一领域。我的一个同事做了三年,后来跳槽到HW后转java了,可惜了。2、深入。深入的了解我的这个平台,以及语言,行业。比如,我要能掌握linux操作系统,linux内核;深入掌握C/C++;掌握通信行业知识。3、扩展。“当你开始掌握当前的平台,要开始学习独立于平台的技能,比如模式设计、分布式系统设计、软件架构和性能等。在你取得进步时,你将要花更多的时间来学习这些技能。这是好事

2010-11-24 15:28:00 617

转载 条款24:当关乎效率时应该在map::operator[]和map-insert之间仔细选择

<br />让我们假设有一个支持默认构造函数以及从一个double构造和赋值的Widget类:class Widget {<br />public:<br /> Widget();<br /> Widget(double weight);<br /> Widget& operator=(double weight);<br /> ...<br />}<br />现在让我们假设我们想建立一个从int到Widget的map,而且我们想有初始化有特定值的映射。这可以简化为:map<int,

2010-11-23 10:54:00 910

转载 面对查找需求如何选择容器

<br />在写代码的时候,即使编程老手经常会遇到一个不知道如何抉择的事情,面对查询的需求如何选择容器,容器的大小等因素也会困扰我们的选择。为什么呢?新手面对查询往往会直接选择map,因为map是内部是支持查询函数的,但老手知道map是通过复杂性换取查询的性能的(map的实现往往是红黑树),那如果要保存的数据个数不多呢,是否值得使用map这样的容器呢?<br />最近两天写了几行短小的代码,针对这个问题进行了一测试,测试对vector,map,hash_map三种有代表性的容器进行了测试,测试容器的长度为1

2010-11-22 21:54:00 437

原创 ShellExecute

<br />转载部分:<br />最近在做项目过程中,有用到ShellExecute函数,功能1,为打开一个URL。代码如下:                       <br />HINSTANCE Result;<br /> Result = ::ShellExecute(GetSafeHwnd(), "open", strPath, NULL, NULL, SW_SHOWDEFAULT);<br />返回:SE_ERR_ACCESSDENIED     (原因还未找到,但是在另一个项目中此功能是

2010-11-22 21:50:00 862

Ogre+3d+1.7+beginner+Guide

Ogre+3d+1.7+beginner+Guide

2012-04-05

编程高手箴言

编程高手箴言

2012-04-05

Linux编程技术详解

Linux编程技术详解

2012-03-31

WinSockt网络编程

WinSockt网络编程

2012-03-30

linux网络编程代码

linux网络编程代码

2012-03-30

IPv6 Network Programming

IPv6 Network Programming

2012-03-30

TCP-IP详解卷1

TCP-IP详解卷1

2012-03-30

jaerlang-code

jaerlang-code

2012-03-30

Erlang - Structured Programming Using Processes

Erlang - Structured Programming Using Processes

2012-03-30

Programming Erlang - Software for a Concurrent World

Programming Erlang - Software for a Concurrent World

2012-03-30

Erlang in Real Time

Erlang in Real Time

2012-03-30

编写分布式的Erlang程序_陷阱和对策(中文版)

编写分布式的Erlang程序_陷阱和对策(中文版)

2012-03-30

linux入门文档

linux入门文档

2012-03-30

Linux课件.

Linux课件.

2012-03-30

Linux基础教程-操作系统基础

Linux基础教程-操作系统基础

2012-03-30

Linux机密培训文件PPT

Linux机密培训文件PPT

2012-03-30

Linux编程从入门到精通

Linux编程从入门到精通

2012-03-30

Linux编程白皮书

Linux编程白皮书

2012-03-30

练成Linux系统高手教程

练成Linux系统高手教程

2012-03-30

华为内部培训资料Linux基础

华为内部培训资料Linux基础

2012-03-30

makefile详解

makefile详解

2012-03-30

Linux使用技巧集

Linux使用技巧集

2012-03-30

Linux内核编程指南第3版

Linux内核编程指南第3版

2012-03-30

Linux命令大全(修改版)

Linux命令大全(修改版)

2012-03-30

linux零基础初级教程

linux零基础初级教程

2012-03-30

Linux基础教程

Linux基础教程

2012-03-30

Linux高级技巧集

Linux高级技巧集

2012-03-30

linux操作系统教程

linux操作系统教程

2012-03-30

linux_programming_unleashed

linux_programming_unleashed

2012-03-30

GUN makefile手册

GUN makefile手册

2012-03-30

The Art Of Unix Programming.

The Art Of Unix Programming.

2012-03-30

深入理解Linux内核(第二版

深入理解Linux内核(第二版

2012-03-30

LINUX与UNIX SHELL编程指南

LINUX与UNIX SHELL编程指南

2012-03-30

MFC SOURCE

MFC SOURCE

2012-03-29

DLL编程教程集锦

DLL编程教程集锦

2012-03-29

CSDN VC编程经验总结

CSDN VC编程经验总结

2012-03-29

Begining.C++.Game.Programming

Begining.C++.Game.Programming

2012-03-29

用Python,Lua和Ruby语言设计游戏

用Python,Lua和Ruby语言设计游戏

2012-03-29

手把手教你写批处理-批处理的介绍

手把手教你写批处理-批处理的介绍

2012-03-29

DirectDraw中文手册

DirectDraw中文手册

2012-03-29

空空如也

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

TA关注的人

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