1.5 写个C语言程序调用SQLite
    现在我们来写个C/C++程序,调用 sqlite    的 API 接口函数。
    下面是一个C程序的例子,显示怎么使用 sqlite 的 C/C++ 接口. 数据库的名字由第一个参数取得且第二个参数或更多的参数是 SQL 执行语句. 这个函数调用sqlite3_open() 在 22 行打开数据库, sqlite3_exec() 在 27 行执行 SQL 命令, 并且sqlite3_close() 在 31 行关闭数据库连接。
代码:

//     name: opendbsqlite.c
//    This file is used to test C/C++ API for sqlite
//     Author : zieckey
//     2006/04/11
#include
#include

int main( void )
{
    sqlite3 *db=NULL;
    char *zErrMsg = 0;
    int rc;
    rc = sqlite3_open("zieckey.db", &db);   //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
    if( rc ){
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        exit(1);
    }
    else printf("open zieckey.db successfully!\n");
  
    sqlite3_close(db);                //关闭数据库
    return 0;
}

编译:# gcc opendbsqlite.c -o db.out
也许会碰到类似这样的问题:
/tmp/ccTkItnN.o(.text+0x2b): In function `main':
: undefined reference to `sqlite3_open'
/tmp/ccTkItnN.o(.text+0x45): In function `main':
: undefined reference to `sqlite3_errmsg'
/tmp/ccTkItnN.o(.text+0x67): In function `main':
: undefined reference to `sqlite3_close'
/tmp/ccTkItnN.o(.text+0x8f): In function `main':
: undefined reference to `sqlite3_close'
collect2: ld returned 1 exit status

这是个没有找到库文件的问题。
由于用到了用户自己的库文件,所用应该指明所用到的库,我们可以这样编译:

# gcc opendbsqlite.c -o db.out -lsqlite3

我用用 -lsqlite3 选项就可以了(前面我们生成的库文件是 libsqlite3.so.0.8.6 等,
去掉前面的lib和后面的版本标志,就剩下 sqlite3 了所以是 -lsqlite3 )。
如果我们在编译安装的时候,选择了安装路径,例如这样的话:
.......
# ../sqlite/configure --prefix=/usr/local/arm-linux/sqlite-ix86-linux
.......
这样编译安装时,sqlite的库文件将会生成在  /usr/local/arm-linux/sqlite-ix86-linux/lib 目录下
这时编译还要指定库文件路径,因为系统默认的路径没有包含 /usr/local/arm-linux/sqlite-ix86-linux/lib

# gcc opendbsqlite.c -lsqlite3 -L/usr/local/arm-linux/sqlite-ix86-linux/lib

如果还不行的话,可能还需要指定头文件 sqlite3.h 的路径,如下:

# gcc opendbsqlite.c -lsqlite3 -L/usr/local/arm-linux/sqlite-ix86-linux/lib -I/usr/local/arm-linux/sqlite-ix86-linux/include

这样编译应该就可以了 ,运行:
# ./db.out
open zieckey.db successfully!
是不是很有成就感阿 ,呵呵,这个上手还是很快的。
1)linux下查找指定文件名:
find PATH -type f -name "aaa.txt"


2)find+grep配合查找包含某字符串的文件并显示行号:
#> find . -type f  -exec grep 'mingtian'  -l {} \;
grep -l :是显示匹配的内容的文件名字!
或者:
#> find . -type f -name "*.*" |xargs grep 'xiaoshou' -l
(这个方法 不好,挺乱的,还慢,推荐前一个方法!)

such as :
find . -type f -name "*.php"|xargs grep -in "date" -R
linux下文件的类型是不依赖于其后缀名的,但一般来讲:
.o,是目标文件,相当于windows中的.obj文件
.so 为共享库,是shared object,用于动态连接的,和dll差不多
.a为静态库,是好多个.o合在一起,用于静态连接
.la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式   $file *.la
      *.la: ASCII English text
所以可以用vi来查看其内容。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@阅读全文
1.数组a[N],存放了1至N-1范围内N个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型:

int do_dup(int a[],int N)

算法:
a1+a2+ ......+aN=1+2+3+..+x+..+(N-1)+(N-x);
s1=a1+a2+....+aN;
s2=1+2+3+...+N;
x=s1-s2+N;
#####################################################阅读全文
sizeof()---函数用法
[int占4字节,short占2字节]
1.0 回答下列问题:[答案在文章末尾]
1. sizeof(char) =                           
2. sizeof 'a'   =                           
3. sizeof "a"   =                        
4. strlen("a")) =
  如果你答对了全部四道题,那么你可以不用细看下面关于sizeof的论述。如果你答错了部分题目,
    那么就跟着我来一起探讨关于sizeof的用法了。  
  对于前面的题目,我想一般有一定C基础的同志应该不会答错1和4题。至于第2题,我想应该要清楚sizeof是求字符串所占的内存。
    "a"在内存中的表现为a\0,别忘了末尾的\0也占一个字节呢。至于第2题,可能有些人会惊讶了。C 语言中,字符常数是int 型,
    因此 sizeof('a') 是 sizeof(int), 这是另一个与 C++ 不同的地方。既然字符常数是int 型,那么int就可以存放4个字符,
    我们可以得到sizeof 'abcd'为 4。  
===========================================================================================================阅读全文
首先打开两个shell终端;

一个shell下输入如下命令:
[root@MagicLinux ~]# echo -e "at \r" >/dev/ttyS0      //{echo -e可以发送回车等特殊字符;}

这个是发送字符"at "到/dev/ttyS0即串口0;

另一个shell下输入如下命令:
[root@MagicLinux ~]# cat /dev/ttyS0

这个是接收来自串口0的字符;


一个shell下输入如下命令:
[root@MagicLinux ~]# echo -e "at \r" >/dev/ttyS0      //{echo -e可以发送回车等特殊字符;}

这个是发送字符"at <CR>"到/dev/ttyS0即串口0;

另一个shell下输入如下命令:
[root@MagicLinux ~]# cat /dev/ttyS0

这个是接收来自串口0的字符;

求助shell  echo “HEX字符串” 到串口ttyUSB0的方法
发送字符到串口
echo -n “abc” > /dev/ttyUSB0 #这个正常
串口接受到 61 62 63  即abc
但是我想echo 到串口直接发送FE 01 02 的HEX值
echo -n “FE 01 02” /dev/ttyUSB0 #这里该怎么写呢?
不知道描述的清楚否  请教大神~解惑

echo -n -e "\xFE\x01\x02"

来自:http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=147778&highlight=ttyUSB0
http://bbs.chinaunix.net/thread-4057939-1-1.html
http://blog.csdn.net/sidely/article/details/40181463
http://blog.chinaunix.net/uid-7491192-id-2051154.html
dmidecode -t 1   #Manufacturer,Product Name判断是否是虚拟机还是实体机。
根据这个NF5280M2,能查出更多信息机房和机架信息罢?

dmidecode在 Linux 系统下获取有关硬件方面的信息。dmidecode 遵循 SMBIOS/DMI 标准,以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息, 其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等, 既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。
1、查看内存槽数、那个槽位插了内存,大小是多少
dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range

2、查看最大支持内存数
dmidecode|grep -P 'Maximum\s+Capacity'

3、查看槽位上内存的速率,没插就是unknown。


dmidecode|grep -A16 "Memory Device"|grep 'Speed'
dmidecode|grep -A16 "Memory Device"|grep 'Speed'

来自:http://www.ttlsa.com/linux/the-linux-dmidecode-command-to-get-the-hardware-information/

Linux---查看内存型号:
sudo dmidecode -t memory



简单点
1. 查看物理CPU的个数
#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
2. 查看逻辑CPU的个数
#cat /proc/cpuinfo |grep "processor"|wc -l
3. 查看CPU是几核
#cat /proc/cpuinfo |grep "cores"|uniq
4. 查看CPU的主频
#cat /proc/cpuinfo |grep MHz|uniq
来自:http://ldbjakyo.iteye.com/blog/785745
http://jingyan.baidu.com/article/63acb44a81001361fcc17e21.html
       RSS -- 进程本身的内存占用
  VSZ -- 算上共享库的总占用
  ps -eo pid,user,comm,args,%cpu,%mem,rss,vsz,sz
  查看内存、CPU
  ps -fewL|grep face_svr
  ps -fp $(pgrep -d, face_svr)
  top c
  VIRT 使用的虚拟内存总量, VIRT=SWAP+RES
  RES 使用的、未被换出的物理内存大小, RES=CODE+DATA
  SWAP 使用的虚拟内存中被换出的大小
  SHR 共享内存大小
  CODE 可执行代码占用的物理内存大小
  DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小
  %MEM 使用的物理内存百分比, =RES/总共内存大小
示例:
  ps -eo pid,user,comm,args,%cpu,%mem,rss,vsz,sz
  PID USER     COMMAND         COMMAND      %CPU %MEM   RSS    VSZ    SZ
  1    root               init            /sbin/init        0.0     0.3      1236   2900   725
注释:
  RSS -- 进程本身的内存占用
  VSZ -- 算上共享库的总占用

linux基本操作

passwd修改密码

如果忘记密码,进single模式直接设置新密码(e-à+single-àb)。

查看系统版本:

[root@localhost ~]# lsb_release -a阅读全文
根本办法:  
  
  Options-〉“Document   Options”-〉在“File   filter”   里边加上*.cc  
  
  或者  
  Options-〉Preferences-〉Languages-〉点选C++   Language,然后点击右边“Doc   Types”按钮弹出-〉“Document   Options”-〉在“File   filter”   里边加上*.cc
post.php

<?php
$cfg = array (
  // 用户名
  name=>"xdy108@126.com",
  // 密码
  pass=>"001002",
    cookie_file=>"cookie.txt"
);
include("httpd.php");
$c = new http("login.kaixin.com", "/Login.do", "POST");
$c->set_val("email", $cfg["name"]);
$c->set_val("password", $cfg["pass"]);
$c->set_val("login_type", "1000");
$c->set_val("autoLogin", "true");
$c->set_val("origURL", "http://www.kaixin.com/SysHome.do");
$c->send();
$source = $c->get_cnt(true);
$s_regex = '@(societyguester=\w+;)@s';
$a_matches = array ();
preg_match_all($s_regex, $source, $a_matches);
$cookie_login_key = $a_matches[1][1];//cookie放入这个变量
$c2 = new http("gf.kaixin.com", "/bank.do", "POST", 80, $cookie_login_key);
$c2->send();
$source = $c2->get_cnt();
echo $source;  
exit;
?>


httpd.php阅读全文
    用一片DS18B20构成测温系统,测量的温度精度达到0.1度,测量的温度的范围在-20度到+100度之间,用8位数码管显示出来。
阅读全文
        While thinking about a programming language deficiency, I rediscovered polymorphism. Overloading a function allows a function call to behave differently when passed variables of different type. I was trying to devise a method of simulating function overloading, because PHP does not support it. I considered implementing a function with an if-else statement ladder that tests the type of the actual argument and executes statements that correspond to the argument’s type. This technique may ultimately result in a monolithic function or a function implementation that is too knowledgeable of multiple class hierarchies. Rethinking a problem that I was hoping to solve with function overloading allowed me to accept the lack of this language feature and think of other techniques.
There are two problems that arise from the if-else statement ladder approach. The implementation of such a function would require the function to have knowledge of every data type to be used with it. This problem can be extended to knowing class hierarchies, if subclassing is involved. This means that an introduction of a new data type to be processed by the function would require the function to be modified, which creates the possibility that the modification will break other existing code that relies on the function. The second problem is having the function’s maintainer think about how the function should operate on the different data types that can be passed to it. This responsibility is better placed on the people who maintain the different data types.
One solution that deals with the problems in the if-else statement ladder is polymorphism. Polymorphism allows a set of heterogeneous elements to be treated identically. It is achieved through inheritance. In PHP, interface inheritance and implementation inheritance can be written explicitly through the use of interfaces and class extensions, respectively. Interfaces specify a class interface without providing an implementation. Classes from different class hierarchies can implement an interface, and in this way, it can be seen as different from abstract classes. When a class is defined to implement an interface, the language enforces a rule that the class implements all features of the interface. A method that operates on an interface will accept an object of any class that implements the interface, and it will function correctly.
Here is a toy example of interface inheritance, polymorphism, and PHP type hinting:

<?
        interface HasArea
        {
                public function area();
                public function areaUnit();
        }

        abstract class Shape
        {
                private $color;

                public function __construct( $color )
                {
                        $this->color = $color;
                }

                public function getColor()
                {
                        return $this->color;
                }
        }

        class Rectangle extends Shape implements HasArea
        {
                private $w;
                private $h;

                public function __construct( $color, $w, $h )
                {
                        parent::__construct($color);
                        $this->w = $w;
                        $this->h = $h;
                }

                public function area()
                {
                        return ($this->w * $this->h);
                }

                public function areaUnit()
                {

                        if( $this->area() > 1 )
                                return "square meters";
                        else
                                return "square meter";
                }
        }

        class Territory implements HasArea
        {
                private $r;

                public function __construct()
                {
                        $this->r = $r;
                }

                public function area()
                {
                        return 5;
                }

                public function areaUnit()
                {
                        return "cities";
                }
        }

        function outputArea( HasArea $ha )
        {
                echo "The area is:  "
                 . " {$ha->area()} {$ha->areaUnit()}\n";
        }

        $HAs = array(
                new Rectangle("red",2,3),
                new Territory()
        );

        foreach( $HAs as $HA )
        {
                outputArea( $HA );
        }
?>

Type hints help the PHP interpreter enforce the restriction that outputArea() operates only on objects of data types that implement the HasArea interface. Rectangle and Territory are from unrelated class hierarchies. outputArea() can operate on these classes, since these classes implement the HasArea interface.
The explored method accomplishes only some of the features offered by function overloading. In the above example, outputArea() was restricted to one argument. In some programming languages, a function can be overloaded on the number of arguments along with the types of those arguments and the order that those types appear in the argument list. This method, however, was useful in a problem I considered solving with function overloading.

http://www.phpchina.com/html/10/10-3496.html
原理

    一般,有2种方法可以导出doc文档,一种是使用com,并且作为php的一个扩展库安装到服务器上,然后创建一个com,调用它的方法。安装过 office的服务器可以调用一个叫word.application的com,可以生成word文档,不过这种方式我不推荐,因为执行效率比较低(我测试了一下,在执行代码的时候,服务器会真的去打开一个word客户端)。理想的com应该是没有界面的,在后台进行数据转换,这样效果会比较好,但是这些扩展一般需要收费。
    第2种方法,就是用PHP将我们的doc文档内容直接写入一个后缀为doc的文件中即可。使用这种方法不需要依赖第三方扩展,而且执行效率较高。
    word本身的功能还是很强大的,它可以打开html格式的文件,并且能够保留格式,即使后缀为doc,它也能识别正常打开。这就为我们提供了方便。但是有一个问题,html格式的文件中的图片只有一个地址,真正的图片是保存在其他地方的,也就是说,如果将HTML格式写入doc中,那么doc中将不能包含图片。那我们如何创建包含图片的doc文档呢?我们可以使用和html很接近的mht格式。
    mht格式和html很类似,只不过在mht格式中,外部链接进来的文件,比如图片、Javascript、CSS会被base64进行编码存储。因此,单个mht文件就可以保存一个网页中的所有资源,当然,相比html,它的尺寸也会比较大。
    mht格式能被word识别吗?我将一个网页保存成mht,然后修改后缀名为doc,再用word打开,OK,word也可以识别mht文件,并且可以显示图片。
    好了,既然doc可以识别mht,下面就是考虑如何将图片放入mht了。由于html代码中的图片的地址都是写在img标签的src属性中,因此,只要提取html代码中的src属性值,就可以获得图片地址。当然,有可能您获取到的是相对路径,没关系,加上URL的前缀,改成绝对路径就可以了。有了图片地址,我们就可以通过file_get_content函数获取到图片文件的具体内容,然后调用base64_encode函数将文件内容编码成 base64编码,最后插入到mht文件的合适位置即可。
    最后,我们有两种方法将文件发送给客户端,一种是先在服务器端生成一个doc文档,然后将这个doc文档的地址记录下来,最后,通过 header("location:xx.doc");就可以让客户端下载这个doc。还有一种是直接发送html请求,修改HTML协议的header 部分,将它的content-type设置为application/doc,将content-disposition设置为attachment,后面跟上文件名,发送完html协议以后,直接将文件内容发送给客户端,也可以让客户端下载到这个doc文档。
阅读全文
一、基础篇
   HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
1、通用头域
通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer- Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。
Cache-Control头域
Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no- store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、 private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、 max-age。各个消息中的指令含义如下:
Public指示响应可被任何缓存区缓存。
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
Date头域
Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
Pragma头域
Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。
2、请求消息
请求消息的第一行为下面的格式:
Method SP Request-URI SP HTTP-Version CRLF 
Method表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、 DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request- URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。
SP表示空格。
Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。
HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。
CRLF表示换行回车符。
请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept - Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。阅读全文
让我们算一算有多少种方法
      处理诸如 PHP 之类的现代编程语言的乐趣之一就是有大量的选项可用。PHP 可以轻松地赢得 Perl 的座右铭“There's more than one way to do it”(并非只有一种方法可做这件事),尤其是在文件处理上。但是在这么多可用的选项中,哪一种是完成作业的最佳工具?当然,实际答案取决于解析文件的目标,因此值得花时间探究所有选项。

              传统的 fopen 方法

    fopen 方法可能是以前的 C 和 C++ 程序员最熟悉的,因为如果您使用过这些语言,那么它们或多或少都是您已掌握多年的工具。对于这些方法中的任何一种,通过使用 fopen(用于读取数据的函数)的标准方法打开文件,然后使用 fclose 关闭文件,如清单 1 所示。

清单 1. 用 fgets 打开并读取文件
                              
$file_handle = fopen("myfile", "r");
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   echo $line;
}
fclose($file_handle);

阅读全文
1不写注释

       2不使用可以提高生产效率的IDE工具

       3不使用版本控制

       4不按照编程规范写代码

       5不使用统一的方法

       6编码前不去思考和计划

       7在执行sql前不执行编码和安全检测

       8不使用测试驱动开发

       9编码时不打开自动报错(error_reporting)

       10不使用一种好的调试工具

       11不重构你的代码(refactor)

       12不采用MVC这样的分层结构

       13不知道以下等等概念:KISS,DRY,MVC,OOP,REST

       14在函数或者类里直接用print或者echo输出东西而不是返回(return)

       15不使用也不去了解单元测试

       16返回HTMl而不是data,strings,objects等类型

       17糟糕的代码和配置参数(hard code messages and configuration parameters)

       18不优化sql查询

       19不使用__autoload

       20不支持自动错误操作(应该是智能纠错)

       21使用$_GET替代$_POST去进行危险的参数传递(记得这40条都是错误的东西)

       22不知道怎样使用正则表达式

       23从未听说过sql注入和跨站脚本(安全方面,应该了解下这两个东西的英文:sql injection,cross-site scripting)

       24不支持简单配置,传递参数给类的构造函数,set/get方法,定义常量

       25不能理解OOP的优缺点

       26无论要做的东西有多小,都使用OOP

       27认为做可复用的软件就是OOP

       28不使用缺省值(don't choose intelligent defaults)

       29不使用单一配置文件

       30不想让别人看到代码,却使用.inc替换掉.php

       31不使用数据库抽象层(持久层)

       32开发时不DRY(Dont repeat yourself). (就是总开发重复的东西)

       33不开发可以重复使用的类或者方法.

       34不使用抽象类或者接口类,继承,多态,封装.

       35不使用已有的设计模式优化你的程序.

       36不允许使用者定义基础目录(这点好象PHP不太适合,毕竟不是基于操作系统的开发)

       37错误的使用命名空间,使用大家都普遍使用的单词作为前缀.(这样以后别人使用会造成冲突.,例如自己定义一个function 叫 array_push())

       38使用数据库时不使用表前缀(这个很重要...)

       39不使用或者使用一个陌生的模板引擎(方便团队开发,大家要使用常见的模板)

       40不去看PHP的框架(大多数框架中都包含优秀的代码和先进的概念.值得我们学习)
简介
英文版权归Reinhold    Weber所有,中译文作者yangyang(aka    davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大PHPer指正。

40个迹象表明你还是PHP菜鸟阅读全文
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量

现介绍三中方法阅读全文
分页: 250/326 第一页 上页 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 下页 最后页 [ 显示模式: 摘要 | 列表 ]