小编Gun*_*h D的帖子

如何将多个谓词应用于java.util.Stream?

如何将多个谓词应用于java.util.Stream's filter()方法?

这就是我现在所做的,但我并不喜欢它.我有一些Collection东西,我需要根据Collection过滤器(谓词)减少事物的数量:

Collection<Thing> things = someGenerator.someMethod();
List<Thing> filtered = things.parallelStream().filter(p -> {
   for (Filter f : filtersCollection) {
      if (f.test(p))
        return true;
   }
   return false;
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

我知道如果我事先了解过滤器的数量,我可以这样做:

List<Thing> filtered = things.parallelStream().filter(filter1).or(filter2).or(filter3)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是如何在不混合编程风格的情况下应用未知数量的谓词?知道它看起来有点难看......

java lambda predicate java-8 java-stream

50
推荐指数
4
解决办法
5万
查看次数

Docker上的Kibana无法连接到Elasticsearch

我试图创建Kibana和Elasticsearch,看起来Kibana在识别Elasticsearch时遇到了麻烦.

这是我的步骤:

1)创建网络

docker network create mynetwork --driver=bridge
Run Code Online (Sandbox Code Playgroud)

2)运行Elasticsearch容器

docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch_2_4 --network mynetwork elasticsearch:2.4
Run Code Online (Sandbox Code Playgroud)

3)运行Kibana容器

docker run -i --network mynetwork -p 5601:5601 kibana:4.6
Run Code Online (Sandbox Code Playgroud)

当我通过http:// localhost:9200 /通过我的浏览器连接到Elasticsearch时,我得到一个JSON输出.

但是当我打开http:// localhost:5601 /我得到

Unable to connect to Elasticsearch at http://elasticsearch:9200.
Run Code Online (Sandbox Code Playgroud)

替代方法,

我尝试时仍然遇到类似的错误

docker run -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 5601:5601 kibana:4.6
Run Code Online (Sandbox Code Playgroud)

我得到错误的地方

Unable to connect to Elasticsearch at http://127.0.0.1:9200.
Run Code Online (Sandbox Code Playgroud)

我的博客帖子基于公认的答案:https://gunith.github.io/docker-kibana-elasticsearch/

elasticsearch docker kibana kibana-4 elasticsearch-2.0

29
推荐指数
2
解决办法
2万
查看次数

如何从浏览器访问在docker容器中运行的tomcat?

我在官方回购的docker容器中运行tomcat.

docker pull tomcat
Run Code Online (Sandbox Code Playgroud)

根据主页中所述的指导原则,我运行实例并启动Tomcat服务器

docker run -it --rm -p 8888:8080 tomcat:8.0
Run Code Online (Sandbox Code Playgroud)

并且端口8888上有Tomcat服务器.当我执行以下命令时,我能够在boot2docker中获得响应

curl localhost:8888
Run Code Online (Sandbox Code Playgroud)

但是我想从我的PC中安装的Web浏览器访问该页面(它不在Virtual Box中,安装在我的Windows中).我可以吗?如果是这样的话?

containers tomcat virtualbox docker

23
推荐指数
2
解决办法
3万
查看次数

MyBatis 将属性映射到错误的 Enum

我的域类具有映射到枚举的属性。奇怪的是,MyBatis 3.4.x(3.4.0 和 3.4.4。这适用于 3.3.x)与 Spring MyBatis 1.3.1 尝试将其映射到不相关的枚举并给出错误。

org.mybatis.spring.MyBatisSystemException:嵌套异常是 org.apache.ibatis.executor.result.ResultMapException:尝试从结果集中获取列“order_line_programmed”时出错。原因:java.lang.IllegalArgumentException:没有枚举常量 foo.UnlatedEnum.yes

我的域类如下所示:

public class OrderLine {

    private Long id;
    private Product product;
    private ProgrammedStatus programmedStatus;
    private String programmedFeedback;
    private boolean completed = false;
}
Run Code Online (Sandbox Code Playgroud)

ProgrammedStatus 是一个简单的枚举

public enum ProgrammedStatus {
    yes, no, error;
}
Run Code Online (Sandbox Code Playgroud)

正是这个programmedStatus映射到programmed列,如下所示,

<resultMap id="orderLineResult" type="foo.OrderLine">
    <id property="id" column="technical_order_line_id" />
    <result property="programmedStatus" column="order_line_programmed" typeHandler="org.apache.ibatis.type.EnumTypeHandler" />
    <result property="programmedFeedback" column="order_line_programmed_feedback" />
    <result property="completed" column="order_line_completed"
        javaType="java.lang.Boolean" typeHandler="org.apache.ibatis.type.BooleanTypeHandler" />
    <association property="product"
        notNullColumn="order_line_product_id"
        resultMap="foo.repository.mapper.ProductMapper.productResult" />
</resultMap>
Run Code Online (Sandbox Code Playgroud)

我什至尝试用 typeHandler 映射 javaType,但 MyBatis 似乎忽略了它。 …

java enums spring mybatis spring-mybatis

4
推荐指数
1
解决办法
4294
查看次数

如何将参数传递给WSO2 DSS中的Cassandra CQL查询

我一直在尝试在WSO2 DSS中使用参数化CQL查询.不幸的是我没有成功.当我遇到紧急事件时,请尽快感谢您的帮助.

以下是DBS文件内容

<data name="CassParamTest">
   <config id="CassDs">
      <property name="org.wso2.ws.dataservice.protocol">jdbc:cassandra://localhost:9161/oneDataAux</property>
      <property name="org.wso2.ws.dataservice.driver">org.apache.cassandra.cql.jdbc.CassandraDriver</property>
   </config>
   <query id="getEmps" useConfig="CassDs">
      <sql>select employeeNumber from EMPLOYEES where employeeNumber = :employeeNumber</sql>
      <param name="employeeNumber" sqlType="STRING" />
   </query>
   <operation name="getEmps">
      <call-query href="getEmps">
         <with-param name="employeeNumber" query-param="employeeNumber" />
      </call-query>
   </operation>
</data>
Run Code Online (Sandbox Code Playgroud)

实际上,参数employeeNumber是一个数字.但我不断收到错误.所以我尝试使用String也无济于事.我也试过了?而不是命名参数

这是我得到的错误.

当参数是String时,

<soapenv:Fault xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:axis2ns12="http://ws.wso2.org/dataservice">
   <soapenv:Code>
      <soapenv:Value>axis2ns12:DATABASE_ERROR</soapenv:Value>
   </soapenv:Code>
   <soapenv:Reason>
      <soapenv:Text xml:lang="en-US" xmlns:xml="http://www.w3.org/XML/1998/namespace">DS Fault Message: Error in DS non result invoke.
DS Code: DATABASE_ERROR
Nested Exception:-
javax.xml.stream.XMLStreamException: DS Fault Message: Error in 'SQLQuery.processNormalQuery'
DS Code: DATABASE_ERROR
Source Data Service:-
Name: CassParamTest …
Run Code Online (Sandbox Code Playgroud)

cql wso2 cassandra wso2-data-services-server

2
推荐指数
1
解决办法
666
查看次数