我想在Go中编写一个简单的命令行google drive api.到目前为止,我似乎已经成功验证了应用程序,因为我可以获得access_token和refresh_token.当我尝试使用令牌访问SDK Api时出现问题,我收到以下错误消息
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到的另一个奇怪的事情是我在google api控制台中没有看到任何配额信息.所以不确定这是不是问题.但是因为我可以通过身份验证,所以我想我应该在控制台api设置方面做得很好.
下面是api查询的代码
accessUrl := "https://www.googleapis.com/drive/v2/files" + "?access_token=\"" + accessToken + "\""
if res , err := http.Get(accessUrl); err == nil {
if b, err2 := ioutil.ReadAll(res.Body); err2 == nil {
fmt.Println(string(b))
}else{
fmt.Println(err2)
}
}else{ …Run Code Online (Sandbox Code Playgroud) 我正在观看Berkley Uni的在线讲座并坚持下面的内容.
问题:假设您有一个已经排序的CD集合.您要查找标题以"Best Of"开头的CD列表.
解决方案:我们将使用二进制搜索来查找"Best Of"的第一个案例,然后我们进行打印,直到该块不再是"Best Of"
附加问题:找出此算法的复杂性.
上限:二进制搜索上限是O(log n),所以一旦我们找到它,那么我们打印让我们说k标题.所以它是O(logn + k)
下限:二进制搜索下限是Omega(1),假设我们很幸运,并且记录标题是中间标题.在这种情况下,它是欧米茄(k)
这是我分析它的方式.
但在讲座中,讲师使用了最好的案例和最坏的案例.我有两个问题:
他的分析是最糟糕的案例:Theta(logn + k)
最佳案例:Theta(k)
如果我使用最坏情况的概念来指代数据并且与算法无关,那么他的分析是正确的.这是因为假设最坏的情况(CD标题到底或未找到)那么Big O和Omega都是log n,那里是theta(log n + k).
假设您没有做"最佳案例"和"最坏情况",那么您如何分析算法?我的分析是对的吗?
我正在编写示例Http客户端/服务器代码以了解有关Go的更多信息.在写作过程中,我需要阅读响应主体.所以我查看了Go Pkg文档http://golang.org/pkg/net/http/#Response,看到Body io.ReadCloser即Body是io.ReaderCloser类型.为了知道什么是io.ReaderCloser,我点击了超链接,发现http://golang.org/pkg/io/#ReadCloser是一个实现Reader和Closer两种方法的接口.看着这个我以为我能做到这一点
line, _ , err := response.Body.Reader.ReadLine()
Run Code Online (Sandbox Code Playgroud)
Go编译器然后给了我错误,没有方法或者在响应中输入Reader.Body.我认为在概念上我有一个理解为什么我不能这样做的问题.也许我在java方面思考太多了.如果有人能指出我的误解,我将不胜感激.
谢谢