小编Sun*_*gam的帖子

golang:goroute with select不会停止,除非我添加了fmt.Print()

我尝试了Go Tour 练习#71

如果它运行go run 71_hang.go ok,它工作正常.

但是,如果您使用go run 71_hang.go nogood,它将永远运行.

唯一的区别是额外fmt.Print("")defaultselect语句.

我不确定,但我怀疑某种无限循环和竞争条件?这是我的解决方案.

注意:Go并没有死锁 throw: all goroutines are asleep - deadlock!

package main

import (
    "fmt"
    "os"
)

type Fetcher interface {
    // Fetch returns the body of URL and
    // a slice of URLs found on that page.
    Fetch(url string) (body string, urls []string, err error)
}

func crawl(todo Todo, fetcher Fetcher,
    todoList chan Todo, done chan bool) { …
Run Code Online (Sandbox Code Playgroud)

select channel go goroutine

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

Java Stack - 修改堆栈中的最后一个元素

我在Java中有一堆Integer,我想知道是否还有其他方法可以将"最后推送的项目"增加一个而不首先将其加入.

我目前的解决方案是

Stack<Integer> stack = new Stack<Integer>();
stack.push(1);
stack.push(2);   // Increment 2 to 3
Integer last = stack.pop();
stack.push(last+1);
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但没有工作

Integer last = stack.peek();
last+=1;
Run Code Online (Sandbox Code Playgroud)

我认为它会起作用,因为last是对堆栈中最后一个元素的引用,它会增加.

java stack

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

替换Bash中字符串的一部分中的字符

我试图取代-,并:?只在中间(第二)部分由分隔___(3下划线)

输入:

aaa___bb-bb:bbb___cc-cc:ccc
d-d___d-ddd:d-d___e-e:e
Run Code Online (Sandbox Code Playgroud)

输出:

aaa___bb?bb?bbb___cc-cc:ccc
d-d___d?ddd?d?d___e-e:e
Run Code Online (Sandbox Code Playgroud)

我试过下面的sed命令,但它只替换-:了中间部分的最后一次出现

echo "aaa___bb-bb:bbb___cc-cc:ccc
d-d___d-ddd:d-d___e-e:e" | sed "s|\(___[^_]*\)[-:]\([^_]*___\)|\1?\2|g"
Run Code Online (Sandbox Code Playgroud)

输出:

aaa___bb-bb?bbb___cc-cc:ccc
d-d___d-ddd:d?d___e-e:e
Run Code Online (Sandbox Code Playgroud)

我不仅限于使用sed.awk,tr等等也很好.

regex bash awk sed

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

标签 统计

awk ×1

bash ×1

channel ×1

go ×1

goroutine ×1

java ×1

regex ×1

sed ×1

select ×1

stack ×1