我有兴趣确定一种方法,该方法返回排除另一个列表中元素的元素列表.
例如
List<Integer> multiplesOfThree = ... // 3,6,9,12 etc
List<Integer> evens = ... // 2,4,6,8 etc
List<Integer> others = multiplesOfThree.except(evens) // should return a list of elements that are not in the other list
Run Code Online (Sandbox Code Playgroud)
你怎么做到这一点?我找到了一种有点笨拙且难以阅读的方法....
multiplesOfThree.stream()
.filter(intval -> evens.stream().noneMatch(even -> even.intValue() == intval.intValue()))
Run Code Online (Sandbox Code Playgroud) 与WCF Self Hosting相似.
有没有办法在控制台应用程序中创建一个"自托管"的网站dll?
可能是提出这个问题的错误方式,但我想做的是使用这个网站将结果分成网页,而不在其中创建网站IIS.
谢谢.
使用List.Find与自定义谓词有点麻烦
我有一个功能,这样做
private function test ()
Dim test As Integer = keys.Find(AddressOf FindByOldKeyAndName).NewKey
Run Code Online (Sandbox Code Playgroud)
这是谓词的功能
Private Shared Function FindByOldKeyAndName(ByVal k As KeyObj) As Boolean
If k.OldKey = currentKey.OldKey And k.KeyName = currentKey.KeyName Then
Return True
Else
Return False
End If
End Function
Run Code Online (Sandbox Code Playgroud)
通过这样做意味着我必须在类中有一个共享的"currentKey"对象,我知道必须有一种方法来传递我对CurrentKey感兴趣的值(即keyname和oldkey)
理想情况下,我想用类似的东西来称呼它
keys.Find(AddressOf FindByOldKeyAndName(Name,OldVal))
但是,当我这样做时,我得到编译器错误.
我如何调用此方法并传入值?
首先,谢谢大家的帮助.
我试图在oracle(10g)中找到类似于MSSQL的sys.procedures.Modify_date的东西.
一点背景:
我们设计了许多用于oracle和mssql的存储过程.在mssql中很简单,看看哪些存储过程已经更新(因为modify_date会更新).我听说有一些类似于甲骨文的东西,但在intertubes上发现了一些珍贵的东西.我也听到有传言说有些东西很接近,但它包含了sproc的最后编译日期.因为我正在寻找"最后一次有人改变了sproc的文本",这不会有用.
这可能吗?有什么诀窍吗?现在我们在存储过程中维护一个文本注释,其中一个开发人员编写了一个例程来从该注释中提取日期.它很笨拙,很容易忘记,我想找到一个更好的方法.
再次感谢您的帮助.
我对财产访问者有点困惑.
我想要一个内部属性,其set访问器只能被派生类访问.
这样的事情
internal [internalClass] MyProperty
{
get {return _prop;}
protected set {_prop = value;}
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,编译器抱怨.
MSDN在讨论此特定错误时建议将set访问修饰符更改为private
这不是我想要的地方.
它看起来Protected Internal应该是一个选项,但是使用此修饰符会产生相同的错误
我有一种感觉,我缺少对访问修饰符的一些基本理解.
谢谢
我正在寻找最佳实践或经常使用WCF通信的设计模式,允许进行通信,如果WCF(或初始服务存在),则故障转移到另一个服务或本地信息服务
我不确定这有多大意义所以让我举个例子.我希望这个代理能够连接到wcf服务并(希望)将合同方法暴露给调用者(UI/BO等),以便该对象可以调用这些方法,代理尝试联系主服务(可能是WCF),如果失败则连接到辅助服务.
理想情况下,所有故障转移和重新连接逻辑都将包含在代理中.
是否有一个设计模式封装了"切换wcf客户端进行故障转移"?
也许不是设计模式,任何人都推荐一个体面的方法?
我有一个简单的WCF服务,我正在与异步通信.
我不喜欢的是打电话的时候 EndServiceMethod(IASyncResult)
如果我忘记调用该Close()方法,该服务实际上会使连接保持打开状态,然后在wcf达到超时异常的最大并发连接数后,所有剩余的连接都将失败.
我已经尝试将该 [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
属性用于服务合同,这似乎对服务的连接状态没有任何影响.
也许我错误地实现了它?
任何想法或建议.
我正在尝试找到WCF的行为模式,允许客户端发出请求,然后服务器响应请求,然后假设连接已完成并可以终止.
我正在尝试使用groovy来简单地将节点添加到特定位置.我的源架构看起来像这样
<s1:RootNode
xmlns:s1="http://localhost/s1schema"
xmlns:s2="http://localhost/s2schema"
xsi:schemaLocation="http://localhost/s1schema s1schema.xsd
http://localhost/s2schema s2schema.xsd">
<s1:aParentNode>
<s2:targetNode>
<s2:childnode1 />
<s2:childnode2 />
<s2:childnode3 />
<s2:childnode4 />
</s2:targetNode>
</s1:aParentNode>
</s1:RootNode>
Run Code Online (Sandbox Code Playgroud)
我想简单地添加一个与其他子节点内联的新子节点来进行输出
<s1:RootNode
xmlns:s1="http://localhost/s1schema"
xmlns:s2="http://localhost/s2schema"
xsi:schemaLocation="http://localhost/s1schema s1schema.xsd
http://localhost/s2schema s2schema.xsd">
<s1:aParentNode>
<s2:targetNode>
<s2:childnode1 />
<s2:childnode2 />
<s2:childnode3 />
<s2:childnode4 />
<s2:childnode5 >value</s2:childnode5>
</s2:targetNode>
</s1:aParentNode>
</s1:RootNode>
Run Code Online (Sandbox Code Playgroud)
为此,我有以下简单的groovy脚本
def data = 'value'
def root = new XmlSlurper(false,true).parseText( sourceXML )
root.'aParentNode'.'topNode'.appendNode{
's2:childnode5' data
}
groovy.xml.XmlUtil.serialize(root);
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,将删除应用于根节点的名称空间和schemaLocations.和命名空间,但没有将架构位置添加到每个子节点.
这导致下游的验证问题.
我如何简单地处理这个xml.不执行验证并按原样保留xml并添加我指定的命名空间的单个节点?
一个注意事项:我们处理了很多消息,我不会事先知道最外面的命名空间(上例中的s1),但即便如此,我真的只是想看一种技术,它是xml的"笨"处理
谢谢!
我有一个用例,我必须返回一个至少包含1个元素的集合.传入集合可能包含0个或更多元素.
所以这可以很容易地完成
Set<ObjectB> setOfB = collectionOfA.isEmpty() ?
new HashSet<ObjectB>() {{ add(new ObjectB()); }} :
collectionOfA
.stream()
.map(item -> new ObjectB(item))
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
但....
我也试图利用这个机会更好地熟悉Java 8工具和功能,所以我试着看看是否可以在没有条件测试的情况下以更类似Java 8的方式完成.
非常感谢您的意见和建议!
我正在尝试在一个Execute Immediate语句中运行多个ddl语句.我认为这将是非常直接的,但似乎我错了.
这个想法是这样的:
declare v_cnt number;
begin
select count(*) into v_cnt from all_tables where table_name='TABLE1' and owner = 'AMS';
if v_cnt = 0 then
execute immediate 'CREATE TABLE TABLE1(VALUE VARCHAR2(50) NOT NULL) ALTER TABLE TABLE1 ADD (MYVAL2 NVARCHAR2(10))';
end if;
end;
Run Code Online (Sandbox Code Playgroud)
但是这会导致错误
ORA-00911:无效字符ORA-06512:第10行
如果我自己执行它们,批处理中的每个语句都可以正常运行.如果我接受这个语句并执行它,它将运行良好(使用;在两个语句之间).如果我删除; 在语句之间我得到关于无效选项的不同错误
计划是我将能够构建一个表,导出该表的表模式,包括它的所有alter语句,然后作为安装/更新过程的一部分对另一个系统运行批处理.
那么,我如何在单个执行立即批处理这些DDL语句?或者有更好的方法来做我需要的东西吗?
我必须承认,我有点像甲骨文新手.谢谢大家的耐心等待.