我有合并排序的示例实现,一个使用 Fork-Join,另一个是直接递归函数。
看起来 fork-join 比直接递归慢,为什么?
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;
class DivideTask extends RecursiveTask<int[]> {
private static final long serialVersionUID = -7017440434091885703L;
int[] arrayToDivide;
public DivideTask(int[] arrayToDivide) {
this.arrayToDivide = arrayToDivide;
}
@Override
protected int[] compute() {
//List<RecursiveTask> forkedTasks = new ArrayList<>();
/*
* We divide the array till it has only 1 element.
* We can also custom define this value to say some
* 5 elements. In which case the return would be …Run Code Online (Sandbox Code Playgroud) c#donet可以为以下java代码生成相同的UUID吗?如果是这样的话?我试过GUID但没有用!
文本:
String cleartext = "CN=CompanyName;mac=some mac;@host=somehost;email=admin@somedomain.com;issued=01/01/20013;expire=12/12/2013";
Run Code Online (Sandbox Code Playgroud)
Java代码:
UUID uuid = UUID.nameUUIDFromBytes(cleartext.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
C#代码:
byte[] b = System.Text.Encoding.UTF8.GetBytes(cleartext);
Guid uid = new Guid(b);
Console.Write(uid.ToString());
Run Code Online (Sandbox Code Playgroud)
REF 早先的讨论
如何获得今年的第一个星期一?
select TRUNC(date'2015-01-01','YYYY')
,NEXT_DAY(TRUNC(date'2015-01-01','YEAR')+1,'MONDAY')
from dual;
01-JAN-2015 05-JAN-2015
Run Code Online (Sandbox Code Playgroud) 我有以下顺序代码,使用另一个键列表从哈希映射中删除条目.地图大小可以是50-100k条目,删除密钥列表可以是2k - 10k.我正在寻找使用新的java-8流的解决方案......
List<Long> removed = new ArrayList<Long>();
for (Long k : removelist) {
if (null != map.remove(k)) {
removed.add(k);
}
}
Run Code Online (Sandbox Code Playgroud) 我有两种类型的处理实现.不确定为什么流forEach循环抱怨变量'i'必须是final.但如果最终,那么如何解决计算'i'的逻辑问题?
public static void main(String[] args) {
String str = "123456789";
int i = 0;
//Non Stream
for (char c : str.toCharArray()) {
if (c >= 48 && c <= 57) {
i = i * 10 + (c - 48);
}
}
System.out.println(i);
i = 0;
// WHY compiler fails for variable 'i' here?
str.chars().forEach((c) -> {
if (c >= 48 && c <= 57) {
i = i * 10 + (c - 48);
}
});
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud) 我使用的是java 7,我的数据流包含以下行:
SENDER='CALTRANS'
SENDER='BIGO'
SENDER='FIO'
..
..
Run Code Online (Sandbox Code Playgroud)
我想只提取单引号中的数据.即
CALTRANS
BIGO
FIO
Run Code Online (Sandbox Code Playgroud)
...... ..
关于正则表达式的任何建议?
我有几个字符串多个掩码.我想知道有没有更好的方法来处理字符串与掩码解析而不是String.spilt和循环标记和识别序列等.这个代码也很笨拙,许多令牌逻辑必须编码.
样品掩码可以是:
示例字符串:
示例代码:
String[] arr = input.split("-");
int pos = 0;
for(String k:arr){
if(pos == 0) {
//-- k is of PROD
...
...
}
..
...
pos++;
}
Run Code Online (Sandbox Code Playgroud)
针对每种掩码类型保留上述类型的代码.
我有一个方法,通过3个并发线程在对象实例上调用.我感兴趣的锁是基于价值而不是对象.例如,如果两个线程(T1,T2)正在处理RecordID = 123并且T3正在处理RecordID = 456.该方法应仅锁定T2,T3应继续执行.
目前,我正在使用Lock,但如果T1被锁定,它将锁定T2和T3.
public void doSomething(String id){
try {
lock.lock();
MyRecord r = find(id);
...
....
} finally{
lock.unlock();
}
}
Run Code Online (Sandbox Code Playgroud)