博采众长,精于一技。Live for love, work for dream.

谈php框架

在Web开发界打滚了几年,其实对Web框架的熟悉度不算太浅,但也不能算太深。

基于我个人对目前业界使用Web框架的观察,大略区分了以下数种类型。

注:基本上这是一篇嘴炮文,部份论点是个人想法,若有谬误还望指正。

继续阅读 »

Web开发必知的八种隔离级别

ACID性质是数据库理论中的奠基石,它定义了一个理论上可靠数据库所必须具备的四个性质:原子性,一致性,隔离性和持久性。虽然这四个性质都很重要,但是隔离性最为灵活。大部分数据库都提供了一些可供选择的隔离级别,且现在许多库都增加了附加层来创建颗粒度更细的隔离。隔离级别应用范围如此之广主要是因为放宽隔离约束往往会使得可扩展性和性能提高几个数量级。
串行一致性是可用的最古老最高的隔离级别之一,它之所以倍受青睐是因为其提供的简单编程模型,即每次仅能有一个事务对给定的资源进行操作,这就避免了很多潜在的资源问题。尽管如此,大部分应用程序(尤其是Web应用程序)都不采用这种级别非常高的隔离,因为从终端用户的角度来看这是不切实际的-任何一个拥有大量用户群的应用程序在访问共享资源时都将会有几分钟的延迟,而这会使得用户量迅速减少。弱一致性和最终一致性在大规模分布式数据源中,例如Web中,随处可见。好几个成功的大型Web应用(例如,eBay和Amazon)都显示出乐观的(optimistic)弱一致性要比传统悲观的(pessimistic)机制在扩展性方面好得多。本文将一窥八种不同的隔离级别。学会适当的放宽数据一致性的约束,你可以在自己的应用程序中使用这八种隔离级别来获得更好的性能和可扩展性。
并发控制的主要目标是为了确保事务被隔离且不会影响到其他事务。要达到高级别的隔离需以牺牲性能为代价。并发控制可以用悲观或者乐观的机制来实现。大部分关系型数据库都使用了悲观机制来实现写入优化。悲观机制采用了锁,通过使用锁它可以阻塞一些操作或者进行某些形式的冲突检测。当一个表格,页面或是行被修改后,悲观机制中的锁可以用来阻塞其他潜在的访问修改资源的事务。然而,乐观机制并不采用任何锁,它仅仅依赖于冲突检测来维护事务隔离。乐观机制采用的冲突检测可以允许所有的读操作,并在事务结束时检验其一致性。如果检测到冲突,那么事务会进行回滚或重做。大部分web服务器都是读入优化,因此使用了乐观机制。通过允许所有的读入操作,乐观机制既可以保证很高的读写吞吐量,也可以在资源不是一直改变的情况下保证数据的一致性。
下面列出的隔离级别是用来帮助Web开发人员更好的理解他们编程模型中放置的约束,帮助系统架构师和开发人员共同讨论如何在保持必要的数据完整性的同时选择最有效的隔离级别。它们按照最少隔离(未提交读)到最多隔离(串行化)的顺序列出。

继续阅读 »

谁动了我的childNodes?

先上一段代码
<html>
<body>
<div>
    <ul>
        <li id="dom1"><a href="#">dom1.aaa</a><a href="#">dom1.bbb</a></li>
        <li id="dom2">
            <a href="#">dom2.aaa</a>
            <a href="#">dom2.bbb</a>            
        </li>
    </ul>
</div>
<script type="text/javascript">
var dom1 = document.getElementById("dom1");
alert(dom1.childNodes[0].innerHTML);
alert(dom1.firstChild.innerHTML);

var dom2 = document.getElementById("dom2");
alert(dom2.childNodes[0].innerHTML);
alert(dom2.firstChild.innerHTML);
</script>

</body>
</html>

分别用不同的浏览器执行一下(测试地址),看看有什么结果?

继续阅读 »

IE DOM查看工具:IE Web Developer V2

使用firefox的时候,总是喜欢用它的DOM查看器来排查错误,或者是查看其他网站的页面设计。
幸运的是,IE也有这么一个工具,而且,还要来得强大一些,这就是IeInspector公司的IE WebDeveloper V2

当然还有至关重要的注册码
Name:piaodown.com
Serial:88185-DC6AC789B7CC1508

Javascript: unterminated string literal解决方法

Javascript使用document.write(str)进行输出时,常提示下列错误:Error: unterminated string literal。

通常原因是输出字符str中包含换行符导致的。

解决方法如下:

asp:
str=replace(str,vbcrlf,"",1,-1,1)

php:
$str = str_replace("\n", "", $str);
$str = str_replace("\r", "", $str);

然后再进行document.write(str)输出。

返回顶部