Browsing the archives for the 网络编程 category

php中抽象类和接口的概念和区别(二)

in 网络编程

1. 一个子类如果implements一个接口,就必须实现接口中的所有方法(不管是否需要);如果是继承一个抽象类,只需要实现需要的方法即可,这是抽象类的一个优点 2. 如果一个接口中定义的方法名改变了,那么所有实现此接口的子类显然将无法通过编译,因为它们所实现的方法名已经不存在了,这是接口的一个缺点;而抽象类就不存在这个问题,只是为子类添加了一个新的方法(接口中旧的方法) 3. 看前面两点,似乎抽象类要比接口有着更多的优点,但它却有着一个难以弥补的缺点:就是一个子类只能有一个父类。A extends B . 这样A就拥有了B的所有方法和功能,但当A还想拥有C的功能的时候。就不能通过 A extends C 来实现, 而需要走一些弯路。目前系统架构的趋势就是由针对抽象(借口,抽象类)而不是具体编程,并且将功能尽可能的细分。 这就需要通过实现多个接口的方式来实现,显然,抽象类无法提供这样的功能。从系统重构的角度来说,一个具体类抽象出接口是十分方便的。只需要写一个接口,里面定义具体类的所有方法,然后在为这个具体类implement这个接口就可以了。而抽象类就要复杂的多,比如说 B extends A , C extends B 如果想要为c抽象出一个抽象类D的话,就需要找到它的最顶层A来从头做起,因为无法做到C extends D

0 Comments

php中抽象类和接口的概念和区别(一)

in 网络编程

interface   a   { //接口内不可以定义属性 //所有方法必须为抽象方法(既不实现,只定义) public   function   method1($param); protected   function   method2($param); } //接口不可被实现,例如 $instance   =   new   a;   //错误 //接口实现类必须实现接口的所有方法,且方法参数也必须相同 //例如 class   b   implaments   a{ //错误,封装应与接口相同 protected   function   method1($param) { //somecode   here… }  

0 Comments

PHP的接口与抽象类

in 网络编程

PHP的接口:为了实现特定功能而预留的类似类的一种类型。接口的主要目的:提供给类类似于模板的框架,以方便类的构建。 在PHP中定义接口 在PHP中定义接口的形式如下: Interface interfaceName { Const 1; …… Const 2; Function methodName1(); …… Function methodName2(); } PHP中单一接口的实现 实现接口的语法如下:

0 Comments

PHP+shell实现多线程

in 网络编程

看到这个标题,大家可能要说我没常识,php根本不支持多线程啊,没错,php本身是不支持多线程,但是别忘了php的好搭档,apache和linux可是支持的,呵呵,lamp才是最佳组合,还在使用win服务器的现在知道为什么要用linux吧?好久没在phpchina说教了,今天水一帖,写个简单的代码演示下如何借助shell脚本实现多线程。 先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码: PHP代码: <?php for ($i=0;$i<10;$i++) { echo $i; sleep(10); } ?> 在看下shell脚本的代码,非常简单.

0 Comments

PHP Curl 多线程实现

in 网络编程

使用方法: $urls = array(“http://baidu.com”, “http://21andy.com”, “http://google.com”); $mp = new MultiHttpRequest($urls); $mp->start(); 下载: class_curl_multi.php

0 Comments

linux下php多线程的妙用

in 网络编程

开始用php写后台服务一段时间了.也是在这样的驱动下,不断的学习php语法,体验这一原来一直以为神秘且敬而远之的神奇语言的魅力.最初看php多线程的资料是为了提高程序的处理能力,充分发挥linux多任务的优势.不曾想多线程没用成反到是带来了一系列的意外收获.让之后的许多问题迎刃而解,不敢独享特一一道来. 本文所讲的东西是源自php的pcntl_fork函数.因为这个函数依赖操作系统fork的实现,所以本文所讲的东西只适用于linux/unix.ok,那么先看看这个函数的用法吧.php手册上是这么说的: <?php $pid = pcntl_fork(); if ($pid == -1) { die(‘could not fork’); } else if ($pid) { // we are the parent pcntl_wait($status); //Protect against Zombie children } else { // we are the child } ?>

0 Comments

php多线程

in 网络编程

一直没有找到PHP有像JAVA一样的多线程机制,网上有的也只是使用get&post模拟出来的多线程。今天,偶尔看到PHP 4 >= 4.1.0, PHP 5有这个函数: pcntl_fork — Forks the currently running process Description int pcntl_fork ( void ) The pcntl_fork() function creates a child process that differs from the parent process only in its PID and PPID. Please see your system’s fork(2) man page for specific details as to how fork works on your [...]

0 Comments

php中两个字符串相似度的比较

in 网络编程

最近的项目中有个地方需要对两段文字的相似度进行比较,以分析出用户的答案是否与正确答案一样,这里用了php系统自带的similar_text函数. <?php similar_text($row['title'], $title, $percent); //比较相似度 存放于$percent if($percent>90){$cf=1;break;} //飘易注:相似度高于90% 则判断重复 } ?>

0 Comments

基于 XML的搜索引擎研究

in 网络编程

1.引言 当今,互联网已成为人类有史以来资源最多、品种最全、规模最大的信息库。作为网上发挥着非常重要的作用。传统的搜索引擎大都是基于最主要的信息检索工具,搜索引擎HTML的搜索引擎,HTML重显示而非内容的特点大大限制了搜索引擎的查准率,传统搜索引擎的查准率有待提高。现在越来越多的文档开始用XML语言来描述、存储和交换。XML的标记含义丰富、意义明确,能明白的提示所标记的内容,搜索引擎可以依靠标记和内容之间的依存关系,准确定位、找到目标,从而大大减小搜索范围,提高检索精度。目前基于XML的搜索引擎有两种信息检索单位:第一种是以文档为检索单位,第二种是以文档中被标注的元素为检索单位。其中第二种把XML文档库看作是半结构化文档的数据库,并使用了相应的数据库风格的查询语言。目前基于XML的搜索引擎研究是一个较新的课题。 点击下载:Research-on-XM-based-Search-Engine.pdf

0 Comments

IM即时通讯实现原理

in 网络编程

即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而后者是以数据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。QQ就是使用UDP协议进行发送和接收消息的。当你的机器安装了OICQ以后,实际上,你既是服务端(Server),又是客户端(Client)。当你登录OICQ时,你的OICQ作为Client连接到腾讯公司的主服务器上,当你“看谁在线时,你的OICQ又一次作为Client从QQ Server上读取在线网友名单。当你和你的OICQ伙伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传送。如果你和对方的连接不是很稳定,QQ服务器将为你们的聊天内容进行中转。其他的即时通信软件原理与此大同小异。 一般的步骤: 首先,用户A输入自己的用户名和密码登录即时通讯服务器,服务器通过读取用户数据库来验证用户身份,如果用户名、密码都正确,就登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在 IM系统中的状态为在线(Online Presence)。

0 Comments