我有这样的并发例程,
Routine 1()
{
for 30 times
Send string
}
Routine 2 (out <-chan string)
{
for
case str := <- out:
fmt.Println(str)
}
Run Code Online (Sandbox Code Playgroud)
现在,我想从例程1字符串发送,如string + int + string +系统时间,以纳秒为单位.任何人都可以帮助我如何实现这一目标.
我有一个字符串,其中包含一系列位(如"01100011")和一些while循环中的整数.例如:
while (true) {
int i = 100;
String str = Input Series of bits
// Convert i and str to byte array
}
Run Code Online (Sandbox Code Playgroud)
现在我想要一个很好的最快方法将字符串和int转换为字节数组.到目前为止,我所做的是转换int为String然后getBytes()在两个字符串上应用该方法.但是,它有点慢.有没有其他方法可以做到(可能)比那更快?
我有以下代码:
import java.io.*;
import java.util.concurrent.* ;
public class Example{
public static void main(String args[]) {
try {
FileOutputStream fos = new FileOutputStream("1.dat");
DataOutputStream dos = new DataOutputStream(fos);
for (int i = 0; i < 200000; i++) {
dos.writeInt(i);
}
dos.close(); // Two sample files created
FileOutputStream fos1 = new FileOutputStream("2.dat");
DataOutputStream dos1 = new DataOutputStream(fos1);
for (int i = 200000; i < 400000; i++) {
dos1.writeInt(i);
}
dos1.close();
Exampless.createArray(200000); //Create a shared array
Exampless ex1 = new Exampless("1.dat");
Exampless ex2 …Run Code Online (Sandbox Code Playgroud) 任何人都可以帮助我解决以下问题:
我的代码如下:
if(cond1 && cond2 && .. && cond10)
Run Code Online (Sandbox Code Playgroud)
这里,cond1是昂贵的操作,其输出是布尔值.
现在我的问题是当cond2输出为假时JAVAC会做什么.具体来说,是评估cond3的输出还是停止评估?
更具说明性,
if(cond1 && cond2 && .. && cond10)
//do this
Run Code Online (Sandbox Code Playgroud)
和
if(cond1){
if(cond2){
.
.
.
if(cond10){
//do this
}
Run Code Online (Sandbox Code Playgroud)
在java中是相同的(在执行方式的情况下)?
我正在使用以下代码从文件中读取子序列.
FileChannel channel = new RandomAccessFile("abc.txt", "r").getChannel();
ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
CharBuffer cbuf = buffer.asCharBuffer();
String str = cbuf.subSequence(0, 1).toString();
System.out.println("str = " + str);
Run Code Online (Sandbox Code Playgroud)
但是,这给出了输出"str =?" 任何人都可以帮助我为什么会发生这种情况以及如何解决这个问题?对不起,我是NIO的新手.
另外一件事,当我添加System.out.println(缓冲区); 它给出输出"java.nio.DirectByteBufferR [pos = 0 lim = 16 cap = 16]".
System.out.println((char)buffer.get(0))给出正确的输出意味着第一个字符.
鉴于此Java代码:
int fst = 5;
int snd = 6;
if(fst == snd)
do something;
Run Code Online (Sandbox Code Playgroud)
我想知道Java如何比较这种情况下的相等性.它会使用XOR操作来检查相等性吗?
我想压缩一串位,然后我想解压缩它.任何人都可以通过提及快速无损压缩和解压缩技术来帮助我,如果可能的话,可以帮助我编程实现.
这可能看起来很愚蠢,但为什么每个人都使用i(如果我已经在使用,那么j)进行循环检查?
手段:
for(int i = 1;i <= 5;i++){
for(int j = 1;j <= i;j++){
System.out.print(i);
}
Run Code Online (Sandbox Code Playgroud)
为什么我和j?我们可以使用第一和第二吗?检查一下,所有(10个中的9个)使用i,j.为什么?有什么理由或只是因为每个人都这样做?
我有以下代码,
class AA {
public static void main(String[] args) {
long ll = 100 ;
AA1 a1 = new AA1() ;
if(ll == 100) // Marked line
long lls [] = a1.val(ll);
}
}
class AA1 {
public long [] val (long ll1) {
long [] val = new long []{1 , 2, 3};
return val ;
}
}
Run Code Online (Sandbox Code Playgroud)
没有标记线正确执行.但是,给出带有标记线的错误".class expected".任何人都可以帮助我解决问题以及如何解决这个问题?
从这里开始,我发现Colt OpenIntIntHashMap和Trove TIntIntHashMap比Java内置HashMap或Guava 提供更好的性能和内存使用HashMultimap.
Colt's OpenIntIntHashMap或Trove是否TIntIntHashMap允许具有多个值的键,如同HashMultimap?如果没有什么是实现HashMultimap可以实现Colt或Trove的性能和内存效率的好方法?
注意:我测试过Guava HashMultimap,但它的性能和内存效率对我来说似乎很差.