自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 PHP的Socket函数参考

<br />PHP的Socket函数参考<br /><br /><br />  这些Socket函数直接跟互联网的协议进行发送信息。相对于fopensock的流来讲,他们操作在一个比较底层的级别。通常,他们都是对C函数进行封装,并且名称都类似。<br />  如果你有使用C进行socket编程的经验,那么使用这些函数将是非常熟练的。我们这里不讨论特别详细的socket编程。 使用这些函数能够解决高层级别函数所不能解决的难题。使用这些函数能够实现类似fopen的功能,你也许有很多方法来实现socket的功

2010-09-29 12:09:00 509

原创 PHP的Socket函数参考

<br />PHP的Socket函数参考<br /><br /><br />  这些Socket函数直接跟互联网的协议进行发送信息。相对于fopensock的流来讲,他们操作在一个比较底层的级别。通常,他们都是对C函数进行封装,并且名称都类似。<br />  如果你有使用C进行socket编程的经验,那么使用这些函数将是非常熟练的。我们这里不讨论特别详细的socket编程。 使用这些函数能够解决高层级别函数所不能解决的难题。使用这些函数能够实现类似fopen的功能,你也许有很多方法来实现socket的功

2010-09-29 12:06:00 760

原创 PHP Socket 编程

让我们以一个简单的例子开始---一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务.下面是相应的代码:PHP 代码:// 设置一些基本的变量 $host = "192.168.1.99"; $port = 1234; // 设置超时时间 set_time_limit(0); // 创建一个Socket $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket/n"); //绑定Socket到端口

2010-09-29 11:58:00 474

原创 pcntl_fork和pcntl_fork 的用法

<br /><br />这是两个php的多线程的方法,在Windows下不可用,在Linux下需要编译。<br />  pcntl_fork()函数就是为当前的进程创建一个子进程。并且先运行父进程,返回的是子进程的PID,肯定大于零。在父进程的代码中可以用pcntl_fork(&$status)暂停父进程知道他的子进程有返回值。注意:父进程的阻塞同时会阻塞子进程。但是父进程的结束不影响子进程的运行。<br />  父进程运行完了会接着运行子进程,这时子进程会从执行pcntl_fork()的那条语句开始执行(

2010-09-29 11:49:00 1168

原创 MySQL中MyISAM引擎与InnoDB引擎性能简单测试

<br />[硬件配置]<br />CPU : AMD2500+ (1.8G)<br />内存: 1G/现代<br />硬盘: 80G/IDE<br /><br />[软件配置]<br />OS : Windows XP SP2<br />SE : PHP5.2.1<br />DB : MySQL5.0.37<br />Web: IIS6<br /><br /><br />[MySQL表结构]<br /><br />CREATE TABLE `myisam` (<br />   `id` int(11) N

2010-09-27 13:55:00 628 1

原创 MyISAM 索引结构了解

<br />MyISAM 存储引擎索引的基本存储结构。<br />从索引基本的存放数据结构来说,MyISAM 的索引不论是 Primary Key 还是普通 Index,存储结构都基本一样,基本结构都是 Balance Tree (简称为 B-Tree),所有的键值详细信息和行“指针”信息都存放于 B-Tree 的 Leaf Nodes 上面。这个基本的数据结构和 MySQL 的其他存储引擎如 Innodb 也基本相同。但是,MyISAM 的索引并不像 Innodb 存储引擎那样 Primary Key 和

2010-09-27 12:06:00 1404

原创 Innodb 索引结构了解

<br />Innodb 作为 MySQL 中使用最为广泛的 事务型存储引擎,不仅在事务实现数据版本控制方面和其他存储引擎有一定的区别,其数据结构也是以非常有特点的方式存储的。<br />每个Innodb表的数据其实可以说就是以一个树型(B-Tree)结构存储的,表的数据和主键(Primary Key)共同组成了一个索引结构,也就是我们常说的Innodb的Clustered Primary Key。在这个Clustered Primary Key中,Leaf Nodes其实就是实际的表记录,我们常规理解上的

2010-09-27 12:04:00 1136

原创 MyISAM和InnoDB的索引在实现上的不同

<br />1 MyISAM只把索引载入内存,数据缓存依赖于操作系统,InnoDB把索引和数据都载入内存缓冲 <br /><br />2 MyISAM数据库中的数据是按照插入的顺序保存,在每个索引节点中保存对应的数据行的地址,理论上说主键索引和其他索引是一样的,InnoDB数据库中的数据和主键节点保存在一起,所有其他索引节点中保存的是主键索引的值。 <br /><br />3 对于字符串索引,MyISAM默认采用增量保存,例如第一个索引值是'perform',第二个索引的值是'performance', 在

2010-09-27 12:02:00 6263

原创 mysql中OPTIMIZE TABLE的作用

<br /><br />当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小。这是因为删 除操作后在数据文件中留下碎片所致。Discuz! 在系统数设置界面提供了数据表优化的功能,可以去除删除操作后留下的数据文件碎片,减小文件尺寸,加快未来的读写操作。您只要在做完批量删除,或定期(如 每一两个月)进行一次数据表优化操作即可。<br />OPTIMIZE TABLE通过制作原来的表的一个临时副本来工作<br />OPTIMIZE TABLE语法OPTIMIZE [LOCAL | NO_WRITE_

2010-09-27 10:26:00 1128

原创 mysql delayed 延迟插入

DELAYED 的使用 使用延迟插入操作 DELAYED调节符应用于INSERT和REPLACE语句。当DELAYED插入操作到达的时候, 服务器把数据行放入一个队列中,并立即给客户端返回一个状态信息,这样客户 端就可以在数据表被真正地插入记录之前继续进行操作了。如果读取者从该数据 表中读取数据,队列中的数据就会被保持着,直到没有读取者为止。接着服务器 开始插入延迟数据行(delayed-row)队列中的数据行。在插入操作的同时,服务器 还要检查是否有新的读取请求到达和等待。如果有,延迟数据行队列就被挂起,

2010-09-27 10:06:00 9473

原创 memcache PHP 的 session.save_handler。

<br /><br />可以直接用 memcache 来作 PHP 的 session.save_handler。<br />1. 安装 memcached,还是那套 ./configure; make; make install,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent。<br />2. 安装 pecl::memcache,用 pecl 命令行工具安装:pecl install memcache或直接从源码安装:phpize<br /> ./confi

2010-09-26 13:41:00 1398

原创 使用PHP模拟 URL Rewrite

<br />项目中有许多的服务器不支持Rewrite,或者配置起来太麻烦,看到许多网站也采用了下面方式的Rewrite方法,于是想到可以用PHP模拟一个这样URL。 复制内容到剪贴板代码:?a/haha/b/hehe/d/hoho.html<br />通过实例化类后,也可以通过$_GET及$_SERVER["QUERY_STRING"]正常获取到页面GET参数的传递,并附加了$_SERVER["R_QUERY_STRING"]预定义变量。这样许多的项目就可以通过不用太大的改变就可以实现Rewrite了。<b

2010-09-26 13:14:00 3492

原创 突破128M Swap限制

<br />突破128M Swap限制  经常看到有些Linux(国内汉化版)安装手册上有这样的说明:Swap空间不能超过128M。为什么会有这种说法?在说明“128M”这个数字的来历之前,先给问题一个回答:现在根本不存在128M的限制!现在的限制是2G!  Swap空间是分页的,每一页的大小和内存页的大小一样,方便Swap空间和内存之间的数据交换。旧版本的Linux实现Swap空间时,用Swap空间的第一页作为所有Swap空间页的一个“位映射”(Bit map)。这就是说第一页的每一位,都对应着一页Swa

2010-09-25 13:30:00 1013

原创 HTML META 标签

<br /><META>标签是为了指定有关文件的信息(meta信息)、 浏览器和检索机器人。name属性定义制作者和关键字等的信息、 content属性指定文件的内容。 <br /><META>标签请必定在<HEAD>~</HEAD>间使用。〈使用例[字符编码]<br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br /><meta http-equiv="Content-Type" content="text

2010-09-25 10:36:00 569

原创 详解KMP算法中Next数组的求法

int get_nextval(SString T,int &nextval[ ]){           //求模式串T的next函数修正值并存入数组nextval。           i=1; nextval[1]=0; j=0;           while(i               if(j==0||T[i]==T[j]){                   ++i;++j;                   if (T[i]!=T[j]) nextval[i]=j;         

2010-09-23 18:00:00 720

原创 全排列的生成算法

<br />全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,因此在此就以n个数字的排列为例说明排列的生成法。<br />n个字符的全体排列之间存在一个确定的线性顺序关系。所有的排列中除最后一个排列外,都有一个后继;除第一个排列外,都有一个前驱。每个排列的后继都可以从 它 的前驱经过最少的变化而得到,全排列的生成算法就是从第一个排列开始逐个生成所有的排列的方法。<br /><br />全排列的生成法通常有以

2010-09-23 16:28:00 627

原创 mysql 索引 详解

<br />索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。<br /> <br />注:<br /> <br />[1]索引不是万能的!<br /> <br />索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许多SQL命令都有一个 DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷

2010-09-23 09:30:00 968

原创 大数据量,海量数据 处理方法总结

1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。还有一个比较重要

2010-09-22 17:17:00 15988

转载 Bloom Filter概念和原理

<br />Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。<br />集合表示和元素查询<br />下面我们

2010-09-22 15:32:00 829

原创 事务隔离级别

<br />问题的提出 :数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况。 <br />  ● 更新丢失(Lost update):两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。 <br />  ● 脏读(Dirty Reads):一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时提交。这是相当危险的,因为很可能所有的操作都被回滚。 <br

2010-09-22 10:45:00 525

原创 关于MySQL事务处理

<br />START TRANSACTION, COMMIT和ROLLBACK语法<br /><br />START TRANSACTION | BEGIN [WORK]<br />COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]<br />ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]<br />SET AUTOCOMMIT = {0 | 1}<br /><br /><br />START TRANSACTION或

2010-09-22 10:40:00 1172

原创 MySQL: InnoDB 还是 MyISAM?

<br />MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们去研究一下,这里的文章只考虑 MyISAM 和InnoDB这两个,因为这两个是最常见的。<br />下面先让我们回答一些问题:你的数据库有外键吗? 你需要事务支持吗? 你需要全文索引吗? 你经常使用什么样的查询模式? 你的数据有多大?<br /> <br />思考上面这些问题可以让你找到合适的方向,但那并不是绝对的。如果你需要事务处理或是外键,那么Inn

2010-09-21 21:47:00 855

原创 MySQL InnoDB/MYISAM/MERGE/BDB/HEAP的区别

<br />官方准确解释<br /><br /><br />·MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。<br /><br />·InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。<br /><br />·BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。<br /><br />·Mem

2010-09-21 21:45:00 1593

原创 mysql:LOAD DATA INFIL

<br />LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE Orders;<br />  简单的讲,这样将会把文件data.sql中的内容导入到表Orders中,如mysqlimport工具一样,这个命令也有一些可以选择的参数。比如您需要把自己的电脑上的数据导入到远程的数据库服务器中,您可以使用下面的命令:<br />  LOAD DATA LOCAL INFILE "C:/MyDocs/SQL.txt" INTO TABLE Orders;<br /

2010-09-21 13:00:00 1233

原创 MySQL外键和参照完整性的实现步骤

<br />我们大家都知道MySQL参照完整性一般是通过MySQL外键(foreign key)的具体使用而随之应用。总的来说,流行工具开源 RDBMS MySQL(与PHP搭配之最佳组合)并不支持外键,原因是这种支持将会降低RDBMS的速度和性能。<br />然而,由于很多用户对参照完整性的优点倍感兴趣,最近MySQL()的不同版本都通过新InnoDB列表引擎支持外键。由此,在数据库组成的列表中保持参照完整性将变得非常简单。<br />为了建立两个MySQL()表之间的一个MySQL外键关系,必须满足以下

2010-09-19 10:29:00 3407

原创 Mysql用户与权限管理

<br />========对于ROOT用户的密码操作(更改用户密码)========刚刚安装完的Mysql,只一有个root用户,密码为空,而且只能在本机登录! 为root加上密码xxx123:<br />./bin/mysqladmin -u root password xxx123<br />或写成<br />./bin/mysqladmin -uroot password xxx123 加下密码之后,在本进行进入mysql:<br />./bin/mysql -uroot -p<br />更改roo

2010-09-18 15:52:00 528

原创 MYSQL中EXPLAIN的说明

<br /> mysql> explain select count(id) from t_prehandle_zhigao_05 as zhigao where start_time > '2008-05-30';<br />+----+-------------+--------+-------+---------------+------------+---------+------+---------+--------------------------+<br />| id | select_ty

2010-09-18 15:52:00 464

原创 MYSQL DELETE语法的实际操作与代码

<br />以下的文章主要介绍的是MYSQL DELETE语法的实际操作步骤以及对MYSQL DELETE语法的实际应用代码的描述,以下就是对其具体内容描述,希望会给你带来一些帮助在学习此语法方面。<br />单表语法:<br /> DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name  [WHERE where_definition]  [ORDER BY ...]  [LIMIT row_count] <br /> <br />多表语法:<br /> 

2010-09-18 12:22:00 754

原创 mysql中rollup和limit的用法及where子句的优化

<br />mysql中rollup和limit的用法及where子句的优化<br />1. 使用ROLLUP的分组<br />比如说某公司某个月每个营业员的销售额 sell表,其结构如下:<br />create table sell<br />(<br />sale_id int auto_increment, <br />sale_name varchar(10),<br />sale decimal(8,2),<br />primary key(sale_id)<br />);<br />Inser

2010-09-18 12:14:00 1050

原创 PHP mysql_data_seek() 函数

定义和用法<br />mysql_data_seek() 函数移动内部结果的指针。语法mysql_data_seek(data,row)参数描述data必需。返回类型为 resource 的结果集。该结果集从 mysql_query() 的调用中得到。row必需。想要设定的新的结果集指针的行数。0 指示第一个记录。说明<br />mysql_data_seek() 将 data 参数指定的 MySQL 结果内部的行指针移动到指定的行号。<br />接着调用 mysql_fetch_row() 将返回那一行。

2010-09-17 09:05:00 827

原创 关于mysql持久连接(mysql_connect与mysql_pconnect)

<br /><br />在某些场合,mysql_pconnect( ) 是不适用的。<br />——————————————————————————–<br />状况一:<br /> 使用 1 部 web server 与 1 部 MySQL server(两者可能同在一部主机上),而 web server 固定只对 MySQL server 上的某一个数据库进行存取动作。<br /> 因为每次存取数据库时,都是由 web 那边使用同一账号对 MySQL 上的同一数据库作业,若我们将 MySQL 与 web

2010-09-17 08:51:00 820

原创 PHP mysql_pconnect() 函数

定义和用法<br />mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接。<br />mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别:当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。 其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建

2010-09-17 08:47:00 521

原创 PHP mysql_fetch_array() 函数

定义和用法<br />mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有<br />返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。语法mysql_fetch_array(data,array_type)参数描述data可选。规定规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果。array_type<br />可选。规定返回哪种结果。可能的值:MYSQL_ASSOC - 关联数组 MYSQL_NUM - 数字

2010-09-17 08:44:00 850

原创 用PHP的ob_start()控制您的浏览器cache

<br />用PHP的ob_start();控制您的浏览器cache!<br /><br />Output Control 函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。<br /><br />我们先举一个简单的例子,让大家对Output Control有一个大致的印象:<br />Exam

2010-09-16 12:37:00 453

原创 PHP debug_backtrace() 函数

定义和用法<br />PHP debug_backtrace() 函数生成一个 backtrace。<br />该函数返回一个关联数组。下面是可能返回的元素:名称类型描述function字符串当前的函数名。line整数当前的行号。file字符串当前的文件名。class字符串当前的类名object对象当前对象。type字符串当前的调用类型,可能的调用: 返回: "->"  - 方法调用 返回: "::"  - 静态方法调用 返回 nothing - 函数调用 args数组如果在函数中,列出函数参数。如果在

2010-09-16 12:33:00 1673

原创 PHP中printf与sprintf函数

<br /><br />printf() 函数输出格式化的字符串<br />语法:printf(format,arg1,arg2,arg++)<br />例:<br /><?php<br />$str = "Hello";<br />$number = 123;<br />printf("%s world. Day number %u",$str,$number);<br />?><br />输出:Hello world. Day number 123<br /><?php<br />$number = 1

2010-09-16 12:27:00 741

原创 PHP无限分类的原理

<br /><br />什么是无限分类呢?就像windows下新建一个文件夹,在新建的文件夹下又可以新建<br />一个文件夹,这样无限循环下去,无限分类也是这样,父类可以分 出它子类,子类又<br />可以分出它的子类,这样一直无限循环下去。<br />那PHP又是如何实现它的无限分类的呢?如何把它的各个分类一一列出来呢?<br />首先我们假设有这样的一个三级分类,新闻→PHP新闻→PHP6.0出来了。<br />如果我们要查找“PHP6.0出来了”这条新闻,我们先点击新闻,然后再点击PHP新闻<br

2010-09-15 15:16:00 475

原创 PHP ucwords() 函数

定义和用法<br />ucwords() 函数把字符串中每个单词的首字符转换为大写。语法ucwords(string)参数描述string必需。规定要转换的字符串。例子<?phpecho ucwords("hello world");?><br />输出:Hello World

2010-09-15 14:03:00 744

原创 PHP implode() 函数

定义和用法<br />implode() 函数把数组元素组合为一个字符串。语法implode(separator,array)参数描述separator可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。array必需。要结合为字符串的数组。说明<br />虽然 separator 参数是可选的。但是为了向后兼容,推荐您使用使用两个参数。提示和注释<br />注释:implode() 可以接收两种参数顺序。但是由于历史原因,explode() 是不行的。你必须保证 separator 参数在 str

2010-09-15 13:54:00 711

原创 REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR

<br />一、没有使用代理服务器的情况:<br /><br />      REMOTE_ADDR = 您的 IP<br />      HTTP_VIA = 没数值或不显示<br />      HTTP_X_FORWARDED_FOR = 没数值或不显示<br /><br />二、使用透明代理服务器的情况:Transparent Proxies<br /><br />      REMOTE_ADDR = 最后一个代理服务器 IP<br />      HTTP_VIA = 代理服务器 IP<br /

2010-09-15 13:46:00 531

空空如也

空空如也

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

TA关注的人

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