我正在学习Java 8 - Java 11,我得到了一个代码,我正在转换为java-streams.我有以下课程:
class Resource {
List<Capability> capabilities;
}
class Capability {
String namespace;
Map<String, Object> attributes;
}
Run Code Online (Sandbox Code Playgroud)
我有一个资源流,我想从两个不同的命名空间("a","b")中提取所有的功能属性到Map<Resource, Map<String, Object>>
我确信没有重复键.
我做了很多尝试使用map,flatMap但是有了这些,我无法保留主要资源对象的引用.使用java9的新功能我可以进步,但我坚持下面的代码,我能够返回所有属性,但在一个集合.我还无法通过功能命名空间进行过滤,并将它们放在地图中:
Map<Resource, Set<Object>> result = pResolved.stream()
.collect(groupingBy(t -> t, flatMapping(
resource -> resource.getCapabilities(null).stream(),
flatMapping(
cap -> cap.getAttributes().entrySet().stream(),
toSet()))));
Run Code Online (Sandbox Code Playgroud)
似乎我走在了正确的道路上.
我正在尝试创建一个基于https://hub.docker.com/r/redhat/ubi9-minimal的映像,该映像以 microdnf 作为其包管理器。
\n我注意到在上面安装了 python3 后,除了它的直接依赖项之外,还安装了更多的软件包。
\n我想调查一下,但奇怪的是 microdnf 没有list
dfn 或 yum 那样的命令。:)
Usage:\n microdnf [OPTION\xe2\x80\xa6] COMMAND\n\nCommands:\n upgrade Upgrade packages\n update Compatibility alias for the "upgrade" command\n module reset Reset a module stream\n distro-sync Upgrade/downgrade packages to match versions in repositories\n dsync Compatibility alias for the "distro-sync" command\n remove Remove packages\n reinstall Reinstall packages\n clean Remove cached data\n repolist List repositories\n module enable Enable a module stream\n download Download packages\n makecache Generate the metadata …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个不需要项目运行的Mojo.
我想使用类似的东西org.apache.maven.model.FileSet
(提供包含和排除的多个目录),@parameter
但我的问题是我需要能够使用命令行设置这些值.
知道怎么做到这一点?
我想调试一个应用程序,需要传递一个内联 json 作为 arg。我做了以下事情:
"configurations": [
{
"name": "app DEV",
"program": "lib/main.dart",
"request": "launch",
"type": "dart",
"args": [
"--dart-define=APP_BACKENDS={[{\"id\":\"default\",\"url\":\"https://localhost\",\"port\": \"8080\"},]}",
]
}
Run Code Online (Sandbox Code Playgroud)
但 APP_BACKENDS const 值在第一个逗号中被删除。锁定它的打印:{[{"id":"default"
只是为了清楚起见。这就是我获取打印值的方式:
static const _APP_BACKENDS =
String.fromEnvironment('APP_BACKENDS', defaultValue: '{}');
Run Code Online (Sandbox Code Playgroud) 我正在玩 Java 反射并学习更多关于 Stream.collect 的信息。
我有一个注释 MyTag,它有两个属性(id
和type
enum[Normal|Failure])。此外,我有一个带有 MyTag 的带注释的方法列表,我能够使用 Collectors.groupingBy 通过 MyTag 注释的 id 属性对这些方法进行分组:
List<Method> ml = getMethodsAnnotatedWith(anClass.getClass(),
MyTag.class);
Map<String, List<Method>> map = ml.stream().collect(groupingBy(m -> {
var ann = m.getDeclaredAnnotation(MyTag.class);
return ann.anId();
}, TreeMap::new, toList()));
Run Code Online (Sandbox Code Playgroud)
现在我需要将结果列表减少到一个对象,它只由两个相同 MyTag.id 的项目组成,一个带有 MyTag.type=Normal,另一个带有 MyTag.type=Failure。所以它会产生类似于 Map<String, Pair<Method, Method>> 的结果。如果出现两次以上,我必须只选择第一个,记录并忽略其余的。
我怎么能做到这一点?
我有这个pojo(这是一个例子,而不是真实的例子):
Book {
String name;
Map<String, String> properties;
}
Run Code Online (Sandbox Code Playgroud)
以及它们的清单:
List<Book> library;
TheBook1, {["lang", "pt-br"],["type","romance"],["author","John"]}
TheBook2, {["lang", "en-US"],["type","fiction"],["author","Brian"],["translation","pt-br,es"}
Run Code Online (Sandbox Code Playgroud)
假设我有一个Library集合,并且我有一个包含搜索条件的地图,例如:
Map<String, String> criteria = new HashMap<>();
criteria.put(BOOK_TYPE, "romance");
criteria.put(BOOK_LANG, "pt-br");
Run Code Online (Sandbox Code Playgroud)
我如何为库流编写过滤谓词,以便搜索符合所提供标准的所有书籍?匹配必须是现在的键和值的精确字符串匹配.
像这样的东西:
Set<Book> result = library.stream()
.filter(b-> b.getProperties() **????**)
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud) 我希望在每次启动和停止时,我的 ubuntu 主机(带有 KVM2)上的 minikube 集群有一个固定的 IP 地址(输入 minikube ip 时获得的地址)。
我想将一个 DNS 子域指向它,以便测试一些基于子域证书的安全内容。
有什么办法可以做到吗?
我找到了一些模块的forRoot()方法的例子,如下所示:
export class CoreModule {
constructor(
@Optional()
@SkipSelf()
parentModule: CoreModule
) {
if (parentModule) {
throw new Error(
'CoreModule is already loaded. Import it in the AppModule only'
);
}
}
static forRoot(someParameters?:string[]): ModuleWithProviders {
return {
ngModule: CoreModule,
providers: [AnProvider1, AnProvider2]
};
}
Run Code Online (Sandbox Code Playgroud)
但是,如何将参数值传递给模块的任何声明的提供者?
我有一些像这样的模型类:
class Environment {
String _oidClientId;
String _oidIssuerUrl;
get issuerUrl => _oidIssuerUrl;
set issuerUrl(String pIssuerUrl) => this._oidIssuerUrl = pIssuerUrl;
get clientId => _oidClientId;
set clientId(String pClientID) => this._oidClientId = pClientID;
}
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个实例并使用级联在其上设置值:
var env = Environment.dev()
..clientId("my.id.public")
..issuerUrl("https://demo.myserver.com")
Run Code Online (Sandbox Code Playgroud)
但编译器给了我这个错误:
Undefined name 'clientId'.
Try correcting the name to one that is defined, or defining the name.dart(undefined_identifier)
Run Code Online (Sandbox Code Playgroud)
如果我更改代码,重命名 getter(由于名称重复)并将 setter 变成 avoid clientId(String pClientID)
那么编译器不会抱怨。但我宁愿不这样做。我错过了什么吗?
java ×3
java-stream ×3
java-8 ×2
angular ×1
angular-cli ×1
collections ×1
dart ×1
flutter ×1
java-11 ×1
kvm ×1
lambda ×1
maven ×1
minikube ×1
mojo ×1