小编scr*_*avy的帖子

Java Class 对象是唯一的/单例的吗?

类对象是否保证在 JVM 中是唯一的,它们是单例吗?即会

getClass() == getClass()
Run Code Online (Sandbox Code Playgroud)

总是成立并且是

a == b
Run Code Online (Sandbox Code Playgroud)

当且仅当为真

a.equals(b)
Run Code Online (Sandbox Code Playgroud)

其中 a 和 b 是类型Class<?>

java singleton class

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

是否有必要使用JPA和MySQL获取实体以引用它?

我有一个应用程序创建了许多引用其他两个实体的行,即行中有两个实现ManyToOne关系的外键引用.

这些是被引用的两个实体:

CREATE TABLE a (
    `id` INT NOT NULL auto_increment,
    -- lots of other attributes,
    PRIMARY KEY (id)
)

CREATE TABLE b (
    `id` INT NOT NULL auto_increment,
    -- lots of other attributes,
    PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

这是引用a和b的实体:

CREATE TABLE x (
    `id` INT NOT NULL auto_increment,
    `f_a` INT NOT NULL,
    `f_b` INT NOT NULL,
    CONSTRAINT `FK_a` FOREIGN KEY (`f_a`) REFERENCES `a` (`id`),
    CONSTRAINT `FK_b` FOREIGN KEY (`f_b`) REFERENCES `b` (`id`),
)
Run Code Online (Sandbox Code Playgroud)

a,b和x通过EclipseLink使用JPA映射到A,B和X类,它非常基本,没有任何花哨的东西.

当我在Java中创建一个X时,我会执行以下操作(注意a和b已经存在,我只知道它们的ID - 它们来自遗留应用程序):

A a = …
Run Code Online (Sandbox Code Playgroud)

java mysql jpa foreign-keys

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

使用STUArray无法为函数找到合适的签名(GHC也不能)

我使用ST-Monad和未装箱的STArrays(STUArray)构建了一个查找矩阵行列式的函数.矩阵的类型如下:

newtype Matrix e = Matrix (Array Int (UArray Int e))
Run Code Online (Sandbox Code Playgroud)

也就是说,一个包含不可变的未装箱数组的不可变数组.这将要求我将谓词添加IArray UArray e到处理的函数中Matrix,而函数又需要FlexibleContexts.好的,完成了.

用于计算行列式的函数具有以下签名:

detST :: (IArray UArray e, MArray (STUArray s) e (ST s),
          Num e, Eq e, Division e)
   => Array Int (UArray Int e) -> ST s e
Run Code Online (Sandbox Code Playgroud)

我还需要添加Predicate,MArray (STUArray s) e (ST s)因为内部数组被转换为可变数组(外部装箱,内部未装箱).

这个功能可以像这样使用:

main = do
    let m@(Matrix x) = matrix [ [1,-2,3,234]
                              , [5,2,3,-3]
                              , [7,18,3,40]
                              , [2,9,71,0] ]
        d = runST (detST x) :: …
Run Code Online (Sandbox Code Playgroud)

arrays monads state haskell state-monad

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

GHCi中的类型推断与手动签名

当我输入

:t map length . sum
Run Code Online (Sandbox Code Playgroud)

进入GHCi,它说类型将是:

map length . sum :: Num [[a]] => [[[a]]] -> [Int]
Run Code Online (Sandbox Code Playgroud)

但是,如果我创建一个type-test.hs包含的文件

x :: Num [[a]] => [[[a]]] -> [Int]
x = map length . sum
Run Code Online (Sandbox Code Playgroud)

ghc和ghci都抱怨:

type-test.hs:1:1:
    Non type-variable argument in the constraint: Num [[a]]
    (Use -XFlexibleContexts to permit this)
    In the type signature for `x': x :: Num [[a]] => [[[a]]] -> [Int]
Run Code Online (Sandbox Code Playgroud)

为什么ghci允许我推断出这种类型(使用:t),什么时候没有启用FlexibleContexts?

haskell type-inference ghc ghci

4
推荐指数
3
解决办法
2654
查看次数

sizeof(int)保证等于sizeof(void*)

数据类型"int"的大小是否始终等于c语言中指针的大小?

我只是好奇.

c sizeof

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

在Haskell中,在类A类的函数中从另一个类型B返回一些东西

我正在做一个有趣的项目,我正在尝试从Java重做一些基本数据类型和概念.目前我正在处理迭代器.

我的方法如下:(1)将接口转换为类型类(2)为实际实现声明自定义数据类型和实例

所以我创建了以下类型类:

class Iterator it where
    next :: it e -> (it e, e)
    hasNext :: it e -> Bool

class Iterable i where
    iterator :: Iterator it => i e -> it e

class Iterable c => Collection c where
    add :: c e -> e -> c e
Run Code Online (Sandbox Code Playgroud)

是的,我正在尝试翻译迭代器的概念(在这种情况下,它只是一个围绕实际列表的框).

这是我对一个简单List的实现:

data LinkedList e = Element e (LinkedList e) | Nil
    deriving (Show, Eq)

instance Collection LinkedList where
    add Nil e = Element e Nil
    add (Element x …
Run Code Online (Sandbox Code Playgroud)

java haskell types type-constraints

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

如何在单个绘图命令的gnuplot命令脚本中嵌入多个数据集?

我发现在gnuplot中,可以从一个文件中获取多个曲线/数据集:

splot "file.dat" using 1:2:3, splot "file.dat" using 1:4:5
Run Code Online (Sandbox Code Playgroud)

也可以将数据嵌入脚本中,如下所示:

splot "-" using 1:2:3
 1 0 1
 1 2 3
 0.5 3 1.5
Run Code Online (Sandbox Code Playgroud)

但是,以下似乎不起作用:

splot "-" using 1:2:3, "-" using 1:4:5
 1 0 1 4 4
 1 2 3 3 4
 0.5 3 1.5 2.5 -1
Run Code Online (Sandbox Code Playgroud)

这是故意的吗,是否存在解决方法?或者根本不可能吗?

gnuplot

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

具有Haskell功能依赖性的不明确类型变量

我正在使用Haskell的FunctionalDependencies-Extension以及MultiParamTypeClasses.我定义了以下内容:

class Add a b c | a b -> c where
    (~+) :: a -> b -> c
    (~-) :: a -> b -> c
    neg :: a -> a
    zero :: a
Run Code Online (Sandbox Code Playgroud)

哪个工作正常(我尝试过Int和Double的实例,最终目标是能够在没有显式转换的情况下添加Int和Doubles).

当我尝试为neg或(〜 - )定义默认实现时,如下所示:

class Add ...
    ...
    neg n = zero ~- n
Run Code Online (Sandbox Code Playgroud)

GHCi(7.0.4)告诉我以下内容:

Ambiguous type variables `a0', `b0', `c0' in the constraint:
  (Add a0 b0 c0) arising from a use of `zero'
Probable fix: add a type signature that fixes these type variable(s)
In …
Run Code Online (Sandbox Code Playgroud)

haskell types typeclass functional-dependencies

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

Scala中构造函数的通用参数

考虑以下设计的Java示例:

public class Example {

    private final Object value;
    private final List<?> aListOfTheseThings;

    public <T> Example(final T t, final List<T> aListOfTheseThings) {
        this.value = t;
        this.aListOfTheseThings = aListOfTheseThings;
    }

}
Run Code Online (Sandbox Code Playgroud)

我在这个例子中关心的是:

  1. Example 没有参数化
  2. 构造函数 paremeterized并确保无论您传入什么,列表都参数化为相同类型t

(这是一个人为的例子,我并不在乎,(2)但我确实关心那里有一个类型参数,这个类参数在类的定义中没有提到).

现在在Scala中我尝试了以下方法:

class Example private[this](
  private val value: AnyRef,
  private val aListOfTheseThings: List[_]) {

  def this[T](t: T, aListOfTheseThings: List[T]) {
    this(t, aListOfTheseThings)
  }
}
Run Code Online (Sandbox Code Playgroud)

......但这是不可能的.显然,类型参数在构造函数(in this)中无效.

是否有机会将上述Java代码翻译成Scala?

java generics constructor scala

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

如何从实际函数中推导出std :: function参数?

上一堂课

class Foo {
 public:
  std::shared_ptr<const Bar> quux(const std::string&, std::uint32_t);
}
Run Code Online (Sandbox Code Playgroud)

我可以声明一个std::function具有相同接口的:

std::function<std::shared_ptr<const Bar>(const std::string&, std::uint32_t)> baz = ...
Run Code Online (Sandbox Code Playgroud)

有没有一种压缩该声明的方法,使得to的模板参数std::function是从该方法的声明派生的,例如:

std::function<functype(X::quux)> baz = ...
Run Code Online (Sandbox Code Playgroud)

其中functype是虚C ++操作类似decltype。有没有办法做到这一点/ 是否具有这种能力?

我确实看到该方法的签名实际上稍有不同,因为它也需要对该this对象的引用/指针。我也可以派出这样的签名。

c++ templates types c++11 std-function

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

在构建过程中插入自定义构建代码/使用Maven调用Java程序

我有一个项目,其中有一个第三方工具(通常是从命令行调用)生成的代码。我想将此工具与我们的Maven构建设置保持一致,即,我想调用它,例如之前maven compile

有没有一种方法可以使用众多的Maven插件之一来执行任意Java程序?我将它插入POM的哪里?

java maven

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

是否有大写和小写的Unicode字母?

是否有Unicode代码点代表字母,但既不是大写也不是小写?

尤其是对于有其Java的功能特点java.lang.Character.isLetter将返回true,但java.lang.Character.isUpperCasejava.lang.Character.isLowerCase将返回false?

java unicode

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

C++ 11同时阅读bool

当我有一个std::condition_variable cond和一些bool flag我可以使用谓词等待它:

cond.wait_for(some_lock, std::chrono::milliseconds(100), { return flag; })
Run Code Online (Sandbox Code Playgroud)

现在我想知道:从技术上讲,C++只在C++ 11中得到了一个合适的多线程内存模型,并且flag在多线程上下文中访问变量基本上是未定义的.所以我应该声明它std::atomic<bool>来逃避这种未定义的行为,对吧?

我特别想知道:如果我没有声明它std::atomic,那么我是否会一直读取陈旧的值,flag因为更新永远不会进入主内存?或者这是"理论上是,但实际上从未发生过"的情况?

multithreading memory-model c++11

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