摘要: #include <stdlib.h>#include <stdio.h>#include <string.h>#include <malloc.h>#include <math.h>typedef struct bucket{ int h; char* key; void* pData; struct bucket* pNext; struct bucket* pLast;}Bucket;typedef struct hashtable{ int size; int elementsNum; int mask; Bucket** a 阅读全文
posted @ 2012-09-26 11:36 23lalala 阅读(335) 评论(0) 推荐(0) 编辑
摘要: PHP的启动PHP的启动经历了PHP_MINIT_FUNCTION->PHP_RINIT_FUNCTION->PHP_RSHUTDOWN_FUNCTION->PHP_MSHUTDOWN_FUNCTION4个阶段。但是 这4个阶段会由于SAPI宿主的不同在不同阶段执行。如果把PHP比作汽车,那么SAPI就是公路。常见的SAPI可以是CLI/CGI一个请求过来,会执行以上4个阶段。多进程模型以APACHE的PRE-FORK为代表,在此模式下,APACHE会设定一个初始进程数量,然后请求增多以后,会以2的指数次方创建进程。多线程模型以APACHE的worker为代表,在这种模式下, 阅读全文
posted @ 2012-09-26 11:35 23lalala 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 1.serialize和unserialize函数2.json_encode 和 json_decode3.var_export 和 eval4.wddx_serialize_value 和 wddx deserialize 阅读全文
posted @ 2012-09-26 11:34 23lalala 阅读(208) 评论(0) 推荐(0) 编辑
摘要: sort 按照值排序 删除 键名 usort 带回调函数的比较。比较的是值uasort 和usort相同uksort 带回调的比较。比较的是键ksort 按照键排序 保留 键值对应关系asort 按照值排序 保留 键值对应关系 阅读全文
posted @ 2012-09-26 11:33 23lalala 阅读(94) 评论(0) 推荐(0) 编辑
摘要: int loop(struct Node* head){ struct Node* p1 = head; struct Node* p2 = head; int i = 0; while(p1 && p2){ i++; if(i!=1){ if(p1->value == p2->value){ printf("%d\n",i); return 1; } } p1 = p1->next; if... 阅读全文
posted @ 2012-09-26 11:32 23lalala 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 问题:将一个字符串中的a替换成b,b替换成c.介绍两个函数一个是strtr(),还有就是带回调的正则替换,preg_replace_callback($pattern,$callback,$text);其中callback有一个参数,接受一个$matches数组.<?php $str = "abc"; echo preg_replace_callback("/[a,b]/", function($matches){ if($matches[0] == "a"){ return "b"; ... 阅读全文
posted @ 2012-09-26 11:31 23lalala 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 时间戳方便时间的计算加减等。格式化日期更直观。 MYSQL中SELECT FROM_UNIXTIME(1342930200) //2012-07-22 12:10:00SELECT UNIX_TIMESTAMP("2012-07-22 12:10:00") //1342930200附加一个NOW()获取当前时间PHP中date('Y-m-d H:i:s', 1156219870);strtotime('2010-03-24 08:15:00); 阅读全文
posted @ 2012-09-26 11:30 23lalala 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1.直接传值function fun($arg1){ echo $arg1;}2.传引用function append(&$arg,$str){ return $arg=$arg.$str;}$source = "99";append($source,"8");echo $source;3.默认参数function fun($arg1=1,$arg2=2){ echo $arg1,$arg2;}一定程度上可以模拟函数重载。同时还要注意任何默认参数一定要放在非默认参数的右边,也就是说fun($arg1=1,$arg2);这个函数原型是错误的。4.参 阅读全文
posted @ 2012-09-26 11:29 23lalala 阅读(356) 评论(0) 推荐(0) 编辑
摘要: fopen$fp = fopen("download.php","rb"); while(!feof($fp)){ echo "fopen: ".fgets($fp); } fclose($fp);说明:对于fgets($handle,$length);fgets是读取一行,返回$length-1长度的数据。fgetc($handle)是读一个字节。file$lines = file("download.php"); foreach($lines as $line){ echo "file: " 阅读全文
posted @ 2012-09-26 11:27 23lalala 阅读(149) 评论(0) 推荐(0) 编辑
摘要: header("Content-type: text/html; charset=utf-8");function my_substr($str,$begin,$length){ $i = $begin; $result=""; while($length > 0){ if([color=red]ord($str[$i])>127[/color]){ $result .= substr($str,$i,3); $i = $i+3; }else{ ... 阅读全文
posted @ 2012-09-26 11:25 23lalala 阅读(165) 评论(0) 推荐(0) 编辑
摘要: [size=medium]1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.2 void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间,返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定 阅读全文
posted @ 2012-09-26 11:24 23lalala 阅读(349) 评论(0) 推荐(0) 编辑
摘要: v=08echo $vshell里以0开头的都会把它当作8进制数字,所以$v会报错的。 阅读全文
posted @ 2012-09-26 11:23 23lalala 阅读(119) 评论(1) 推荐(0) 编辑
摘要: php的魔术方法总结php的魔术方法都是和类有关的。 __autoload() 找不到类的时候调用 __call() 找不到类中的某个方法时候调用 __construct(), __destruct() 构造函数和析构函数 在给未定义的变量赋值时,__set() 会被调用。 读取未定义的变量的值时,__get() 会被调用。 当对未定义的变量调用isset() 或 empty()时,__isset() 会被调用。 当对未定义的变量调用unset()时,__unset() 会被调用。 __tostring() 把类当字符串输出时候调用 __clone() 当显示的是要clone 关键字复... 阅读全文
posted @ 2012-09-26 11:23 23lalala 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 一.字符串类型 php一共有8中数据类型 4种基本类型 boolean integer float(double) string 2种符合类型 array object 2种特殊类型 NULL resource 二.创建字符串的方式 1.创建 (a).单引号 echo '123'; (b).双引号 echo "123"; (c).heredoc语法结构 echo <<<EOF 123 EOF; [b]注意:<<<EOF后必须接一个换行,EOF必须顶行,所在行不能包含除了;其他字符[/b] (d).nowdoc语法结构 ec 阅读全文
posted @ 2012-09-26 11:22 23lalala 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 扩展问题问题1.给定前序遍历结果和中序遍历结果,重建二叉树递归构造就可以了。Tree* create_by_order(int* pre,int* in,int size){ if(size<=0||pre==NULL||in==NULL){ return NULL; } int i=0; Tree* rt = malloc(sizeof(Tree)); rt->value = pre[0]; //在中序中查找根节点位置 while(i<size){ if(pre[0]==in[i]){ bre... 阅读全文
posted @ 2012-09-26 11:21 23lalala 阅读(354) 评论(0) 推荐(0) 编辑
摘要: <?php $dir = "/home/mengjun/IdeaProjects/phone/original-data/data/jiangsu"; fun($dir,0); function fun($dir,$dep){ $floders = array(); $files = array(); if (is_dir($dir)) { $temp = scandir($dir,$dep); foreach($temp as $t){ if(is_dir($... 阅读全文
posted @ 2012-09-26 11:19 23lalala 阅读(230) 评论(0) 推荐(0) 编辑
摘要: #include <stdlib.h>#define maxSize 5//存放队列元素int data[maxSize];//对头指针int front = 0;//队尾指针int rear = 0; void enQueue(int e){ //牺牲一个存储单元判断队列为满 if((rear+1)%maxSize == front){ printf("queue is full \n"); }else{ data[rear] = e; printf("%d is enQueue, saved in index %d \n",e,rear) 阅读全文
posted @ 2012-09-26 11:18 23lalala 阅读(112) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h>#define null 0#define maxSize 5//存放栈内元素data[maxSize];//栈顶指针int top = -1; void push(int e){ if(top+1 < maxSize){ data[++top] = e; printf("push %d \n",e); }else{ printf("stack is full\n"); } }void pop(){ if(top > -1){ printf("%d ... 阅读全文
posted @ 2012-09-26 11:18 23lalala 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 扩展问题。1.单链表从尾到头输出解法1.用下面的rev,然后正向输出链表解法2.用栈或者递归正向输出链表比如用递归:void fun(link* p){ if(p->next!=null){ fun(p->next); } printf("%d\t",p->value);}2.反向输出字符串可以参照解法2.void fun(char* s){ if(*s != '\0'){ fun(s+1); } printf("%c",*s);}3.给定待删除节点的指针,在o(1)时间删除节点。 p如果不是最后一个节点,就把p当作前驱 阅读全文
posted @ 2012-09-26 11:17 23lalala 阅读(572) 评论(0) 推荐(0) 编辑
摘要: #include <stdlib.h>#include <string.h>#include <malloc.h>int bf(char* text, char* pattern){ int i = 0; int j = 0; while(i<strlen(text) && j<strlen(pattern)){ if(text[i] == pattern[j]){ i++; j++; }else{ //i回溯到 开始匹配的下一个位置 i = i-j+... 阅读全文
posted @ 2012-09-26 11:15 23lalala 阅读(183) 评论(0) 推荐(0) 编辑