小编Ste*_*pan的帖子

如何有效地存储大型Java地图?

我很蛮力一场比赛,我需要存储所有位置和结果的数据.数据可能会达到数百Gb.我考虑过SQL,但我担心在紧密循环中查找会破坏性能.如果已知,程序将迭代可能的位置并返回获胜的移动,如果已知所有移动都已丢失则返回最长的丢失序列并检查未知移动的结果.

存储大型商店的最佳方式是什么Map<Long,Long[]> positionIdToBestMoves?我正在考虑SQL或数据序列化.

我想通过强制解决微小的检查器 - 强制Java中的所有可行动作.头寸的上限约为100亿.它们中的大多数都不合理(即比游戏开始时存在的碎片多).大约100亿是一个合理的估计.每个Map<Long, Long[]> position映射Long positionIDLong whiteToMoveLong blackToMove.正值表示位置获胜,应选择导致存储在值中的位置的移动.负值-n意味着位置在大多数n动作中都会丢失.

搜索本身会有这样的递归:

//this is a stub

private Map<Long, Long[]> boardBook =...

//assuming that all winning positions are known
public Long nextMove(Long currentPos, int whiteOrBlack){
Set<Long> validMoves = calculateValidMoves(currentPos, whiteOrBlack);
boolean hasWinner = checkIfValidMoveIsKnownToWin(validMoves, whiteOrBlack);

if(hasWinner){  //there is a winning move - play it
    Long winningMove = getWinningMove(validMoves, whiteOrBlack);
    boardBook.get(currentPos)[whiteOrBlack] = winningMove ;    
    return winningMove ;
    } …
Run Code Online (Sandbox Code Playgroud)

java sql large-data

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

在一组地图中返回一组所有键

是否有内置的Java方法,它将多个映射作为参数并在这些映射中返回一组所有键?

就像是

public static Set<String> getKeys(Map<String, ?> ... arg2){

    Set<String> result = new HashSet<>();        
    for (Map<String, ?> map : arg2) {
        for (Map.Entry<String, ?> entry : map.entrySet()) {
            String key = entry.getKey();
            result.add(key);
        }            
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

java collections

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

如何将连接的子图 ID 分配给 Oracle SQL 中无向图中的每个节点?

如何在from_node和定义的 link_tbl 中对一组链接进行分区to_node。有 10M 个节点和 25M 个链接(每个节点不超过 20 个链接)。

例如
在此处输入图片说明

该图由三个不相交的子图组成。

  create table link_tbl as (
  select 'AY' as linkid, 'A' as from_node, 'Y' as to_node from dual union all
  select 'AB', 'A', 'B' from dual union all
  select 'CA', 'C', 'A' from dual union all      
  select 'GE', 'G', 'E' from dual union all
  select 'CB', 'C', 'B' from dual union all
  select 'EF', 'E', 'F' from dual union all
  select 'NM', 'N', 'M' from dual …
Run Code Online (Sandbox Code Playgroud)

sql graph oracle11g

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

此 GolfScript 代码如何打印 1000 位 pi?

这段代码是如何工作的?

;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;
Run Code Online (Sandbox Code Playgroud)

好像用了数组@*和循环{/**/},但是6666是什么?什么是\/

golfscript

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

Java类型转换.逻辑背后(String),. toString()和""+ int

Java是一种强类型语言.因此,编译代码中的错误更少,编码速度更慢,可读性更高.因此,需要显式类型转换,这部分是清楚的.

这些片段之间有什么区别:

(String)myInt // obviously doesn't compile
Integer.toString(myInt)
"" + myInt
Run Code Online (Sandbox Code Playgroud)

这纯粹是出于历史原因,还是背后有一些意义?
哪种方法合适?

java string casting tostring

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

如何告诉 IntelliJ 从 FXMLLoader 获取 FXML 控制器以进行语法高亮显示?

我的 JavaFX 项目遵循以下步骤: 在Model类初始化中计算最优值Controller 创建FXMLLoader 设置Controllerview.fxml 渲染视图的新实例

我的 fxml 文件没有像fx:controller="com.example.Controller". IntelliJ 无法解析方法,onMouseClicked="#processMyButtonClick"因为它不知道要使用哪个控制器。No Controller specified for top level element. 有没有办法告诉 IntelliJ。如果在 FXML 中指定了控制器,Java 会抛出Controller value already specified异常。

结果,源代码控制日志被误报“发现 100 个错误”污染,并且#methodNameinfxmlpublic void methodName(){/*..*/}停止工作之间的链接。

有没有办法告诉 IntelliJ 从 POJO 类派生 fxml 控制器?


基于“没有为顶级元素 指定控制器”,当以编程方式设置控制器时,可以在 fxml 文件中指定控制器,但这是不可取的,因为我想在加载 fxml 之前初始化控制器。

javafx fxml fxmlloader

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

生成随机数组的简单确定性方法?

我正在寻找一种简单的方法来填充大int[] testArray数据.方法应接受单个参数来生成确定性的整数序列,但乍看之下看起来像噪声.

想到这样的事情,但数据可能有模式.

public int[] populate(int arraySize, int somePrime){
int[] testArray = new int[arraySize];
int offset = -100000; 
long fib = 0; long fibm1 = 1; long fibm2 = 1; 
//...
for(int i = offset; i< testArray.length; i++){
    fib= fibm1+ fibm2;
    fibm2= fibm1;
    fibm1= fib;
    if(i >= 0){  testArray[i] = (int) fib%somePrime; }
    }

return testArray[i];
}
Run Code Online (Sandbox Code Playgroud)

什么是更好的方法?

java random algorithm

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

在Java中设置Map的最小大小

在我的程序中,键值对经常被添加到a,Map直到添加了1G的对.地图调整大小会减慢进程.如何设置最小Map尺寸,例如1000000007(这是一个素数)?

java size dictionary

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