领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Jonathan Allen 译者 王波 发布于 2009年11月19日
很不幸,“ORM”和“性能问题”常常一起出现。ORM通过对开发人员隐藏SQL细节可以大大的提高生产力。然而,它们很容易产生一些未被发现的荒谬查询。通常情况下,数据库管理员可以通过交叉引用有问题的存储过程来查找问题代码。但是,ORM依赖于动态生成的SQL,便很难这么做了。所以,我们要寻找一些更有效的ORM分析工具。
NHibernate
NHibernate分析器(NHProf)是我们期待的入门级产品。除了有完整的统计信息外,它还显示了最近完整的SQL调用列表,并使用堆栈来反向跟踪调用它的代码。NHProf的界面简洁并有加强的交叉引用功能,它能很轻松地从针对个别查询语句的检查,切换到该代码块所使用到的全部查询语句。
NHibernate分析器最重要的部分是预警功能。一些警报会显示当前数据库错误所产生的问题,或者在多个线程中使用同一个会话等意外情况。其他警报则会显示潜在的问题,比如本该批量操作的场景被拆分成大量单独执行的写操作。还有一些警告用来提示随后可能出现的问题,比如未绑定结果集。
未绑定结果集即已执行查询但未明确使用NHibernate的SetMaxResults()抑或SQL的TOP和LIMIT语句来限定的返回记录。通常,这意味者应用程序假设该查询总是返回少量记录。在开发和测试过程中,这种做法很有效,但是,在生产环节中却是一个定时炸弹。
NHibernate分析器的另一面就是它的植入性。你不可以附加到一个正在运行的进程,必需提前配置好。虽然NHibernate分析器建议直接引用在你的程序中,log4net用户也可以通过设置app.config来激活该分析。
NHibernate Profiler是一个商业产品,起始价格是每用户300美元。
LINQ to SQL
开发人员在查找LINQ to SQL问题时,第一个便会想到去观察DataContext日志。DataContext对象有Log属性,它会将所有SQL路径输出至我们指定的TextWriter。这种做法简单且自由,但是对大量原生SQL进行处理是否适合于关键性应用仍旧是个疑问。
LINQ to SQL分析器(L2SProf)和NHibernate分析器由同一家公司出品,它们工作的方式比较类似。除了实时分析以外,我们可以配置它来写入日志文件作为后期分析。和NHProf相同,它的价格是每位用户300美元。当前它还处于Beta阶段。
Huagati查询分析器是另外一种植入式分析器。他们直白道:“这些运行时组件的设计目标,便是集成至使用Linq-to-SQL,或LLBLGen Pro来访问SQL Server的应用程序,并和他们一起部署。幸运的是,在运行的时候可以根据需要打开或关闭分析器。
Huagati的用户界面已经明显过时,占据半个显示器大小的表格显示着SQL语句和跟踪堆栈。它缺乏NHProf/ L2SProf的几乎所有优点,比如:预警和摘要显示,但它有一项面向专业开发人员的强大功能,即细节。
Huagati分析器不仅提供绝对的持续时间和行数,它深入挖掘SQL Server的所有可用信息。除了往返时间,我们还可以看到其他一些有价值的信息,比如:对一个查询进行编译及执行的时间对比。你甚至可以看到真实的执行计划及I/O状况。
Huagati查询分析器是一款商业产品,限制版的价格是50美元,完整版的价格是每位用户120美元。
ADO.NET Entity Framework
无话可说。首先,你无法像在LINQ to SQL那样获取到即便是最基本的SQL日志记录。因此,似乎没有人在为它编写分析器。
结论
还有很多.NET的ORM框架,但是它们的情况和ADO.NET Entity Framework十分类似。除了这里提到的两款分析工具外,几乎没有什么框架提供了这方面的支持——除非你使用数据库内置的分析器。
查看英文原文:ORM Profiling Tools for the .NET Platform
译者 王波 是匆匆IT过客,涉足于.NET编程技术,潜心研究和译书,与友人共译《C# 3.0揭秘》 。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
1 条回复
关注此讨论 回复