我计划在我的网站上添加一个更好的搜索功能,所以我认为我会用C语言编写它并使用CGI作为访问它的方法.但就基于CGI的东西而言,Perl似乎是最受欢迎的语言.这是为什么?用C或机器代码编程是不是更快?
如果有的话,用脚本语言编写它有什么好处?
谢谢.
假设我有一个支持一些潜在操作的接口:
interface Frobnicator {
int doFoo(double v);
int doBar();
}
Run Code Online (Sandbox Code Playgroud)
现在,某些实例仅支持这些操作中的一个或另一个.他们可能都支持两者.客户端代码不一定会知道,直到它实际上得到一个从相关工厂,通过依赖注入,或者是任何一个从获得的情况.
我看到了一些处理这个问题的方法.一,这似乎是Java API中所采取的一般策略,是只对界面如上图所示,并有不支持的方法提高UnsupportedOperationException
.然而,这样做的缺点是不能快速失败 - 客户端代码无法判断它是否doFoo
会在尝试调用之前工作doFoo
.
这可以使用supportsFoo()
和supportsBar()
方法进行扩充,如果相应的do
方法有效,则定义为返回true .
另一种策略是因式分解doFoo
和doBar
方法融入FooFrobnicator
和BarFrobnicator
分别的方法.null
如果操作不受支持,则会返回这些方法.为了防止客户端代码进行instanceof
检查,我Frobnicator
按如下方式定义了一个接口:
interface Frobnicator {
/* Get a foo frobnicator, returning null if not possible */
FooFrobnicator getFooFrobnicator();
/* Get a bar frobnicator, returning null if not possible */
BarFrobnicator getBarFrobnicator();
}
interface FooFrobnicator {
int doFoo(double v); …
Run Code Online (Sandbox Code Playgroud) 确定范围是否适用于Guice提供商?假设我有一个FooProvider
像这样的绑定:
bind(Foo.class).toProvider(FooProvider.class).inScope(ServletScopes.REQUEST)
Run Code Online (Sandbox Code Playgroud)
是否会FooProvider
根据请求实例化一次?
假设我有一个Scala match
表达式
foo match {
case Bar(Some(x)) => /* do something */
case Bar(None) => /* do something else */
}
Run Code Online (Sandbox Code Playgroud)
编译器在编译表达式时做了多少优化?特别是,它会发出多次调用Bar.unapply
,还是会对结果进行多次调用并多次匹配?
我想使用kdevelop4进行c ++编程,但是当我尝试运行应用程序时,kdevelop4需要cmake二进制文件!我怎么解决这个问题?