小编i.v*_*van的帖子

在微服务架构中组织授权的最佳实践?

例如,我有3个服务:

  • 认证
  • 卖家
  • 买方

他们每个人都有自己的数据库,模型,服务......等等

身份验证服务了解用户,用户组,角色,权限以及创建令牌.

我应该在哪里存储卖家/买家实体?在身份验证服务上,还是在卖家/买家服务上?

卖方/买方服务应如何互动以创建新的卖方/买方实体?

卖方/买方服务应如何检查权限?

卖方和买方实体有一些共同的字段:名称,密码,电子邮件......,但每个字段都有自己的附加字段.

卖方和买方互相交流.

architecture authentication authorization microservices

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

适用于Docker机器的Golang Mac OSX版本

我需要在Docker机器上运行Golang应用程序.

我正在使用Mac OSX,而​​Docker正在使用Linux虚拟机,因此在Mac上构建的二进制文件无法在Docker上运行.

我在这里看到两种方式:

  1. 在Mac上为Linux OS交叉编译二进制文件
  2. 将项目源复制到docker,在其上运行'go get'和'go build'

第一个是因为CGO(它在一些导入的库中使用)很难.

其次是因为'go get'操作而非常缓慢.

你能告诉我,在那种情况下哪种方式最常见?或者也许我做错了什么?

linux macos build go docker

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

AWS SES SDK发送带附件的电子邮件

我正在使用官方AWS Golang SDK与SES集成,但无法找到有关如何在电子邮件中添加一些附件(代码中以[]字节表示的pdf文件)的任何信息.

你可以帮帮我吗?

当前的电子邮件发送代码如下所示:

sesEmailInput := &ses.SendEmailInput{
    Destination: &ses.Destination{
        ToAddresses: []*string{aws.String("To address")},
    },
    Message: &ses.Message{
        Subject: &ses.Content{
            Data: aws.String("Some text"),
        },
        Body: &ses.Body{
            Html: &ses.Content{
                Data: aws.String("Some Text"),
            },
        },
    },
    Source: aws.String("From address"),
    ReplyToAddresses: []*string{
        aws.String("From address"),
    },
}
if _, err := s.sesSession.SendEmail(sesEmailInput); err != nil {
    return err
}
Run Code Online (Sandbox Code Playgroud)

go amazon-web-services amazon-ses aws-sdk

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

依赖模块的Golang DDD实现

我正在尝试为我的应用程序模块实现 DDD 架构,但遇到了在它们之间存储类似(依赖)结构的问题。

在第一个包中,我存储与实体People相关的所有内容:服务(存储库)、控制器、模型等...

在第二个包中,我存储与另一个实体公寓相关的所有内容:服务(存储库)、控制器、模型等...

每个Apartment可以包含多个Tenants,它们以与People相同的结构存储在数据库中。

一些公寓包服务应该能够调用诸如 get/update/... Tenants 之类的方法。我很乐意不重新实现这些操作并从PeoplePeopleService 中的实现中使用它们,但该服务返回People实体,而不是Tenant

我是否应该创建People 的附加结构(复制粘贴整个源代码)到Apartment包中,将其称为Tenant并将PeopleService 的返回类型转换为它?

或者有其他方法可以做到吗?

另外,我应该在哪里存储具体实体的服务/存储库(与 CRUD 类方法的接口)的接口?接口PeopleService应该在PeopleApartment包中吗?

谢谢。

architecture domain-driven-design interface go

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

这个算法的Big O表示法是什么?

确定字符串是否包含至少1个可重复的字符.

(暗示该字符串只能包含基本的ASCII字母:128个字符).

bool hasRepeatableChar(String str) { 
    if (str.length() > 128) {
            return true;
    }
    str = str.sort();
    for (int i = 0; i < str.length()-1; i++) {
        if (str[i] == str[i+1]) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我可以看到,它是:

  • 对于str.length()<= 128,O(n log n),其中n - 字符串的长度
  • 对于str.length()> 128,O(1)

但什么是摊销大O值?


PS

也可以通过使用某种数据结构(例如map)来完成排序,而不是对O(n)的操作量进行排序,但会增加内存成本.无论如何,它与问题无关.

algorithm performance complexity-theory big-o time-complexity

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