小编Cla*_*oft的帖子

Swift中的'open'关键字是什么?

ObjectiveC.swift从标准库文件包含大约228行代码下面几行:

extension NSObject : Equatable, Hashable {
  /// ...
  open var hashValue: Int {
    return hash
  }
}
Run Code Online (Sandbox Code Playgroud)

open var在这种情况下意味着什么,或者open一般来说关键字是什么?

syntax declaration modifier swift swift3

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

Java 8数组构造函数引用如何工作?

假设我们有一个IntFunction返回整数数组的变量:

IntFunction<int[]> i;
Run Code Online (Sandbox Code Playgroud)

使用Java 8泛型,可以使用如下构造函数引用初始化此变量:

i = int[]::new
Run Code Online (Sandbox Code Playgroud)

Java编译器如何将其转换为字节码?

我知道对于其他类型,例如String::new,它可以使用invokedynamic指向String构造函数的指令java/lang/String.<init>(...),这只是一个具有特殊含义的方法.

这对数组有什么用处,看到有构造数组的特殊指令?

java arrays java-8 method-reference

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

java.util.logging.Logger在哪里存储他们的日志

这可能是一个愚蠢的问题,但我有点迷失java Logger

private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");
Run Code Online (Sandbox Code Playgroud)

我在哪里可以看到日志?此引用来自java.util.logging.Logger库:

在每次日志记录调用时,Logger最初会根据记录器的有效日志级别对请求级别(例如SEVERE或FINE)执行廉价检查.如果请求级别低于日志级别,则日志记录调用立即返回.
在通过此初始(廉价)测试后,Logger将分配一个LogRecord来描述日志消息.然后,它将调用过滤器(如果存在)以更详细地检查是否应该发布记录.如果通过它,则将LogRecord发布到其输出Handlers

这是否意味着如果我有3个request level日志:

logger.log(Level.FINE, "Something");
logger.log(Level.WARNING, "Something");
logger.log(Level.SEVERE, "Something");
Run Code Online (Sandbox Code Playgroud)

log level是严重的,我可以看到所有三个日志,如果我log level是警告,那么我看不到严重日志,这是正确的吗?我该怎么设置log level

java java.util.logging

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

为什么Java Compiler副本最终会阻塞?

使用简单try/finally块编译以下代码时,Java Compiler将生成以下输出(在ASM Bytecode Viewer中查看):

码:

try
{
    System.out.println("Attempting to divide by zero...");
    System.out.println(1 / 0);
}
finally
{
    System.out.println("Finally...");
}
Run Code Online (Sandbox Code Playgroud)

字节码:

TRYCATCHBLOCK L0 L1 L1 
L0
 LINENUMBER 10 L0
 GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
 LDC "Attempting to divide by zero..."
 INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
L2
 LINENUMBER 11 L2
 GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
 ICONST_1
 ICONST_0
 IDIV
 INVOKEVIRTUAL java/io/PrintStream.println (I)V
L3
 LINENUMBER 12 L3
 GOTO L4
L1
 LINENUMBER 14 L1
FRAME SAME1 java/lang/Throwable
 ASTORE 1
L5
 LINENUMBER 15 L5
 GETSTATIC java/lang/System.out : …
Run Code Online (Sandbox Code Playgroud)

java jvm javac try-catch-finally try-finally

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

EF Core的间歇性错误:连接不支持MultipleActiveResultSets

我有一个使用EF Core的ASP.Net Core应用程序.

我使用ASP.Net Identity并为我的应用程序的实体共享相同的DBContext.

我已将连接字符串设置为Azure SQL数据库,以使MultipleActiveResultSet = True.

它可以工作一两天,但最终失败并出现错误:

该连接不支持MultipleActiveResultSets.

我不认为MARS是真正的问题,因为它在前两天起作用了.

我正在使用ASP.Net Core的内置DI来设置我的DbContext.

services.AddDbContext<AppDbContext>(options =>
  options.UseSqlServer(appDbContextConnectionString));
Run Code Online (Sandbox Code Playgroud)

我的理解是上面的DbContext的默认生命周期是Transient(每个Web请求).

是否可以与ASP.Net Identity共享相同的DBContext,或者我应该为我的应用程序的实体分别使用一个DBContext,指向相同的数据库?

我不知道这是EF Core,ASP.Net Core还是SQL Azure配置的问题.

entity-framework-core azure-sql-database asp.net-core

16
推荐指数
3
解决办法
3907
查看次数

与顺序无关的哈希算法

我目前正在为自定义编程语言开发一个集合库.我已经有了几种数据类型(Collection,List,Map,Set)和它们的实现(可变和不可变),但到目前为止我所缺少的是hashCodeequals.虽然列表没有问题,因为它们是有序集合,但它们对集合和地图起着特殊的作用.如果两个集合具有相同的大小和相同的元素,则它们被认为是相等的,并且集合维护它们的顺序不应该在它们的相等性上有所不同.由于equals-hashCode-contract,hashCode实现还必须反映这种行为,这意味着具有相同元素但排序不同的两个集合应具有相同的哈希码.(这同样适用于地图,这在技术上是一组键值对)

示例(伪代码):

let set1: Set<String> = [ "a", "b", "c" ]
let set2: Set<String> = [ "b", "c", "a" ]
set1 == set2       // should return true
set1.hashCode == set2.hashCode // should also return true
Run Code Online (Sandbox Code Playgroud)

我如何实现一个相当好的哈希算法,hashCode上面例子中的s返回相同的值?

java algorithm hash set

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

标记和扫描与自动参考计数

众所周知,HotSpot JVM使用并发的Mark-and-Sweep G arbage C ollector来释放堆上未使用的对象.从某种意义上说,这是有用的,程序员在编写程序时不必处理内存,但偶尔会出现"GC延迟",释放所有未使用的对象.

同样地,新的SWIFT编程语言还利用被称为ARC的自动存储器管理系统,它与工作 utomatic ř eference Ç ounting.这种垃圾收集的问题是循环引用,必须由程序员专门处理,weakunowned引用以避免内存泄漏.

但这两者之间还有其他重大差异吗?哪种情况比另一种更好或更差?

java garbage-collection mark-and-sweep automatic-ref-counting swift

12
推荐指数
0
解决办法
1099
查看次数

为什么不能使用具有多态返回类型的原始类型?

考虑以下两个类:

public interface Foo<T>
{
    public T moo();
}

public class IntFoo implements Foo<Integer>
{
    public int moo()
    {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码将产生错误,表示与重写方法的返回类型不兼容.严格来说,这是事实,因为并不直接相等.但是,我们都知道可以使用auto(un)boxing将它们隐式转换为彼此.更少知道的是编译器在此示例中生成桥接方法:publicintmoointIntegerintInteger

public class IntFoo implements Foo<Integer>
{
    public <synthetic> <bridge> Object moo()
    {
        return this.moo(); // upcast
    }

    public Integer moo() {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

必须这样做是因为JVM在解析方法时区分返回类型,并且由于擦除了返回类型Foo.moois Object,编译器生成了具有与方法相同签名的桥接方法.

我想知道为什么这对原始多态返回类型也不起作用:

public class IntFoo implements Foo<Integer>
{
    public <synthetic> <bridge> Object moo()
    {
        return Integer.valueOf(this.moo());
    }

    public …
Run Code Online (Sandbox Code Playgroud)

java polymorphism primitive return-type

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

使用不同Java版本的Strange Default Method行为

假设我有以下类层次结构:

interface Collection<E>
{
    Collection<E> $plus(E element)
}

interface MutableCollection<E> extends Collection<E>
{
    @Override
    MutableCollection<E> $plus(E element)
}

interface Set<E> extends Collection<E>
{
    @Override
    Set<E> $plus(E element)
}

interface MutableSet<E> extends Set<E>, MutableCollection<E>
{
    @Override
    default MutableSet<E> $plus(E element)
    {
        // ... implementation
    }
}

abstract class AbstractArraySet<E> implements Set<E>
{
    // ... no $plus(...) implementation
}

class ArraySet<E> extends AbstractArraySet<E> implements MutableSet<E>
{
    // ... no $plus(...) implementation
}
Run Code Online (Sandbox Code Playgroud)

如您所见,只有MutableSet该类提供了该$plus方法的实现.在测试用例中,我在类型的实例上调用此方法ArraySet.测试总是在CI环境中传递,而它总是AbstractMethodError在我的本地环境中失败.在这两种情况下,我都在使用Gradle(2.7).


错误: …

java interface abstract-methods java-bridge-method default-method

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

Java 9中的JavaLangAccess和SharedSecrets

似乎在Java 9中删除了包中的SharedSecretsJavaLangAccesssun.misc.

Java 9中是否有替代这些类提供的功能?

java java-9

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