09月 1, 2010 0

replace中使用函数

By 阿飞 in javascript

在replace中,第二个参数我们可以使用函数:

str.replace(ergexp , function)

该函数的参数是这样的
第1个参数:匹配表达式的字符串
第2….n:匹配子表达式的字符串,有多少个子表达式就有多少个参数
倒数第2个参数:匹配表达式的字符串的位置
倒数第1个参数:整个字符串
例:

function test()
{
for(var i=0;i/g
var str=”
—————我好帅”;
str.replace(rxhtmlTag,test);

查看全文

08月 31, 2010 0

正则里 ‘ ?’ 的艺术

By 阿飞 in javascript

? 0或1个
?: 子表达式不记录
?= 后面必需跟着XXX
?! 后面不能跟着XXX
*? +? 非贪婪匹配

查看全文

08月 12, 2010 0

新浪微博的字数改变及字符计算

By 阿飞 in javascript

今天有个哥们让我看一下新浪微博的字数改变的实现及字符数计算的算法。
现把它关键部份抽出如下。

var testlimit = function(func) {
var len = getLength(elements.editor.value);
if (typeof func === “function”) {
func(len)
}
if (len > 0 && len = 0 && len 0) {
[...]

查看全文

07月 21, 2010 0

【高性能MySql】读书笔记 二

By 阿飞 in mysql

1.基准测试:用来测量系统的整体性能
1)集成式测试:将整 个应用(包括mysql)做为整体进行测试
2)单组件式测试:单独测试mysql
2.性能测试:…
3.测试指标
1)单位时间的事务处理量
2)响应时间或时延
3)扩展性
4)并发性
4.集成式测试工具
1)apache ab
2)http_load
3)JMeter
5.单组件式测试工具
1)mysqlslap
2)sysbench
3)Database Test Suite
4)MySQL Benchmark Suite(sql-bench)
5)Super Smack
6.性能分析
1)PHP日志类,class.Timer.php,使用内建函数:getrusage();
2)慢日志
7.日志分析工具
1)Mysqldumpslow
2)Mysql_slow_log_filter
3)Mysql_slow_log_parser
4)Mysqlsla
8.使用SHOW STATUS分析查询
9.SHOW PROFILE

查看全文

07月 21, 2010 0

【高性能MySql】读书笔记 一

By 阿飞 in mysql

题外话:虽然这本书翻译的不尽如人意,但不可否认这是一本MySql方面的顶级好书。有的话虽然是汉字国语,但看个N遍还不得其解,这个翻译…唉!为了以后能轻松点查阅,现提重点想记的做些笔记。
1.MySql的逻辑架构
2.并发控制:读锁(共享锁),写锁(排他锁)
3.事务
START TRANSACTION
COMMIT
ROLLBACK
4.事务日志 ——预写式日志
5.AUTOCOMMIT
SHOW VARIABLES LIKE ‘AUTOCOMMIT’
SET AUTOCOMMIT = 1
6.多版本并发控制(MVCC)
7. “.frm”文件存储表定义
8.SHOW TABLE STATUS LIKE ‘user’\G;
其中Row_format可能是Dynamic,Fixed,Compressed
9.MyISAM特性
手工修复:CHECK TABLE mytable和REPAIR TABLE mytable。离线时用myisamchk命令行工具检查和修复表。
其中索引的特性:可基于BOLB和TEXT类型列前500个字符创建相关索引
延迟更新索引:DELAY_KEY_WRITE
10.Memory引擎
不支持TEXT或BLOB字段类型,如果含TEXT或BOLB字段类型或中间数据非常大,将会转成MyISAM表
只支持固定大小行
11.读写分离与合并表
12.表类型转换
1)ALTER TABLE mytable ENGINE = Falcon
缺点:源表被读加锁,旧表到新表逐行复制,占用大量IO,耗费大量时间
2)转储和导入,用mysqldump导出相改语句再导入
3)CREATE TABL innodb_table LIKE myisan_table;
ALTER TABLE innodb_table ENGINE =InnoDB;
INSERT INTO innodb_table SELECT * FROM myisam_table;
缺点:可以在数据量小时用,数据量大时,日志变得很庞大,可以采用事务的方式:
START TRANSACTION;
INSERT INTO innodb_table SELECT * FROM myisam_table WHERE id BETWEEN x AND y;
COMMIT;

查看全文

07月 10, 2010 0

看mysql5.1手册做的一点笔记

By 阿飞 in mysql

1. SET @var_name = expr [, @var_name = expr] …
对于SET:
mysql> SET @t1=0, @t2=0, @t3=0;
用语句代替SET来为用户变量分配一个值
mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
注释:在SELECT语句中,表达式发送到客户端后才进行计算。这说明在HAVING、GROUP BY或者ORDER BY子句中,不能使用包含SELECT列表中所设的变量的表达式
2. mysql> SHOW CHARACTER SET; #字符集
mysql> SHOW COLLATION LIKE ‘latin1%’; #较对规则
shell> mysqld –default-character-set=latin1 \
–default-collation=latin1_swedish_ci #服务器
#建数据库时候
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
3. SET NAMES ‘x’
等价于
mysql> SET [...]

查看全文

07月 10, 2010 0

让IE6支持position:fixed

By 阿飞 in css

1.body,里的背景图片 fixed,这里一定要有,就算写个不存在的图片。

body {background:url(foo) fixed;}

2.要fixed的元素absolute;

#header{
position:absolute;
}

3.样式表达式

top:expression(
eval(document.compatMode && document.compatMode==’CSS1Compat’)
? documentElement.scrollTop
: document.body.scrollTop)

这段样式可以在单独的ie.css,只在IE6及更底版本中加载

<!–[if lt IE 7]>
<link rel=”stylesheet” href=”ie.css” type=”text/css”>
<![endif]–>

查看全文

07月 10, 2010 0

IE7,IE8中flash调用不了JS的问题

By 阿飞 in flash,flex,actionscript

在IE7,IE8中,以下HTML中嵌入的flash在执行ExternalInterface.addCallback时会报JS错:

查看全文

07月 10, 2010 0

AJAX前进后退及书签

By 阿飞 in javascript

ajax前后退功能原理其实比较简单,改变hash值促使浏览器激活前后退按钮。
在IE8以下的浏览器不支持js修改hash,遂增加额外的隐藏iframe,通过修改其src来达到同样的目的。
知道原理后,我们可以很快把它实现。下面介绍一个Jquery插件和一个库RSH

查看全文

07月 8, 2010 0

Zend Framework 多模块模型自动加载(models auto-loading)

By 阿飞 in Zend Framework

众所周知,ZF是一个MVC的PHP框架,而且它能很方便的部署多模块程序。如:
但这样做会遇到一个问题:模块里怎么加载 models/ 下的 模型类。
现有如下解决方案:
1.把所有模块下的models写进include_path,实现自动加载。
2.把所有模型类放在library下,和Zend库同级,也能实现自动加载。
3.每次在controller里手动包含所用类的路径
除此之外,有位山人出此妙招:

<?php
abstract class System_Controller_Action extends Zend_Controller_Action
{
//加载Model
public function loadModel($class, $module = null)
{
$modelDir = $this->getFrontController()->getModuleDirectory($module)
[...]

查看全文