小编Arp*_*sss的帖子

所有的goroutines都睡着了 - 僵局!-------错误

我想写三个并发的例程,它们相互发送整数.现在,我的代码被正确编译,但是在第一次执行之后它会给出错误"所有goroutines都睡着了 - 死锁!".我试图找到错误,但我无法在代码逻辑中找到任何错误.任何人都可以帮我找到我的代码的错误.我的代码如下.提前致谢.

package main

import "rand"

func Routine1(command12 chan int, response12 chan int, command13 chan int, response13 chan int) {
    for i := 0; i < 10; i++ {
        y := rand.Intn(10)
        if y%2 == 0 {
            command12 <- y
        }

        if y%2 != 0 {
            command13 <- y
        }
        select {
        case cmd1 := <-response12:
            print(cmd1, " 1st\n")
        case cmd2 := <-response13:
            print(cmd2, " 1st\n")
        }
    }
    close(command12)
}

func Routine2(command12 chan int, response12 chan int, command23 chan …
Run Code Online (Sandbox Code Playgroud)

go concurrent-programming goroutine

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

哈希多地图空间节省问题

我在我的代码中使用HashMultiMap.现在,我的代码定期得到一些比特.我存储在一个字符串中(例如String str ="0110011100").然后将其转换为int并将其存储为我的HashMultiMap键/值.是否可以将其存储为位而不是将其存储为int/string?这样可以节省地图的空间吗?实际上,字符串的位数多于字节且小于int(比如说14位).所以,我希望通过将其存储为位来节省空间.谢谢.

java hashtable hashmap java-ee guava

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

Java批量写入

我必须在磁盘文件中写入一系列字符,并且我想使用批量写入来减少磁盘 I/O。目前,我正在使用文件编写器类。然而,它太慢了。任何人都可以帮助我如何在 Java 中执行批量写入,例如维护一个大缓冲区并定期刷新它。

java

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

Java最快的哈希函数

我有一个长度为128个字符的布尔字符串(如"01100..001")(表示128个数字为0/1).我在Java中搜索一个高效(快速)的哈希函数,它产生的表示比128位低得多,而且碰撞明显减少.任何人都可以帮助我,有没有这样的哈希函数?有什么建议吗?

java hash hash-function

3
推荐指数
2
解决办法
3446
查看次数

Java-公共字符串(char []值)

我的问题是关于:Public String(char [] value)。有人可以帮我吗:它是否在内部为每个值[i]循环。特别,

Public String(char [] value)的含义是:

for each char[i]
returnedSTRING = returnedSTRING + char[i] 
Run Code Online (Sandbox Code Playgroud)

或不 ?

java string

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

Java项目:使HashMap(包括加载 - 存储)性能更好

我正在尝试为我们的服务器编写代码,我必须通过URL查找用户访问类型.

现在,在开始时,我们看到每天访问1亿个不同的URL.现在,到那时它每天变成近6亿个不同的URL.

对于1亿,我们所做的是:

1)使用并行数组构建HashMap,其键是URL的一部分(表示为LONG),值是URL的其他部分(表示为INT) - 键可以有多个值.

2)然后搜索HashMap以查找访问的URL时间.

现在,随着HashTable变得越来越大,我们所做的就是:

1)构建两个/三个单独的HashTable,并加载和存储它(在通用文件系统上)以查找URL访问的次数.

现在,问题是,

1)虽然HashTable性能相当不错,但是在加载/存储HashTable时代码需要更多时间(我们使用文件通道,加载/存储HashTable需要16-19秒 - 20000万条入口 - 因为加载因子是0.5)

我们要问的是:

1)如何解决这个问题?

2)如何减少加载/存储时间(我以前问过,但似乎文件通道是最好的方式)?

3)存储一个大的HashTable(超过内存)并重复缓存它将是一个很好的解决方案?如果是这样,怎么做(至少一些指针).我们尝试使用

RandomAccessFile raf = new RandomAccessFile("array.dat", "rw");
IntBuffer map = raf.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 1 << 30).order(ByteOrder.nativeOrder()).asIntBuffer();
Run Code Online (Sandbox Code Playgroud)

然而,比以前更糟糕的表现.

谢谢.

注意:

1)根据之前的Stack Overflow建议,我们使用一些像TokyoCabinet这样的NoSQL DB,但根据我们的经验,自定义HashTable比1亿个键值对提供更好的性能.

2)磁盘缓存的预读数据是不可能的,因为当系统启动时,我们的应用程序将开始工作,并在系统启动的第二天开始工作.

我们忘了提到的是:

1)由于我们的应用程序是项目的一部分并且应用于小型园区,因此我们假设访问的URL不超过8亿.因此,您可以认为600/700数据值是固定的.

2)我们主要关心的是表现.

3)我们必须在本地运行我们的应用程序.

编辑:我们的hashmap代码可以在这里找到.

java hashmap key-value

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

如何使用特定的gcc编译器运行make命令?

我必须使用特定版本的gcc编译器运行make命令(使用gcc-4.1,因为在该版本之后将提供已弃用的方法警告或错误)..现在,在服务器中安装了几个版本的gcc.任何人都可以帮助,我如何运行它(make命令)到特定版本的gcc编译器(在gcc-4.1上的意思).

c++ makefile

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

在Go中使用并发例程打印问题

我有三个这样的并发例程,

func Routine1() {

Print (value a, value b, value c)
Print (value a, value b, value c)
Print (value a, value b, value c)

}

func Routine2() {
Print (value e, value f, value g)
Print (value e, value f, value g)
Print (value e, value f, value g)
}
func Routine3() {
Print (value x, value y, value z)
Print (value x, value y, value z)
Print (value x, value y, value z)
}

func main() {
go …
Run Code Online (Sandbox Code Playgroud)

concurrency go goroutine

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

长数删除第一位 - 快速方式JAVA

我在一个长数组中有一系列长数字。我想获取每个 Long 数字并想获得它的第一位,根据第一位,我想处理其他位。就像下面的伪代码,

i = 1000000 ;
long[] a = new long[i];
for j = 0  to i
 do,
  get long lo = a[i];

  // get first bit of lo

  if first bit = 0
     print long number (by removing first bit) in file a1

  else 
     print long number (by removing first bit) in file a2
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我,“获得那个长数字的第一位”和“删除第一位并获得数字”的最快方法是什么?

java

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

如何将文件大小以字节为单位打印到.txt文件

我使用ls -l命令查看文件夹中的所有文件大小.任何人都可以帮我如何在.txt文件中输出.

unix linux

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