我很蛮力一场比赛,我需要存储所有位置和结果的数据.数据可能会达到数百Gb.我考虑过SQL,但我担心在紧密循环中查找会破坏性能.如果已知,程序将迭代可能的位置并返回获胜的移动,如果已知所有移动都已丢失则返回最长的丢失序列并检查未知移动的结果.
存储大型商店的最佳方式是什么Map<Long,Long[]> positionIdToBestMoves?我正在考虑SQL或数据序列化.
我想通过强制解决微小的检查器 - 强制Java中的所有可行动作.头寸的上限约为100亿.它们中的大多数都不合理(即比游戏开始时存在的碎片多).大约100亿是一个合理的估计.每个Map<Long, Long[]> position映射Long positionID到Long whiteToMove和Long 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方法,它将多个映射作为参数并在这些映射中返回一组所有键?
就像是
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) 如何在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) 这段代码是如何工作的?
;''
6666,-2%{2+.2/@*\/10.3??2*+}*
`1000<~\;
Run Code Online (Sandbox Code Playgroud)
好像用了数组@*和循环{/**/},但是6666是什么?什么是\/?
Java是一种强类型语言.因此,编译代码中的错误更少,编码速度更慢,可读性更高.因此,需要显式类型转换,这部分是清楚的.
这些片段之间有什么区别:
(String)myInt // obviously doesn't compile
Integer.toString(myInt)
"" + myInt
Run Code Online (Sandbox Code Playgroud)
这纯粹是出于历史原因,还是背后有一些意义?
哪种方法合适?
我的 JavaFX 项目遵循以下步骤: 在Model类初始化中计算最优值Controller
创建FXMLLoader
设置Controller和view.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 个错误”污染,并且#methodNameinfxml和public void methodName(){/*..*/}停止工作之间的链接。
有没有办法告诉 IntelliJ 从 POJO 类派生 fxml 控制器?
基于“没有为顶级元素 指定控制器”,当以编程方式设置控制器时,可以在 fxml 文件中指定控制器,但这是不可取的,因为我想在加载 fxml 之前初始化控制器。
我正在寻找一种简单的方法来填充大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)
什么是更好的方法?
在我的程序中,键值对经常被添加到a,Map直到添加了1G的对.地图调整大小会减慢进程.如何设置最小Map尺寸,例如1000000007(这是一个素数)?
java ×5
sql ×2
algorithm ×1
casting ×1
collections ×1
dictionary ×1
fxml ×1
fxmlloader ×1
golfscript ×1
graph ×1
javafx ×1
large-data ×1
oracle11g ×1
random ×1
size ×1
string ×1
tostring ×1