自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Macross的专栏

最美的不是下雨天,是曾与你躲过雨的屋檐

  • 博客(131)
  • 资源 (6)
  • 收藏
  • 关注

原创 ext2、ext3与ext4的区别

ext2与ext3Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。 linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录

2010-10-29 11:10:00 79551 1

转载 LVS集群的通用结构

原文:http://zh.linuxvirtualserver.org/book/export/html/12 LVS集群的通用结构LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。图2.1:LVS集群的体系结构 为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。LVS集群的体系结构如图2.1所示,它有三个主要组成部分:负载调度器(load

2010-10-29 10:48:00 1155

原创 解释语言和编译语言的区别

<br />解释语言和编译语言的区别在于解释语言编写的程序在每次运行时都需要通过解释器对程序进行动态解释和执行;解释语言编写的程序有时被称为脚本,一般是读者可以直接阅读的代码。解释器通过读取脚本,对它解释,然后执行脚本中的命令。 例如:我们通常使用的DOS命令行命令执行环境本身就是一个解释器。读入键入:“dir”命令并回车,解释器接收并翻译这条命令,然后进行系统调用来完成命令的运行,并把结果显示出来。相应的.bat批处理文件可以说就是一种脚本。<br />编译语言需要通过编译器,将所编写的程序翻译成计算机的

2010-10-27 11:16:00 3134 1

原创 一些Linux内核中的常用术语

<br />抢占,preemption<br />在2.5内核之前,或编译时CONFIG_PREEMPT未打开,内核中用户上下文的进程不会彼<br />此抢占(亦即:只要你占有CPU,你就一直占有,直到自己放弃或者发生硬件中断)。<br />在2.5.4以后且打开了CONFIG_PREEMPT,事情改变了:在用户上下文,更高优先级的<br />任务可以抢占当前任务:自旋锁为此改写,以添加禁止抢占的效果,即使在UP上也是<br />如此。<br /><br />bh<br />下半部:由于历史原因,带有'_b

2010-10-26 22:38:00 1593

原创 spin_lock_bh()与spin_unlock_bh()

<br />spin_lock_bh通常用在进程中,用来禁止抢断和禁止软中断。<br /> <br />spin_lock_bh()中首先会调用local_bh_disable()禁止当前CPU的软件中断。而函数spin_unlock_bh()则调用local_bh_enable()来势能本地CPU的软件中断。在软件中断被禁止的时候,本地CPU的所有软中断都不会被执行。<br /> <br />如果一个softirq 与 用户上下文共享数据,就有两个问题:首先,当前的用户上下文可能被softirq中断;其次

2010-10-26 22:36:00 31546

原创 SQL注入的原理和防范

SQL注入就是攻击者通过正常的WEB页面,把自己SQL代码传入到应用程序中,从而通过执行非程序员预期的SQL代码,达到窃取数据或破坏的目的。  当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生SQL注入。SQL注入可能导致攻击者使用应用程序登陆在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令

2010-10-26 21:30:00 1053

原创 TCP的四种定时器

<br />TCP使用四种定时器(Timer,也称为“计时器”):<br />重传计时器:Retransmission Timer<br />坚持计时器:Persistent Timer<br />保活计时器:Keeplive Timer<br />时间等待计时器:Time_Wait Timer。<br /> <br />(1)重传计时器:<br />重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:若在计

2010-10-26 20:54:00 9941

转载 集群的负载均衡技术

前言  当前,无论在企业网、园区网还是在广域网如Internet上,业务量的发展都超出了过去最乐观的估计,上网热潮风起云涌,新的应 用层出不穷,即使按照当时最优配置建设的网络,也很快会感到吃不消。尤其是各个网络的核心部分,其数据流量和计算强度之大, 使得单一设备根本无法承担,而如何在完成同样功能的多个网络设备之间实现合理的业务量分配,使之不致于出现一台设备过忙、而 别的设备却未充分发挥处理能力的情况,就成了一个问题,负载均衡机制也因此应运而生。  负载均衡建立在现有网络结构之上,它提供了一种廉价有效的方法扩

2010-10-22 11:31:00 1532

原创 kmalloc、vmalloc、malloc的区别

<br />简单的说:kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存 kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc不保证任何东西(这点是自己猜测的,不一定正确)kmalloc能分配的大小有限,vmalloc和malloc能分配的大小相对较大 内存只有在要被DMA访问的时候才需要物理上连续 vmalloc比kmalloc要慢<br /> <br />详细的解释:<br />      对于提供了MMU(存储管理器,

2010-10-22 10:48:00 87566 4

原创 物理地址、虚拟地址(线性地址)、逻辑地址以及MMU的知识

一、首先不得不提的历史         许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程

2010-10-20 18:00:00 16349 1

原创 死锁产生的4个必要条件,如何检测,解除死锁

<br />死锁的四个必要条件 <br />操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进<br />程协调、通信机构会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能<br />继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解<br />除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或者多个进程无限期<br />地等待永远不会发生的条件,系统处于停滞状态,这就是死锁。<br />产生死锁的原因主要是:<br />(

2010-10-20 16:56:00 5938

原创 DRAM、SRAM、SDRAM、DDRSDRAM的区别

<br />SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。不像DRAM内存那样需要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,所以在主板上SRAM存储器要占用一部分面积<br />优点,速度快,不必配合内存刷新电路,可提高整体的工作效率。 <br />缺点,集成度

2010-10-18 23:40:00 1616

转载 运维工程师的职责和前景

来自:http://blog.sina.com.cn/s/blog_4a93ccea0100iiov.html运维工程师的职责和前景运维中关键技术点解剖:1 大量高并发网站的设计方案 ;2 高可靠、高可伸缩性网络架构设计;3 网站安全问题,如何避免被黑?4 南北互联问题,动态CDN解决方案;5 海量数据存储架构一、什么是大型网站运维?首先明确一下,全文所讲的”运维“是指:大型网站运维,与其它运维的区别还是蛮大的;然后我们再对大型网站与小型网站进行范围定义,此定义主要从运维复杂性角度考虑,如网站规范、知名度、

2010-10-18 15:10:00 1937

原创 进程同步和进程通信总结

<br />在Linux下:<br /> <br />进程同步的意思是说,让不同进程能够在同时到达一个已知的特定状态之前等待另一方的执行。Linux   下常见的同步方法有SysVIPC   的   sem(信号量)、file   locking   /   record   locking(通过   fcntl   设定的文件锁、记录锁)、futex(基于共享内存的快速用户态互斥锁)。针对线程(pthread)的还有   pthread_mutex   和   pthread_cond(条件变量)。 <b

2010-10-14 00:26:00 4212

原创 关于Linux运维的一些题目总结

<br />一、有文件file1<br />1、查询file1里面空行的所在行号<br />awk ‘{if($0~/^$/)print NR}’ file<br />or<br />grep -n ^$ file |awk ‘BEGIN{FS=”:”}{print $1}’<br />2、查询file1以abc结尾的行<br />grep abc$ file1<br />3、打印出file1文件第1到第3行<br />sed -n ’1,3p’ file1<br />head -3 file1<br />

2010-10-13 11:08:00 15295

原创 百度的两道笔试题

<br />一. 每个url 包括site 跟path两部分。site就是比如 www.baidu.com  path就是http://www.baidu.com/s?wd=%D7%D6%B7%FB%B4%A 后面那部分。 要实现方便查询更新等。同时若干服务器分别位于不同地区。 <br />要求 <br />1.删除、更新url,可以不实时性 <br />2. 根据url可以找出存储位置 <br />3. 可以找出所有site的path <br /><br />要求实现上述系统,提示:url可以是分布存储的

2010-10-11 11:37:00 1118

转载 服务器五大相关基础知识一

<br />原帖地址:http://bbs.chinaunix.net/thread-1769105-1-2.html,有些知识感觉有点老了<br /> <br />1 双路<br /><br />    问题:常听说双路至强XX式服务器,最近又出现了双核至强,都是两个CPU,是不是双路等于双核?<br /><br />    答案:不是<br /><br />    无论服务器的单路、双路、四路乃至八路,其中的“路”都是指服务器物理CPU的数量,也就是服务器主板上CPU插槽的数量。<br /><br />

2010-09-25 17:40:00 791

原创 陌生人聊天系统

前几天突然看到北邮人论坛出现了陌生人聊天系统(尽管基本一直没什么人^^),于是跟随者论坛的回帖看到了在北邮人论坛上线这个系统的人发的帖子,大体的设计思路是在服务器端运行一个Memcached守护程序,并为客户端使用php或js编写一个界面程序,之后即可以balabala了.....先是关于Memcached的简介:Memcached是什么?  Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数

2010-09-11 10:47:00 1265

原创 Linux下的负载均衡

一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB+Heartbeat的日趋成熟,这问题也不大了.网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询。二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求

2010-09-11 10:24:00 1584

原创 crontab的使用小结

<br />      crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρόνος),原意是时间。<br />  通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。<br /> <br />1、crontab文件<br />  c

2010-09-11 10:16:00 845

原创 虚拟网卡 TUN/TAP 驱动程序设计原理

TUN/TAP虚拟网络设备为用户空间程序提供了网络数据包的发送和接收能力。他既可以当做点对点设备(TUN),也可以当做以太网设备(TAP)。实际上,不仅Linux支持TUN/TAP虚拟网络设备,其他UNIX也是支持的,他们之间只有少许差别。原理简介TUN/TAP 虚拟网络设备的原理比较简单,他在Linux内核中添加了一个TUN/TAP虚拟网络设备的驱动程序和一个与之相关连的字符设备 /dev/net/tun,字符设备tun作为用户空间和内核空间交换数据的接口。当内核将数据包发送到虚拟网络设备时,

2010-07-14 16:12:00 12449

转载 6个变态的C语言Hello World程序

<br />下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码<br />下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。<br />hello1.c    #define _________ }<br />    #define ________ putchar<br />    #define _______ main<br />    #define _(a) ________(a);<br />    #define __

2010-07-12 21:20:00 972

原创 [转]图片详解Google搜索工作原理

<br />PPCBlog发表了一张图片,详细解释了网页从被Google的网络蜘蛛爬取、收录、索引,最后再到用户进行一次Google搜索并产生搜索结果的过程,图中还描述了Google Adwords在搜索中产生的过程。<br />图片简洁明了,对了解Google搜索非常的直观,我们将其编译成中文,下面就是编译成中文Google如何完成一次用户搜索的图片:<br /><br /><br />http://yi-it.com/blog/images/how-google-works-chinese-detail

2010-07-12 19:19:00 870

原创 ip分片技术

<br />应用程序中,必须关心IP数据的长度。如果它超过网络的MTU,那么就要对IP数据报进行分片。如果需要,源目的端之间的每个网络都要进行分片,并不只是发送端主机连接第一个网络才这样做。在此文中,将讨论IP分片的一些原理及其在分片中所需要的几个元素(此文只讨论MTU最大传输单位和MSS最大数据分段),本文对以太网的例子作了初略的分解。<br /><br />分片是分组交换的思想体现,也是IP 协议解决的两个主要问题之一。在IP 协议中的分片算法主要解决异种网最大传输单元(MTU) 的不同.但是分组在

2010-07-08 16:30:00 2780

转载 Linux内核中的ICMP处理

<br />在INET域支持三种类型的套接字:流套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW)。流套接字支持传输层的TCP协议,数据报套接字支持传输层的UDP协议,原始套接字则支持网络层的附属协议ICMP,IGMP等。在前面,已经为TCP/IPmodule加上了对原始套接字(SOCK_RAW)的支持,现在再为它加上对ICMP协议的支持。<br />    结构体struct net_protocol表示一个协议(包括传输层协议和网络层附属协

2010-07-08 09:20:00 9713 2

原创 dev c++中的conio.h头文件的问题

<br />今天在dev c++中调试一段代码,但是在链接阶段,dev c++报了找不到相关函数gotoxy(),clrscr(),cprintf()的定义,网上查了一下这几个函数的定义,都是在conio.h中定义的,但是代码里明明include了conio.h这个头文件,后来我打开了C:/Dev-Cpp/include下conio.h文件,发现里面非常简洁,根本没有那几个函数的定义,于是继续baidu,才找到了问题的根源:<br />89的标准库文件如下:<br />Headers<br />

2010-07-01 10:52:00 12267 1

原创 IPv6基本头和IPv6扩展头

<br />      IPv6是“Internet Protocol Version 6”的缩写,它是IETF设计的用于替代现行版本IP协议-IPv4-的下一代IP协议。 <br /> <br />目前我们使用的第二代互联网IPV4技术,核心技术属于美国。它的最大问题是网络地址资源有限,从理论上讲,IPV4技术可使用的IP地址有43亿个,其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国只有3千多万个,只相当于美国麻省理工学院的数量。地址不足,严

2010-06-30 15:05:00 27366

原创 SSH协议介绍

<br />一、什么是SSH<br /> <br />SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。<br /><br /><br /><br /> <br /> <br /> <br /> <br

2010-06-24 16:22:00 58106 2

原创 套接口绑定错误:Address already in use的解决

bind API 函数来绑定一个地址(一个接口和一个端口)到一个套接字端点。可以在服务器设置中使用这个函数,以便限制可能有连接到来的接口。也可以在客户端设置中使用 这个函数,以便限制应当供出去的连接所使用的接口。bind 最常见的用法是关联端口号和服务器,并使用通配符地址(INADDR_ANY),它允许任何接口为到来的连接所使用。 bind 普遍遭遇的问题是试图绑定一个已经在使用的端口。该隐患是也许没有活动的套接字存在,但仍然禁止绑定端口(bind 返回 EADDRINUSE),它由 TCP 套接字状态

2010-06-20 17:28:00 4372

原创 敏捷开发

定义<br />简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。<br /> 敏捷软件开发宣言<br />  n 个体和交互 胜过 过程和工具<br />  n 可以工作的软件 胜过 面面俱到的文档<br />  n 客户合作 胜过 合同谈判 <br />    n 响

2010-06-07 11:57:00 573

原创 关于程序的编译和链接

一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。  编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在

2010-05-28 16:28:00 685

原创 交叉编译的概念(关于嵌入式的一点儿知识)

交叉编译(cross-compilation)是指,在某个主机平台上(比如PC上)用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程。本地编译器是指它编译出来的程序可在本地机(即运行编译器的机器)上运行;而交叉编译器编译出来的程序不可以在本地机上运行。 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机

2010-05-28 16:24:00 1641

转载 QoS,ToS和DiffServ

转自:http://yfydz.cublog.cn  0. 摘要QoS是目前网络技术中一个比较热的话题,本文就讨论实现QoS的一些底层的技术。1. 概述QoS(Quality of Service,服务质量)是用来描述网络的服务质量和数据优先权的。在互连网早期,各种数据都是平等的,网络带宽属于先来先得的自由抢占资源。随着互联网上数据类型的增加,对数据优先级需求也

2010-05-27 10:33:00 2876

原创 内核中的kmalloc函数详解

一、kmalloc函数详解#include void *kmalloc(size_t size, int flags);给 kmalloc 的第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, 非常有趣, 因为它以几个方式控制 kmalloc 的行为.最一般使用的标志, GFP_KERNEL, 意思是这个分配((内部最终通过调用 __get_free_pages

2010-05-27 09:59:00 36851

原创 Linux下软链接和硬链接的区别

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。硬链接可认为是一个文件拥有两个文件名;而软链接则是系统新建一个链接文件,此文件指向其所要指的文件。1. 使用方式:ln [option] source_file dist_

2010-05-20 14:50:00 1385

原创 C++中的内存分布

C++中,内存分为5个区:堆、栈、自由存储区、全局/静态存储区和常量存储区。栈:是由编译器在需要时自动分配,不需要时自动清除的变量存储区。通常存放局部变量、函数参数等。堆:是由new分配的内存块,由程序员释放(编译器不管),一般一个new与一个delete对应,一个new[]与一个delete[]对应。如果程序员没有释放掉,资源将由操作系统在程序结束后自动回收。自由存储区:是由mall

2010-05-07 09:39:00 906

原创 内核中struct sk_buff结构分析

struct sk_buff可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用。 这个结构被网络的不同层(MAC或者其他二层链路协议,三层的IP,四层的TCP或UDP等)使用,并且其中的成员变量在结构从一层向另一层传递时改变。 L4向L3传递前会添加一个L4的头部,同样,L3向L2传递前,会添加一个L3的头部。添加头部比在不同

2010-04-01 16:00:00 2351

原创 内核构造skb数据包的实现总结

一、IPv4、TCP和UDP的校验和计算校验和是网络协议用来识别传输错误的冗余域。有些校验和不但能检测错误,还能自动修正某些类型的错误。校验和的想法很简单。在传输一个数据 包之前,发送方计算出一个很小的、固定长度的域 (校验和)包含数据的某种散列。如果在传输过程中某几位数据被改变,很可能损坏的数据会产生一个不同的校验和。取决于你用来产生校验和使用的函数,校验和提供不同级别的可靠性。IP

2010-03-31 17:46:00 13324 2

转载 oracle的故事

一个名叫Sid的男人,狂热地爱好拍摄、保存和整理照片。Sid的妻子名叫Debbie,他们有三个儿子Logan、Archie和Chuck。他有一所很大的房子,同住的有男管家Simon和女仆Pam。我将介绍他的家庭、他的房子和他的爱好:拍摄、收集和炫耀他的照片。 现在,Sid快乐地生活着—家庭、朋友和假期。他不时地拍照。事实上,他总是随身带着相机。他不想错过任何东西。每一个早餐、午

2010-03-24 09:16:00 1087

转载 makefile的语法及写法

转自:http://topic.csdn.net/u/20070720/09/79922fb0-bbd6-403c-bba3-3c9bc8c71368.html 0 Makefile概述 --------------------------------------------------------------------------------什么是makefile?

2010-03-22 09:43:00 720

猎杀X86--NVIDIA、ARM、微软携手迈向云时代

《微型计算机》中的一篇文章,写的不错,推荐一下

2012-04-27

linux-2.6.28内核配置中文手册.pdf

linux-2.6.28内核配置中文手册,讲解make menuconfig之后出现的配置界面的每一项的含义

2009-07-27

Linux内核设计与实现.pdf

很经典的那本《Linux内核设计与实现》,呵呵!

2009-07-27

UNIX 网络编程 第1卷套接口API 程序源代码

UNIX 网络编程 第1卷套接口API 程序源代码 第三版

2008-12-22

空空如也

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

TA关注的人

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