小编Mar*_* V.的帖子

OAuth2和Google API:访问令牌到期时间?

我们有一个独立的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

56
推荐指数
2
解决办法
11万
查看次数

Spring @Async限制线程数

我的问题与此问题非常类似:@Async阻止线程继续,直到其他线程完成

基本上我需要在更多线程中运行〜数百次计算.我想只运行一些并行线程,例如5个线程,其中5个计算是并行的.

我使用spring框架和@Async选项是很自然的选择.我不需要全功能的JMS队列,这对我来说有点开销.

有任何想法吗 ?谢谢

spring multithreading asynchronous thread-synchronization

24
推荐指数
3
解决办法
3万
查看次数

Google应用脚本超时~5分钟?

我的谷歌应用程序脚本正在迭代用户的谷歌驱动器文件和复制,有时将文件移动到其他文件夹.该脚本始终在5分钟后停止,日志中没有错误消息.

我在一次运行中排序数十或有时数千个文件.

有任何设置或解决方法吗?

google-apps-script google-drive-api

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

无法刷新访问令牌:响应是"unauthorized_client"

我尝试刷新访问令牌时收到错误:

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)

有什么不对的吗?

google-api oauth-2.0 google-api-java-client

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

k-shortest(替代)路径算法,java实现

你能推荐任何实现k-shortest算法的java库 - >搜索替代方法,而不是定向多图中唯一最短的方法吗?

我发现只有JGraphT,但实际上有bug(我提交了)但是我需要花很多时间修复它,是否有其他可用的实现?除了JGraphT,我发现只有小型单人项目:/

或者很难修改Disjktra最短路径alg以显示替代路径?

谢谢

java algorithm graph mathematical-optimization shortest-path

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

Spring MVC:用于下载的大文件,OutOfMemoryException

如何通过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应用程序中尝试这样做.

java spring-mvc download

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

Dijkstra算法替代方案 - 图中最短路径,公交路线

我在我的应用程序中使用略微修改的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秒),因为它首先逐个计算所有邻居,因为它没有"尝试"到通过其他方式到达目标目的地...

你能推荐一下其他适合的算法吗?

我在寻找:

java algorithm shortest-path graph-algorithm

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

NoSuchMethodError:谷歌常见 ImmutableSet.copyOf(..)

我从 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)

“可疑”图书馆:

  • guava 11.0.2(因为它依赖于实际的 gdata 项目 1.47.1)
  • gdata-contacts-3.0.jar
  • gdata-contacts-meta-3.0.jar
  • gdata-core-1.0.jar
  • gdata-client-1.0.jar
  • gdata-base-1.0.jar
  • http 客户端库版本:1.14.1
  • (以及其他一些与此问题无关的内容)

即使没有番石榴库,也会出现同样的错误。是什么原因导致这种不兼容呢?我没有找到更新版本的 gdata-contact API (1.47.1)。有任何想法吗 ?

google-app-engine google-api gdata google-contacts-api guava

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

Logstash 多行过滤器配置和 java 异常

我们最近开始使用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 没有所需的格式。

可以通过以下方式配置多行插件:

如果行的开头没有时间戳,它是多行日志消息?

logging monitoring logstash jakarta-ee

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

部分解压缩tar.gz文件

是否可以部分解压缩tar.gz文件,例如从大型tar.gz文件中间解压缩只有几兆字节?

我有这个想法,因为我们有很多压缩日志文件,将100mb日志文件解压缩到~1gb文件然后在其中搜索是非常耗时的.选择"部分解压缩"会很棒.

java compression algorithm io gzip

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