目前找我的OSGi框架的问题,我用ss列出所有包,看看哪些只是INSTALLED不RESOLVED和运行diag <num>未解决包的每个数字.这种方法存在问题:
不能只 列出INSTALLED包,所以我需要手动找到它们.
由于彼此之间的依赖性,一些捆绑包将无法解析,因此我获得了大量重复信息.
有什么更好的方法呢?
集成Guice和OSGi的现状如何?即暴露来自Guice的OSGi服务,注入它们等.
Peaberry的主页提到"The Guice trunk(将成为2.0)",但1.2似乎是最新的,因为它修复了http://code.google.com/p/peaberry/issues/detail?id=58.它的作者已经改变了Sisu,但似乎还没有发布.还有其他人?
是否可以自动将Spring @Component(或其中一个规范;例如@Repository)注册为OSGi服务?所以我可以在一个捆绑包和OSGi Service Registry中使用自动装配和Spring的所有其他好处来在捆绑包之间进行通信?
更新:从这个讨论来看,似乎不可能使用标准蓝图,仅在Eclipse Gemini中.
由于使用数据库需要输入/输出,可能会花费无数的时间,等等。因此,想要一个非阻塞的异步API是很自然的。Java是否有一个?
我从Java GUI框架的问题中了解了Apache Pivot的存在.选择什么?Swing,SWT,AWT,SwingX,JGoodies,JavaFX,Apache Pivot?它似乎非常适合我当前的项目,因为它涉及让用户动态创建自己的GUI.但是,我还需要为我选择的任何技术提供可视化GUI设计器.是否有这样的Pivot设计师?谷歌搜索似乎没有建议,但我要求,以防我错过了一个.
一般来说,我import [static] foo.*实际上想要从中导入所有内容时使用foo.因此,我希望Eclipse的Organize Imports能够*按原样保留任何导入,而不是用以下内容替换多个单独的导入*.有办法吗?
git checkout -b <name> <remote>/<branch>似乎需要一个命名的遥控器.有没有办法让它只在一个URL下工作?原因是团队中的人有不同的遥控器名称(例如gitlab和originvs origin和github),我想忽略脚本中的这种差异.
一种可能性是在脚本开头给远程名称并最后删除它,但我宁愿避免使用它.
如何查看项目中加载的SBT插件?tasks -V显示discoveredSbtPlugins任务存在,但是
> discoveredSbtPlugins
[success] Total time: 0 s, completed Dec 4, 2015 2:40:02 PM
> show discoveredSbtPlugins
[info] Compiling 1 Scala source to /home/aromanov/IdeaProjects/splinter/splinter-core/target/scala-2.11/classes...
[info] splinter-core/compile:discoveredSbtPlugins
[info] sbt.PluginDiscovery$DiscoveredNames@37eda1fc
[info] splinter/compile:discoveredSbtPlugins
[info] sbt.PluginDiscovery$DiscoveredNames@5225c413
Run Code Online (Sandbox Code Playgroud)
不是特别有用.
例如给定
typedef struct A {
int a;
int b;
int c;
} A;
typedef struct B {
int d;
int e;
int f;
} B;
void f(B& b1, A& a2) {
b1.d = a2.a;
b1.e = a2.b;
b1.f = a2.c;
}
Run Code Online (Sandbox Code Playgroud)
f可以用 a 替换memcpy(特别是如果结构有更多字段)。
两个版本都会产生等效的代码吗?
如果我们复制到的结构的字段少于A?IE
typedef struct C {
int g;
int h;
} C;
void h(C& c1, A& a2) {
c1.g = a2.a;
c1.h = a2.b;
}
Run Code Online (Sandbox Code Playgroud)我很感兴趣,因为我正在生成包含这样的结构副本的代码,通常会更改字段的顺序,我想知道是否应该对这些情况进行特殊处理。
包含 C 标记是因为我希望 C 中的行为是相同的(模指针而不是引用)。
在关于计时计算的 wiki 页面中,有一个为纯计算计时的示例。核心思想是使用函数evaluate,rnf并seq确保1 + y在两次调用之间执行所需的计算(在下面的示例中)getCPUTime:
time :: (Num t, NFData t) => t -> IO ()
time y = do
start <- getCPUTime
replicateM_ lim $ do
x <- evaluate $ 1 + y
rnf x `seq` return ()
end <- getCPUTime
Run Code Online (Sandbox Code Playgroud)
我想澄清一下函数的使用evaluate,rnf和seq这里。
首先,将evaluate其参数评估为弱头范式,但它的另一个目的似乎是处理评估过程中可能发生的异常。我不确定没有它会发生什么,但我准备假设异常处理需要它。
然后,rnf将值计算为标准形式,以确保整个计算都发生在此处,并且由于调用evaluate. 正如这里所讨论的,这可能是也可能不是人们想要的,因为可能不需要额外的评估。
最后,seq确保rnf x在返回之前将表达式计算为弱头范式return () …