一种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签名中的通配符提供了哪些额外的灵活性(以降低可读性为代价)?
我注意到如果我将数组声明为:
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 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)
我在这里错过了什么?
我正在使用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) 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不会产生任何警告.如果我正确解释上述内容,我的期望是它应该.)
由于某种原因,Redcarpet markdown在渲染\'为时渲染为。单引号有两种类型吗?为什么红毯会以不同的方式对待其中一个。(Ascii 表似乎有一个,但在 unicode 下我假设还有更多?)'\xe2\x80\x99\xe2\x80\x99
搜索\'and\xe2\x80\x99有点困难,chrome 的 find (command + f) 和 Google 搜索似乎都将这两个字符视为同一个。
我的问题与这个问题略有不同,询问如何检查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) 表达式之前(long)和(int)之后的语句有什么意义?
long years = (long) (minutes / minutesInYear);
int remainingDays = (int) (minutes / 60 / 24) % 365;
Run Code Online (Sandbox Code Playgroud) 我试图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) 我正在阅读有关函数式编程的基础知识.无论如何,我做了一些例子试图理解这个概念并正确使用它.
我没有掌握这种函数式编程的强大功能.它只是在编写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)