小编Bru*_*Kim的帖子

Codename One如何运作?

我正在寻找替代方案来开发多个移动平台,并找到了使用Java作为通用语言的Codename One,而不是HTML/CSS/JS或脚本语言.

我找不到的是它是如何工作的.它是否将JVM与iOS和Win7的应用程序捆绑在一起,并在Android中使用Dalvik?它是否将源代码转换为本机代码,我们是否可以访问此源代码?还有其他魔法,考虑到他们承诺"不妥协"吗?在编码不可知的Java时我应该注意哪些限制?

先发制人的罢工:这是一个关于Codename One的问题,不是关于我应该选择哪个跨平台,或者我应该去当地还是应该去网络.

mobile cross-platform codenameone parparvm

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

生成器模式与继承

我想将Web服务URL请求表示为对象,并发现有许多常见参数可以在继承层次结构中"冒泡".一个请求可能有很多参数,一些是必需的,另一些是可选的,我相信Bloch的Builder模式是一个很好的选择,用一个流畅的接口模拟命名参数.

具体来说,我正在设计Google Maps Web服务API,它具有一般的Web服务请求

http://maps.googleapis.com/maps/api/service/output?{parameters}
Run Code Online (Sandbox Code Playgroud)

service并且output是必需参数和sensor必需参数.还有一个可选参数language.

每个服务都有一组强制和可选参数.地理编码服务有两个可选参数,boundsregion.它还具有互斥的强制参数,address或者location指定服务类型(分别为直接或反向地理编码).我用新的儿童班来代表这种互斥.

我想象类层次结构如下:

  .-----.
  | Url |
  '-----'
     ^
     |
.---------.
| Request |
'---------'
     ^
     |----------------------------+--------------...
.---------.                 .------------.
| Geocode |                 | Directions |
'---------'                 '------------'
     ^                            ^
     |------------+               .
 .--------.  .---------.          .
 | Direct |  | Reverse |          .
 '--------'  '---------'
Run Code Online (Sandbox Code Playgroud)

然后,我想做类似以下的事情:

String output = "xml";
boolean sensor = true;
String address = "Av. Paulista, São Paulo, Brasil"; …
Run Code Online (Sandbox Code Playgroud)

java design-patterns builder

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

DiscriminatorColumn作为主键/ id的一部分

情况

我有一个实体,有一个DiscriminatorColumn,配置为单表继承:

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE")
public class ContainerAssignment{
...
}
Run Code Online (Sandbox Code Playgroud)

'ContainerAssignment'引用了另一个实体:

@JoinColumn(name="CONTAINER_ID")
private Container container;
Run Code Online (Sandbox Code Playgroud)

容器可以具有ContainerAssignment每种类型中的一种.这意味着ContainerAssignment表的主键由CONTAINER_ID和定义TYPE.

ContainerAssignment 有一些子类,例如

@Entity
@DiscriminatorValue("SOME_TYPE")
public class SomeTypeOfContainerAssignment extends ContainerAssignment{
...
}
Run Code Online (Sandbox Code Playgroud)

SomeTypeOfContainerAssignment给定的只有一个实例CONTAINER_ID.

问题

如果我将JPA定义@Id为ContainerAssignment表上的Container,我可以做到entityManager.find(SomeTypeOfContainerAssignment.class, containerId),这很好.这有点像SELECT * FROM CONTAINER_ASSIGNMENT WHERE CONTAINER_ID = 1 AND TYPE = 'SOME_TYPE';.它知道它需要在这里进行TYPE检查,因为@DiscriminatorValue("SOME_TYPE")实体上有注释.

但是,这意味着从Container到ContainerAssignment的后引用中断,因为Container实际上不是主键.例如,如果Container有一个@OneToOne(mappedBy=container) private SomeTypeOfContainerAssignment assignment;,当你读入一个容器时,它将通过类似的方式读取赋值SELECT * FROM CONTAINER_ASSIGNMENT WHERE CONTAINER_ID = 1;,而不进行类型检查.这给了它一个容器的所有赋值,然后它看起来随机选择一个,可能是错误的类型,在这种情况下,它抛出一个异常.

相反,我@Id …

orm jpa composite-primary-key discriminator

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

OpenGL软件渲染替代方案

我需要在Windows中使用软件渲染OpenGL,并且已经发现了Mesa3D,它没有提供DLL,而且我有一些痛苦要构建......有替代方案吗?

windows opengl rendering

5
推荐指数
2
解决办法
9136
查看次数

ifeq / ifne JVM操作码总是分支

[TL; DR:以下JVM字节码指令似乎不起作用:

iconst_0
istore 6
...sequential
iinc 6 1
jsr L42
...
; L42
iload 6
ifeq L53 ; Always branches!!!
astore 8
iinc 6 -1
; L53
LDC 100
ISUB     ; ERROR, returnAddress is at the top of the stack
Run Code Online (Sandbox Code Playgroud)

可以在此处找到测试.class (具有稍微复杂的逻辑)。如果您想进一步了解为什么我会看到这些说明,请继续阅读。]

我正在编写针对JVM字节码的Whitespace编译器。尽管是一种深奥的语言,但是Whitespace向堆栈计算机描述了一组有趣的汇编指令,该堆栈计算机很好地映射到了JVM。

空格具有标签,它们都是跳转(goto / jump-if-zero / jump-if-negative)和函数调用的目标。相关说明(由我给定的名称,在规范中以空格,制表符和换行符的组合形式给出)为:

  • mark <label>:为以下说明设置标签
  • jump[-if-neg|-if-zero] <label>:无条件或有条件地跳转到给定标签
  • call <label>:调用标签所指向的函数
  • end <label>:结束功能,返回到调用方。

我的编译器以类的main方法输出整个Whitespace程序。实现call和的最简单方法end是使用JSRRET操作码,用于实现子例程。JSR操作完成后,堆栈将包含一个returnAddress引用,该引用应存储在变量中,以供以后在中使用end

但是,mark …

java jvm java-bytecode-asm whitespace-language

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

在sql中加入计数

我对SQL很陌生,我正在尝试做一些不是愚蠢的事情.为了给出一些背景信息,我正在比较运营商分支中车辆的规划和实现用途,并且需要计算两者的出现次数.我有一个with subquery as返回类似以下内容的东西

PLANNED  | REALIZED
---------+----------
TRUCK    | BI-TREM
TRUCK    | TRUCK
TRUCK    | TRUCK
TRUCK    | TRUCK
TRUCK    | TRUCK
CARRETA  | CARRETA
CARRETA  | CARRETA
TRUCK    | KOMBI
TRUCK    | BI-TREM
CARRETA  | KOMBI
CARRETA  | KOMBI
TRUCK    | TRUCK
CARRETA  | CARRETA
CARRETA  | BI-TREM
CARRETA  | CARRETA
CARRETA  | CARRETA
TRUCK    | BI-TREM
Run Code Online (Sandbox Code Playgroud)

并希望返回类似以下内容

VEHICLE | TOTAL_PLANNED | TOTAL_REALIZED
--------+---------------+---------------
CARRETA | 8             | 5
TRUCK   | 9             | 5
BI-TREM | 0 …
Run Code Online (Sandbox Code Playgroud)

sql union join

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

并发修改例外

java.util.ConcurrentModificationException在这个方法上得到以下内容

private AtomicReference<HashMap<String, Logger>> transactionLoggerMap = new AtomicReference<HashMap<String,Logger>>();

public void rolloutFile() {

    // Get all the loggers and fire a temp log line.
    Set<String> transactionLoggerSet = (Set<String>) transactionLoggerMap.get().keySet();
    Iterator<String> transactionLoggerSetIter = transactionLoggerSet.iterator();
    while(transactionLoggerSetIter.hasNext()){
        String key = (String) transactionLoggerSetIter.next();
        Logger txnLogger = transactionLoggerMap.get().get(key);
        localLogger.trace("About to do timer task rollover:");
        txnLogger.info(DataTransformerConstants.IGNORE_MESSAGE);
    }
}
Run Code Online (Sandbox Code Playgroud)

请建议,如果我使用原子参考,我如何获得como?

java concurrency multithreading

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

Python生成器是否有`let`或`as`关键字?

我是从Clojure来到Python的,并且想知道是否有办法在生成器中有一个"临时变量".

在Clojure中,我可以使用let内部的for生成器来命名项目的中间计算:

(def fnames ["abc1234" "abcdef" "1024"])
(for [fname fnames
      :let [matches (re-matches #"(\w+?)(\d+)" fname)]
      :when matches]
  matches)
;=> (["abc10" "abc" "1234"] ["1024" "1" "024"])
Run Code Online (Sandbox Code Playgroud)

在Python中,我需要使用两次生成器来过滤掉None结果:

fnames = ["abc1234", "abcdef", "1024"]
matches = [re.match('(\w+?)(\d+)', fname) for fname in fnames]
matches = [match.groups() for match in matches if match is not None]
# [('abc', '1234'), ('1', '024')]
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法做以下事情?如果没有,最恐怖的方式是什么?

matches = [re.match('(\w+?)(\d+)', fname) as match 
   for fname in fnames
   if match is not None]
Run Code Online (Sandbox Code Playgroud)

python syntax clojure generator

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