
网友注解:
总结起来主要是以下三点
1.使用eval来产生JavaScript代码,减小了代码体积
2.以字符串作为游戏场景数据,使用正则表达式做查找和匹配,省去了通常应当手动编写的查找验证代码
3.以二进制方式管理俄罗斯方块数据和场景数据,通过位运算简化比较和验证
另外,原作者代码换行很少,代码写的比较紧凑,这也是导致这个程序仅仅只有60行的一个原因。
<!doctype html>
<html>
<head>
<title>俄罗斯方块</title>
</head>
<body>
<d......

PHP默认的会话处理器是session.save_handler = files(即文件)。如果同一个客户端同时并发发送多个请求(如ajax在页面同时发送多个请求),且脚本执行时间较长,就会导致session文件阻塞,影响性能。因为对于每个请求,PHP执行session_start(),就会取得文件独占锁,只有在该请求处理结束后,才会释放独占锁。这样,同时多个请求就会引起阻塞。
解决方案有3种:
1、在用完session的时候使用session_write_close()释放文件锁。
2、利用session_set_save_handler()函数是实现自定义会话处理。
3、自己写session类(写session操作较少......
作者: owoer
|
发表于:2016年3月23日
|
栏目:PHP
|
PHP session锁引起并发效率问题已关闭评论
阅读全文

问题:
执行如下更新时产生死锁
UPDATE contactlist SET name=’xxx’ WHERE userid=’1′ AND contact_id=’90’
报Deadlock found when trying to get lock; try restarting transaction
其中userid和c_contact_id都有索引,但不是主索引。
解决方式:
先通过userid=’1′ AND contact_id=’90’取得主键,再用主键更新。
注:
在采用INNODB的MySQL中,更新操作默认会加行级锁,行级锁是基于索引的,在分析死锁之前需要查询一下mysql的执行计划,看看是否用到了索引,用到了哪......
作者: owoer
|
发表于:2016年3月23日
|
栏目:MySQL
|
mysql死锁-非主键索引更新引起的Deadlock已关闭评论
阅读全文

【问】在php中定义常量时,const与define的区别?
【答】使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。
(1).const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。
(2).const可在类中使用,define不能。
(3).const不能在条件语句中定义常量。
例如:
if (…){
const FOO = ‘BAR’; // 无效的invalid
}
if (…) {
define(‘FOO’, ‘BAR’); // 有效的valid
}
(4).const采......
作者: owoer
|
发表于:2016年3月22日
|
栏目:PHP
|
php常量定义,const与define的区别已关闭评论
阅读全文

用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。
在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。 PS:像count、strlen这样的操作其实是O(1)的,因此不会带来太多消耗......
作者: owoer
|
发表于:2016年3月21日
|
栏目:PHP
|
PHP性能优化之编码参考已关闭评论
阅读全文