小编mo-*_*eph的帖子

为什么Double.MIN_VALUE不是否定的

任何人都可以解释为什么Double.MIN_VALUE实际上不是双打可以采取的最小值?这是一个正值,Double可以是负面的.

我明白为什么它是一个有用的数字,但它似乎是一个非常不直观的名称,特别是与之相比时Integer.MIN_VALUE.调用它Double.SMALLEST_POSITIVEMIN_INCREMENT类似语句会有更清晰的语义.

此外,双打可以采取的最低价值是多少?是-Double.MAX_VALUE吗?文档似乎没有说.

java floating-point numbers

148
推荐指数
4
解决办法
8万
查看次数

使用Hamcrest映射平等

我想使用hamcrest声明两个映射相等,即它们具有指向相同值的相同键集.

我目前最好的猜测是:

assertThat( affA.entrySet(), hasItems( affB.entrySet() );
Run Code Online (Sandbox Code Playgroud)

这使:

方法断言Assert类型中的(T,Matcher)不适用于参数(Set>,Matcher >>>)

我还研究了containsAll的变体,以及hamcrest包提供的其他一些变体.谁能指出我正确的方向?或者我是否必须编写自定义匹配器?

java collections hamcrest

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

OSX上每个进程的最大打开文件句柄数(以及如何增加)

编辑:我现在有一个解决方案,但我真的很清楚简要描述不同的限制是什么,即由FD_SIZE,launchtl限制文件,sysctl -w kern.maxfilesperproc,ulimit等设置的限制.

有人可以帮我理解OSX上打开文件句柄的限制.ulimit给了我一个答案:

$ ulimit -a
...
open files                      (-n) 256
Run Code Online (Sandbox Code Playgroud)

我无法ulimit改变这一点,但人们建议使用launchctl(例如http://usrinapto.wordpress.com/2010/03/06/mac-os-x-10-6-max-open-files-too-many -open-files /)

但是,使用它不会改变报告的限制ulimit.

但是,我的应用程序似乎能够在崩溃之前打开10k文件lsof,例如:

$ lsof -p 87599 | wc
10279   92505 1418903
Run Code Online (Sandbox Code Playgroud)

(它可靠地在10279和10305打开的文件之间崩溃)

所以有明显不同的限制.我也看过(在上面的链接上)的谈话FD_SETSIZE.

有人可以向我解释不同的限制是什么,以及它们是如何设置的?

如果它是相关的,我正在使用SWIG包装一个用于Java的C/C++库.

编辑:我也尝试过:

sudo sysctl -w kern.maxfiles=20000
Run Code Online (Sandbox Code Playgroud)

没有成功.也

#define FD_SETSIZE 20000
Run Code Online (Sandbox Code Playgroud)

没有效果.

编辑:也尝试过

launchctl limit maxfiles 20000 20000
Run Code Online (Sandbox Code Playgroud)

没有效果.

编辑:解决方案:

sysctl -w kern.maxfilesperproc=20000
Run Code Online (Sandbox Code Playgroud)

(来自http://krypted.com/mac-os-x/maximum-files-in-mac-os-x/)

编辑:我已经编写了一个小程序来测试它(基于如何在Mac OS X上增加C中"最大打开文件"的限制),并发现我可以要求的最大打开文件数是10240:

#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

struct …
Run Code Online (Sandbox Code Playgroud)

macos file-io

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

如何在R中创建具有相同色阶的光栅图

我正在使用R中的"光栅"包从光栅文件创建一些地图.我想创建比较光栅,并排显示几个地图.重要的是,无论每个地图中的值如何,所使用的颜色比例对于所有地图都是相同的.例如,如果地图1的值为0-1,而地图2的值为0-0.5,则值为0.5的单元格在两个地图上应具有相同的颜色.

例如:

  • map 1的值从0到1
  • map 2的值为0到0.5
  • 颜色从红色(最低)到绿色(最高)

我希望值为0.5以在两个地图中具有相同的颜色(即黄色,红色和绿色之间).目前的行为是它在地图1中是黄色,在地图2中是绿色.

我无法找到一种方法来完成这项工作.我看不出有任何方法可以设置用于绘图功能的像素值范围.setMinMax()没有帮助(因为'plot'总是计算值).即使尝试手动设置值(例如g1 @ data @ max < - 10)也不起作用(绘图时会忽略这些值).

最后,制作一堆地图(可能预期在同一色标上绘制所有内容)也不起作用 - 每个地图仍然有自己的色标.

有关如何做到这一点的任何想法?

编辑:

我最终使用的解决方案是:

plot( d, col=rev( rainbow( 99, start=0,end=1 ) ), breaks=seq(min(minValue( d )),max(maxValue(d)),length.out=100) ) 
Run Code Online (Sandbox Code Playgroud)

maps r raster

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

使用geom_smooth和ggplot显示标准偏差

我们有一些数据表示在不同情况下的许多模型运行.对于单个场景,我们希望显示平滑的平均值,其中填充区域表示特定时间点的标准偏差,而不是平滑拟合的质量.

例如:

d <- as.data.frame( rbind( cbind( 1:20, 1:20,1 ), cbind(1:20, -1:-20,2 ) ) )
names(d)<-c("Time","Value","Run")
ggplot( d, aes(x=Time,y=Value) ) + geom_line( aes(group=Run) ) + geom_smooth()
Run Code Online (Sandbox Code Playgroud)

生成一个图表,其中表示两次运行,平滑均值,但即使运行之间的SD增加,平滑的条形也保持相同的大小.我想让更平滑的环绕代表给定时间步长的标准偏差.

考虑到许多不同的运行和输出变量,是否存在非劳动密集型的方法?

statistics r ggplot2

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

java.awt.Color.getColor(String colorName)如何工作?

我试图通过名称获取颜色,我遇到了在Java中将字符串转换为颜色,这表明使用java.awt.getColor.

我无法弄清楚将它作为字符串传递的内容.下列

System.out.println( java.awt.Color.getColor( "black", Color.red ) );
Run Code Online (Sandbox Code Playgroud)

打印出来

java.awt.Color中[R = 255,G = 0,B = 0]

即它在那里使用默认颜色.

我把它放在一个文本框中,尝试了替代资本等等.这里的文档不是很有帮助.任何人都可以建议放入什么魔法字符串?

java awt colors

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

(更好的方法)使用Eclipse和XText在项目中获取文件

我正在编写一个XText编辑器,并进行一些语义突出显示.我正在解析的语言的一部分是指文件,它应该存在于项目中.我想根据这些文件是否在正确的位置来突出显示.目前,我有一个非常丑陋的解决方案,我确信有更好的方法:

public void provideHighlightingFor( XtextResource resource, IHighlightedPositionAcceptor acceptor ) {
...
String resStr = resource.getURI().toString();
String projName = resStr.replaceAll( "^.*resource/", "" ).replaceAll( "/.*", "" );
IWorkspaceRoot workspace = ResourcesPlugin.getWorkspace().getRoot();
IFile file = workspace.getFile( new Path( projName + "/" + value ) );
ok = file != null && file.exists();
Run Code Online (Sandbox Code Playgroud)

注意:"value"是我在解析时遇到的字符串,而不是当前文件.我想知道{workspace}/{project}/{value}是否存在.

必须有一种更好的方法来获取项目名称/位置,基于当前文件; 我把它作为一个XText问题,如果可能的话,我希望避免使用当前选择的编辑器,并在当前资源上进行基本选择,当前资源显示为XText资源.

注意:根据以下答案,我最终使用的代码是:

String platformString = resource.getURI().toPlatformString(true);
IFile myFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(platformString));
IProject proj = myFile.getProject();
IFile linkedFile = proj.getFile( value );
Run Code Online (Sandbox Code Playgroud)

java eclipse plugins xtext

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

Scala的RDF库

我正在为Scala寻找一个简单的RDF库.到目前为止,我发现了三个,似乎都有问题:

有没有人有任何建议?我正在使用Scala 2.10,并且想要一些轻巧,快速和干净的东西.我大部分时间都在进行简单的查询和存储工作,但我也希望能够选择使用外部端点.

rdf scala libraries

8
推荐指数
0
解决办法
1090
查看次数

在ggplot中使用多个大小的比例

我正在尝试构建一个显示从一个类到另一个类的转换的图.我想让圆圈代表根据类属性调整大小的每个类,以及从一个类到另一个类的箭头,根据从一个类到另一个类的过渡数来确定大小.

举个例子:

library(ggplot2)
points <- data.frame( x=runif(10), y=runif(10),class=1:10, size=runif(10,min=1000,max=100000) )
trans <- data.frame( from=rep(1:10,times=10), to=rep(1:10,each=10), amount=runif(100)^3 )
trans <- merge( trans, points, by.x="from", by.y="class" )
trans <- merge( trans, points, by.x="to", by.y="class", suffixes=c(".to",".from") )
ggplot( points, aes( x=x, y=y ) ) + geom_point(aes(size=size),color="red") + 
    scale_size_continuous(range=c(4,20)) + 
    geom_segment( data=trans, aes( x=x.from, y=y.from, xend=x.to, yend=y.to, size=amount ),lineend="round",arrow=arrow(),alpha=0.5)
Run Code Online (Sandbox Code Playgroud)

示例图片

我希望能够以不同的比例将箭头缩放到圆圈.理想情况下,我想要一个带有两个刻度的图例,但我知道这可能是不可能的(在一个ggplot上使用两个刻度颜色渐变)

有没有比将任意缩放应用于底层数据更优雅的方法呢?

r data-visualization ggplot2

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

设置sendBufferSize()后,UDP套接字的消息太长

我正在尝试发送UDP数据报(包含协议缓冲区消息)并获取消息太长的异常:

java.io.IOException: Message too long
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:625)
Run Code Online (Sandbox Code Playgroud)

我已设置发送缓冲区大小,并检查getBufferSize()的返回值,它大于消息:

byte[] b = msg.toByteArray();
            System.out.println( "Serialised message in " + b.length + " bytes (max length: " + network.getSendBufferSize() + ")");
            DatagramPacket p = new DatagramPacket( b, b.length, host, port );
            network.send( p );
Run Code Online (Sandbox Code Playgroud)

输出:

VM version: 16.3-b01-279
Runtime version: 1.6.0_20-b02-279-9M3165
Vendor: Apple Inc.    
Serialised message in 69424 bytes (max length: 531075)
Problem sending packet: java.io.IOException: Message too long
Run Code Online (Sandbox Code Playgroud)

我能理解它是否拒绝设置一个大尺寸的缓冲区,但它似乎设置了我要求的任何东西,然后不尊重它.

这是在OSX上; 我已经尝试过1.6和1.5

java

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

在模式匹配时,是否可以使非捕获组在scala正则表达式中起作用

据我所知,非文档中的非捕获组由(:?)定义,就像在Java中一样.(我相信它是相同的底层库).

但是,这似乎不起作用:

var R = "a(:?b)c".r
R.findFirstMatchIn("abc").get.group(1)
Run Code Online (Sandbox Code Playgroud)

返回"b"(当它应为空时).我怀疑这通常不是问题,但在进行模式匹配时,这意味着我现在无法做到:

"abc" match {case R => println("ok");case _ => println("not ok")}
> not ok
Run Code Online (Sandbox Code Playgroud)

我要做:

"abc" match {case R(x) => println("ok");case _ => println("not ok")}
> ok
Run Code Online (Sandbox Code Playgroud)

有没有办法让这项工作"按预期"进行?

regex scala

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

在ggplot2中很好地排列点之间的箭头

(注意 - 这是与在 gg​​plot 中使用多个尺寸比例相同的工作,但我问一个不同的问题)

我正在尝试构建一个显示从一个类到另一个类的转换的图。我想要用圆圈代表每个类,从一个类到另一个类的箭头代表转换。

我使用 geom_segment 和 arrow() 来绘制箭头。有什么办法可以:

  • 让箭头在到达圆圈之前停止
  • 调整位置,以便如果两个方向都有箭头,它们会被“躲避”而不是重叠。

我无法让position=“dodge”在这里做任何有用的事情。

举个例子:

library(ggplot2)
points <- data.frame( x=runif(10), y=runif(10),class=1:10, size=runif(10,min=1000,max=100000) )
trans <- data.frame( from=rep(1:10,times=10), to=rep(1:10,each=10), amount=runif(100)^3 )
trans <- merge( trans, points, by.x="from", by.y="class" )
trans <- merge( trans, points, by.x="to", by.y="class", suffixes=c(".to",".from") )
ggplot( points, aes( x=x, y=y ) ) + geom_point(aes(size=size),color="red",shape=1) + 
    scale_size_continuous(range=c(4,20)) +
    geom_segment( data=trans[trans$amount>0.6,], aes( x=x.from, y=y.from, xend=x.to, yend=y.to ),lineend="round",arrow=arrow(),alpha=0.5, size=0.3)
Run Code Online (Sandbox Code Playgroud)

示例图

r data-visualization ggplot2

5
推荐指数
2
解决办法
4684
查看次数