北大青鸟设计培训:高中生学编程选哪个方向好?

北大青鸟设计培训:高中生学编程选哪个方向好?,第1张

高中生学编程选哪个方向好随着科技的发展,软件编程也分得越来越细了,编程现在主要分为以下几个方向:1软件编程,就是电脑程序或嵌入式软件(如手机软件),需要学习C语言、C++、JAVA等。

2网络编程,需要学习HTML、ASP、JSP、PHP。

3数据编程,数据库,大型企业必备Access、SQL、MySql、Oracle、ERP。

4游戏/3D编程,网页游戏,FlashAS,DirectX,OpenGL,三国杀、偷菜、大型网游等用的就是这些。

高中生学编程选哪个方向好如果对自己想报的专业不确定,不了解,电脑培训http://wwwkmbdqncn/可以咨询青岛北大青鸟学校,在此有职业规划师帮助您确定自己的职业方向。

你必须开通IIS服务和开放你本机的80端口

首先你要在"添加/删除程序"里的"添加/删除WINDOWS组件"里勾选安装"INTERNET信息服务",安装完成后在我的电脑上点右键选"管理",在管理中就会多出IIS的配置,你再把WWW服务器配置一下,把默认目录和默认打开文件设置成你的网页的文件夹和首页文件,然后重新启动一下计算机,关闭你的网络防火墙,局网内其他人在IE地址栏上输入http://你的IP地址就可以浏览了,你在自己本机上直接输入http://127001也可以看到

作为零基础的你,我想你可能是想解决工作中的一个实际问题,或者仅仅是很想学习一下爬虫的技术,多一技之长。其实我准备开始学 Python 爬虫的时候也是一样,老板派了任务,暂时没有人会爬虫,我只有自学顶硬上。因此,我可以用思维图给你理清楚,你应该干什么。

我零基础但我想学网络爬虫:

路径1:我不想写代码,Excel/八爪鱼,用这些工具的好处是你可以很快上手,但是只能爬一些简单的网站,一旦网站出现限制,这些方法就是个玩具。因此,想弄点数据玩玩,玩这些玩具就好。

路径2:我可以学写代码,但是会不会很难啊?我以我的经验告诉你,找一个好的老师比自我胡思乱想,自我设限好得多。写代码这个事不难学,这也是为什么市面上有那么多代码速成的教学。这也是为什么我有些同学1年转专业进 Google 的事情发生。

这里给你描画一下你的学习之路:

学会 Python 的基本代码: 假如你没有任何编程基础,时间可能花1-2周,每天3小时。假设你有编程基础(VBA 也算吧),1小时。

理解爬虫原理:5分钟。为什么这么重要?我自认为学一个东西就像建大楼,先弄清楚大框架,然后再从地基学起。很多时候我们的学习是,还没弄懂大框架,就直接看网上的碎片化的教学,或者是跟着网上教学一章一章学,很容易学了芝麻丢了西瓜。我的自学就在这上面走了很多弯路。

应用爬虫原理做一个简单爬虫:30分钟。

先吃透获取网页:就是给一个网址发个请求,那么该网址会返回整个网页的数据。类似:你在浏览器键入网址,回车,然后你就看到了网站的整个页面。

再吃透解析网页:就是从整个网页的数据中提取你想要的数据。类似:你在浏览器中看到网站的整个页面,但是你想找到产品的价格,价格就是你想要的数据。

再学会储存数据:存储很简单,就是把数据存下来。

学会这些之后,你可以出去和别人说,我会 Python 爬虫,我想也没有人质疑你了。那么学完这一套下来,你的时间成本是多少呢?如果你有编程基础的话,1周吧。

所以,你是想当爬虫做个玩具玩玩,还是掌握一门实战利器。我觉得你可以自己衡量一下。

HTTP是Web协议集中的重要协议,它是从客户机/服务器模 型发展起来的。客户机/服务器是运行一对相互通信的程序,客户与服务器连接时,首先,向服务 器提出请求,服务器根据客户的请求,完成处理并给出响应。浏览器就是与Web服务器产生连接的客户端程序,它的端口为TCP的80端口,。浏览器与Web 服务器之间所遵循的协议就是HTTP。

HTTP的早期版本为HTTP/09,它适用于各种数据信息的简洁快速协议,但是其远不能满足日益发展各种应用的需要。 但HTTP/09作为HTTP协议具有典型的无状态性:每个事务都是独立进行处理的,当一个事务开始就在客户与服务器之间建立一个连接,当事务结束时就 释放这个连接。HTTP/09包含Simple-Request&Simple-Responsed的报文结构。但是客户无法使用内容协商,所 以服务器也无法返回实体的媒体类型。

1982年,Tim Berners-Lee提出了HTTP/10,在此后的不断丰富和发展中,HTTP/10成为最重要的面向事务的应用层协议。该协议对每一次请求/响 应,建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。其缺点是仍会发生下列问题:对用户请求响应慢、网络拥塞严 重、安全性等。

1997年形成的HTTP/11,也就是现在普遍使用的协 议,在持续连接 *** 作机制中实现流水方式,即客户端需要对同一服务器 发出多个请求时,其实现在多数的网页都是有多部分组成(比如多张),可用流水线方式加快速度,流水机制就是指连续发出多个请求并等到这些请求发送完 毕,再等待响应。这样就大大节省了单独请求对响应的等待时间,使我们得到更快速的浏览。

另外,HTTP/11服务器端处理请求时按照收到的顺序进行,这就保证了传输的正确性。当然,服务器端在发生连接中断时,会自动的重传请求,保证数据的完整性。

HTTP/11还提供了身份认证、状态管理和Cache缓存 等机制。这里,我想特别提一下关于HTTP/11中的Cache缓存机制对 HTTP/10的不足之处的改进,它严格全面,既可以减少时间延迟、又节省了带宽。HTTP/11采用了内容协商机制,选择最合适的用户的内容表现形 式。

现在,很多地方都有用到的虚拟主机技术在HTTP/11中也 可以实现。所谓的虚拟主机技术,就是同一主机地址实际对应多台主机。通俗的 讲,当你同时在一个网站申请两个主页时,用协议分析仪可以发现其实这两个主页对应的是同一个IP地址。这样用多台完全相同的机器形成WWW服务器就可以提 高处理的吞吐量。

传统的解决方案是改造域名服务器使其可以根据一定的算法将同一域名解释成不同的IP地址。分别对应虚拟主机的每台机器,其缺点是要求每台机器占用完全独立的IP地址,这与IP地址的缺乏是相矛盾的。

HTTP/11提供的解决方案在HTTP协议自身中加入了指定不同主机的功能,从而多台主机可以共享一个IP地址,既提高了性能又便于管理。

因为HTTP/11是Internet现行的标准协议,这里详细介绍其相关语法。

首先,HTTP/11格式可写为:

其中请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种:

GET: 请求指定的页面信息,并返回实体主体。

HEAD: 只请求页面的首部。

POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

PUT: 从客户端向服务器传送的数据取代指定的文档的内容。

DELETE: 请求服务器删除指定的页面。

OPTIONS: 允许客户端查看服务器的性能。

TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。

PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。

MOVE: 请求服务器将指定的页面移至另一个网络地址。

COPY: 请求服务器将指定的页面拷贝至另一个网络地址。

LINK: 请求服务器建立链接关系。

UNLINK: 断开链接关系。

WRAPPED: 允许客户端发送经过封装的请求。

Extension-mothed:在不改动协议的前提下,可增加另外的方法。

比如:

GET /indexhtml HTTP/11

Accept: text/plain /纯ASCII码文本文件/

Accept: text/html /HTML文本文件/

User-Agent:Mozilla/45(WinNT)

说明浏览器使用Get方法请求文档/indexhtml。浏览器则只允许接收纯ASCII码文本文件和HTML文本文件,其使用的引擎是Mozilla/45(Netscape)。

当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出:

① 客户方错误

100  继续

101  交换协议

② 成功

200OK

201已创建

202  接收

203  非认证信息

204  无内容

205重置内容

206  部分内容

③ 重定向

300多路选择

301  永久转移

302  暂时转移

303  参见其它

304未修改(Not Modified)

305  使用代理

④ 客户方错误

400  错误请求(Bad Request)

401未认证

402需要付费

403  禁止(Forbidden)

404  未找到(Not Found)

405  方法不允许

406  不接受

407  需要代理认证

408  请求超时

409  冲突

410失败

411需要长度

412  条件失败

413请求实体太大

414请求URI太长

415不支持媒体类型

⑤ 服务器错误

500  服务器内部错误

501  未实现(Not Implemented)

502  网关失败

504网关超时

505 HTTP版本不支持

比如:(在《TELNET……》一文中用telnet登陆80端口,相同的方法用在HTTP/11中,会发现没有显示,下面补充说明之)

telnet wwwfudaneducn 80

HEAD / HTTP/11

host:wwwfudaneducn /本行为输入内容/

HTTP/11 501 Method Not Implemented

Date: Web, 01 Nov 2000 07:12:29 GMT /当前的日期/时间/

Server: Apache/1312 (Unix) /Web服务器信息/

Allow: GET, HEAD, OPTION, TRACE /支持的方法类型/

Connection: close

Connect-Type: Text/html; charset=iso-8859-1/连接的媒体类型/

<!DOCTYPE HTML PUBLIG "-//IETF//DTD HTML 20//EN">

<HTML><HEAD>

<TITLE>501 Method

Not Implemented</TITLE>

</HEAD><BODY>

<H1>Method Not Implemented</H1>

head to /inde

xhtml not supported<P>

Invalid method in request head / htp/11<P>

<HR>

<ADDRESS>

Apache/1312 Server at wwwfudaneducn Port 80</ADDRESS>

</BODY></HTML>

关于实体头部的内容还可以有:

Last Modified :请求文档的最近修改时间。

Expires :请求文档的过期时间。

Connect-length:文档数据的长度。

WWW-authenricate:通知客户端需要的认证信息。

Connect-encoding :说明有无使用压缩技术。

Transfer-encoding :说明采用的编码变换类型。

随着Internet的发展,下一代的HTTP协议HTTP-ng已经在酝酿之中,它将会提供更好的安全性、更快的速度,其改进要点为:模块化强、网络效率高、安全性更好、结构更简单。

Trackback: http://tbblogcsdnnet/TrackBackaspxPostId=1759249

http 是一个相对简单的协议,它定义了客户(通常通过浏览器)和www服务器之间的会话过程。现在我们来看看这个会话过程的简要说明:客户打开与服务器的套接, 使用的端口通常是80。然后它服务器发送请求行,请求标题,最后是请求空行。客户的请求通常是请求文档,它可以是文本文件,或者是程序等。服务器接受 这个请求,然后查找请求的数据,最后根据查找的结果做出响应。如果上面的过程是一个cgi程序的话,那么服务器将会执行这个程序,并将程序执行的结果输给 客户端。所以不明白cgi程序的朋友,可以这样理解cgi程序,它可以用很多的语言来写,只要它能完成一个任务:分析客户请求行中的数据,然后代替服务器 做出响应!我们今天要讨论的就是从客户端的角度来理解这个问题,首先来看一个标准的客户请求格式:

请求方法 文挡地址 http/版本

请求标题:数据1

……………

请求标题:数据N

空白行

在上面的格式中,第一行是必须的,它指明请求的文挡,又称请求头。下面的是请求标题可以多个。最后的空白行表示终止。这里还有一个问题,如果请求方法是 POST的话那么空白行后面还可以发送附加数据。这里有一个非常重要的问题就是请求方法。无论对于我们cgi新手还是喜欢web安全的朋友,都是必须的知 识

这是一个典型的请求头:

GET /bbs/loginasp HTTP/10

其中GET就是一个请求方法。/bbs/loginasp是文挡的地址即URI,它是URL的一部分。HTTP/10 是http 协议的版本号。这种方式的请求是建立在已经和服务器的套接建立的基础上的。完整的URL 可以是这样的方式:http://wwwtargetcom/bbs/loginasp 。在http 10的协议里定义了三种请求方式:GET,POST,HEAD。http 11又补充了一些,如PUT,DELETE,OPTIONS和TRACE。现在也越来越多的服务器支持这些方法。下面我们来介绍一下常用的方法。

GET 这个是浏览器用语向服务器请求最常用的方法。我们在浏览器上发送的URL就是一个GET请求,当然我们也可以用程序,比如netcat,webget等来做。我们有的时候在看到一些黑客高手们在文章中提到的一些请求的例子,可能新手朋友们很难理解,比如:

http://wwwtargetcom/bbsxp165/bbsxp/searcpassword)>1)

这就是一个相当复杂的GET请求,/searchokasp是请求这个asp文件,后面就是要传输给这个程序的数据,这个数据是根据网页的交互固定 的。服务器接受这个请求后这些数据将被放入环境变量QUERY_STRING中。数据通常是一些数据名/数据值对。没对数据名/数据值之间用&来 分开。例子的提交里forumid=()空格里的是一个sql语句,这是由于这里存在sql injection漏洞,当然不在我们讨论的范围。还有GET请求的数据不能超过一个特定的长度,比如2000字节。

POST 这个方法也是用来传送数据的,但是与GET不同的是,使用POST的时候,数据不是附在URI后面传递的,而是要做为独立的行来传递,此时还必须要发送一 个Content_length标题,以标明数据长度,随后一个空白行,然后就是实际传送的数据。网页的表单通常是用POST来传送的。这里我们来举两个 安全人士常用的提交方式,通常就是黑客们所谓的发现某个网页的或者某个cgi程序的漏洞然后构造一个特殊请求的时候用的:

1,脚本实现

…………

$socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port, Proto => "tcp", Type => SOCK_STREAM) or die “can’t connect to the host\n”;

print $socket "POST /$b HTTP/11\r\n";

print $socket "Host: $host\r\n";

print $socket "Content-Type: text/xml\r\n";

print $socket "Content-length: $length\r\n\r\n";

print $socket "$data\r\n";

$socket->recv($rbuf,500);

close($socket);

………

以上是perl程序POST提交的主体部分,比如一个溢出程序,关键的地方就在于$b(URI)和$data 的构造上!

2, 使用nc来提交

建立一个hacktxt的文件输入下面的内容:

POST /cgi-bin/websendmail HTTP/10

Content-length: xxx (should be replaced with the actual length of the

string passed to the server, in this case xxx=90)

receiver=;mail+your_address\@somewhereorg

然后用nc来请求

nc wwwvictimcom 80 <hacktxt

这样就完成了一个post的提交,当然还有很多别的方法可以实现这个提交,这里只是举两个我认为方便的办法。

HEAD 方法和GET的语法是一样的,如果用HEAD方法请求的话,则服务器返回的只是响应标题,而不会返回被请求的文挡,HEAD方法通用于一些搜索引擎中,当然我们的cgi扫描软件很多都是使用这个方式请求的。

以下方法属于http 11的标准,我们目前使用的还少,简单的介绍一下定义。

PUT 可以将客户提交的文挡保存在服务器的URI上

DELETE 用于请求服务器删除指定的URI

OPTIONS 可以请求对于指定URI可用的通用选项信息

TRACE请求服务器将附加的文挡无变更的返回,主要用于调试。

提到了请求,自然要讲一下,服务器的响应了,它的标准格式如下

HTTP/版本号 状态码 消息

响应标题:数据1

…………

响应标题:数据N

空白行

客户提交的文挡

看个例子吧:

nc wwwvictimcom 80

GET /indexhtml

HTTP/11 400 Bad Request

Date: Tue, 14 May 2002 07:03:02 GMT

Server: Apache

Connection: close

Transfer-Encoding: chunked

Content-Type: text/html; charset=iso-8859-1

127

……………

响应预定义的状态码有很多,通常是服务器默认的设置,是三位数,以1,2,3,4,5开头的

1xx 主要用于调试和实验的目的

2xx 主要表示请求成功

3xx 表示请求的uri有多个选择或者已经移动位置了

4xx 400表示请求行中有语法错误,404表示文挡不存在

5xx 表示服务器内部错误

有的时候可能大家总是忽略了这些东西的做用,事实上有的时候他们的作用还真的不小,比如我们手头没有任何工具,如何知道服务器上是否有 ida,printf等映射呢,我们可以这么请求:http://wwwvictimcom/ida 如果出现500 服务器内部错误,我想问题就已经很清楚了。

既然都说这么多的废话了,那么再给大家来点关于URL编码,数据传输的小知识,和cookies的一些介绍吧。

URL编码和数据传输

下面是一个例子:

http://www1baiducom/baiduword=netcat+exgb2312&cl=3&f=1

通常我们的浏览器在发送数据的时候要先经过编码,这是一种规范。GET 和POST 都是一样的,当然对于表单你可以用enctype字段来规定其他的编码方式。上面的例子语法,格式是用HEAD请求的。我们看到其中有一些特殊的符号 如”%”,这是由于当数据中有非字母或数据的字符时,URL编码会将该字符转化为其ASCII码对应的数字,这样便以一个两位数字的16进制编码来代表字 符。在 URL 编码中由百分号指示。 因此,%25 表示百分号本身(25是十六进制的,就是以 16 为基,代表百分号的 ASCII 码值),所有127(7fhex) 以上,和 33 (21hex) 以下的所有字符都会被转义,这包含空格符,空格的转义符为 %20 加号被解释为空格符。

cookies 内容简介

cookies的作用,这里我就不说了,光是对它语法和格式本身就进介绍,我们先来看一个cookies的例子

aspsky

userhidden=2&password=469e80d32c0559f8&userid=1&userclass=%B9%DC%C0%ED%D4%B1&username=admin& usercookies=1

localhost/bbs/

0

3061727232

29562033

2222055456

29561914

参考这个例子我们来看看cookies 的 properties 主要包括:

key -->aspsky

value-->userhidden=2&password=469e80d32c0559f8&userid=1&userclass=%B9%DC%C0%ED%D4%B1&usernam e=admin&usercookies=1

damain-->localhost/bbs/

secure-->0 相当于no

expire-->3061727232 29562033 有效时间需要解码才能读出来

modified-->3061727232 29562033 修改时间,解码方式和expire一样

created in ->server

有的时候还有ip address

以上这些介绍只是方便大家对cookies的理解,具体的请参考一些专业的资料。有的时候经常遇到一些朋友问起怎么伪造cookies,我想写到这里已经非常清楚了。

说了这么多,总结一下吧

如果你是一个新手的话,如果你对http协议不是很清楚的话,建议你好好读读一些资料,毕竟这个是我们一天到晚泡网的基础哦,如果你是一个和我一样,喜欢 研究网络编程安全的朋友,那么希望我们能一起交流,一起进步。本文只是简单的介绍了一下http方面的一些基础知识,并没有深入的讲述,在一定程 度上说只是给新手朋友们一个概念,但是对于大家理解在网络一些高手的精彩文章,还是相当有用的。

端口的取值范围是:0-65535。

在这个取值范围中1023以下的端口已经分配给了常用的一些应用程序,这个数字以后的端口部分被使用,所以网络编程可用的端口一般在1024之后选取。

在网络技术中,端口(Port)大致有两种意思:

1、物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等;

2、逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。

扩展资料:

常用的保留UDP端口号有:

DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。

每个TCP报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程。

在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一的确定一条TCP连接。

相对于TCP报文,UDP报文只有少量的字段:源端口号、目的端口号、长度、校验和等,各个字段功能和TCP报文相应字段一样。

-网络端口

Content-disposition 是 MIME 协议的扩展,

 String disposition=conngetHeaderField("Content-Disposition");

获得Content-disposition,下面不是对这个string对象进行处理了吗

如果还没有想好学哪一门编程语言,没有确定目标,很容易无所适从。如果你想要认认真真去学编程,但是还没准备,可以看看以下几条建议。 学习编程需要什么基础 1、数学基础。 从计算机和应用的发展历史来看,计算机的数学模型和体系结构等好多都是由数学家提出的,包括最早的计算机也是为数值计算而设计的。因此,要学好计算机是需要一定的数学基础的,初学者有高中水平就差不多了。 2、逻辑思维能力的培养 。程序员必须要有一定的逻辑思维能力,逻辑思维能力的培养更需要长时间的实践锻炼。但是也不必 *** 之过急,逻辑思维说白了是一个技术,和打游戏,把妹,打拳击一样,多进场练习才是关键。如果做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。谁都有第一次。有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。 3、选择一种合适的入门语言 。网络编程目前较为流行的网络编程工具可谓“风格迥异,百花齐放”。每一种工具都有其独特的特点,在互联网实现上都有各自的优势序设计工具不外乎如下几类:①本地开发应用软件开发的工具有:Visual Basic、Delphi、VC++(C++ Builder) 等;数据库开发工具有:Visual Foxpro、Oracle Developer、Power Builder等。②跨平台开发开发工具如 Java等。 4、注意理解一些重要概念 。程序设计的教程看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三。 5、掌握编程思想 ,学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。例如学习Java在学习中应把重点放在其语言基础、Java与ActiveX以及JavaBeans等组件之间的编程技术以及应用上来。你可以自己编一些较为经典的小程序来加深基本技能的掌握:用Java的图形处理能力编写纸牌游戏,用AWT编写扫雷或者俄罗斯方块、用Java的网络功能编写网络聊天室等等。关键是学一种思想,有了思想,那么我们就很容易触类旁通。 学计算机编程的基础 1、英语基础 计算机英语与传统的英语知识不同,需要了解的大部分是计算机的专业单词或者词汇,普遍较为简单。但是在高级编程中,会出现比较生涩的词汇,对于想要参与计算机语言设计以及在职业发展上有更多追求的同学可以自学一下大学英语。毕竟现在在学习IT技术上晋升的道路上,专业文档的阅读能力也是非常重要的。我们不可能每一句都依靠在线翻译,而往往很多学习材料都是英文版的,等到中文的翻译版出来,时间很不固定。所以强迫自己看原版的材料,强迫自己学习英语,都能加速学习的速度。 2、自学能力 计算机编程是一门技术专业,由于越来越多的源码开放,使得每个程序员都拥有了自行编码的可能。这也造成了计算机技术不断在更新和升级以及新的语言的出现,可以说学计算机是进无止境的。想要在计算机行业长久的走下去,学生自身的自学能力是不可缺的。自学的基础是学会查,在初期学习计算机编程时,我们几乎都是不懂的状态,学会查,尤其是查不明其意的名词时,理解了,学习起来就会运用了。 3、计算机 *** 作系统原理 我们所有的开发或者说软件应用都是在特定的 *** 作系统上进行的,如果不是,那只有一种可能,你自己在实现一个 *** 作系统。所以我们计算机 *** 作系统原理可以说是基础中的基础是必须要了解的。 4、数据结构和算法 这门课程能够决定一个人程序设计水平的高低,是学习过程中需要重点掌握的。C和C++都是可以选择的,前期可以先学C,再学C++会相对简单一些。在算法上C++复杂化了,所以先学C更好。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12184949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存