参考自:http://hi.baidu.com/ucolo/blog/item/356263a894169eec1e17a20d.html

今天研究了一下php的array_multisort,理解了之后发现他很强大,而且也不复杂。(手册上关于这个函数的讲解看得很费力)

手册讲解:array_multisort() 函数对多个数组或多维数组进行排序。

参数中的数组被当成一个表的列并以行来进行排序 – 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

一、先看最简单的情况。有两个数组:

$arr1 = array(1,9,5);
$arr2 = array(6,2,4);

array_multisort($arr1,$arr2);

print_r($arr1); // 得到的顺序是1,5,9 print_r($arr2); // 得到的顺序是6,4,2

我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4。


阅读全文

用PHP实现 给定的经纬度坐标之间的范围/距离的计算-函数:

/**
*求两个已知经纬度之间的距离,单位为米
*@param lng1,lng2 经度
*@param lat1,lat2 纬度
*@return float 距离,单位米
**/
function getdistance($lng1,$lat1,$lng2,$lat2)//根据经纬度计算距离
{
	//将角度转为狐度 
	$radLat1=deg2rad($lat1);
	$radLat2=deg2rad($lat2);
	$radLng1=deg2rad($lng1);
	$radLng2=deg2rad($lng2);
	$a=$radLat1-$radLat2;//两纬度之差,纬度<90
	$b=$radLng1-$radLng2;//两经度之差纬度<180
	$s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137*1000;
	return $s;
}

//测试,返回结果 : 759.467618902 echo getdistance(116.4558029, 39.9167328, 116.460197, 39.910801);


阅读全文

如何使用mysql 命令行 查看mysql数据库大小、表大小、数据大小、索引大小:

select * from information_schema.TABLES 
  where information_schema.TABLES.TABLE_SCHEMA='databasename'
  and information_schema.TABLES.TABLE_NAME='tablename'G

返回结果:

*************************** 1. row ***************************
  TABLE_CATALOG: def
   TABLE_SCHEMA: databasename
     TABLE_NAME: tablename
     TABLE_TYPE: BASE TABLE
         ENGINE: MyISAM
        VERSION: 10
     ROW_FORMAT: Dynamic
     TABLE_ROWS: 6422930
 AVG_ROW_LENGTH: 213
    DATA_LENGTH: 1370884700
MAX_DATA_LENGTH: 281474976710655
   INDEX_LENGTH: 412930048
      DATA_FREE: 0
 AUTO_INCREMENT: 6422931
    CREATE_TIME: 2012-05-11 05:00:02
    UPDATE_TIME: 2012-05-22 15:12:06
     CHECK_TIME: 2012-05-11 09:58:52
TABLE_COLLATION: utf8_general_ci
       CHECKSUM: NULL
 CREATE_OPTIONS: 
  TABLE_COMMENT: 'table comment'
1 row in set (0.00 sec)

其中:

information_schema.TABLES.TABLE_SCHEMA = ‘databasename’ and information_schema.TABLES.TABLE_NAME = ‘tablename’

信息存储在information_schema.TABLES这个表中,TABLE_SCHEMA 对应数据库名,TABLE_NAME 对应表名。

# TABLE_ROWS 代表拥有的数据行数。

# 总大小 = DATA_LENGTH(数据大小) + INDEX_LENGTH(索引大小)

结果以字节为单位,除1024为K,除1048576(=1024*1024)为M。


阅读全文

转自: NinGoo的博客

经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用

/tmp/test.sh > /tmp/test.log 2>&1

前半部分/tmp/test.sh > /tmp/test.log很容易理解,那么后面的2>&1是怎么回事呢?

要解释这个问题,还是得提到文件重定向。我们知道>和<是文件重定向符。那么1和2是什么?**在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2。**所以这里2>&1的意思就是将标准错误也输出到标准输出当中。

下面通过一个例子来展示2>&1有什么作用:

$ cat test.sh
t
date

test.sh中包含两个命令,其中t是一个不存在的命令,执行会报错,默认情况下,错误会输出到stderr。date则能正确执行,并且输出时间信息,默认输出到stdout

./test.sh > test1.log
./test.sh: line 1: t: command not found
$ cat test1.log
Tue Oct 9 20:51:50 CST 2007

可以看到,date的执行结果被重定向到log文件中了,而t无法执行的错误则只打印在屏幕上。

$ ./test.sh > test2.log 2>&1
$ cat test2.log
./test.sh: line 1: t: command not found
Tue Oct 9 20:53:44 CST 2007

这次,stderr和stdout的内容都被重定向到log文件中了。

实际上, > 就相当于 1> 也就是重定向标准输出,不包括标准错误。通过2>&1,就将标准错误重定向到标准输出了,那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。如果只想重定向标准错误到文件中,则可以使用2> file。


阅读全文

使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间等:

curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time_redirect}:%{time_pretransfer}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download} digdeeply.org

这是一个本人博客站点执行 curl 命令的情况。输出通常是 HTML 代码,通过 -o 参数发送到 /dev/null。-s 参数去掉所有状态信息。-w 参数让 curl 输出的计时器的状态信息。

一次http请求中的各个时间段-dns解析,等待服务器响应,获取内容等

一次http请求中的各个时间段-dns解析,等待服务器响应,获取内容等

下边对-w参数做个详细的解释,由我(DigDeeply)翻译。有不对的地方请大家指出。(英文原文:http://curl.haxx.se/docs/manpage.html)


阅读全文

美联邦陪审团裁定Android侵犯甲骨文Java专利

美联邦陪审团裁定Android侵犯甲骨文Java专利

北京时间5月8日消息,据外国媒体报道,一个由12名成员组织的美国联邦陪审团周一作出裁决称,谷歌在研发Android操作系统时侵犯了甲骨文的技术专利,目前Android已经在3亿多个移动设备运营。

不过,该陪审团在谷歌是否“公平使用”甲骨文的知识产权方面仍未能够达成一致的裁决方案。

上述裁决阻止了甲骨文对所有侵权诉讼索赔的要求,但据美国地方法官威廉·阿尔苏普(William Alsup)声称,陪审团还是认为,Android的部分技术侵犯了甲骨文的专利。甲骨文一直要求谷歌为此赔偿10亿美元。

谷歌的代理律师罗伯特·凡·奈斯特要求阿尔苏普宣布上述裁决为无效审判,该律师认为,到底是否侵权与是否公平使用有着直接的关系。阿尔苏普声称他将考虑谷歌的这一请求,并宣布案件开始进入专利审查期。

上述决定已经进入了为期八周的知识产权审理阶段,此审理期从4月有16日开始,下一阶段将转移到甲骨文指控的专利侵权事务方面。第三阶段即赔偿阶段,将在前两阶段结束后开始。


阅读全文

作者的图片

DigDeeply

Technology Stack: PHP/Openresty/GoLang, and so on…

Web Development Engineer

Beijing China