2010年01期《程序员》配套源码及相关链接
为了方便大家查阅,现把2010年01期《程序员》杂志中相关链接及代码发布在此:程序天下事P15页,推荐资源:诗剑书生的专栏:http://blog.csdn.net/axman/P17页,推荐资源:《JavaEE6Overview》——RezaRahmanhttp://www.theserverside.com/tt/articles/article.tss?l=...
为了方便大家查阅,现把2010年01期《程序员》杂志中相关链接及代码发布在此:
程序天下事
P15页,推荐资源:
诗剑书生的专栏:http://blog.csdn.net/axman/
P17页,推荐资源:
《Java EE 6 Overview》—— Reza Rahman
http://www.theserverside.com/tt/articles/article.tss?l=JavaEE6Overview
P18页,推荐资源:
《SQL Server Compact 终极性能调校》 ——黎波
http://www.cnblogs.com/upto/archive/2009/11/08/1598470.html
P19页,推荐资源:
Eweek.com
《微软为SQL Server提供Solo支持》
SQL Server Magazine
《关于SQL Azure的七个事实》
http://www.sqlmag.com/Article/ArticleID/102766/sql_server_102766.html
P21页,推荐资源:
天之虹的新浪博客
http://blog.sina.com.cn/jackiechueng
P23页,推荐资源:
《协同软件的思想精髓》
http://www.cpw.com.cn/Download/Downfile.Asp?id=539
P24页,推荐资源:
微软云计算提供Ruby on Rails支持环境
http://rubyonrails.cloudapp.net/
P25页,推荐资源:
Xen官方网站:http://www.xen.org/
虚拟化973项目:http://grid.hust.edu.cn/973/
P27页,推荐资源:
Peter-Paul Koch (PPK官网):
PPK是自学成才的世界级JavaScript专家,《PPK谈……》系列书籍作者。
Blog:www.quirksmode.org
《世界顶尖运动队教练的成功秘诀》
P50:
感谢InfoQ中文站的支持,原文链接:http://www.infoq.com/cn/articles/sport-coaching-and-agile
《Rails性能优化之路》
P81页,代码段1:
Rails很好地支持了这个原则。比如:
stylesheet_link_tag("application")
生成的页面元素是:
<link href="/stylesheets/application.css?1232285206" media="screen" rel="stylesheet" type="text/css"/>
P82页,代码段2:
在一个request的生命周期之内,有些数据不会改变,或者我们不关心改变,则可以通过对结果缓存以避免重复计算。
def length
@length ||= end - start
End
P82页,代码段3:
下面的代码是从搜索结果数据集创建产品对象:
records.map { |record| Product.new record }
P82页,代码段4:
避免多次创建transaction的开销。(代码如下)
Product.transaction do
search_results.each do |search_result|
Product.create(search_result)
end
end
P82页,代码段5:
正确使用预先加载可以避免n+1查询:
Company.all(:include => :products, :conditions => "company.kind = 'toy'")
产生的sql查询是:
SELECT * FROM companies WHERE kind = 'toy'
SELECT * FROM products WHERE products.company_id IN (12, 423, 431...)
但错误使用预先加载是个很危险的事情,它可能不会影响结果的正确性,但会引起很严重的性能问题:
Company.all(:include => :products, :conditions => "products.id IS NOT NULL AND
products.weight > 10")
其实写这个查询的人的目的是为了找出拥有products,并且products的weight大于10的company。但这个语句导致的sql查询是性能低下的:
SELECT companies.id AS t0_r0, ...., products.id as t1_r0, ... FROM companies LEFT OUTER
JOIN products ON products.company_id = companies.idWHERE products.id IS NOT NULL AND
products.weight > 10
这个sql查询有两个问题:
第一,结果集中的Products信息是不需要的;
第二,LEFT OUTER JOIN的性能劣于INNER JOIN。
我们可以使用如下的语句来避免这两个问题:
Company.all(:joins=> "INNER JOIN products ON products.company_id = companies.id", :
conditions => "products.weight > 10")
它生成的sql是:
SELECT companies.* FROM companies INNER JOIN products ON products.company_id =
companies.idWHERE products.weight > 10
P82页,代码段6:
View的helper方法生成html元素,比如:
更多推荐
所有评论(0)