一家之言的经验之谈php+mysql扎实个人基本功
时间:2004-05-09
来源:互联网
1.不要依赖register_global=ON的环境,从你刚懂得配置php运行环境甚至尚不明白register_global的ON/OFF会对自己有什么影响的那天起,就应该勇敢地把它设为OFF.
2.写程序前看看怎么用error_reporting.
3.不懂就问本身没错,但你需要在那之前查查手册。
4.当然,你需要懂得使用手册。手册上找不到答案的时候,应该考虑下网络上的搜索引擎。
5.刚学会php+mysql之后,不要叫嚷着要写论坛,要写XXX。要明白,刚学会写汉字并不表示你有能力写诗。
6.在学web编程的时候,你应该先去认识html这个朋友。
7.有点能力后,试着回答新手的问题,不要看到自己懂的而别人不懂就沾沾自喜,扔下一名“简单,那是基本的东西”就走更要不得。
8.思考是一个好习惯,不动手去写就等于空想,什么也没有。
9.写好一段程序,如果觉得很满意,一周后再看一遍,也许你会认为它应该有所改变
10.有空多看看别人的程序,找出他人的不足或优点,自己掂量。
二. 各取所需
1.善于使用“引用”,它能直接影响到程序的效率。
2.善于用三元运算子,可以让程式较精简有效率。
比如:
if ($data[$i]['nickname'])
{
$nickname = $data[$i]['nickname'];
}
else
{
$nickname = $data[$i]['ip'];
}
?>
$nickname = $data[$i]['nickname'] ? $data[$i]['nickname'] : $data[$i]['ip'];
?>
比如:
$ext_name = strtolower(str_replace(".", "", strrchr($upfilename, ".")));
if (!empty($type))
{
if (!strpos($type, $ext_name))
{
echo "Please upload the file of $type form.";
exit();
}
}
?>
$ext_name = strtolower(str_replace(".", "", strrchr($upfilename, ".")));
if (!($type==='') && strpos($type, $ext_name)===false)
{
echo "Please upload the file of $type form.";
exit();
}
?>
如果写成这样,是比较让人头痛的:
$foo=$_post["foo"];
$username=$_post["user"];
$group=$_POST["group"];
if ($group=="wheel"){
$username=$username."wheel";
}
?>
$foo = $_post["foo"];
$username = $_post["username"];
$group = $_POST["group"];
if ($group=="wheel")
{
$username = $username."wheel";
}
?>
$foo = &$_POST['foo'];
$username = $_POST["group"]!='wheel' ? $_POST["username"] : $_POST["username"].'wheel';
?>
字段和表名用"`"引起来,避免保留字的影响。
如果看到下面这样的一个sql query,会让人比较头痛:
$query="select `flash_comment`.`content` , `flash_comment`.`nickname` , `flash_comment`.`date` , `flash_comment`.`ip` , `product`.`p_name` , `sgflash`.`fid` from `flash_comment` left join `product` on ( `flash_comment`.`p_no` = `product`.`p_no` ) left join `sgflash` on ( `product`.`p_name` = `sgflash`.`f_name` ) where `flash_comment`.`p_no` != '' order by `flash_comment`.`date`";
?>
$query = "SELECT `flash_comment`.`content` , `flash_comment`.`nickname` , `flash_comment`.`date` , `flash_comment`.`ip` , `product`.`p_name` , `sgflash`.`fid`
FROM `flash_comment`
LEFT JOIN `product` ON ( `flash_comment`.`p_no` = `product`.`p_no` )
LEFT JOIN `sgflash` ON ( `product`.`p_name` = `sgflash`.`f_name` )
WHERE `flash_comment`.`p_no` != ''
ORDER BY `flash_comment`.`date`";
?>
.....
(忙工作去了)待续...
作者: Van.T 发布时间: 2004-05-08
咱学着,奋斗着!
作者: yjjqtdht 发布时间: 2004-05-08
作者: yuguanglou 发布时间: 2004-05-08
作者: wormbaby 发布时间: 2004-05-08
PHP中使用引用有时速度会比不用引用速度慢很多.
不信?? 在一个函数中传递一个很大的数组,然后多调用几次这个函数..去掉引用再调用相同次,看结果哪个快.
作者: 帅的像人渣 发布时间: 2004-05-08
不错,顶一把
作者: pooer 发布时间: 2004-05-08
[B]to 楼主: 对于你所说的擅于用"引用", 速度更快.本人可不敢苟同.
PHP中使用引用有时速度会比不用引用速度慢很多.
不信?? 在一个函数中传递一个很大的数组,然后多调用几次这个函数..去掉引用再调用相同次,看结果哪个快. [/B]
写任何程序都要按实际需要而写的,否则就是犯教条主义了
我所说的“善于使用”,并不是盲目使用。
作者: Van.T 发布时间: 2004-05-08
作者: 帅的像人渣 发布时间: 2004-05-08
作者: ljbb 发布时间: 2004-05-08
[B]你的效率是指? [/B]
另外,你所理解的"引用"是什么?它存在的意义在于什么?
作者: Van.T 发布时间: 2004-05-08
所以和你抬抬杠..

别介意.
作者: 帅的像人渣 发布时间: 2004-05-08
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
//initialize big array1
$bigArray1 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray1[$ii]=$ii.'value';
}
//initialize big array2
$bigArray2 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray2[$ii]=$ii.'value';
}
//fuction by reference
function passByRef(&$param)
{
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
}
//function by copy
function passByCopy($param)
{
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
}
//Call passByRef 50 times
$startTime = getmicrotime();
for($ii=0; $ii<50; $ii++)
{
passByRef($bigArray1);
}
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
//Call passByCopy 50 times
$startTime = getmicrotime();
for($ii=0; $ii<50; $ii++)
{
passByCopy($bigArray2);
}
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('reference time is '.$refTime.'<br>');
echo('copy time is'.$copyTime.'<br>');
?>
作者: shukebeita 发布时间: 2004-05-08
还得研究....
作者: wyw5257 发布时间: 2004-05-08
作者: yourlook 发布时间: 2004-05-08
作者: aks 发布时间: 2004-05-08
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((double)$usec + (double)$sec);
}
//initialize big array1
$bigArray1 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray1[$ii]=$ii.'value';
}
//initialize big array2
$bigArray2 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray2[$ii]=$ii.'value';
}
$i = 0;
//fuction by reference
function passByRef(&$param)
{
global $i;
$i++;
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
if($i <= 100) passByRef($param);
}
$i = 0;
//function by copy
function passByCopy($param)
{
global $i;
$i++;
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
if($i < 100) passByCopy($param);
}
//Call passByRef 50 times
$startTime = getmicrotime();
passByRef($bigArray1);
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
//Call passByCopy 50 times
$startTime = getmicrotime();
passByCopy($bigArray2);
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('reference time is '.$refTime.'<br>');
echo('copy time is'.$copyTime.'<br>');
?>
看看这个例子. 在递归时的效率..
作者: 帅的像人渣 发布时间: 2004-05-08
作者: aks 发布时间: 2004-05-08
<?php
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((double)$usec + (double)$sec);
}
//initialize big array1
$bigArray1 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray1[$ii]=$ii.'value';
}
//initialize big array2
$bigArray2 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray2[$ii]=$ii.'value';
}
//fuction by reference
function passByRef(&$param)
{
global $i;
$i++;
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
if($i < 100) passByRef($param);
}
//function by copy
function passByCopy($param)
{
global $i;
$i++;
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
if($i < 100) passByCopy($param);
}
//Call passByRef 50 times
$i=0;//循环计数器归零
$startTime = getmicrotime();
passByRef($bigArray1);
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
//Call passByCopy 50 times
$i=0; //循环计数器归零
$startTime = getmicrotime();
passByCopy($bigArray2);
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('reference time is '.$refTime.'<br>');
echo('copy time is'.$copyTime.'<br>');
?>
作者: shukebeita 发布时间: 2004-05-08
//使用LEFT JOIN
SELECT `sgflash`.`f_name`, `sgflash_comment`.`contents`, `sgflash_comment`.`nickname`, `sgflash_comment`.`date`
FROM `sgflash_comment` LEFT JOIN `sgflash`
ON (`sgflash_comment`.`fid`=`sgflash`.`fid`)
ORDER BY `sgflash_comment`.`date` DESC LIMIT 0, 10000
//不使用LEFT JOIN
SELECT `sgflash`.`f_name`, `sgflash_comment`.`contents`, `sgflash_comment`.`nickname`, `sgflash_comment`.`date`
FROM `sgflash_comment`, `sgflash`
WHERE `sgflash_comment`.`fid`=`sgflash`.`fid`
ORDER BY `sgflash_comment`.`date` DESC LIMIT 0, 10000
?>
显示行 0 - 29 (10000 总计, 查询花费 0.6760 秒) 第一次执行用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 1.5532 秒) 第二次执行不用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 0.6655 秒) 第三次执行使用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 1.3730 秒) 第四次执行不合使用LEFT JOIN
作者: Van.T 发布时间: 2004-05-08
偶也试过了,的确传递引用快.. 正在找我原来的代码为什么传递引用会慢的原因..
作者: 帅的像人渣 发布时间: 2004-05-08
[B]高人..
偶也试过了,的确传递引用快.. 正在找我原来的代码为什么传递引用会慢的原因.. [/B]
你说哪个快?
作者: Van.T 发布时间: 2004-05-08
所以我今天才引用并不是什么时候都快,但现在我又试了,传递引用确实快多了.
作者: 帅的像人渣 发布时间: 2004-05-08
作者: aks 发布时间: 2004-05-08
作者: aks 发布时间: 2004-05-08
晕了.
作者: 帅的像人渣 发布时间: 2004-05-08
作者: Van.T 发布时间: 2004-05-08
高
作者: 一往情深 发布时间: 2004-05-08
[B]一个copy动作,一个是内存指向
你说哪个快? [/B]

作者: Dummy 发布时间: 2004-05-08
作者: gas2000 发布时间: 2004-05-08
http://www.sitepoint.com/article/object-oriented-php/6
HARRY的建议是,在复杂结构(对象,数组)时,尽量使用引用;而对于普通变量(字符串,整型等等),不必使用(当然还得看情况了。。。;-))
作者: KnightE 发布时间: 2004-05-08
作者: 『残风』 发布时间: 2004-05-08
这些东西也是要一定经历后才行的。
作者: huix 发布时间: 2004-05-09
作者: mrfool 发布时间: 2004-05-09
作者: 水若寒 发布时间: 2004-05-13
作者: digadu 发布时间: 2004-05-13
作者: 刘世雄 发布时间: 2004-05-13
程序呀!!!
作者: myowngod 发布时间: 2004-05-13
顶一把....
作者: pooer 发布时间: 2004-05-13
作者: 钢盅锅子 发布时间: 2004-05-13
但是,递归层次比较少的时候我还是喜欢用。
感觉比较清晰,可扩充性强一些。
作者: 日出东方XP 发布时间: 2004-05-13
作者: yjjqtdht 发布时间: 2004-05-13
$foo = $_post["foo"];
$username = $_post["username"];
$group = $_POST["group"];
作者: xltxlm 发布时间: 2004-05-14
作者: 火龙sky2号 发布时间: 2004-05-14
俺闭嘴
作者: 游子云 发布时间: 2004-05-14
[B]我也说一句,大多时候,递归比推理要慢。
但是,递归层次比较少的时候我还是喜欢用。
感觉比较清晰,可扩充性强一些。 [/B]
作者: fivebull 发布时间: 2004-05-14
LEFT JOIN `product` ON
作者: jicker 发布时间: 2004-05-14
作者: sky_travel 发布时间: 2004-05-14
function passByRef(&$param) //这个地方&$param加&有什么用啊?
{
global $i;
$i++;
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
if($i < 100) passByRef($param);
}
作者: yueyang 发布时间: 2004-05-14
呵呵
灌水捎带顶一下
作者: 波洛 发布时间: 2004-05-15
[B]//fuction by reference
function passByRef(&$param) //这个地方&$param加&有什么用啊?
{
global $i;
$i++;
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
if($i < 100) passByRef($param);
} [/B]
$var = 100;
fvar($var);
function fvar(&$var)
{
$var += 100;
}
echo $var;
?>
作者: Van.T 发布时间: 2004-05-15
佩服!!!
作者: 渺茫 发布时间: 2004-05-15
作者: Tung 发布时间: 2004-05-15
修改后的速度测试:
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
//initialize big array1
$bigArray1 = array();
for($ii=1; $ii<20; $ii++)
{
$bigArray1[$ii]=$ii.'value';
}
//initialize big array2
$bigArray2 = array();
for($ii=1; $ii<20; $ii++)
{
$bigArray2[$ii]=$ii.'value';
}
//fuction by reference
function passByRef(&$param)
{
//var_dump($param);
reset($param);
while($kek=key($param))
{
$param[$key].='-Processed';
echo($param[$key]) ;
next($param);
}
}
//function by copy
function passByCopy($param)
{
//var_dump($param);
reset($param);
while($kek=key($param))
{
$param[$key].='-Processed';
echo $param[$key] ;
next($param);
}
}
//Call passByRef 50 times
$startTime = getmicrotime();
for($ii=0; $ii<5; $ii++)
{
passByRef($bigArray1);
}
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
//Call passByCopy 50 times
$startTime = getmicrotime();
for($ii=0; $ii<5; $ii++)
{
passByCopy($bigArray2);
}
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('<hr>Array Test reference time is '.$refTime.'<br>');
echo('Array Test copy time is'.$copyTime.'<br>');
?>
十分抱歉 :blowzy:
作者: shukebeita 发布时间: 2004-05-15
[B]我非常遗憾的告诉大家,大家这么多的讨论都浪费了。非常抱歉,这一次我错了通过'&'给函数传递参数会比较慢,我在速度测试的例子里面有一个非常低级的错误,在这里向 Van T ,人渣和千千万万顶贴字的人表示深深的歉意。尤其是人渣,实在是对不起,还让你在这件事情上费心了。
修改后的速度测试:
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
//initialize big array1
$bigArray1 = array();
for($ii=1; $ii<20; $ii++)
{
$bigArray1[$ii]=$ii.'value';
}
//initialize big array2
$bigArray2 = array();
for($ii=1; $ii<20; $ii++)
{
$bigArray2[$ii]=$ii.'value';
}
//fuction by reference
function passByRef(&$param)
{
//var_dump($param);
reset($param);
while($kek=key($param))
{
$param[$key].='-Processed';
echo($param[$key]) ;
next($param);
}
}
//function by copy
function passByCopy($param)
{
//var_dump($param);
reset($param);
while($kek=key($param))
{
$param[$key].='-Processed';
echo $param[$key] ;
next($param);
}
}
//Call passByRef 50 times
$startTime = getmicrotime();
for($ii=0; $ii<5; $ii++)
{
passByRef($bigArray1);
}
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
//Call passByCopy 50 times
$startTime = getmicrotime();
for($ii=0; $ii<5; $ii++)
{
passByCopy($bigArray2);
}
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('<hr>Array Test reference time is '.$refTime.'<br>');
echo('Array Test copy time is'.$copyTime.'<br>');
?>
十分抱歉 :blowzy: [/B]
我试了在50次以上,REFE比COPY略快的说~
作者: 秀津 发布时间: 2004-05-15
作者: shukebeita 发布时间: 2004-05-15
作者: Van.T 发布时间: 2004-05-15
那个应该是$key。如果不带输出(echo)引用速度稍快。如果带输出copy方式快一些。
作者: shukebeita 发布时间: 2004-05-15
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$arrvar = array();
for($i=0; $i<10000; $i++)
{
$arrvar[$i] = $i;
}
function passByRef(&$param)
{
reset($param);
while ( list( $key, $val ) = each($param) ) {
if ($key%1000==0)
{
echo $param[$key]."<br>";
}
}
}
function passByCopy($param)
{
reset($param);
while ( list( $key, $val ) = each($param) ) {
if ($key%1000==0)
{
echo $param[$key]."<br>";
}
}
}
$startTime = getmicrotime();
passByRef($arrvar);
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
$startTime = getmicrotime();
passByCopy($arrvar);
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('<hr>Array Test reference time is '.$refTime.'<br>');
echo('Array Test copy time is'.$copyTime.'<br>');
?>
Array Test reference time is 0.0379199981689
Array Test copy time is0.0547819137573
作者: Van.T 发布时间: 2004-05-15
作者: Van.T 发布时间: 2004-05-15
作者: shukebeita 发布时间: 2004-05-15
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$arrvar = array();
for($i=0; $i<10000; $i++)
{
$arrvar[$i] = $i;
}
function passByRef(&$param)
{
reset($param);
while ( list( $key, $val ) = each($param) ) {
// if ($key%1000==0)
//{
echo $param[$key]."<br>";
// }
}
}
function passByCopy($param)
{
reset($param);
while ( list( $key, $val ) = each($param) ) {
// if ($key%1000==0)
// {
echo $param[$key]."<br>";
// }
}
}
$startTime = getmicrotime();
passByRef($arrvar);
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
$startTime = getmicrotime();
passByCopy($arrvar);
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('<hr>Array Test reference time is '.$refTime.'<br>');
echo('Array Test copy time is'.$copyTime.'<br>');
?>
Array Test copy time is0.751796960831
还是引用快。
作者: Van.T 发布时间: 2004-05-15
作者: Van.T 发布时间: 2004-05-15
个人试难结果可能都不一样.
你用两个循环, 分别历遍数组两次结果都不同呢..
作者: 帅的像人渣 发布时间: 2004-05-15
Array Test copy time is1.36047697067
执行三次, ref 的从0。18------到0。22----------
copy 从1。11-------到1。36-----------
作者: graymice 发布时间: 2004-05-15
第一次:
Array Test reference time is 0.329555988312
Array Test copy time is0.17404294014
第二次:
Array Test reference time is 0.137151002884
Array Test copy time is0.175014972687
第三次:
Array Test reference time is 0.151031970978
Array Test copy time is0.174519062042
第四次:
Array Test reference time is 0.405555963516
Array Test copy time is0.287677049637
第五次:
Array Test reference time is 0.245956897736
Array Test copy time is0.403090953827
作者: shukebeita 发布时间: 2004-05-15
[B]我试了几次,如果没有输出,引用确实会快,如果有输出则测试结果很难确定。
第一次:
Array Test reference time is 0.329555988312
Array Test copy time is0.17404294014
第二次:
Array Test reference time is 0.137151002884
Array Test copy time is0.175014972687
第三次:
Array Test reference time is 0.151031970978
Array Test copy time is0.174519062042
第四次:
Array Test reference time is 0.405555963516
Array Test copy time is0.287677049637
第五次:
Array Test reference time is 0.245956897736
Array Test copy time is0.403090953827 [/B]
作者: Van.T 发布时间: 2004-05-15
[B]什么叫推理?! [/B]
比如举个简单的例子让你求1 - 10000 的和,
你可以用比较比较用推理和递归的差距。
好多书上都用求阶乘的例子讲递归,其实用的并不恰当。
作者: 日出东方XP 发布时间: 2004-05-15
作者: shukebeita 发布时间: 2004-05-15
作者: 帅的像人渣 发布时间: 2004-05-15
作者: 网络混混 发布时间: 2004-05-16
作者: sai1691 发布时间: 2004-05-16
肯定和环境有关的.
作者: KnightE 发布时间: 2004-05-16
作者: pingfan88 发布时间: 2004-05-16
作者: 开心果 发布时间: 2004-05-17
so~算法,数据结构,不会落伍的
作者: KnightE 发布时间: 2004-05-17
不打算再在技术版多说什么
只是每次看到一堆人在PHP版为JS特效喝彩、不谈工程框架设计思路谈小数点后好几位的比拼、不讲信仰讲生活。。。。就感到心寒
这就是中国PHP,这就是中国特色的开源社区
作者: 开心果 发布时间: 2004-05-17
比较喜欢sitepoint那边氛围,好多人在真正探讨,在研究(当然求助学习的肯定有).
国内就比较少拉....技术论坛,更像是答疑论坛

跑题了....-_-
作者: KnightE 发布时间: 2004-05-17
一个强大的系统都有可能会因一个分号或引号而瘫痪
不要好高骛远而因小失大
作者: Van.T 发布时间: 2004-05-17
最后一个问题想问一下 ,对sql语句的写法 ,我看见一些程序用
sprintf 来做,好象更清晰哦(个人认为), 是不是用sprintf慢点呢?
作者: k999 发布时间: 2004-05-18
[B]。。。。。。。。
不打算再在技术版多说什么
只是每次看到一堆人在PHP版为JS特效喝彩、不谈工程框架设计思路谈小数点后好几位的比拼、不讲信仰讲生活。。。。就感到心寒
这就是中国PHP,这就是中国特色的开源社区 [/B]
象JS特效这种东东,就好象快餐一样,当然有很多人喜欢,这也是无可非意的,说起来,真到要用的时候,我还真是懒得自已再去调试算法和流程,能有个现成的一改就用,也不错啦

作者: s_seraph 发布时间: 2004-05-18
支持php的
谢谢!
qq:110031677
我的个人主页:http://feion199.533.net
作者: feion199 发布时间: 2004-05-18
作者: 童坦 发布时间: 2004-05-18
[B]能 给 我说说怎么架设个人服务器吗?
支持php的
谢谢!
qq:110031677
我的个人主页:http://feion199.533.net [/B]

作者: s_seraph 发布时间: 2004-05-18
菜鸟的我还是得继续努力咯
作者: 阿发 发布时间: 2004-05-19
觉得自己的仍处于很低级的学习阶段
恩,继续努力着!
作者: Xhunter 发布时间: 2004-05-21
作者: gavinguo 发布时间: 2004-05-21
作者: 绝版英俊 发布时间: 2004-05-21
同样的代码,这样就比较让人看得舒服了:
PHP代码:
$foo = $_post["foo"];
$username = $_post["username"];
$group = $_POST["group"];
if ($group=="wheel")
{
$username = $username."wheel";
}
当然,有一定基础后,你应该要写成这样:
PHP代码:
$foo = &$_POST['foo'];
$username = $_POST["group"]!='wheel' ? $_POST["username"] : $_POST["username"].'wheel';
?>
这句应该怎么解释?
如果 $_POST["group"]!='wheel'
那么 $username= $_POST["group"]=$_POST["username"] :
否则 $username= $_POST["group"]=$_POST["username"].'wheel';
我看下来是这样的,怎么和上面的那个不一样啊,谁来分析下?
$_POST["group"]!='wheel' ? $_POST["username"] : $_POST["username"].'wheel;
这里没有对'
$_POST["group"] 赋值嘛?
作者: Dalamar 发布时间: 2004-05-22
作者: magicstu 发布时间: 2004-05-22
作者: 34010493 发布时间: 2004-05-25
作者: pippen7923 发布时间: 2004-05-27
作者: yuguanglou 发布时间: 2004-05-28
作者: movenet 发布时间: 2004-05-29
作者: emylekao 发布时间: 2004-05-31
作者: 感动 发布时间: 2004-05-31
作者: 乱码! 发布时间: 2004-06-01
作者: slackware 发布时间: 2004-06-01
作者: polofigo 发布时间: 2004-06-01
永远的初学者[/COLOR]
作者: aplapl 发布时间: 2004-06-02
作者: rich88 发布时间: 2004-06-02
作者: czwu 发布时间: 2004-06-05
作者: 山间小溪 发布时间: 2004-06-08
作者: luckcc 发布时间: 2004-06-08
作者: txdesign 发布时间: 2004-06-13
呵呵,那十句话很经典,谢谢!
作者: 一只傻鱼 发布时间: 2004-06-15
[B]宽带一出。。。。万事俱休 [/B]
作者: bingle 发布时间: 2004-06-18
作者: jsj792004 发布时间: 2004-06-18
作者: 火龙sky2号 发布时间: 2004-06-19
作者: 狂龙书生 发布时间: 2004-06-21
to 楼主: 对于你所说的擅于用"引用", 速度更快.本人可不敢苟同.
猪头说过,一个软件的好坏,与抽象的数量和质量有着莫大的关联
楼主的“引用”,不像是简单地指include/require
偶得理解

作者: 开心果 发布时间: 2004-06-23
作者: 边个够我惨 发布时间: 2004-06-23
[B]思:从一点一滴做起。 [/B]
不过谢谢wormbaby 让我知道哪些地方不适合引用
谢谢你们俩
作者: 卒仔 发布时间: 2004-06-28
作者: 水若寒 发布时间: 2004-06-28
作者: noHER 发布时间: 2004-06-30
[B]。。。。。。。。
不打算再在技术版多说什么
只是每次看到一堆人在PHP版为JS特效喝彩、不谈工程框架设计思路谈小数点后好几位的比拼、不讲信仰讲生活。。。。就感到心寒
这就是中国PHP,这就是中国特色的开源社区 [/B]
A HOWTO on Optimizing PHP
作者: phppp 发布时间: 2004-06-30
作者: 风无影 发布时间: 2004-07-01
$query = "SELECT `flash_comment`.`content` , `flash_comment`.`nickname` , `flash_comment`.`date` , `flash_comment`.`ip` , `product`.`p_name` , `sgflash`.`fid`
FROM `flash_comment`
LEFT JOIN `product` ON ( `flash_comment`.`p_no` = `product`.`p_no` )
LEFT JOIN `sgflash` ON ( `product`.`p_name` = `sgflash`.`f_name` )
WHERE `flash_comment`.`p_no` != ''
ORDER BY `flash_comment`.`date`";
?>
作者: coolsnow001 发布时间: 2004-07-03
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
//initialize big array1
$bigArray1 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray1[$ii]=$ii.'value';
}
//initialize big array2
$bigArray2 = array();
for($ii=0; $ii<600; $ii++)
{
$bigArray2[$ii]=$ii.'value';
}
//fuction by reference
function passByRef(&$param)
{
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
}
//function by copy
function passByCopy($param)
{
reset($param);
while($kek=key($param))
{
$param[$key] .= '-processed';
next($param);
}
}
//Call passByRef 50 times
$startTime = getmicrotime();
for($ii=0; $ii<50; $ii++)
{
passByRef($bigArray1);
}
$endTime = getmicrotime();
$refTime = $endTime-$startTime;
//Call passByCopy 50 times
$startTime = getmicrotime();
for($ii=0; $ii<50; $ii++)
{
passByCopy($bigArray2);
}
$endTime = getmicrotime();
$copyTime = $endTime-$startTime;
echo('reference time is '.$refTime.'<br>');
echo('copy time is'.$copyTime.'<br>');
?>
作者: coolsnow001 发布时间: 2004-07-03
作者: fanfwen 发布时间: 2004-07-07
作者: cnruyi 发布时间: 2004-07-10
1、只有动手才会有提高。所以无论是论坛或是其他什么程序都可以尝试着去写,在写的过程中会让你思考,会让你尝试各种各样方法,你的能力也就自然的提高了。当然只是叫嚷是没有用的。
2、三元运算子给人一种不清晰的感觉。我感觉让程序清晰比效率更重要。
作者: grw 发布时间: 2004-07-11
不过只有先解决温饱再说小康了,脚踏实地。
作者: bjbs_270 发布时间: 2004-07-23
[B]人家不是打上引号了吗?
猪头说过,一个软件的好坏,与抽象的数量和质量有着莫大的关联
楼主的“引用”,不像是简单地指include/require
偶得理解

作者: mgirl 发布时间: 2004-07-25
作者: 艳儿 发布时间: 2004-07-25
作者: yema 发布时间: 2004-07-28
[B]很好,很受启发!但本人有两个观点和楼主不同:
1、只有动手才会有提高。所以无论是论坛或是其他什么程序都可以尝试着去写,在写的过程中会让你思考,会让你尝试各种各样方法,你的能力也就自然的提高了。当然只是叫嚷是没有用的。
2、三元运算子给人一种不清晰的感觉。我感觉让程序清晰比效率更重要。 [/B]
1,写是必须的,但是写前看一下代码还是非常非常有必要的。重要的是了解结构与思想。
2,三元运算,结构非常清晰,是则前,不是则后。
作者: yema 发布时间: 2004-07-28
我是php新手 请大家多关照
作者: wlimoon 发布时间: 2004-07-30
作者: RustlingWind 发布时间: 2004-07-30
作者: hongmo 发布时间: 2004-08-03
作者: applee 发布时间: 2004-08-06
不是�f�N出���]甚�N大不了, 而是基本不重要, �π率侄�言是混�y
��老手就是不合乎���T
三元�\算有好肯定也有不好, 既然他不可以完全取代if...else, �榻y一起����之
引用也涉及了公用及私有的���}, 而且在框架及��中都是直接�{用, ��之
每��人有自己的生活�L格, ��程序更是, 我��人而言是���}�s化狂
�O���R�r��量都用上4,5������, 不要和我�f速度
我��告�V你用sun fire 15K 250��cpu去吧, 呵
做n ��循�h都比你的486 ���� echo快
以前用���a程序看��很多都出�e出�e再出�e, 反而外��的就是�y用都�]多大���}
�F在懂了再看原因就是�^份���{效率, 基本�]有考�]太多例外情�r
多���� if...else 都不��用, �@�拥某绦蛟倏煲彩桥�到垃圾桶去踩平
��程序��是�����旱挂磺�, 功能次之, 效率再次, 代�a��法再次
��然sql等技巧都是真理, 不�@����的��出�e率是很高的.....
作者: mlw3031 发布时间: 2004-08-10
作者: Gemse 发布时间: 2004-08-10
作者: SiegfriedDK 发布时间: 2004-08-11
作者: shank 发布时间: 2004-08-11
作者: lqy730 发布时间: 2004-08-11
作者: 金台小子 发布时间: 2004-08-17
作者: 天天想你 发布时间: 2004-08-18
不大懂就是了!以后多帮忙了哦!
作者: flyhan 发布时间: 2004-08-21
作者: gzty 发布时间: 2004-08-28
因发展需要,特诚邀php高手加盟 ,
本站前景广阔,回报丰厚。
有意者请email:[email protected]
标题注明:加盟中国设计之窗
在深圳,可以兼职!
请你们主动与我联系,或留下电话!!!!
作者: pass2004 发布时间: 2004-09-01
作者: wubai2002 发布时间: 2004-09-04
作者: 哈苦瓜 发布时间: 2004-09-06
但是如果函数内部没有输出,引用变量以及函数返回引用,在php底层大概只是进行指针地址的传递,因此效率应该绝对高于复制拷贝。
个人结论:
用于界面显示的函数一般没有返回值,只在函数内部进行界面输出,这种函数尽量不要使用引用来传递变量。
用于系统逻辑层的纯数据传递的函数一般由返回值,返回值以数组,对象为主。这种函数尽量使用引用来传递变量并且注意函数返回引用。
不只对否?
作者: liubinnet 发布时间: 2004-09-11
我现在真学习这个
作者: cennycai 发布时间: 2004-09-12
作者: dreamriver 发布时间: 2004-09-14
作者: hack_yi 发布时间: 2004-09-25
可惜我连C都不会,最.......
作者: hao123 发布时间: 2004-09-29
作者: far 发布时间: 2004-10-02
作者: hevi 发布时间: 2004-10-06
作者: snow685159 发布时间: 2004-10-08
作者: 步步高 发布时间: 2004-10-15
作者: 五花小鱼 发布时间: 2004-10-24
作者: redblade 发布时间: 2004-10-25
本人保证所说的PHP代码完全正确!!!!!
是不是服务器的问题??????
作者: ray2003 发布时间: 2004-10-29
如果链接了几个应该怎么处理?语法?
[B]
//使用LEFT JOIN
SELECT `sgflash`.`f_name`, `sgflash_comment`.`contents`, `sgflash_comment`.`nickname`, `sgflash_comment`.`date`
FROM `sgflash_comment` LEFT JOIN `sgflash`
ON (`sgflash_comment`.`fid`=`sgflash`.`fid`)
ORDER BY `sgflash_comment`.`date` DESC LIMIT 0, 10000
//不使用LEFT JOIN
SELECT `sgflash`.`f_name`, `sgflash_comment`.`contents`, `sgflash_comment`.`nickname`, `sgflash_comment`.`date`
FROM `sgflash_comment`, `sgflash`
WHERE `sgflash_comment`.`fid`=`sgflash`.`fid`
ORDER BY `sgflash_comment`.`date` DESC LIMIT 0, 10000
?>
显示行 0 - 29 (10000 总计, 查询花费 0.6760 秒) 第一次执行用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 1.5532 秒) 第二次执行不用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 0.6655 秒) 第三次执行使用LEFT JOIN
显示行 0 - 29 (10000 总计, 查询花费 1.3730 秒) 第四次执行不合使用LEFT JOIN [/B]
作者: bopo 发布时间: 2004-10-31
看来,我的php之路还有很长啊!
作者: smoon 发布时间: 2004-10-31
作者: singlehero 发布时间: 2004-11-02
作者: 键步随风 发布时间: 2004-11-02
如果写成这样,是比较让人头痛的:
$foo=$_post["foo"];
$username=$_post["user"];
$group=$_POST["group"];
if ($group=="wheel"){
$username=$username."wheel";
}
?>
$foo = $_post["foo"];
$username = $_post["username"];
$group = $_POST["group"];
if ($group=="wheel")
{
$username = $username."wheel";
}
?>
$foo = &$_POST['foo'];
$username = $_POST["group"]!='wheel' ? $_POST["username"] : $_POST["username"].'wheel';
?>
作者: Ice_D(real) 发布时间: 2004-11-04
作者: zxf2008 发布时间: 2004-11-09
作者: 开花石头 发布时间: 2004-11-09
作者: 阿艺 发布时间: 2004-11-11
[B]看过大家的引用、拷贝测试代码,我猜测,如果引用传递参数进入函数后,如果函数内没有输出,则php底层进行的是指针操作,如果有输出的话,php肯定会临时将当前引用变量的值复制一份过来用于输出。这样的操作多了,就会影响效率。甚至不如一次整个拷贝来的快。但是这也不能确定,因为这跟变量的大小以及执行输出的次数有关。
但是如果函数内部没有输出,引用变量以及函数返回引用,在php底层大概只是进行指针地址的传递,因此效率应该绝对高于复制拷贝。
个人结论:
用于界面显示的函数一般没有返回值,只在函数内部进行界面输出,这种函数尽量不要使用引用来传递变量。
用于系统逻辑层的纯数据传递的函数一般由返回值,返回值以数组,对象为主。这种函数尽量使用引用来传递变量并且注意函数返回引用。
不只对否? [/B]
作者: lalaqi 发布时间: 2004-11-12
作者: guoli 发布时间: 2004-11-18
作者: 我的电脑 发布时间: 2004-11-24
作者: goldSn0ke 发布时间: 2004-12-15
register_globals = register_global 么?
作者: zhongli 发布时间: 2004-12-16
作者: zhongli 发布时间: 2004-12-16
作者: 紫禁之巅 发布时间: 2004-12-22
作者: topcool 发布时间: 2004-12-24
作者: 冰冻の红茶 发布时间: 2004-12-26
作者: vanrest 发布时间: 2004-12-29
作者: ufwiqfcu 发布时间: 2004-12-29
作者: login6532 发布时间: 2005-01-01
每个人的运行环境不同,速度终究是有差异的!
偶希望能尽快看到这篇帖子的后续内容!!
呵呵!
有 同感的 顶一下?!
作者: songyan 发布时间: 2005-01-01
作者: songyan 发布时间: 2005-01-01
作者: songyan 发布时间: 2005-01-01
作者: _寒_ 发布时间: 2005-01-02
1、个人觉得写一程序时用常用echo 来追数据对调试很有好处。
2、还有了,掌握一定的js知识可能对你写php程序减轻不少前期工作。
作者: 小煞 发布时间: 2005-01-02
作者: 光风霁月 发布时间: 2005-01-03
作者: iloveangle 发布时间: 2005-01-14
作者: yjll 发布时间: 2005-01-15
作者: 傻小子 发布时间: 2005-01-15
作者: phpnow 发布时间: 2005-01-19
1,对于不包含规则的字符串替换,使用str_replace(): 要比 ereg_replace()效率高的多
2,PHP和其它很多编程语言一样,可以使用双引号(\"\")来引用字符串,也可以使用单引号()。但是在PHP中,如果使用双引号来引用字符串,那么PHP解析器将首先分析字符串中有没有对变量的引用,有变量的话,将对变量进行替换。如果是单引号,则没有如此复杂――直接将单引号包含起来的所有字符串直接显示出来。显然,在PHP编程中,如果使用单引号引用字符串变量要比使用双引号快速一些。
作者: redants 发布时间: 2005-01-24
作者: ministrator 发布时间: 2005-01-26
作者: 漫步阳光 发布时间: 2005-01-26
作者: leeco 发布时间: 2005-01-28
作者: safetin 发布时间: 2005-02-06
切实是这个道理,
我们不能一味的追求效率,而忽略了过程。
有时候,在写论坛、购物系统的时候,往往还要回过头来查资料,翻笔记。这足已说明,掌握基础是走向更高一层的前提!
磨刀不误砍材工,是有道理的!
作者: xuxunmeng 发布时间: 2005-02-08
作者: 神龙居士 发布时间: 2005-02-10
<?=$var?>
IF的随意写法:
if ($a<1)$b=1
作者: bloffice 发布时间: 2005-02-14
已经用mySQL 创建了一个数据库,并添加了内容。然后写了个访问数据库的php页,通过I.E 访问时,老是出错。
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\Program Files\Apache Group\Apache2\htdocs\sean\database.php on line 16
我的第16行是这样的:
$connection = mysql_connect($host, $user, $pass) or die (“Unable to connect!“);
搞不清楚怎么回事,求斑竹指教!
作者: undeadbird 发布时间: 2005-02-15
作者: yueyang 发布时间: 2005-02-18
而语言的精妙则恰好是思想成熟的凭证!
但是我搞不明白为啥register_golbals=Off 这样会有助于学习呢?
作者: seanysz 发布时间: 2005-02-18
作者: youiou 发布时间: 2005-02-21
作者: nwletian 发布时间: 2005-02-23
呵呵。
作者: bob520 发布时间: 2005-03-02
[B]
以前用���a程序看��很多都出�e出�e再出�e, 反而外��的就是�y用都�]多大���}
�F在懂了再看原因就是�^份���{效率, 基本�]有考�]太多例外情�r
多���� if...else 都不��用, �@�拥某绦蛟倏煲彩桥�到垃圾桶去踩平
��程序��是�����旱挂磺�, 功能次之, 效率再次, 代�a��法再次
[/B]
http://www.csdn.net/news/newstopic/19/19566.shtml
作者: yeoman_z 发布时间: 2005-03-07
计算机发展到今天,如果不是搞什么大型联机事务处理,技术底层的问题怕是只有少数情况可以用到吧
个人比较喜欢编程,对一般小型应用来说,人性化处理才是最重要,以人为本,方便,实用,稳定,可能会比技术更值得关注吧(略抒愚见)
作者: haides 发布时间: 2005-03-12
作者: xhhy 发布时间: 2005-03-23
希望能有一个好的结果
这个贴子不错的
作者: cysin 发布时间: 2005-04-08
[B]谢谢楼主指点,高手有云,编程着重于思想!
而语言的精妙则恰好是思想成熟的凭证!
但是我搞不明白为啥register_golbals=Off 这样会有助于学习呢? [/B]
当你使用Off的时候
$_POST["abc"]和$_GET["abc"]可以代表两个不一样的值
而你用On的时候,能吗?当然不能。
使用Off将让程序员从开始就养成一个在任何环境下都能通用的,良好的编程习惯。
作者: andsky 发布时间: 2005-04-09
作者: txkss 发布时间: 2005-04-13
if ($data[$i]['nickname'])
{
$nickname = $data[$i]['nickname'];
}
else
{
$nickname = $data[$i]['ip'];
}
--------------------------------------------------------------------------------
可以写成:
PHP代码:--------------------------------------------------------------------------------
$nickname = $data[$i]['nickname'] ? $data[$i]['nickname'] : $data[$i]['ip'];
这个不是很懂
作者: jxxysong 发布时间: 2005-04-15
给变量nickname赋值
如果$data[$i]['nickname']为TRUE,则$nickname得到前者的值
如果$data[$i]['nickname']为FALSE,$nickname = $data[$i]['ip']
ps:你哪看到的例子?
作者: quzn 发布时间: 2005-04-15
配置错误信息回报的等级。
语法: int error_reporting(int [level]);
返回值: 整数
函数种类: PHP 系统功能
内容说明
本函数用来配置错误信息回报的等级,参数 level 是一个整数的位遮罩 (bitmask),见下表。
遮罩值 表示名称
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
E_NOTICE 表示一般情形不记录,只有程序有错误情形时才用到,例如企图存取一个不存在的变量,或是呼叫 stat() 函数检视不存在的文件。
E_WARNING 通常都会显示出来,但不会中断程序的执行。这对除错很有效。例如:用有问题的正则表达式呼叫 ereg()。
E_ERROR 通常会显示出来,亦会中断程序执行。意即用这个遮罩无法追查到内存配置或其它的错误。
E_PARSE 从语法中解析错误。
E_CORE_ERROR 类似 E_ERROR,但不包括 PHP 核心造成的错误。
E_CORE_WARNING 类似 E_WARNING,但不包括 PHP 核心错误警告。
作者: bopo 发布时间: 2005-04-29
作者: Van.T 发布时间: 2005-05-01
我是初学者,还没上路,支持!!!1
作者: dzjzmj 发布时间: 2005-05-01
作者: 闪闪星 发布时间: 2005-05-13
作者: 失忆的鱼 发布时间: 2005-05-16
作者: ljquartz 发布时间: 2005-05-30
作者: 鬼谷子先生 发布时间: 2005-07-01
作者: 小威菜菜 发布时间: 2005-07-01
作者: 纯粹误会 发布时间: 2005-07-01
作者: ouok 发布时间: 2005-08-02
如果过慢,任何人也不会有耐心等待的
作者: maoqi2232 发布时间: 2005-08-11
作者: sky2008 发布时间: 2005-08-13
一. 10句话
1.不要依赖register_global=ON的环境,从你刚懂得配置php运行环境甚至尚不明白register_global的ON/OFF会对自己有什么影响的那天起,就应该勇敢地把它设为OFF.
2.写程序前看看怎么用error_reporting.
3.不懂就问本身没错,但你需要在那之前查查手册。
4.当然,你需要懂得使用手册。手册上找不到答案的时候,应该考虑下网络上的搜索引擎。
5.刚学会php+mysql之后,不要叫嚷着要写论坛,要写XXX。要明白,刚学会写汉字并不表示你有能力写诗。
6.在学web编程的时候,你应该先去认识html这个朋友。
7.有点能力后,试着回答新手的问题,不要看到自己懂的而别人不懂就沾沾自喜,扔下一名“简单,那是基本的东西”就走更要不得。
8.思考是一个好习惯,不动手去写就等于空想,什么也没有。
9.写好一段程序,如果觉得很满意,一周后再看一遍,也许你会认为它应该有所改变
linux
10.有空多看看别人的程序,找出他人的不足或优点,自己掂量。
二. 各取所需
1.善于使用“引用”,它能直接影响到程序的效率。
2.善于用三元运算子,可以让程式较精简有效率。
比如:
Code:
if ($data[$i]['nickname'])
{
$nickname = $data[$i]['nickname'];
}
else
{
$nickname = $data[$i]['ip'];
}
可以写成:
Code:
$nickname = $data[$i]['nickname'] ? $data[$i]['nickname'] : $data[$i]['ip'];
3.善于组织if...else...回圈
比如:
Code:
$ext_name = strtolower(str_replace(".", "", strrchr($upfilename, ".")));
if (!empty($type))
{
if (!strpos($type, $ext_name))
{
echo "Please upload the file of $type form.";
exit();
}
} linux
上面的代码你应该写成这样:
Code:
$ext_name = strtolower(str_replace(".", "", strrchr($upfilename, ".")));
if (!($type==='') && strpos($type, $ext_name)===false)
{
echo "Please upload the file of $type form.";
exit();
}
4.尽量让你的代码清淅些
如果写成这样,是比较让人头痛的:
Code:
$foo=$_post["foo"];
$username=$_post["user"];
$group=$_POST["group"];
if ($group=="wheel"){
$username=$username."wheel";
}
同样的代码,这样就比较让人看得舒服了:
Code:
$foo = $_post["foo"];
$username = $_post["username"];
$group = $_POST["group"];
if ($group=="wheel")
{
$username = $username."wheel";
}
当然,有一定基础后,你应该要写成这样:
linux
Code:
$foo = &$_POST['foo'];
$username = $_POST["group"]!='wheel' ? $_POST["username"] : $_POST["username"].'wheel';
5.编写规范的mysql 语句。
字段和表名用"`"引起来,避免保留字的影响。
如果看到下面这样的一个sql query,会让人比较头痛:
Code:
$query="select `flash_comment`.`content` , `flash_comment`.`nickname` , `flash_comment`.`date` , `flash_comment`.`ip` , `product`.`p_name` , `sgflash`.`fid` from `flash_comment` left join `product` on ( `flash_comment`.`p_no` = `product`.`p_no` ) left join `sgflash` on ( `product`.`p_name` = `sgflash`.`f_name` ) where `flash_comment`.`p_no` != '' order by `flash_comment`.`date`";
同样的一个query,写成这样就令人看得明白得多了:
Code:
$query = "SELECT `flash_comment`.`content` , `flash_comment`.`nickname` , `flash_comment`.`date` , `flash_comment`.`ip` , `product`.`p_name` , `sgflash`.`fid` unix
FROM `flash_comment`
LEFT JOIN `product` ON ( `flash_comment`.`p_no` = `product`.`p_no` )
LEFT JOIN `sgflash` ON ( `product`.`p_name` = `sgflash`.`f_name` )
WHERE `flash_comment`.`p_no` != ''
ORDER BY `flash_comment`.`date`";
转自 http://www.jfox.info/php/a/gF/13769f.html
作者: PHP 技术狂人 发布时间: 2010-08-19
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28