对于类项目,我正在编写一个程序来评估相同抽象数据结构的不同实现的性能.由于我使用相同的代码来测试它们中的每一个,我希望能够根据用户输入设置模块别名,并通过测试代码运行该模块.
换句话说,我想要类似的东西:
let module M =
if model = "tree" then TreeModel else
if model = "hash" then HashModel else
ListModel
in ...
Run Code Online (Sandbox Code Playgroud)
有没有办法让这项工作成功,或者我这样做是错的吗?
我正在寻找一种方法来分析用户代理字符串,以确定它们是否是由移动设备生成的.这需要基于java并且可以在hadoop上进行大批量日志文件分析以生成统计信息(即,Web服务不合适).
我见过WURFL,但鉴于我只需要一个二进制移动/非移动响应,许可费似乎过高.
到目前为止,我一直在使用UADetector,这几乎就是我所需要的.但是,我遇到了一些限制.在我的测试中,我发现许多用户代理字符串提供了足够的信息来确定用户代理来自移动设备,但是被UADetector报告为UNKNOWN.
例如,标准不佳的Android应用可以发送UA字符串"Android".这足以让它知道它来自移动设备,但UADetector将此UserAgentType报告为UNKNOWN而不是MOBILE_BROWSER.
Apache Mobile Filter的Lite Device Detection做了正确的事情,但我需要一些可以从Java中使用的东西.
有谁能推荐更好的解决方案?
我想为将在运行时生成的对象添加一些功能.但是,此对象的界面非常大(并且不受我的控制).我想将对象包装在我自己的类中,它添加了我想要的功能并将标准接口功能委托给原始对象 - 有没有办法在Java中执行此操作而不为每个创建一行复制粘贴委托方法界面中的方法?
我想避免的:
class MyFoo implements Foo {
Foo wrapped;
void myMethod() { ... }
void interfaceMethod1() wrapped.interfaceMethod1();
int interfaceMethod2() wrapped.interfaceMethod2();
// etc etc ...
}
Run Code Online (Sandbox Code Playgroud)
我更喜欢什么:
class MyFoo implements Foo {
Foo wrapped;
void myMethod() { ... }
// automatically delegate undefined methods to wrapped object
}
Run Code Online (Sandbox Code Playgroud) 我有一些缓慢变化的元数据,实时存储在HDFS上.我想编写一个猪作业,将这些行压缩到每个键的最新行.
例如,对于这些数据(为清晰起见添加了列标题):
ts meta key
-- ---- ---
1 foo id1
2 que id2
3 que id2
4 foo id1
5 pasa id2
6 pasa id2
7 foo id1
8 pasa id2
9 pasa id2
10 pasa id2
11 pasa id2
12 hombre id2
13 foo id1
14 foo id1
15 hombre id2
16 bar id1
17 bar id1
18 bar id1
19 bar id1
20 bar id1
Run Code Online (Sandbox Code Playgroud)
我希望得到输出:
15 hombre id2
20 bar id1
Run Code Online (Sandbox Code Playgroud)
我刚刚开始学习猪拉丁文的来龙去脉 - 有没有一种内置的方法可以在猪或某些图书馆中做到这一点,或者我应该考虑编写一个UDF?