小编Ked*_*ade的帖子

Stream.reduce的累加器参数中通配符的用途是什么?

一种Java reduce方法Stream:

<U> U reduce(U identity,
             BiFunction<U, ? super T, U> accumulator,
             BinaryOperator<U> combiner);
Run Code Online (Sandbox Code Playgroud)

有助于根据流中对象的某些属性来减少流.

但是,我不清楚为什么accumulator不能更直接和服务于同一目的:

BiFunction<U, T, U> accumulator.

accumulator签名中的通配符提供了哪些额外的灵活性(以降低可读性为代价)?

java generics java-8

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

我们需要在Java中初始化数组吗?

我注意到如果我将数组声明为:

int[] myarr = new int[10];
Run Code Online (Sandbox Code Playgroud)

我可以直接使用myarr[1] ++;这样myarr[1] = 1.这是否意味着在Java中,我们并不需要初始化数组,并通过以下方法设置每个值为0?

for (int i = 0; i < myarr.length; i++) {
     myarr[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

我从一些评论中看到,该数组可能包含垃圾值.如果数组是整数数组,它是否包含0以外的任何垃圾?

java

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

Java:使用lambda表达式对数组进行排序?

我最近进入了函数式编程和Java 8 lambdas.我有一组int,我想按升序排序.

我试图用lambda做的方式如下:

Arrays.stream(intArray).sorted((x, y) -> Integer.compare(x, y) == -1);
Run Code Online (Sandbox Code Playgroud)

这个问题是我的编译器说:

Error:(12, 32) java: method sorted in interface 
java.util.stream.IntStream cannot be applied to given types;
required: no arguments
found: (x,y)->Int[...]== -1
reason: actual and formal argument lists differ in length
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

java sorting lambda functional-programming java-8

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

docker-compose selenium grid

我正在使用docker-compose版本2来构建一个本地的selenium网格,我遇到了麻烦.

我的大部分麻烦来自很多旧的博客/文档,并尝试使用新文档来构建它,几乎没有实际参考(例如:没有更新的博客).从我的理解,这应该工作,但事实并非如此.

这是我的docker-compose.yml档案:

version: '2.0'
services:
  grid-hub:
    image: 'selenium/hub'
    ports:
      - '4444:4444'
  node-chrome-debug:
    image: 'selenium/node-chrome-debug'
    depends_on:
      - 'grid-hub'
    environment:
      - HUB_PORT_4444_TCP_ADDR=grid-hub
Run Code Online (Sandbox Code Playgroud)

这是我的节点的输出,它永远不会通过它注册到集线器:

Waiting xvfb...
-bash: 169.254/16: No such file or directory
Waiting xvfb...
Waiting xvfb...
Waiting xvfb...
Waiting xvfb...
Waiting xvfb...
Waiting xvfb...
Waiting xvfb...
Waiting xvfb...
Waiting xvfb...
Run Code Online (Sandbox Code Playgroud)

我一直Dockerfile在搜索github,我想也许我错过了一个环境变量,但我找不到我错过的东西.

这是一个更新:我已尝试指定端口通过- HUB_PORT_4444_TCP_PORT=4444,但这没有任何效果.我在github上打开了一个问题来提高可见性,但这也包括我在这里包含的docker版本.

Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 …
Run Code Online (Sandbox Code Playgroud)

selenium docker-compose

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

这会产生gcc警告吗?

K&R C(第二版,第5.5节)陈述如下(我强调):

char amessage[] = "a message"; /* an array */
char *pmessage = amessage; /* a pointer */
Run Code Online (Sandbox Code Playgroud)

amessage是一个大到足以容纳字符序列的数组,'\ 0'用于初始化它.可以更改阵列中的单个字符,但是消息将始终引用相同的存储.OTOH,pmessage是一个指针,初始化为指向一个字符串常量; 随后可以修改指针以指向别处; 但如果您尝试修改字符串内容,结果将是未定义的.

现在,我的问题是我的Linux机器上的gcc 4.6.1(或c99)是否应该在使用-Wall编译以下程序时生成警告:

int main(void) {
  char amessage[] = "a message";
  char *pmessage = "a message";
  pmessage[0] = 'b';
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

(我发现gcc不会产生任何警告.如果我正确解释上述内容,我的期望是它应该.)

c arrays string pointers compiler-warnings

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

“'”和“'”有什么区别

由于某种原因,Redcarpet markdown在渲染\'为时渲染为。单引号有两种类型吗?为什么红毯会以不同的方式对待其中一个。(Ascii 表似乎有一个,但在 unicode 下我假设还有更多?)&#39;\xe2\x80\x99\xe2\x80\x99

\n\n

搜索\'and\xe2\x80\x99有点困难,chrome 的 find (command + f) 和 Google 搜索似乎都将这两个字符视为同一个。

\n\n

在此输入图像描述

\n\n

在此输入图像描述

\n

ascii redcarpet

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

Go Slices的平等(身份)

我的问题与这个问题略有不同,询问如何检查Go切片的相等性.

本文所述,Go切片是由三个部分组成的:指向数组的指针,段的长度及其容量(段的最大长度).然后可以(便宜地)检查两个这样的切片是否相等,因为它们指向相同的底层数组并且具有相同的长度和容量值(最好不要遍历两个切片检查各个元素的相等性)?似乎==操作员未在切片上定义.

问题出现在我实现一个IntSet内部使用a []uint64来表示元素的位向量()时,我偶然发现了一个可以调用的方法 .func (*IntSet) Equals(that *IntSet) bools.Equals(s)

(看来我可以针对这种情况进行优化,如下所示,但问题仍然存在:

func (this *IntSet) Equals(that *IntSet) bool {
    if this == that { // use equality of pointers!
        return true
    }
// omitted for brevity 
}
Run Code Online (Sandbox Code Playgroud)

go slice

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

long <name> =(long)<expression>; 用Java做什么?

表达式之前(long)(int)之后的语句有什么意义?

long years = (long) (minutes / minutesInYear);
int remainingDays = (int) (minutes / 60 / 24) % 365;
Run Code Online (Sandbox Code Playgroud)

java int types long-integer

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

如何base-64编码十六进制字符串

我试图base-64编码一个十六进制字符串(下面复制),但我从Java8调用编码到base64得到的值与我在不同的在线转换器上得到的值不匹配.我想弄清楚我错过了哪些步骤(或者我正在考虑失误):

//hexString is 07050600030102
Base64.getEncoder().encodeToString(hexString.getBytes(StandardCharsets.UTF_8));

//output I am getting from Java8 ic copied below:
MDcwNTA2MDAwMzAxMDI=

//online converters:
BwUGAAMBAg==
Run Code Online (Sandbox Code Playgroud)

java base64 hex

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

Java中功能接口的强大之处在哪里?

我正在阅读有关函数式编程的基础知识.无论如何,我做了一些例子试图理解这个概念并正确使用它.

我没有掌握这种函数式编程的强大功能.它只是在编写lambda而不是普通代码吗?

如果我们有这个课程:

public class Dinosaurio {
    private boolean esMamifero;
    private String nombre;
    public Dinosaurio(String n, boolean esMam) {...}
//getters and setters
Run Code Online (Sandbox Code Playgroud)

这个功能界面:

@FunctionalInterface
public interface DinosaurioTester {
    boolean test(Dinosaurio d);
}
Run Code Online (Sandbox Code Playgroud)

而这个主要课程:

public class LambdaMain {

    public static void main(String[] args) {

        List<Dinosaurio> lista = new ArrayList<>(); 
        lista.add(new Dinosaurio("Manolo", true));
        lista.add(new Dinosaurio("Pepe", true));
        lista.add(new Dinosaurio("Paco", false));
        lista.add(new Dinosaurio("Curro", true));
        lista.add(new Dinosaurio("Nemo", false));

        pintadorDinosaurios(lista, a->a.isEsMamifero());
    }

    public static void pintadorDinosaurios(List<Dinosaurio> ld, DinosaurioTester dt) {

        for(Dinosaurio d : ld) {
            if(dt.test(d)) …
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-8

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