我们有一个独立的Java应用程序(请参阅"安装应用程序":https://developers.google.com/accounts/docs/OAuth2)的定期运行,并使用谷歌API(从客户数据库/ LDAP更新一些信息/ ...) .
要访问Google API,我们会在配置文件中存储用户名和密码,这是一种安全风险,客户不喜欢这样做.因此,我们希望使用OAuth2长期访问令牌.
Google OAuth2访问令牌的默认到期时间是什么时候?
由于我们在应用程序中只有访问令牌,因此当访问令牌到期时,应用程序本身无法刷新它...
我个人认为在这种情况下OAuth2的实现不会带来任何重大好处,但让我们关注主要问题 - 默认的到期时间.
security google-api oauth-2.0 google-api-java-client google-oauth
我的问题与此问题非常类似:@Async阻止线程继续,直到其他线程完成
基本上我需要在更多线程中运行〜数百次计算.我想只运行一些并行线程,例如5个线程,其中5个计算是并行的.
我使用spring框架和@Async选项是很自然的选择.我不需要全功能的JMS队列,这对我来说有点开销.
有任何想法吗 ?谢谢
我的谷歌应用程序脚本正在迭代用户的谷歌驱动器文件和复制,有时将文件移动到其他文件夹.该脚本始终在5分钟后停止,日志中没有错误消息.
我在一次运行中排序数十或有时数千个文件.
有任何设置或解决方法吗?
我尝试刷新访问令牌时收到错误:
400错误请求
{error:"unauthorized_client"}
来自Google令牌URI:
{
"error" : "invalid_request"
}
Run Code Online (Sandbox Code Playgroud)
我在这里阅读了这个答案以及官方的Google文档(描述了POST请求应该如何看待),我没有看到任何区别.
我抓住了我的POST请求(删除了秘密):
POST /SHOWMERAWPOST HTTP/1.1
User-Agent: Google-HTTP-Java-Client/1.10.3-beta (gzip)
Pragma: no-cache
Host: requestb.in
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 175
Connection: keep-alive
Cache-Control: no-cache
Accept-Encoding: gzip
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
grant_type=refresh_token&refresh_token=******&client_id=*******.apps.googleusercontent.com&client_secret=******
Run Code Online (Sandbox Code Playgroud)
发送请求的Java代码:
RefreshTokenRequest req = new RefreshTokenRequest(new NetHttpTransport(), new JacksonFactory(), new GenericUrl(
getSecrets().getDetails().getTokenUri()), REFRESH_TOKEN);
req.set("client_id", getSecrets().getDetails().getClientId());
req.set("client_secret", getSecrets().getDetails().getClientSecret());
TokenResponse response = req.execute();
Run Code Online (Sandbox Code Playgroud)
有什么不对的吗?
你能推荐任何实现k-shortest算法的java库 - >搜索替代方法,而不是定向多图中唯一最短的方法吗?
我发现只有JGraphT,但实际上有bug(我提交了)但是我需要花很多时间修复它,是否有其他可用的实现?除了JGraphT,我发现只有小型单人项目:/
或者很难修改Disjktra最短路径alg以显示替代路径?
谢谢
java algorithm graph mathematical-optimization shortest-path
如何通过spring控制器提供大文件下载?我对类似话题的讨论很少:
但是对于大文件~300mb - 600mb,这些解决方案失败了.我在最后一行得到了OutOfMemoryException:
@RequestMapping(value = "/file/{dummyparam}.pdf", method = RequestMethod.GET, produces=MediaType.APPLICATION_OCTET_STREAM_VALUE)
public @ResponseBody byte[] getFile(@PathVariable("dummyparam") String dummyparam, HttpServletResponse response) {
.
.
InputStream is = new FileInputStream(resultFile);
response.setHeader("Content-Disposition", "attachment; filename=\"dummyname " + dummyparam + ".pdf\"");
.
.
return IOUtils.toByteArray(is);
Run Code Online (Sandbox Code Playgroud)
我(天真)的假设是IOUtils甚至会处理大文件,但这显然不会发生.有没有什么方法可以在下载过程中将文件拆分成块?文件通常大约300 - 600mb.最大并发下载量估计为10.
简单的方法是将文件链接为webserver目录中的静态内容,但我们想在Spring应用程序中尝试这样做.
我在我的应用程序中使用略微修改的Dijkstra算法,但它很慢,我知道必须有更好的方法.我的输入数据是相互之间具有指定行程时间的公交车站(约400个节点和~800个路径,最大结果深度= 4(最多4个公交车更换或无).
输入数据(公交路线):
bus_id | location-from | location-to | travel-time | calendar_switch_for_today
XX | A | B | 12 | 1
XX | B | C | 25 | 1
YY | C | D | 5 | 1
ZZ | A | D | 15 | 0
dijkstraResolve(A,D, '2012-10-10') -> (XX,A,B,12),(XX,B,C,25),(YY,C,D,5)
=> one bus change, 3 bus stops to final destination
* A->D cant be used as calendar switch is OFF
Run Code Online (Sandbox Code Playgroud)
你可以想象,在更复杂的图形中,例如主城(节点)确实有170个连接到不同的城市是Dijkstra慢(〜超过5秒),因为它首先逐个计算所有邻居,因为它没有"尝试"到通过其他方式到达目标目的地...
你能推荐一下其他适合的算法吗?
我在寻找:
http://jboost.sourceforge.net/examples.html(我
在这里看不到直截了当的例子......) …
我从 1.7 升级了我的 Google app Engine 应用程序。至 1.8。+ Java 7 和我将所有 API 库升级为最新。我在 GAE 容器中的应用程序初始化期间遇到奇怪的异常:
构造函数抛出异常;嵌套异常是java.lang.NoSuchMethodError:
java.lang.NoClassDefFoundError: Could not initialize class com.google.gdata.client.contacts.ContactsService
.
and this exception follows :
.
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;:
.
.
com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:219)
Run Code Online (Sandbox Code Playgroud)
“可疑”图书馆:
即使没有番石榴库,也会出现同样的错误。是什么原因导致这种不兼容呢?我没有找到更新版本的 gdata-contact API (1.47.1)。有任何想法吗 ?
google-app-engine google-api gdata google-contacts-api guava
我们最近开始使用logstash收集所有java服务器日志。
默认的 log4j 配置工作正常,但对于异常和 sql 查询,我们使用:
http://logstash.net/docs/1.2.2/filters/multiline
filter {
multiline {
type => "somefiletype"
pattern => "^\s"
what => "previous"
}
}
Run Code Online (Sandbox Code Playgroud)
但这并不能 100% 准确地工作,某些异常/SQL 没有所需的格式。
可以通过以下方式配置多行插件:
如果行的开头没有时间戳,它是多行日志消息?
是否可以部分解压缩tar.gz文件,例如从大型tar.gz文件中间解压缩只有几兆字节?
我有这个想法,因为我们有很多压缩日志文件,将100mb日志文件解压缩到~1gb文件然后在其中搜索是非常耗时的.选择"部分解压缩"会很棒.
java ×4
algorithm ×3
google-api ×3
oauth-2.0 ×2
asynchronous ×1
compression ×1
download ×1
gdata ×1
google-oauth ×1
graph ×1
guava ×1
gzip ×1
io ×1
jakarta-ee ×1
logging ×1
logstash ×1
monitoring ×1
security ×1
spring ×1
spring-mvc ×1