小编Gee*_*Jan的帖子

是应该根据请求创建OAuth2Client还是按用户缓存?

我正在使用谷歌api客户端的节点版本.即:google-api-nodejs-client.

作为其中的一部分,我正在设置oauth-flow(确切地说是'谷歌网络服务器'流程.)

作为身份验证的一部分,这包括执行以下调用:

 var oauth2Client = new OAuth2Client(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
Run Code Online (Sandbox Code Playgroud)

 oauth2Client.setCredentials(userSpecificTokens)
Run Code Online (Sandbox Code Playgroud)

显然,第一个调用是特定于应用程序的,而第二个调用是特定于用户的.

在这种情况下,什么是好的做法?之一:

  1. oauth2Client每个用户拥有1个缓存/保存令牌,并oauth2Client.setCredentials(userSpecificTokens)在每个请求中使用它们.这基本上为oauth2Client每个请求创建一个新的.
  2. 具有oauthClient每个用户包括oauth2Client.setCredentials(userSpecificTokens)已经应用需要和之后高速缓存时被创建.

node.js oauth-2.0 google-oauth google-api-nodejs-client

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

java中的原始multimap具有良好(插入,迭代)性能特征

我正在使用Java中的int/long进行一些繁重的处理(构建逆索引).

我已经确定标准java.collections映射的(un)装箱占用了总处理时间的很大一部分.(与使用数组的类似实现相比,由于内存限制我无法使用它).

我正在寻找可以支持以下结构的快速第三方实现(或任何实现此类实现):

具有特征的地图:

地图中的键是稀疏的(范围为[0,2 ^ 64]的+/- 10.000.000个键 - 值始终附加到列表的快速插入的末尾(如果可能,则分摊O(1)) - 快速迭代按键顺序.

我看过trove,fastutil等,但找不到使用基元的多图实现(只有法线贴图)

任何帮助表示赞赏.

谢谢,Geert-Jan

java collections performance multimap

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

nodejs:节点模块与单例类

PRE:我已经阅读过NodeJS模块和类,但这更具体.

作为Node中的一些重构的一部分,我有一些应用服务(在DDD术语中),它们在技术上被实现为Node模块.

由于(在DDD世界中,可能是其他任何问题)应用服务应该是单例,因为Node模块只能保证1'实例',在我看来这是合适的(模块很容易实现'singletonness')

是否有任何理由我应该考虑将这些应用程序服务重构为正确的单例类(除了纯粹的观点之外,还可以在javascript中保证'单一性')

refactoring domain-driven-design node.js node-modules

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

DDD和MongoDB:让Mongo创建ObjectID是否可以?

根据DDD(蓝皮书,埃文斯),工厂有责任在有效状态下创建聚合根.这是否意味着它应该能够创建技术ID(mongoDB世界中的objectId)以及域ID?

一方面,这似乎是一个技术细节,让Mongo处理ID的创建似乎没问题.

另一方面,通过id(通过getById在DDD存储库中)进行查询会将技术ID公开给域,这反过来又会使工厂负责创建它.

也许我无法理解技术ID与DomainId的不同用例/重叠等,或者我可能过于热心,但无论如何我都很感激你的意见.

简而言之:在DDD中:工厂是否应该能够创建技术ID以及域ID?

可能的实现:Hi/Lo(如何设置MongoDB Norm中的hilo序列起始值?)

编辑:虽然hi/lo方式将Factory暴露给持久层,这只是存储库应该知道的东西.嗯

谢谢

domain-driven-design hilo factory-pattern mongodb object-identity

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

用户(UserAccount)和Realm的概念在Apache Shiro中如何相关?

我正在阅读Apache Shiro,并希望看看我的心智模型是否合适.

文档:"A Realm是,可以访问诸如应用特定的安全数据的部件users,roles以及permissions"."领域通常与数据源(如关系数据库,LDAP目录,文件系统或其他类似资源)具有一对一的关联."

此外,我已经读过application可能包含多个realms用于其身份验证和授权的用户.

好的,但这Realms与用户的概念有什么关系?

  • 是否每个人都Realm希望成为用户空间的分区?即:a User可能只发生在1中Realm
  • 或者,这就是我所期望的,Realms可以用于在彼此之上进行身份验证和授权,并且可以在相同的情况下工作User.但是在那种情况下,User托管在哪里?它应该在某个外部Realm我猜,但在哪里?

也许我对此感到困惑,因为我认为它User是一个单一的实体(例如:我只能有一个实体).而应该考虑User作为一个UserAccount.即:每个Realm管理它自己Useraccounts(在所调用的文档中User),但是User可能有多个UserAcounts.那是对的吗?

假设以上是正确的:

  • 是否有任何逻辑可以让我查询所有UserAccounts给定的用户?即:基本上合并Useraccounts在一起,以获得完整的视图User
  • User在这种情况下(1 User可能有多个UserAccounts)的概念在Shiro中是否存在?

java shiro

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

在Mongo中可靠地检索哪个字段引发了"重复键错误"

因此,mongo会在代码11000或11001上抛出错误消息,如下所示:

{ [MongoError: E11000 duplicate key error index: mean-dev.users.$username_1  dup key: { : "asdasd" }]
  name: 'MongoError',
  err: 'E11000 duplicate key error index: mean-dev.users.$username_1  dup key: { : "asdasd" }',
  code: 11000,
  n: 0,
  connectionId: 718,
  ok: 1 }
Run Code Online (Sandbox Code Playgroud)

现在,我正在解析错误消息以检索哪个字段有重复键,这非常脏.即:我不想测试不同索引(多键,复合等)上的各种重复错误,看看这个解析器是否仍然有效.

我可以使用Node中的任何帮助程序,让我可以为这些错误强有力地检索有问题的字段吗?

mongodb node.js

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

sails:如何在使用内置crud操作创建模型后重定向?

我正在使用Sails框架进行一些快速测试.

一旦模型和控制器(例如:for user)被创建,我喜欢默认的CRUD操作开箱即用的方式.

我在扩展基础知识时遇到了一些麻烦.

说:

  • 我创建了一个用户模型和空用户控制器.
  • 这应该给我默认的Rest和Crud操作.
  • 我已经定义了一个用户注册表格,做的POSTuser/create.此功能是开箱即用的.

这有效,但会导致显示创建的JSON user/create.如何将其扩展为重定向到某个URL,例如用户配置文件?(如:GET user)

node.js sails.js

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

设置webhook会导致"未经授权的WebHook回调通道".一切都应该没问题

是时候去SE了,因为现在花了我4个多小时.

我正在尝试为https://app.example.com/notications来自Google Drive API的推送通知设置webhook().

设置完所有内容后,我收到错误:

    ...
    errors": [
        {
            "domain": "global",
            "reason": "push.webhookUrlUnauthorized",
            "message": "Unauthorized WebHook callback channel: https://app.example.com"
        }
    ],
    ...
Run Code Online (Sandbox Code Playgroud)

谷歌上有一些结果(其中大部分都在SE上)讨论这个问题.所提出的解决方案似乎都不适合我.毋庸置疑,如果我有一些东西,我会把我的头发撕掉.

这是我尝试过的:

如此处所述,有一些要求:

  1. 第1步:验证您是否拥有该域.(使用网站站长工具完成网站验证流程)

    app.example.com通过网站站长工具注册.另外还证实了example.com这一点并不重要.校验!

  2. 第2步:注册您的域名:

    • 转到Google Developers Console.
    • 选择或创建项目.
    • 在左侧边栏中,单击"API&auth",然后单击"推送".
    • 单击"添加域".
    • 填写表单,然后再次单击"添加域".

    做完了app.example.com.校验!

  3. 请注意,只有在您的Web服务器上安装了有效的SSL证书时,Drive API才能向此HTTPS地址发送通知.无效的证书包括:

    • 自签名证书.
    • 由不受信任的来源签署的证书.
    • 已被撤销的证书.
    • 主题与目标主机名不匹配的证书.

    我做了什么:

    • 我已经设置app.example.com了SSL证书.
    • 此外,端点可以访问,所有内容都可以检出.
    • SSL检查器已经验证一切正常(5个滴答).甚至SSL链也正确设置. 校验!
  4. 构造POST查询

    • 到简单的https://www.googleapis.com/drive/v2/changes/watch终点
    • 包含Authorization: Bearer x标题
    • 包含Content-Type:application/json标题

帖子包含如下的主体

    {
      "id": "someIdThatDoesntMatter",
      "type":"web_hook",
      "address": "https://app.example.com/notifications" …
Run Code Online (Sandbox Code Playgroud)

google-api push-notification google-drive-api

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

两个进程可以使用 Watch 更改相同的 Redis 资源。我应该担心活锁吗?

进程 A 和 B 都在 Redis 资源 R 上运行。

这些进程可以并行执行,我需要两个进程在更改 R 值时确定 R 的值。

因此,我将Redis 事务WATCH 命令一起使用。来自文档:“只有在没有其他客户端修改任何 WATCHed 键的情况下,我们才要求 Redis 执行事务。否则根本不输入事务。”

要在失败的情况下重试,建议的方法是循环 Watch/Multi-exec 循环,直到成功为止。但是,我担心 A 和 B 可能会无限期地开始循环(即:活锁)。

这有什么值得担心的吗?更好的是,该怎么办?在重试时设置随机超时会解决问题吗?

concurrency livelock redis

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

我应该使用 PUT 创建具有已知 id 的资源(例如:电子邮件)

我相信不久前读过,当 id 已知时(例如:)创建资源email应该使用该资源上的 PUT 来完成。

例如: PUT /user/chris@example.com

它是否正确?

rest

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