小编ben*_*n.d的帖子

hamcrest hasItem和hasProperty,断言是否存在具有属性值的对象

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.equalTo;

assertThat(actual, hasItem(hasProperty("id", equalTo(1L))));
Run Code Online (Sandbox Code Playgroud)

其中,实际是一个ID为Long的POJO.

我明白了

assertThat(T, Matcher<? super T>)类型中的方法MatcherAssert不适用于参数(List<Pojo>, Matcher<Iterable<? super Object>>)

从各种文档和其他stackoverflow页面,它应该是有效的,但我得到上述错误.

java unit-testing hamcrest

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

传输端点未连接 - Mesos Slave/Master

我正在尝试将Mesos奴隶连接到它的主人.当从属设备尝试连接到主设备时,我收到以下消息:

I0806 16:39:59.090845   935 hierarchical.hpp:528] Added slave 20150806-163941-1027506442-5050-921-S3 (debian) with cpus(*):1; mem(*):1938; disk(*):3777; ports(*):[31000-32000] (allocated: )
E0806 16:39:59.091384   940 socket.hpp:107] Shutdown failed on fd=25: Transport endpoint is not connected [107]
I0806 16:39:59.091508   940 master.cpp:3395] Registered slave 20150806-163941-1027506442-5050-921-S3 at slave(1)@127.0.1.1:5051 (debian) with cpus(*):1; mem(*):1938; disk(*):3777; ports(*):[31000-32000]
I0806 16:39:59.091747   940 master.cpp:1006] Slave 20150806-163941-1027506442-5050-921-S3 at slave(1)@127.0.1.1:5051 (debian) disconnected
I0806 16:39:59.091868   940 master.cpp:2203] Disconnecting slave 20150806-163941-1027506442-5050-921-S3 at slave(1)@127.0.1.1:5051 (debian)
I0806 16:39:59.092031   940 master.cpp:2222] Deactivating slave 20150806-163941-1027506442-5050-921-S3 at slave(1)@127.0.1.1:5051 (debian)
I0806 16:39:59.092248   939 hierarchical.hpp:621] Slave …
Run Code Online (Sandbox Code Playgroud)

linux debian virtualbox marathon mesos

19
推荐指数
1
解决办法
1万
查看次数

Apache + Tomcat - 粘性会话和负载平衡问题

我面临着关于粘性会话的Apache mod_proxy_balancer的一些问题.

我们在Java上开发了一个在Tomcat上运行的restful webservice.实际的后端使用Acegi安全性,使用Auth Basic身份验证.

架构是(抱歉,我是新用户,我无法发布图片):

     --------------------
     |Java Reverse Proxy|
     --------------------
            |
     --------------------
     |Apache load balancer|
     --------------------               
            |
    --------|--------
    |               |
--------        --------    
|tomcat1|       |tomcat2|
--------        --------    
Run Code Online (Sandbox Code Playgroud)

我们有这个"Java反向代理"来执行各种业务.它还在Tomcat(Tomcat1,Tomcat2)上执行基本身份验证.

最终用户调用以下URL:http:/// a/b?username = foo&password = bar&session = xxx

然后,反向代理将请求代理到Apache,并将凭据作为Basic Auth令牌发送.

最终用户有三个不同的网址:

http://<java reverse proxy domain>/service1
http://<java reverse proxy domain>/service2
http://<java reverse proxy domain>/service3
Run Code Online (Sandbox Code Playgroud)

只有service1和service2受Acegi保护.service3是匿名访问的(这是一项要求).

我们在Apache中有以下配置来执行负载平衡:

<Proxy balancer://cluster>
    Header set Cache-Control no-cache
    Header set Pragma no-cache
    BalancerMember http://xxx:9671 route=server1
    BalancerMember http://xxx:9672 route=server2
</Proxy>

ProxyPreserveHost On
ProxyPass / balancer://cluster/ stickysession=JSESSIONID
ProxyPassReverse / balancer://cluster/ stickysession=JSESSIONID …
Run Code Online (Sandbox Code Playgroud)

java apache tomcat load-balancing mod-proxy-balancer

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

在 spring test mvc 中设置请求部分

我正在尝试测试(通过 Spring 测试(mvc))一个使用的控制器servletRequest.getParts()

到目前为止我所读到的就是MockMvcRequestBuilders.fileUpload().file()解决方案。但是我无法让它发挥作用。我编写了以下失败的测试

MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.fileUpload("/foo")
            .file(new MockMultipartFile("file", new byte[] { 1, 2, 3, 4 }));
MockHttpServletRequest rq = builder.buildRequest(null);
Assert.assertEquals(1, rq.getParts().size()); // result 0
Run Code Online (Sandbox Code Playgroud)

我浏览了 spring 代码,并且调用file(...)添加了一个元素,List<MockMultipartFile>getParts()从另一个列表获取其元素时(Map<String, Part> parts)

必须有另一种方法来做到这一点......

编辑1

我用来测试控制器的代码是:

ResultActions result = mockMvc.perform(
            MockMvcRequestBuilders.fileUpload(new URI("/url")).file("param", "expected".getBytes()))
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-test spring-mvc-test

7
推荐指数
1
解决办法
3332
查看次数

文件上传流从哪里获取内容?

我有一个关于文件上传的问题,它与工作方式有关,而不是代码问题.我在互联网上看了,但我找不到合适的答案.

我有一个在tomcat上运行的Web应用程序,它处理文件上传(通过servlet).假设我现在要上传大文件(> 1 Gb).我的理解是,一旦实际传输了整个文件,HTTP请求的多部分内容就可以在我的servlet中使用.

我的问题是请求的内容实际存储在哪里?当一个人调用HttpServletRequest.getParts()一个InputStream可用的Part对象时.但是,从哪里读取流?Tomcat将它存储在某个地方吗?

我想这可能不够清楚,所以我会根据你的意见更新帖子,如果有的话.

谢谢

java tomcat tcp file-upload http

6
推荐指数
1
解决办法
4817
查看次数

Apache Beam / Google 数据流 - 错误处理

我有一个包含相当多步骤的管道(略高于 15)。每次DoFn失败时我都想报告失败。我开始TupleTags使用以下代码实现它:

try {
 ... do stuff ...
 c.output(successTag, ...);
} catch (Exception e) {
 c.output(failureTag, new Failure(...));
}
Run Code Online (Sandbox Code Playgroud)

但是由于我的管道包含很多步骤,这使得管道定义代码很难阅读/维护。

有没有更全球化的方式来实现它?类似于引发在管道级别全局处理的自定义异常?

java error-handling google-cloud-dataflow apache-beam

5
推荐指数
1
解决办法
2421
查看次数

Mysql - LEFT JOIN 比 INNER JOIN 快得多

我有两张桌子

表 X:数百万条记录

|-----|-----|-----|-----|
|  a  |  b  |  c  |  d  |
|-----|-----|-----|-----|
Run Code Online (Sandbox Code Playgroud)

表Y:只有几条记录

|-----|-----|
|  e  |  f  |
|-----|-----|
Run Code Online (Sandbox Code Playgroud)

X.d允许我加入两个表X.d = Y.e

我有以下索引:

  • (Xa)
  • (Xb)
  • (Xc)
  • (Xd)
  • (Xa、Xb、Xc、Xd)
  • (叶)

我们的一个应用程序正在执行以下查询,该查询需要很长时间才能运行:

SELECT * 
FROM X
INNER JOIN Y ON X.d = Y.e
WHERE 
      X.a in (1, 2, 3)
  AND X.b IS NULL
  AND X.c in (4, 5 ,6)
  AND X.d in (7, 8, 9)
Run Code Online (Sandbox Code Playgroud)

将 更改INNER JOIN为 a后LEFT JOIN,查询速度非常快:

SELECT * 
FROM …
Run Code Online (Sandbox Code Playgroud)

mysql performance inner-join left-join mariadb

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

神经网络训练.只有少数成果

我有一个网络,有3个输入,2个隐藏层(每个6个神经元,Sigmoid激活函数)和一个神经元作为输出.我希望我的网络是连续的,因为我不是在看分类网络(希望这很有意义).

我的输入表示一年中的天数(0-365范围).我实际上将它们归一化到0-1范围(因为sigmoid).

我的问题如下:无论训练错误多少,重新使用训练集时的实际值都不正确.根据我运行的时代数量,我会得到不同的结果.

如果我训练我的网络超过几千次,我只会得到两个可能的结果.如果我少训练它,我会得到更多可能的结果,但价值远远超出我的预期.

我已经读到,对于连续网络,最好使用两个隐藏层.

我不确定我做错了什么.如果你能得到任何帮助,那就太好了.如果您需要更多详细信息,请告诉我们.

谢谢

更新1

我减少了训练集中的元素数量.这次网络聚集在少数时代.以下是培训错误:


培训网络


迭代#1.错误:0.0011177179783950614

迭代#2.错误:0.14650660686728395

迭代#3.错误:0.0011177179783950614

迭代#4.错误:0.023927628368006597

迭代#5.错误:0.0011177179783950614

迭代#6.错误:0.0034446569367911364

迭代#7.错误:0.0011177179783950614

迭代#8.错误:8.800816244191594E-4


最终错误:0.0011177179783950614


neural-network encog

3
推荐指数
1
解决办法
946
查看次数

Google pubsub 流量控制

我正在尝试实现一项按自己的节奏消耗 google pubsub 订阅的服务。我的意思是,我需要精细控制何时需要使用消息,即获取一批消息,暂停一段时间,不要获取超过 X 条消息......

使用谷歌客户端库,我没有找到一种方法来做到这一点,因为 MessageReceiver 在它自己的线程中运行,并且我无法控制到底会发生什么。

基本上,能够以同步方式使用消息应该可以解决我的问题。

你知道我如何同步使用谷歌客户端库吗?或者我错过了 API 中的另一种方法?

java google-client google-cloud-pubsub

3
推荐指数
1
解决办法
4163
查看次数

java.library.path 中没有字体管理器

以下代码在我的桌面上运行良好:

        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        g.setFont(new Font("SansSerif", Font.BOLD, 18));

        Graphics2D graphics = (Graphics2D) g;
        graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        graphics.drawString(s, 5, 20);
Run Code Online (Sandbox Code Playgroud)

但是,当我在我的服务器上运行此代码(在 Docker 容器内的 linux alpine 上运行的 openjdk)时,它失败并显示以下错误:

java.lang.UnsatisfiedLinkError: no fontmanager in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
at sun.font.SunFontManager$1.run(SunFontManager.java:339)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<clinit>(SunFontManager.java:335)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:491)
at java.awt.Font.access$000(Font.java:224)
at java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)
at sun.font.FontUtilities.getFont2D(FontUtilities.java:180)
at sun.java2d.SunGraphics2D.checkFontInfo(SunGraphics2D.java:669) …
Run Code Online (Sandbox Code Playgroud)

java jvm headless docker alpine-linux

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

谷歌数据流 - 无效的区域端点 - 无法在来自 nodejs 客户端的模板上设置区域

我有一个存储为模板的管道。我正在使用 node.js 客户端从云函数运行此管道。一切正常,但是当我需要从不同区域运行此模板时,我会出错。

根据文档,我可以通过payload中的location参数进行设置

{
  projectId: 123,
  resource: {
    location: "europe-west1",
    jobName: `xxx`,
    gcsPath: 'gs://xxx'
  }
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

The workflow could not be created, since it was sent to an invalid regional endpoint (europe-west1). 
Please resubmit to a valid Cloud Dataflow regional endpoint.
Run Code Online (Sandbox Code Playgroud)

如果我将位置参数移出资源节点,我会得到同样的错误,例如:

{
  projectId: 123,
  location: "europe-west1",
  resource: {
    jobName: `xxx`,
    gcsPath: 'gs://xxx'
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我在环境中设置区域并删除位置,例如:

{
  projectId: 123,
  resource: {
    jobName: `xxx`,
    gcsPath: 'gs://xxx',
    environment: {
        zone: "europe-west1-b"
    }
   }
}
Run Code Online (Sandbox Code Playgroud)

我不再收到任何错误,但数据流 UI 告诉我作业正在运行 us-east1

如何运行此模板并提供区域/区域 I

google-cloud-platform google-cloud-dataflow apache-beam

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