和Google互补的搜索引擎Wolfram|Alpha
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
作者 Jonathan Allen 译者 陈黎夫 发布于 2007年7月5日 下午7时35分
在《LINQ Cookbook》的第5个条目(拼接CheckedListBox中选中的字符串)中,微软公司Visual Basic团队演示了分别使用两种VB 9中的新特性来实现这类字符串连接的方法。
在第一种方法里,Visual Basic团队使用了LINQ的聚合(Aggregate)语法。如下述代码所示,将各个字符串用逗号连接起来:
MsgBox( _
Aggregate Box In CheckedListBox1.CheckedItems _
Into Concat())
代码中的Concat是一个扩展方法(extension method),其实现如下:
Public Module AggregateModule
Public Function Concat(Of Type)( _
ByVal ie As IEnumerable(Of Type)) As String
Dim str As String = ""
For Each item In ie
If str <> "" Then str &= ","
str &= item.ToString()
Next
Return str
End Function
End Module
若不想如此麻烦地额外编写一个扩展方法,C#和VB开发者也可以使用Lambda表达式来完成同样的功能。其语法略显复杂,不过也还可以接受:
MsgBox((From c In _
CheckedListBox1.CheckedItems).Aggregate( _
Function(ByVal x, ByVal y) x + "," + y))
不过,Bill McCarthy却指出,这种方法存在着一些问题,包括性能方面:
若是通过编写扩展方法来完成的话,我们可以借助StringBuilder来提高字符串拼接的效率,不过若是使用lambda表达式,那么又该如何使用 StringBuilder呢?若是我们无法找到可行的解决办法,那么使用lambda表达式势必将在每次字符串连接的时候都要创建若干个不必要的对象副 本——我们都知道在.NET中,这是拼接字符串操作的大忌。而在编写扩展方法时,我们则可以很容易地通过重构来引入高效的StringBuilder对象。
另外一个让Bill McCarthy担心的问题就是,lambdas表达式的方式无法提供良好的可重用性。lambdas表达式通常在某个函数的上下文中出现,并在函数结束 时被销毁,因此除非将其作为委托返回,否则很难实现重用。不过对于只支持单行lambdas表达式的VB来说,这不会产生太大的问题,但对于支持较长 lambdas表达式的C#来说,也许会出现一定问题。
查看英文原文:Performance Problems with LambdasWolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。
罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。
Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。
中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。
HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。
没有回复
关注此讨论 回复