小编St.*_*rio的帖子

while循环中标记的continue语句

以下简单示例会导致编译时错误.但目前尚不清楚为什么.

public static void main (String[] args) throws java.lang.Exception
{
    int i = 0;
    d:
    {
        System.out.println("d");
    }
    while(i < 10){

        i++;
        continue d;

    }
}
Run Code Online (Sandbox Code Playgroud)

- 和 -

public static void main (String[] args) throws java.lang.Exception
{
    int i = 0;
    d:
    {
        System.out.println("d");
        while(i < 10){
            i++;
            continue d;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

DEMO

但以下工作正常:

public static void main (String[] args) throws java.lang.Exception
{
    int i = 0;
    d:
    while(i < 10){
        {
            System.out.println("d");
        }
        i++;
        continue d;

    } …
Run Code Online (Sandbox Code Playgroud)

java

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

什么是全球交易?

JSR 907 JTA 1.2定义了"全局事务"术语:

UserTransaction.begin方法启动全局事务并将事务与调用线程相关联.

那是什么意思?它是最外层的交易还是什么?

java jta

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

在某些特定情况下,首选枚举常量来枚举

我正在阅读J.Bloch的Effective Java并提出以下内容(关于枚举的Setcion):

将多个行为与单个方法相关联,可以减少很少的枚举.在这种相对罕见的情况下,更喜欢使用常量特定的方法来打开自己的值

对我来说,这种使用编译时常量的情况并不清楚.难道你不能提供一个反映这个的简单例子吗?

java enums

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

Future是否需要在单独的线程中执行计算?

文档中

Future表示异步计算的结果.

是否意味着调用Future#get方法的线程不应该是执行计算的线程?那么,如果调用Future#的线程如果还没有开始计算,它是否合适?我不确定我是否可以将其称为异步计算...

java multithreading future

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

期望的数组类型[编译错误]

我正在使用以下方法:

public void m(List<? extends Object[]> objs){
    objs.stream()
        .map(oa -> oa[0])   //compile error
                            //array type expected
        .forEach(System.out::println); 

}
Run Code Online (Sandbox Code Playgroud)

DEMO

为什么不起作用?我认为扩展数组的所有东西都可以看作是一个数组.实际上我可以length从阵列中获得.

java arrays

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

如何理解scala中的monad

我只是理解了什么类型的构造函数和更高级的kinded类型状态,现在我正在尝试理解Monad.以下是Monad特质的表现scalaz:

trait Monad[F[_]] extends Applicative[F] with Bind[F] { self =>
  ////

  override def map[A,B](fa: F[A])(f: A => B) = bind(fa)(a => point(f(a)))
  //The rest is omitted

}
Run Code Online (Sandbox Code Playgroud)

问题是我不明白为什么Monad是更高的kinded类型?我们有标准的List[T],Option[T]单子不属于高kinded类型.

我不是理论类专家所以我将monad视为monads法则的容器.

为什么我们不按如下方式声明monad:

trait Monad[V]{
    //...
}
Run Code Online (Sandbox Code Playgroud)

不是更高的一种.

Option[T]在这种情况下,标准monad 如何看起来像一个子类?

monads scala higher-kinded-types

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

为什么 MAP_GROWSDOWN 映射不增长?

我试图创建MAP_GROWSDOWN映射,期望它会自动增长。如手册页中所述:

MAP_GROWSDOWN

此标志用于堆栈。它向内核虚拟内存系统指示映射应该在内存中向下扩展。返回地址比在进程的虚拟地址空间中实际创建的内存区域低一页。 触摸映射下方“守卫”页面中的地址会导致 映射增长一页。这种增长可以重复,直到映射增长到下一个较低映射的高端页面内,此时触摸“保护”页面将产生 SIGSEGV信号。

所以我写了下面的例子来测试映射的增长:

#ifndef _GNU_SOURCE
    #define _GNU_SOURCE
#endif
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <errno.h>
#include <sys/mman.h>
#include <stdio.h>

int main(void){
    char *mapped_ptr = mmap(NULL, 4096,
                            PROT_READ | PROT_WRITE,
                            MAP_ANONYMOUS | MAP_PRIVATE | MAP_STACK | MAP_GROWSDOWN,
                            -1, 0);
    if(mapped_ptr == MAP_FAILED){
        int error_code = errno;
        fprintf(stderr, "Cannot do MAP_FIXED mapping."
                        "Error code = %d, details = %s\n", error_code, strerror(error_code));
                        exit(EXIT_FAILURE);
    }
    volatile char *c_ptr_1 = mapped_ptr; //address returned by mmap
    *c_ptr_1 …
Run Code Online (Sandbox Code Playgroud)

c linux mmap segmentation-fault

6
推荐指数
3
解决办法
896
查看次数

修补模块引发模块未找到错误

我使用jdk 11并尝试了解--patch-moduleJava编译器的选项。这是我拥有的简单模块:

mdl-platform
      |
      |
      |___com.test.mdl.platform
      |            |
      |            |___ ...
      |            |
      |            |___Patch.java
      |
      |___module-info.java
Run Code Online (Sandbox Code Playgroud)

module-info.java

module com.test.mdl.plarform {
    exports com.test.mdl.platform;
}
Run Code Online (Sandbox Code Playgroud)

Patch.java

public class Patch { }
Run Code Online (Sandbox Code Playgroud)

我有Patch.java文件,想用它来修补模块。我试过了:

一世。

$ javac --patch-module com.test.mdl.platform=mdl-plarform/src/main/java/ \
                mdl-plarform/src/main/java/com/test/mdl/platform/Patch.java 
error: module not found: com.test.mdl.platform
1 error
Run Code Online (Sandbox Code Playgroud)

我还运行了一些伪造的模块路径,并且运行良好(生成了有效class文件):

二。

$ javac --patch-module com.test.mdl.platform=some/fake/path/ \
      mdl-plarform/src/main/java/com/test/mdl/platform/Patch.java 
Run Code Online (Sandbox Code Playgroud)

那么为什么第一个示例失败,但是目录存在并且包含有效目录module-info.java,但是第二个都可以正常工作,即使路径不存在?

java java-platform-module-system java-9 java-module

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

从requirements.txt中安装车轮

我正在尝试配置我requirements.txt的以下内容:

wheel
apache-airflow
Run Code Online (Sandbox Code Playgroud)

我创建python3.8 -m venv ~/test-env并尝试进行安装。问题是

python -m pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

产生大量消息

error: invalid command 'bdist_wheel'                                                                                                                                                                                            

----------------------------------------                                                                                                                                                                                        
Failed building wheel for thrift        
Run Code Online (Sandbox Code Playgroud)

我确保wheel在安装时requirements.txt安装了它:

Collecting wheel (from -r requirements.txt (line 1))                                                                                                                                                                              
Using cached https://files.pythonhosted.org/packages/00/83/b4a77d044e78ad1a45610eb88f745be2fd2c6d658f9798a15e384b7d57c9/wheel-0.33.6-py2.py3-none-any.
Run Code Online (Sandbox Code Playgroud)

但是如果我单独安装

python -m pip install wheel
python -m pip install -r requirements
Run Code Online (Sandbox Code Playgroud)

它工作正常,并且python -m pip -r requirements没有错误消息。

那么是不是可以将wheel安装放入requirements.txt?安装时处理它的正确方法是什么venv?安装前要requirements.txt安装吗?

python pip python-3.x python-venv python-wheel

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

深度优先搜索找到二叉树的最大深度

我正在解决leetcode 问题以找到二叉树的最大深度。递归解决方案相当简单,因此我尝试实现迭代 DFS 方法。这是我的想法:

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    public TreeNode() {}
    public TreeNode(int val) { this.val = val; }
    public TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

public static int maxDepthDfs(TreeNode root){
    Deque<TreeNode> stack = new LinkedList<>();
    Deque<Integer> depths = new LinkedList<>();
    TreeNode current = root;
    int maxDepth = 0;
    int currentDepth = 0;
    while(!stack.isEmpty() || current != null){
        if(current == …
Run Code Online (Sandbox Code Playgroud)

java algorithm binary-tree

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