WEB之CGI----CGI详解(原理,配置及访问)

5 篇文章 9 订阅
订阅专栏

一.基本原理

 CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。

组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的Cgi程序。它们之间的通讯方式如下图:

服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间的HTTP通信,我们只需要知道浏览器请求执行服务器上哪个CGI程序就可以了,其他不必深究细节,因为这些过程不需要程序员去操作。

服务器和CGI程序之间的通讯才是我们关注的。一般情况下,服务器和CGI程序之间是通过标准输入输出来进行数据传递的,而这个过程需要环境变量的协作方可实现。

1.   服务器将URL指向一个应用程序

2.   服务器为应用程序执行做准备

3.   应用程序执行,读取标准输入和有关环境变量

4.   应用程序进行标准输出

对于Windows系统而言,还可以通过profile文件进行数据传输(如ini文件),但在这里不做研究。环境变量在CGI中有着重要的地位!每个CGI程序只能处理一个用户请求,所以在激活一个CGI程序进程时也创建了属于该进程的环境变量。


二.环境变量

       对于CGI程序来说,它继承了系统的环境变量。CGI环境变量在CGI程序启动时初始化,在结束时销毁。

       当一个CGI程序不是被HTTP服务器调用时,它的环境变量几乎是系统环境变量的复制。当这个CGI程序被HTTP服务器调用时,它的环境变量就会多了以下关于HTTP服务器、客户端、CGI传输过程等项目。

       CONTENT_TYPE:如application/x-www-form-urlencoded,表示数据来自HTML表单,并且经过了URL编码。

ACCEPT:客户机所支持的MIME类型清单,内容如:”image/gif,image/jpeg”

REQUEST_METHOD:它的值一般包括两种:POST和GET,但我们写CGI程序时,最后还要考虑其他的情况。

1.POST方法
       如果采用POST方法,那么客户端来的用户数据将存放在CGI进程的标准输入中,同时将用户数据的长度赋予环境变量中的CONTENT_LENGTH。客户端用POST方式发送数据有一个相应的MIME类型(通用Internet邮件扩充服务:Multi-purpose Internet Mail Extensions)。目前,MIME类型一般是:application/x-wwww-form-urlencoded,该类型表示数据来自HTML表单。该类型记录在环境变量CONTENT_TYPE中,CGI程序应该检查该变量的值。

2.GET方法
       在该方法下,CGI程序无法直接从服务器的标准输入中获取数据,因为服务器把它从标准输入接收到得数据编码到环境变量QUERY_STRING(或PATH_INFO)。

      GET与POST的区别:采用GET方法提交HTML表单数据的时候,客户机将把这些数据附加到由ACTION标记命名的URL的末尾,用一个包括把经过URL编码后的信息与CGI程序的名字分开:http://www.mycorp.com/hello.html?name=hgq$id=1,QUERY_STRING的值为name=hgq&id=1

有些程序员不愿意采用GET方法,因为在他们看来,把动态信息附加在URL的末尾有违URL的出发点:URL作为一种标准用语,一般是用作网络资源的唯一定位标示。

       环境变量是一个保存用户信息的内存区。当客户端的用户通过浏览器发出CGI请求时,服务器就寻找本地的相应CGI程序并执行它。在执行CGI程序的同时,服务器把该用户的信息保存到环境变量里。接下来,CGI程序的执行流程是这样的:查询与该CGI程序进程相应的环境变量:第一步是request_method,如果是POST,就从环境变量的len,然后到该进程相应的标准输入取出len长的数据。如果是GET,则用户数据就在环境变量的QUERY_STRING里。

3.POST与GET的区别
       以 GET 方式接收的数据是有长度限制,而用 POST 方式接收的数据是没有长度限制的。并且,以 GET 方式发送数据,可以通过URL 的形式来发送,但 POST方式发送的数据必须要通过 Form 才到发送。

三.CGI程序实现步骤
1.从服务器获取数据
     C语言实现代码:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>


int get_inputs()

{

int length;

char *method;

char *inputstring;

method = getenv(“REQUEST_METHOD”); //将返回结果赋予指针

if(method == NULL)

    return 1;       //找不到环境变量REQUEST_METHOD

if(!strcmp(method, ”POST”))  // POST方法

{

    length = atoi(getenv(“CONTENT_LENGTH”)); //结果是字符,需要转换

    if(length != 0)

    {

        inputstring = malloc(sizeof(char)*length + 1) //必须申请缓存,因为stdin是不带缓存的。

        fread(inputstring, sizeof(char), length, stdin); //从标准输入读取一定数据

}

}

else if(!strcmp(method, “GET”))

{

    Inputstring = getenv(“QUERY_STRING”);   

    length = strlen(inputstring);

}

if(length == 0)

return 0;

}

       Perl实现代码:

$method = $ENV{‘REQUEST_METHOD’};

if($method eq ‘POST’)

{

    Read(STDIN, $input, $ENV{‘CONTENT_LENGTH’});

}

if($method eq ‘GET’ || $method eq ‘HEAD’)

{

    $input = $ENV{‘QUERY_STRING’};

}

if($input eq “”)

{

&print_form;

exit;

}

       PYTHON代码实现

#!/usr/local/bin/python

import cgi

def main():

form = cgi.FieldStorage()

       Python代码实现更简单,cgi.FieldStorage()返回一个字典,字典的每一个key就是变量名,key对应的值就是变量名的值,更本无需用户再去进行数据解码!

       获取环境变量的时候,如果先判断“REQUEST_METHOD”是否存在,程序会更健壮,否则在某些情况下可能会造成程序崩溃。因为假若CGI程序不是由服务器调用的,那么环境变量集里就没有与CGI相关的环境变量(如REQUEST_METHOD,REMOTE_ADDR等)添加进来,也就是说“getenv(“REQUEST_METHOD”)”将返回NULL!

2.URL编码

      不管是POST还是GET方式,客户端浏览器发送给服务器的数据都不是原始的用户数据,而是经过URL编码的。此时,CGI的环境变量Content_type将被设置,如Content_type = application/x-www-form-urlencode就表示服务器收到的是经过URL编码的包含有HTML表单变量数据。

编码的基本规则是

    变量之间用“&”分开;

    变量与其对应值用“=”连接;

    空格用“+”代替;

    保留的控制字符则用“%”连接对应的16禁止ASCII码代替;

    某些具有特殊意义的字符也用“%”接对应的16进制ASCII码代替;

    空格是非法字符;

    任意不可打印的ASCII控制字符均为非法字符。

例如,假设3个HTML表单变量filename、e-mail和comments,它们的值对应分别为hello、mike@hotmail.com和I’ll bethere for you,则经过URL编码后应为:

filename=hello&e-mail=hello@hotmail.com&comments=I%27ll+be+there+for+you

所以,CGI程序从标准输入或环境变量中获取客户端数据后,还需要进行解码。解码的过程就是URL编码的逆变:根据“&”和“=”分离HTML表单变量,以及特殊字符的替换。

    在解码方面:

PYTHON代码实现是最理想的,cgi.FieldStorage()函数在获取数据的同时就已自动进行代码转换了,无需程序员再进行额外的代码编写。Perl其次,因为在一个现成的Perl库:cgi-lib.pl中提供了ReadParse函数,用它来进行URL解码很简单:

require ‘cgi-lib.pl’;

&ReadParse(*input);

CGI数据输出方面:

      CGI程序如何将信息处理结果返回给客户端?这实际上是CGI格式化输出。

      在CGI程序中的标准输出stdout是经过重定义了的,它并没有在服务器上产生任何的输出内容,而是被重定向到客户浏览器,这与它是由C,还是Perl或Python实现无关。

所以,我们可以用打印来实现客户端新的HTML页面的生成。比如,C的printf是向该进程的标准输出发送数据,Perl和Python用print向该进程的标准输出发送数据。

(1)   CGI标题

CGI的格式输出内容必须组织成标题/内容的形式。CGI标准规定了CGI程序可以使用的三个HTTP标题。标题必须占据第一行输出!而且必须随后带有一个空行

( 2 )  MIME:

向标准输出发送网页内容时要遵守MIME格式规则:

任意输出前面必须有一个用于定义MIME类型的输出内容(Content-type)行,而且随后还必须跟一个空行。如果遗漏了这一条,服务将会返回一个错误信息。(同样使用于其他标题)

例如Perl和Python:

print “Content-type:text/html\n\n”;   //输出HTML格式的数据

print “<body>welcome<br>”

print “</body>”

C语言:

printf( “Content-type:text/html\n\n”);

printf(“Welcome\n”);

MIME类型以类型/子类型(type/subtype)的形式表示。

其中type表示一下几种典型文件格式的一种:

Text、Audio、Video、Image、Application、Mutipart、Message

Subtype则用来描述具体所用的数据格式。

 

Location

使用Location标题,一个CGI可以使当前用户转而访问同一服务器上的另外一个程序,甚至可以访问另外一个URL,但服务器对他们的处理方式不一样。

使用Location的格式为:Location:Filename/URL,例如:         

       print “Location:/test.html\n\n”;

这与直接链接到test.html的效果是一样的。

print “Location:http://www.chinaunix.com/\n\n”

由于该URL并不指向当前服务器,用户浏览器并不会直接链接到指定的URL,而是给用户输出提示信息。

HTTP状态码

       表示了请求的结果状态,是CGI程序通过服务器用来通知用户其请求是否成功执行的信息码,本文不做研究。

就是获得getResponseCode(),一般值在0~200为正常,超过视为不正常或特殊意思

四.CGI中的信号量和文件锁

       因为CGI程序时公用的,而WEB服务器都支持多进程运行,因此可能会发生同时有多个用户访问同一个CGI程序的情况。比如,有2个用户几乎同时访问同一个CGI程序,服务器为他们创建了2个CGI程序进程,设为进程A和进程B。假如进程A首先打开了某个文件,然后由于某种原因被挂起(一般是由于操作系统的进程调度);而就在进程A被挂起的这段时间内,进程B完成了对文件的整个操作流程:打开,写入,关闭;进程A再继续往下执行,但进程A所操作的文件依旧是原来文件的就版本,此时进程A的操作结果将覆盖进程B的操作结果。

为了防止这种情况发生,需要用到文件锁或者信号量。

钥匙文件?

假如有多个不同的HTML可以调用同一个CGI程序,那么CGI程序如何区分它们呢?一个是通过隐含的INPUT标签。不过觉得这个比较麻烦,因为CGI必须经过一系列解码后才能找到这个隐含INPUT的变量和其值。

五.设置HTTP服务器以兼容CGI

       用Perl编写的CGI程序后缀为:.pl;Python编写的CGI程序后缀为:.py;而C编写的CGI程序后缀为:.cgi,如果在win下编译出来的是.exe,最好将它重命名为.cgi。这些都是为了HTTP服务能够识别并调用它们。

       当使用appche httpd服务器时,请编辑它的配置文件httpd.conf如下:

       修改AddHandler cgi-script一句为AddHandler cgi-script .cgi .py.pl

六.关于CGI的C语言库——cgihtml

       Cgihtml是一个应用非常广泛的C语言编写的CGI库。它提供的功能函数如下:

       Read_cgi_input():获取并解析HTML表单输入,返回一个指向某结构体的指针

       Cgi_val():获取每个表单变量的值

       Html_header():输出HTML标题栏

       Html_begin():输出HTML文档的开始部分

       H1():输出一行字符,字体为H1

Html_end():输出HTML文档的结尾部分。

#include “cgi-lib.h”

#include “html-lib.h”

#include “string-lib.h”

六.后话

      有的人认为可以用JavaScript来代替CGI程序,这其实是一个概念上的错误。JavaScript只能够在客户浏览器中运行,而CGI却是工作在服务器上的。他们所做的工作有一些交集,比如表单数据验证一类的,但是JavaScript是绝对无法取代CGI的。但可以这样说,如果一项工作即能够用JavaScript来做,又可以用CGI来做,那么绝对要使用JavaScript,在执行的速度上,JavaScript比CGI有着先天的优势。只有那些在客户端解决不了的问题,比如和某个远程数据库交互,这时就应该使用CGI了。

SSI:一种用来动态输出HTML文本的特殊程序。

网页里包含有某个变量,提交给服务器后,只有该变量改变。此时我们希望服务器不要把整个页面内容都发送过来,而只需要告诉客户端的浏览器,哪个变量的值便成什么样了,浏览器会自动更新。

SSI在服务器端运行。

SSI不需要外部接口,它不像CGI从标准输入接收信息。

你浏览你的HTML文档时看不到SSI标记,因为它已经被相应的程序输出所替代。

所有的SSI命令都是嵌入在普通的HTML注释行中的。当服务器无法解释SSI时,它将不解释并直接把文档传给浏览器,由于命令在注释中,故浏览器将忽略它们。而当服务器识别SSI时,它并不将该命令传给浏览器,相反,服务器将从上到下扫描HTML文档,执行每一个嵌入注释的命令,并将命令的执行结果代替原注释。

<! –注释文本-->。服务器将根本不查看注释,除非已启动SSI。

与纯注释不同的是,所有的SSI命令都是以#打头。

<!--#command tagname = “parameter”-- >,command指出服务器做什么,tagname指出参数类型,parameter是该命令的用户定义值。

The currentdate is<! --#echo var = “DATE.LOCAL”-- >,服务器将向浏览器输出时间。

 

CGI实现登录、注册功能
04-26
这个CGI代码完整实现了登录、注册功能(带有数据库),对您学习CGI将会有巨大帮助
web教程+CGI设计
04-10
WEB 开发好demo需要的自己下载,绝对超值好用,是web入门的好教程
深入理解CGIWeb开发的老将重新定义
最新发布
小灰灰的博客
04-10 279
CGI是一种标准协议,用于Web服务器和外部程序(通常是服务器端脚本或程序)之间的数据交换。它是一种使网页内容动态化的早期技术,允许服务器端脚本在接收到用户请求后,运行并生成带有动态内容的网页,然后再将其发送回客户端浏览器进行显示。虽然CGI可能不再是最前沿的Web应用开发技术,但它在Web开发的历史中占有重要地位,并且在某些特定情况下提供了可行的解决方案。理解CGI原理和应用可以帮助开发者更好地把握Web技术的演变,以及如何选择合适的工具来构建Web应用。
cgi web 调用多次启动_万法归宗:CGI
weixin_39612849的博客
11-28 159
遥想腾讯实习那年,了解到了CGI,这种我以为只出现在教科书中,早就被扫进历史尘埃里的技术竟然还在鹅厂盛行着。一时纠结:我本想来大厂学习新技术,没想到却来这里考古。不过后来我和自己和解了,虽然CGI早被业界主流淘汰,但通过学习它,可以加深WebServer通信、HTTP协议的深层认识,也算有所收获。CGI 即Common Gateway Interface,译作“通用网关接口”。初次听闻...
C语言CGI编程入门(一)
热门推荐
gnefniu的专栏
01-05 2万+
C语言CGI编程入门(一) http://www.leavesongs.com/WEB/CGIforC_1.html     CGI是指web服务器调用编程语言编写的程序的一个接口。比如我们可以编写一个用户注册的页面,用户将其输入的邮箱、用户名、密码输入并点击注册,此时浏览器就将用户输入的内容发送给了我们后台的CGI程序,我们的CGI程序接受到这些信息,可以对其进行处理。比如送
动态WEB技术CGI
wdirdo的博客
11-19 446
CGI CGI CGI是什么? 公共网关接口(Common Gateway Interface,CGI)是Web服务器运行时外部程序的规范,按CGI协议编写的程序可以扩展服务器功能。<百度百科> CGIWEB服务器与其它主机上程序进行通信的一种工具,其中程序必须运行在网络服务器上。即CGI实现了在网络服务器下运行外部分应用程序(或网关)。 CGI的功能? CGI应用程序能与浏览器...
CGI是什么
嘿嘿
07-17 1万+
CGI 早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器。随着Web技术的发展,逐渐出现了动态技术,但是Web服务器并不能够直接运行动态脚本,为了解决Web服务器与外部应用程序(CGI程序)之间数据互通,于是出现了CGI(Common Gateway Interface)通用网关接口。简单理解,可以认为CGIWeb服务器和运行其上的应用程序进行“交流”的一种约定。 Web系统结构 CGIWeb服务器和一个独立的进程之间的协议,它会把HTT
CGI详解原理配置访问
redparrot2008的博客
09-06 3189
进程A再继续往下执行,但进程A所操作的文件依旧是原来文件的就版本,此时进程A的操作结果将覆盖进程B的操作结果。接下来,CGI程序的执行流程是这样的:查询与该CGI程序进程相应的环境变量:第一步是request_method,如果是POST,就从环境变量的len,然后到该进程相应的标准输入取出len长的数据。服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间的HTTP通信,我们只需要知道浏览器请求执行服务器上哪个CGI程序就可以了,其他不必深究细节,因为这些过程不需要程序员去操作。
嵌入式Web项目(二)——CGI的引入
m0_56145255的博客
04-23 2600
文章目录静态网页工作原理动态网页工作原理CGI的概念CGI工作原理boa配置静态文件与CGI文件访问路径静态文件CGIPath动态网页以shell语言,实现动态网页案例第一次访问测试第二次测试C语言测试 静态网页工作原理 这里以上一节博客中案例test_01.html文件为例。(类比图中的a.html) 浏览器通过访问我的TCP服务器(Web服务器,boa),请求获得test01_html文件的信息。 服务器(boa)在接收到这个请求以后,就会去解析该请求在我们对应的资源目录文件中去寻找请求文件 改资
CGI介绍
蓬莱道人的博客
04-16 2576
1、什么是CGI 2、CGIWebserver的区别 2、CGI的标准输入和标准输出 3、CGI的环境变量 4、CGI程序数据处理的一般工作流程 5、CGI中From表单数据的分析和解码 1、什么是CGI CGI即通用网关接口(Common Gateway Interface),是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交...
WebCGI简介
jiangwei0512的博客
12-27 1372
CGI简介。
嵌入式WEB服务器及远程测控应用详解.rar
08-12
第一章:嵌入式 WEB服务器的移植及注意点 第二章:HTML中表单的使用 第三章:XML技术及Java Script技术在网页中的使用 第四章:CGI介绍及表单提交方式 第五章:简单的 LED 测试 第六章:A/D测量及在网页中的显示 第七章: 基于 ZC301摄像头开源视频服务器代码移植 第八章: IP 自动获得的设置和测试 第九章:复杂 LED测试 第十章:基于 I/O 多路复用技术的并发服务器(C语言) 第十一章: Java Applet服务器编程 第十二章: Java Applet 动态曲线显示 (文件名:嵌入式WEB服务器及远程测控应用详解.rar)
cgi用户登录验证源码和例子
01-03
cgi开发的用户登录验证界面,绝对可用,window和arm嵌入式linux的cgi程序均可用,会话超时重新登录,方便集成到自己的应用程序中
PHP-FPM 的管理和配置详解
01-02
... ... 支持平滑停止、启动的高级进程管理功能 动、静态子进程产生 慢日志,记录脚本运行所导致的异常缓慢 ...几个概念的理解 1)、CGI CGI全称“公共网关接口”(Common Gateway Interface)...FastCGI是一个常驻型的CGI,它
PHP7内核CGI与FastCGI详解
01-03
CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。 FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。 PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序...
TCPIP协议详解(4-1)
01-16
WINS 55 7.1 NetBIOS 55 7.2 NetBIOS名字解析 57 7.3 动态NetBIOS名字解析 58 7.3.1 使用WINS的优点 58 7.3.2 WINS如何工作 59 7.3.3 配置WINS客户机 60 7.3.4 为代理配置WINS 60 7.3.5 ...
TCP-IP技术大全
12-01
包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议(RIP、OSPF等)、互联网打印协议、LDAP目录服务、远程...
CGI入门一:使用C++实现CGI程序
肥叔菌的博客
04-18 1万+
为什么需要CGI 最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是我把请求参数发送给你,然后我接收你的处理结果给客户端。那这个约定就是 co...
WEB通用网关接口:CGI简单教程
ARM-Linux
05-12 3937
CGI 全称为Common Gateway Interface (通用网关接口),目的是能够让服务器能够方便的调用外部程序。 CGI本身是一套协议和规范,原则上只要是拥有读写文件功能的编程语言都可以用来编写CGI程序,例如C,C++,Perl,Visual Basic,Shell等等,历史上用来编写CGI程序使用最广泛的是Perl语言,连PHP一开始也是用Perl编写的,估计也受这个传统的...
cgi-util.c
11-26
cgi-util.c是一个C语言编写的cgi工具库,用于快速开发cgi程序。它包含了一些常用的cgi函数,例如解析表单数据、发送http头部、输出html代码等。使用这个工具库,开发者可以更加便捷地处理cgi请求,节省大量的开发时间。 cgi-util.c提供了一些函数来解析表单数据,包括解析GET请求和POST请求中的参数。这对于处理用户提交的表单数据非常有用,开发者可以在自己的cgi程序中调用这些函数,轻松地获取用户输入的数据并进行处理。 另外,cgi-util.c还提供了一些函数来发送http头部,包括设置Content-Type、Location、Cookie等。这些函数可以帮助开发者更加灵活地控制cgi程序的http头部,实现一些高级功能,如重定向、设置cookie等。 除此之外,cgi-util.c还提供了一些函数来输出html代码,包括输出html标签、表格、链接等。这些函数可以帮助开发者快速生成html页面,减少html代码的编写时间,提高开发效率。 总之,cgi-util.c是一个非常实用的cgi工具库,它提供了丰富的功能,能够帮助开发者快速开发cgi程序,处理表单数据,发送http头部,输出html代码等。使用这个工具库,开发者可以专注于业务逻辑的实现,而不用花费大量的精力在处理cgi请求的细节上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • WEB之CGI----CGI详解(原理,配置及访问) 71878
  • Oracle错误 ora-12514 解决方法 27905
  • Qt---之Q_OBJECT详解 21077
  • C++---之type的用法 20373
  • 牛顿拉夫逊法(Newton-Raphson Method) 20345

分类专栏

  • 各种工具的安装及使用 13篇
  • 计算机基础
  • 架构问题 1篇
  • QT面试题
  • C++面试题 2篇
  • sheel面试题
  • Opencv面试题
  • Freemarker 2篇
  • JSP 2篇
  • 进制转换 3篇
  • 算法--之根的迭代 1篇
  • MySql--之类型概念 1篇
  • JVM 2篇
  • java 10篇
  • Java---UI 2篇
  • Java--各种块作用 3篇
  • Java--之Thread 3篇
  • Java--之结构
  • Java--之异常概念
  • oracle---之错误积累 6篇
  • Tomcat/Web 5篇
  • 正则表达式 2篇
  • Excel--Java操作 3篇
  • word--之Java操作 1篇
  • java--设计模式 1篇
  • VMware---设置 6篇
  • TCP/IP 2篇
  • Win--之CMD指令命令 1篇
  • Linux下C++文件格式 1篇
  • FTP---之操作及概念 2篇
  • 程序乱码问题 4篇
  • 编程之基础概念 4篇
  • UDP 2篇
  • Eclipse---之使用手册 11篇
  • MapReduce 1篇
  • Linux---之系统基础概念 1篇
  • spark 1篇
  • C++---之#define的使用 1篇
  • C++ 23篇
  • UML---之应用 3篇
  • QT---错误积累 8篇
  • QT---结构基础 40篇
  • QT---之字符串应用 12篇
  • QT---信号和槽的概念 5篇
  • QT之Model-VIEW-Delegate 2篇
  • QT--之图形处理 10篇
  • QT---之时间转换 2篇
  • QT---之自带调试
  • QT---拷贝及隐式共享的概念 3篇
  • QT---之UnCommand概念
  • QT---之painter相关 1篇
  • TCP 1篇
  • Python---结构基础 3篇
  • 协议族概念和区别 1篇
  • Navicate
  • WEB之CGI服务 5篇
  • Python---之安装 1篇
  • Linux--之指令命令 5篇
  • Linux---之错误积累 3篇
  • Linux---权限设置--CentOS
  • Linux---命令--文件或目录属性设置 3篇
  • Cmake---之配置文件的使用 8篇
  • C++---动态库 4篇
  • C++语法基础 5篇
  • STL基础 3篇
  • 编译器工作原理 3篇
  • 图像算法基础 2篇
  • Opencv基础学习 9篇
  • Opencv工程文档 28篇
  • Opencv---之各种算法 1篇

最新评论

  • UML---之StarUML操作

    星河༆: 为啥看不到图啊

  • opencv(21)---轮廓属性特征以及应用之凹包

    不yi而飞的岁月: 别人确实叫锤子表情包

  • opencv(21)---轮廓属性特征以及应用之凹包

    不yi而飞的岁月: 高,实在是高

  • opencv(21)---轮廓属性特征以及应用之凹包

    yaodix: 凹凸不分,写个锤子

  • Qt---之Q_OBJECT详解

    DecentFang: 我在Qt5.15.2版本中看到的Q_OBJECT宏定义已经不是这样的了,有一点点变化

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • ubuntu的常规指令
  • 工具安装---------------git的注意地方-----git fetch与git pull的区别
  • 工具安装-----------之vim常用命令总结 (转)
2019年148篇
2018年127篇

目录

目录

分类专栏

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

两个鬼故事153号段属鸡李姓女孩起名大全死神呼唤君之名顾姓宝宝取名起名大全男人谢氏起名大全赛博朋克2077破解版一生守候王若琳甘肃卫视武汉华润中央公园养殖场场起名大全广州电话区号大明王朝1566剧情十面埋伏讲的什么故事金枝欲孽2演员表0x80070002xfplay无码专区亚洲王字男孩起名字大全生辰八字属鸡起名七月出生的宝宝起名陈情令原著小说北洋枭雄丈夫得了抑郁症不痛不痒queue是什么意思展姓女孩起名大全以睿取名起名大全企业起名三个字精选起名茶叶品牌商标魔兽争霸mh马来西亚语言少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化