qq通信服务端是在myqq上二次开发,所以支持linux/windows双平台

主控程序采用php开发

主要的功能是:

查ip地址、查电话归属地、查天气预报、查pr值、在线翻译等都是些常用的功能

目前windows下正常,准备着手迁移至linux平台,还好机器人程序的主要库libcurl是跨平台的。

全部弄好后,加上远程服务器许可认证系统,然后准备卖程序咯,嘿嘿!

qq.jpg(缩略图)

qq.jpg

大小: 135.15 K
尺寸: 500 x 337
浏览: 5 次
点击打开新窗口浏览全图

阅读全文

           今天在公交车上,由于拥挤一男一女发生了碰撞。
    时髦女郎回头飞眼道:“你有病啊?”
    男子觉得莫名其妙回道:“你有药吗?”
    车上人窃笑!
    女子觉得生气回道:“你有精神病啊?”
    男子冷面对道:“你能治啊?”
    全车人爆笑!
    公交司机停车,趴在方向盘上大笑!
  
   这是珠江路上上班的朋友遇见的
     公交车上超挤,有一女人站在门口,
    从车后面挤过来一个GG要下车,
    跟那女的说了一句“让一下,下车”,那个女滴木有动。
    GG挤过去时就踩到她了。
    结果那女人好厉害的,不停的骂“神经病啊你!神经病啊你!~~”,还超大声,搞得全车都看呀。
    GG一直木有说话,下车时忍不了了,回头对那女人说,“复读机呀你!”
    全车人暴笑~!
    后边有几个搞笑的小孩,不停的伴演刚才的一幕,
    甲说“你神经病呀你!。。。。。乙说“你复读机呀你”。。。。。。 新浪乐居论坛:
    全车人暴笑~!
    后来,有个小MM也要下车,挤过去怯怯滴说“偶~偶~偶想下去,偶不是神经病~!”
    全车人再次暴笑~!
    那个女人木有说话,可是从边上飘来一句话“你是不是没电了”
    全车人暴笑不止~!

阅读全文

mongodb是nosql的典型了,采用是json类似的存储格式

mongodb官网下载windows平台下的服务端: http://www.mongodb.org/downloads

mongodb的php驱动:http://github.com/mongodb/mongo-php-driver/downloads

mongodb下载后,解压到D盘,最终地址是:D:\mongodb\bin

php驱动 php_mongo.dll 解压至php的ext文件夹下,然后修改php.ini,添加 extension=php_mongo.dll

新建数据库存放文件夹  D:\mongodb\db

mongodb的启动:

在命令行输入  D:\mongodb\bin\mo\mongod --dbpath D:\mongodb\db

到这里,mongodb已启动,打开http://127.0.0.1:28017/ 可以看到mongodb运行情况

为了方便以后每次不必启动mongod,可以把mongod注册成windows服务

mongodb php使用方法:

3 用PHP操作Mongondb


简单列子 //这里采用默认连接本机的27017端口,当然你也可以连接远程主机如192.168.0.4:27017,如果端口是27017,端口可以省略
$m = new Mongo();

// 选择comedy数据库,如果以前没该数据库会自动创建,也可以用
$db = $m->comedy;

//选择comedy里面的collection集合,相当于RDBMS里面的表,也-可以使用
$collection = $db->collection;
$db->selectCollection("collection");

/* ----- 添加一个元素 -----*/
$obj = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
$collection->insert($obj);     //将$obj 添加到$collection 集合中

/* ----- 添加另一个元素 -----*/
$obj = array(
"title" => "XKCD",
"online" => true
);
$collection->insert($obj);

$cursor = $collection->find();

//遍历所有集合中的文档
foreach ($cursor as $obj) {
echo $obj["title"] . "\n";
}   

//断开MongoDB连接
$m->close();

3.2 常用函数

		$query = array( "i" => 71 );    
$cursor = $collection->find( $query );      // 在$collectio集合中查找满足$query的文档    
 
while( $cursor->hasNext() ) {    
var_dump( $cursor->getNext() );    
}    
 
$collection -> findOne();            //返回$collection集合中第一个文档    
 
$collection -> count();              //返回$collection集合中文档的数量    
$coll->ensureIndex( array( "i" => 1 ) );  // 为i “这一列”加索引 降序排列    
$coll->ensureIndex( array( "i" => -1, "j" => 1 ) );  // 为i “这一列”加索引 降序排列 j升序

3.3 查询时,每个Object插入时都会自动生成一个独特的_id,它相当于RDBMS中的主键,用于查询时非常方便
如:

		<?php    
 
$person = array("name" => "joe");    
 
$people->insert($person);    
 
$joe = $people->findOne(array("_id" => $person['_id']));    
 
?>

阅读全文

http://oyouka.taobao.com/

欧友卡家电卖场

有需要的朋友们可以看看哈~~~

s.png

大小: 75.32 K
尺寸:  x 
浏览: 3 次
点击打开新窗口浏览全图

阅读全文

昨天写了个php程序,给mysql插入随机的文章数据,仿照真实文章,中文数据,主要是测试在100w级数量时查询上的优化及测试mysql内置的全文检索与其它类似全文检索引擎的差距等。总数据量:article 101w左右  user表10w左右,总计占用硬盘2G左右

今天开始测试在海量数据查询时的优化手段

  1. 测试添加索引对数据查询的影响:
    sql语句:select * from article as article order by time limit 10;
    没有对time字段建立索引时查询所花时间:31.237657s
    新建time字段的索引,花掉近二分钟,建立了111298条索引,没有建立完phpmyadmin就timeout了。
    建立time索引后,同样的sql语句执行只花了:0.380957s,不过time索引没有建完,但是时间相差不大;
    总结:在关键字段的索引上,建与不建速度相差近100倍!
     
  2. 测试limit在不同的基数上的影响:
    sql语句:select * from article as article order by id limit  0,10
    当limit的基数为0时【limit  0,10】,执行时间:0.001557s
    当limit的基数为20000时【limit  20000,10】,,执行时间:0.572288s
    当limit的基数为100000时,执行时间:2.793380s
    当limit的基数为50W 时,执行时间:14.444422s
    当limit的基数为100W时,执行时间:28.270054s
    总结:在海量数据中要想查找比较靠后的数据时,要注意limit的基数,因为随着数据量的加大,查找时间继续增长!在取比较后面的数据时,可以通过desc方式把数据反向查找,以减少对前段数据的扫描,让limit的基数越小越好!
     
  3. 测试field为*或是id对查询速度的影响:
    sql语句:select id from article as article order by id limit 100000,10
    为了数据更真实,所以通过limit让sql执行时间长些,以便更容易看出区别
    当field为id时,执行时间:2.617519s
    当field为*时,执行时间:2.867721s
    总结:由数量可见,二者在sql执行时间上相差并不大,但是限定field可以大幅度的减少内存开支
     
  4. 测试limit限定结果与between限定结果上的区别:
    当用limit          select * from article as article order by id limit 1000000,10      [31.163212s]
    当用between  select * from article as article where id between 1000000 and 1000010 order by id       [0.001433s]
    总结:between 限定上比limit快太多了,所以当在海量数据访问时,建议用between或是where把limit替换掉,但是between也有缺陷,如果id中间有断行或是中间部分id不读取的话,总读取的数量会少于预计数量!
     
  5. 测试left join对读取数据的影响
    user表,数据为100000条
    select id from article as article order by id limit 500000      [14.980397s]
    select article.id from article as article left join user as user on user.uid=article.uid order by article.id,user.username limit 500000      [60.488099s]
    总结:当数据量比较大时,用left join做连接是非常慢的,速度是查单表的4倍多,所以如果在大数据量的情况下,如果要实现刚实现用户表与文章表的连表功能,还是把全部的会员数据预先存入memcache等内存缓存中,10万条用户数据也不过5m不到,用户更新资料或登陆时,把用户的数据更新入memcache的指定用户中就ok了。这样速度就快了!


 

最后附上一截图

ssss.jpg

大小: 19.25 K
尺寸:  x 
浏览: 27 次
点击打开新窗口浏览全图

 

阅读全文

第一个是二分法查找,只能对有顺序的数组进行查找,速度应该是所有查找算法里最快的,

原理就是不停的做对折,以查找到目标!

第二个是冒泡排序,比较有名了,大学里c语言课必有的一个算法

第三个是从字符串中查找子串,也比较常用,以前用它做词频排序。

<?php
//二分法  $arr 数组,$k 要查找的值,$m 最小,$b最大
function dichotomy($arr,$k,$m=0,$b=0)
{
	$total=count($arr);
	if($total!=0 && $b==0) $b=$total;
	if($m<=$b){
		$avg=intval(($m+$b)/2);
		if($arr[$avg]==$k) return $avg;
		elseif($k<$arr[$avg]) return dichotomy($arr,$k,$m,$avg-1);
		else return dichotomy($arr,$k,$avg+1,$b);
	}
	return false;
}
echo "<hr>二分法查找<br>";
$arr=array(0,1,2,3,4,5,6,7,8,9,10);
var_dump(dichotomy($arr,1));


//冒泡排序
function bubblesort($arr)
{
	$total=count($arr);
	for($i=0;$i<$total-1;$i++){
		for($l=$i+1;$l<$total;$l++){
			if($arr[$i]>$arr[$l]){
				list($arr[$l],$arr[$i])=array($arr[$i],$arr[$l]);
			}
		}
	}
	return $arr;
}
echo "<hr>冒泡排序<br>";
$arr=array(1,100,23,434,22,12,3,5);
var_dump(bubblesort($arr));

//从字符串中搜索子串 $text 字符串,$str 要搜索的子串
function search($text,$str){
	$strLen=strlen($str);
	$textLen=strlen($text);
	for($i=0;$i<$textLen-$strLen;$i++){
		if(substr($text,$i,$strLen)==$str) return $i;
	}
	return false;
}
echo "<hr>字符串中搜索子串<br>";
$text="pdsofuapdoi3409729fhydish";
var_dump(search($text,"7"));
?>

阅读全文

Total: 222Page 1 of 371234567Next ›Last »