我有以下代码来获取URL的列表,然后有条件地下载文件并将其保存到文件系统.同时获取文件,主goroutine等待获取所有文件.但是,在完成所有请求后,程序永远不会退出(并且没有错误).
我认为正在发生的事情是,以某种方式,其中的例程量WaitGroup
要么增加太多而不能开始(通过Add
)或者没有减少足够的量(Done
调用没有发生).
有什么我显然做错了吗?我如何检查目前有多少例程,WaitGroup
以便我可以更好地调试正在发生的事情?
package main
import (
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
"strings"
"sync"
)
func main() {
links := parseLinks()
var wg sync.WaitGroup
for _, url := range links {
if isExcelDocument(url) {
wg.Add(1)
go downloadFromURL(url, wg)
} else {
fmt.Printf("Skipping: %v \n", url)
}
}
wg.Wait()
}
func downloadFromURL(url string, wg sync.WaitGroup) error {
tokens := strings.Split(url, "/")
fileName := tokens[len(tokens)-1]
fmt.Printf("Downloading %v to %v \n", url, fileName) …
Run Code Online (Sandbox Code Playgroud) 假设我们有两个表:
contacts
具有列的表:id
和name
conversations
具有列的表:id
和contact_id
(FK 到contacts.id
)以下两个查询返回相同的数据:
SELECT contacts.name, contacts.id, conversations.id FROM contacts INNER JOIN conversations ON contacts.id = conversations.contact_id;
和
SELECT contacts.name, contacts.id, conversations.id FROM contacts INNER JOIN conversations ON id(contacts) = contact_id(conversations);
出于纯粹的理论原因,我想了解更多有关第二个(功能更强大)版本的信息。这种语法叫什么?我可以在哪里了解更多信息?这是 SQL 标准中的语法还是 PostgreSQL 中的语法?性能好吗?为什么它没有得到更广泛的应用?
我目前正在使用Rails,Heroku和Apartment gem创建一个多租户应用程序.(请注意我知道在Heroku上使用多租户应用程序结构的限制超过10个不同的数据库).我正确设置了我的应用程序,并使用lvh.me让子域在本地正常工作.
自从推送到XXX-staging.herokuapp.com以来,XXX-staging已经是一个子域,所以它抛出了错误:
Apartment::TenantNotFound (One of the following schema(s) is invalid: "XXX-staging" "public"):
Run Code Online (Sandbox Code Playgroud)
有没有办法在Heroku登台环境中测试子域,或者是用另一个SSL通配符购买备用URL的唯一方法?我更愿意,如果那不是我必须做的,因为它可能是昂贵的.