我有四个捆绑包,每个捆绑包只包含一个清单.捆绑是
app哪个进口com.example.foo.fragment和com.example.barfoo 哪个出口 com.example.foo;uses:=com.example.foo.cfgfoo.fragment其连接到片段foo的是出口com.example.foo.fragment和com.example.foo.fragment.cfg;uses:=com.example.foo.fragmentbar哪些出口com.example.bar和进口com.example.foo捆绑级依赖图:
app -> bar
| |
| v
| foo
| |
v v
foo.fragment
Run Code Online (Sandbox Code Playgroud)
当我在JBoss AS 7.2中同时安装这些软件包时,它们工作得很好.但是,如果我在其他人之后安装app捆绑包,无论是第一次还是成功启动后再卸载它,都会发生以下使用约束违规:
Caused by: org.osgi.service.resolver.ResolutionException: Uses constraint violation. Unable to resolve resource com.example.app [HostBundleRevision[com.example.app:0.0.
0]] because it is exposed to package 'com.example.foo.fragment' from resources com.example.foo [HostBundleRevision[com.example.foo:0.0.0]] and com.example.foo [HostBund
leRevision[com.example.foo:0.0.0]] via two dependency chains.
Chain 1:
com.example.app [HostBundleRevision[com.example.app:0.0.0]] …Run Code Online (Sandbox Code Playgroud) 我基本上有多个显示器,今天做了一些改变.因此,我的一个监视器(特别是控制台视图)上的视图不再存在.我似乎无法找到恢复它的方法.
控制台视图显示在Window -> Open view,此菜单选项将焦点从其他打开的视图移开,但控制台视图不会出现在屏幕上.这可能意味着它位于显示器之外......
我怎样才能看到这个视图?
首先让我说这是一个美学问题.我已经解决了自己的问题,我只是对更好的方法感到好奇.
所以,我有一个DN证书,如下所示:
CN = Jimmy Blooptoop,OU = Someplace,OU = Employees,DC = Bloopsoft-Inc
现在,我想从中获取CN.在java中,除了使用Xoun9证书中的完整DN而没有使用像bouncy castle这样的第三方库时,没有原生支持可以抓取任何东西 - 我无法使用它.所以我必须解析它,这不是什么大问题.唯一让它有点棘手的事实是CN并不总是被格式化为<first name> <last name>.通常情况下,它实际上会是<last name>, <first name> <middle initial>.所以,在上面的例子中,CN可能是Jimmy Blooptoop或Blooptoop,Jimmy J(当然是Joop的缩写).
在阅读了有关正则表达式的内容之后,我写了以下内容,它运作良好:
Matcher m = Pattern.compile("CN=[A-Za-z]*[, ]*[ A-Za-z]*").matcher(dn);
if (m.find())
cn = m.group();
Run Code Online (Sandbox Code Playgroud)
我只是好奇是否有看起来不像垃圾的表情.我非常有信心,因为我在阅读了正则表达式的介绍之后就已经解决了这个问题.
假设我有一个可以接受可选参数的函数,Some如果参数是None,我想返回a,如果参数是,None则返回a Some:
def foo(a: Option[A]): Option[B] = a match {
case Some(_) => None
case None => Some(makeB())
}
Run Code Online (Sandbox Code Playgroud)
所以我想要做的就是反过来map.变体orElse不适用,因为它们保留了a它存在的价值.
有没有更简洁的方法来做到这一点if (a.isDefined) None else Some(makeB())?
假设我有一个容器类Box,它提供内部类const_iterator和iterator.因为我想要一个iterator可以转换为a const_iterator,后者继承自前者:
class Box {
// ...
public:
class const_iterator : public std::iterator<std::random_access_iterator_tag, const int> { /* ... */ };
class iterator : public const_iterator { /* ... */ };
// ...
};
Run Code Online (Sandbox Code Playgroud)
现在我想使用Google Test测试这些类.让我们断言,begin()并且end()不要返回相同的东西:
const Box a;
EXPECT_NE(a.begin(), a.end());
Run Code Online (Sandbox Code Playgroud)
跟编译错误打招呼:
no member named 'begin' in 'Box::const_iterator'‘const class Box::const_iterator’ has no member named ‘begin’一些研究让我在Google Test源代码中找到了这个模板(按照扩展文档的链接):
typedef int IsContainer; …Run Code Online (Sandbox Code Playgroud) 我正在使用Gradle构建一个包含xml文件的jar META-INF.这个文件有一行像
<property name="databasePlatform" value="${sqlDialect}" />
Run Code Online (Sandbox Code Playgroud)
允许不同的SQL数据库用于不同的环境.我想告诉gradle ${sqlDialect}从项目属性扩展.
我试过这个:
jar {
expand project.properties
}
Run Code Online (Sandbox Code Playgroud)
但它GroovyRuntimeException似乎失败了,就像Jar任务试图扩展.class文件中的属性一样.所以我试过了
jar {
from(sourceSets.main.resources) {
expand project.properties
}
}
Run Code Online (Sandbox Code Playgroud)
它不会引发上述异常,而是导致所有资源被复制两次 - 一次是属性扩展而一次是没有.我设法解决这个问题
jar {
eachFile {
if(it.relativePath.segments[0] in ['META-INF']) {
expand project.properties
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要的,因为在我的用例中我只需要扩展META-INF目录中文件的属性.但这感觉就像一个非常丑陋的黑客,有没有更好的方法来做到这一点?
我是新手来增强图形库,我想通过从文件中读取边缘列表来创建图形.
该edge_list.dat文件的示例如下:
...
123 445
4535 343
3432 454
123 345
123 566
...
Run Code Online (Sandbox Code Playgroud)
文件的每一行代表图形的边缘,每行中的两个数字是与边缘对应的节点ID.现在我想edge_list.dat使用boost图库从文件中创建一个图形.
但是,我事先并不知道图表的大小.我需要在整个过程中将顶点添加到图形中.但是,为每个顶点创建一个顶点描述符是不切实际的,如下所示:
Graph::vertex_descriptor v0 = boost::add_vertex(g);
Graph::vertex_descriptor v1 = boost::add_vertex(g);
Run Code Online (Sandbox Code Playgroud)
我想通过顶点id访问顶点.我真的不知道该怎么做.现在,我想出的解决方案是创建一个映射,其中键是id,值是vertex_descriptor:
std::map<int,Graph::vertex_descriptor> VertexList;
VertexList[123]=boost::add_vertex(g);
Run Code Online (Sandbox Code Playgroud)
但是有没有办法可以在不创建地图的情况下完成这项工作?
提前致谢.
假设我有两个非常大的矩阵A(M-by-N)和B(N-by-M).我需要对角线A*B.计算完全A*B需要M*M*N次乘法,而计算它的对角线只需要M*N次乘法,因为不需要计算最终会在对角线之外的元素.
MATLAB是否实现了这种diag(A*B)自动优化和动态优化,或者我最好在这种情况下使用for循环?
密封类的主要原因似乎是,这允许编译器在对这些类进行模式匹配时进行彻底搜索.假设我有用于模式匹配的数据类型.玩具示例:
sealed trait Statement
case class Assign(name: String, value: Int) extends Statement
case class Print(name: String) extends Statement
case class IfZero(name: String, thenn: Statement, els: Option[Statement]) extends Statement
case class Block(statements: List[Statement]) extends Statement
Run Code Online (Sandbox Code Playgroud)
这些类的用例是通过模式匹配来使用它们:
def execute(statement: Statement): Unit = statement match {
case Assign(name, value) => ???
case Print(name) => ???
case IfZero(name, thenn, els) => ???
case Block(statements) => statements foreach { execute(_) }
}
Run Code Online (Sandbox Code Playgroud)
为此,Statement特性是sealed这样的,如果我在match语句中忘记了一个语句类型,编译器可以发出警告.但案例类怎么样?案例类不能相互继承,但特征和普通类可以.那么,密封案例类也是一种好的做法吗?如果我不这样做可能会出错?
我正在使用Gradle构建一个OSGi jar,我在使用清单时遇到了一些麻烦.这是我的构建脚本的摘录:
apply plugin: 'java'
apply plugin: 'osgi'
jar {
baseName = 'awesome'
manifest {
name = 'An Awesome Application'
symbolicName = 'com.example.awesome'
// instruction 'Import-Package', 'org.springframework.orm'
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,Gradle会检测我的依赖项并添加一个Import-Package包含所有编译时依赖项的函数.但是说我的应用程序也有运行时依赖性org.springframework.orm,我如何告诉Gradle将其作为参数包含在内Import-Package?
如果上面的注释行未注释,则生成的Import-Package指令仅 指定org.springframework.orm.这让我困惑,因为在摇篮文档OsgiManifest状态
OsgiManifest instruction(String name, String... values)为指令添加参数.如果指令不存在,则创建它.如果它存在,则参数将附加到现有参数.
但是,这似乎不适用于自动检测到的Import-Package参数.如果我指定instruction 'Import-Package', 'my.dependency.1'等等,并jar.manifest.instructions在其间打印,我可以看到它们是如何按顺序添加的,它们都出现在生成的清单中,但似乎Gradle的OSGi插件如果Import-Package手动指定则不会添加自动检测到的参数.
Import-Package指令,它将自动生成所有编译时依赖项,但不是运行时依赖项.manifest { instruction 'Import-Package', 'org.springframework.orm' },那么编译时依赖关系不会自动包含在内.如何告诉Gradle我的运行时依赖项,以便将它们添加到Import-Package?