我想在Ninject中使用装饰器声明一个责任链.
以前有人这样做过吗?
谢谢.
我正在为当前项目评估复杂对象层次结构模型的一些潜在实现.我想知道是否有一个xpath风格的元语言或类似的东西,这将允许我查询这些对象链接.
此外,我确信有一些非常具体的术语用于我所问的问题 - 我只是不知道.
要求:
我想我可以在这里推出自己的解决方案,但我很好奇,如果比我聪明的人已经想出了什么.
在看到一些答案后,我想我可能需要更多地澄清我的问题.具体来说,此工具将用于遍历作为父对象的不同版本的一组对象.
例如:
[对象1 prop1 ="foo"prop2 ="bar"prop3 ="zoop"]
↓继承上述对象↓
[对象2 prop1 ="foo和某事"prop2 ="bar"prop3 ="zoop"]
↓继承上述对象↓
[对象3 prop1 ="foo和某事"prop2 ="bar"prop3 ="zoop 24"]
假设我有一个网页,人们提交java源代码(一个简单的类).我想在我的服务器上编译和运行代码,但自然我想阻止人们伤害我的服务器,那么如何禁用java.io.*我选择的其他功能/库?
关于源代码的正则表达式将是一种方式,但如果可以将一些参数传递给javac或者它会更"好" java.
(这在创建AI竞赛时可能很有用,或者在实现单个类的情况下,但我希望防止篡改java环境.)
更简洁一点,您可以使用多个线程来加速HashMap查找吗?是否有任何实现已经执行此操作?
在我的项目中,我们需要在内存中维护一个大的对象映射.我们从不在创建地图后修改地图,因此地图严格是只读的.但是,此映射上的读取和查找性能对于应用程序的成功至关重要.安装应用程序的系统通常具有许多可用的硬件线程.然而,我们的查找仅使用单个线程从HashMap中检索值.使用多个线程(可能在池中)的分而治之的方法是否有助于提高查找速度?
我的大多数谷歌搜索都没有结果 - 返回了很多关于并发问题而不是解决方案的结果.任何建议都会受到赞赏,但如果您知道开箱即用的解决方案,那就太棒了.
另外值得注意的是,所有键和值都是不可变的.散列码值是预先计算的,并在实例化时存储在对象本身中.
至于实现的细节,Map中有大约35,000个项目.键和值都是对象.键是自定义查找键,值是字符串.目前,我们每秒可处理大约5,000次查找(这包括一些其他逻辑的开销,但主要的瓶颈是地图实现本身).但是,为了满足我们未来的性能需求,我希望每秒可以获得大约10,000次查找.按照大多数正常标准,我们目前的实施速度很快 - 只是我们需要它更快.
在我们35,000个值的Map中,我们平均有一个哈希码冲突,所以我猜测哈希码的分布相当合理.
我知道C++中的单例模式,但是如何获得对象的两个实例?有没有这样的模式,我们可以很容易地获得两个对象?
我能想到的逻辑是,我可以改变单例模式本身,在类中创建两个对象.这是有效的,但如果需求增长,就像我需要3个或仅4个对象一样,那么满足这种要求的设计模式是什么?
摘要
当我使用Perl的Benchmark实用程序执行一个非常简单的程序时.我得到的值不是(显示为)毫秒或纳秒.返回的基准数据对我没用,因为我不知道如何解释它.
例:
use Benchmark;
my $start = Benchmark->new;
print "foo!";
my $end = Benchmark->new;
my $diff = timediff($end, $start);
print timestr($diff);
Run Code Online (Sandbox Code Playgroud)
返回: foo! 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
不同的字段意味着什么:Wallclock秒,Usr,Sys,CPU?它们可以外推得到毫秒值吗?现在,对于我的基准测试,我需要的只是一次执行的真实世界时间,而不需要考虑基准测试的一些更深奥的方面.
在 Rails 项目中创建单元测试时,我问自己的第一个问题是“组织单元测试的约定是什么”,因为几乎所有其他内容都是由约定决定的。另外,我很好奇 MiniTest、TestUnit 和 Rspec 之间的约定是否发生变化。
到目前为止,我所做的是将 Rails 目录结构镜像到 test/unit 目录中,如下所示:
[Rails Root]
/lib/
./postgres.rb
./awesome_parser.rb
/app/helpers
./psychic_helper.rb
/test/unit/
./lib/postgres.rb
./lib/awesome_parser.rb
./app/helpers/psychic_helper
Run Code Online (Sandbox Code Playgroud)
组织测试的最传统方式是什么,这样当其他人加入这个项目时他们就不会咒骂我的名字?
我想在几个超类上有更详细的日志调试/日志记录输出,因此子类名称实际上不会影响实时性能,也不会影响应用程序逻辑.我也认为通常这样做是相当糟糕的设计,但是我真的希望在开发运行期间记录这些信息.
假设我有一个如下所示的简单类结构,如何将子类的名称拉入超类而不必显式传递引用?
public abstract AbstractClass {
private Logger logger = LoggerFactory.getLogger(getClass());
public AbstractClass() {}
public void execute(ContextObject context) {
if (logger.debuggingEnabled()) {
String invokingClassName = ""; // <-- how do I get this?
logger.debug("Executing {}", invokingClassName);
}
// shared application logic is here...
}
}
public MyClass extends AbstractClass {
public MyClass() {}
@Override
public void execute(ContextObject context) {
super.execute(context);
// application logic...
}
}
Run Code Online (Sandbox Code Playgroud)
我曾经使用过解析堆栈跟踪,我怀疑如果我想要这些信息,那就是我必须走的路线.有谁知道一个库会为我做这个或一个很好的代码片段?
今天,我试图将一个硬编码的值转换成一个短的,而S则不起作用.所以,我去搜索它,但我意识到我甚至不知道Java语法的这个特性是什么.它有名字吗?如果没有,是否至少列出了所有可能的方法来转换硬编码数值?
Epilouge
得到答案"文字"后,我能够回答关于短裤的问题.如果您想知道,Java中没有简短的文字.你只需要明确地将它强制转换为:(short)12.
我是Grails的绝对初学者,而且我绊倒了应该很容易的东西.我一直在关注控制器动态方法的这个页面,我看到在那里登录.如何让我的控制器接收注入的记录器?所以,这就是我的控制器所拥有的一切:
package my.app
class LinkRewritterController {
def index = { }
// How do make the injected logger work?
def logMe() {
log.debug "Foo value"
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在学习Ruby,我正在尝试用Ruby方式思考.但是,尽我所能,我无法解决这个问题:
例如,我有以下源数组:
a = [1, 3, 5, 4, 5, 5, 7, 5]
# param 1 = number matching, param 2 times matching
b = a.remove_repeated(5, 3)
Run Code Online (Sandbox Code Playgroud)
然后b的值将是:
b = [1, 3, 4, 7, 5]
Run Code Online (Sandbox Code Playgroud)
在我尝试匹配的只有两个值的情况下,我希望它们都被删除.如:
a = [1, 4, 8, 4, 9, 2]
b = a.remove_repeated(4, 3)
Run Code Online (Sandbox Code Playgroud)
然后b的值将是:
a = [1, 8, 9, 2]
Run Code Online (Sandbox Code Playgroud)
我知道如何以迭代和递归方式执行此操作.相反,我正在寻找一种Rubyesque方式.
如果我扩展现有的ThreadFactory实现,我怎样才能确保创建的所有线程都具有相同的前缀?我厌倦了查看Thread-9我的日志,并希望更容易区分线程.
有没有人对如何解决这个问题有任何建议?