小编Efi*_* MK的帖子

施工过程中的虚函数.为什么Java与C++不同

我今天进行了测试,其中一个问题是在C++构造函数中使用虚方法.我没有这个问题,我回答说,不应该有任何问题,看完之后不过这个我发现我错了.

所以我理解不允许这样做的原因是因为派生对象没有完全初始化,因此调用它的虚方法会导致无效后果.

我的问题是如何在Java/C#中解决的?我知道我可以在我的基础构造函数中调用派生方法,我会假设这些语言具有完全相同的问题.

c++ java

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

在gradle和kapt中使用useBuildCache

我想使用新的kotlin gradle插件功能并缓存我的构建结果,有关更多信息,请阅读this。增强构建的另一种方法是缓存kapt任务,但默认情况下未启用

因为Gradle尚无法映射注释处理器的输入和输出

根据dagger 2您的经验,我唯一的kapt依赖项是否可以安全缓存?

android gradle kotlin android-gradle-plugin dagger-2

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

AWS Lambda环境中的aws_access_key_id

我使用boto3来为s3创建一个预签名的发布网址。

s3 = boto3.client('s3')
post = s3.generate_presigned_post(
        Bucket=bucket_name,
        Key=f"{userid}.{suffix}"
    )
Run Code Online (Sandbox Code Playgroud)

aws_access_key_id正在使用不正确,使用正确的的方法之一是通过环境变量增加的环境变量。

知道如何使用在IAM中创建的用户定义的aws访问密钥强制执行吗?

更新1

附加到执行Lambda的IAM角色的策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:*"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AttachNetworkInterface",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeInstances",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DetachNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:ResetNetworkInterfaceAttribute"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ], …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services amazon-iam boto3 aws-lambda

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

将我自己的查询参数添加到django admin

我有一个模型,使用纬度和经度字段的位置.我想使用查询参数运行的查询之一是围绕特定半径进行搜索.我有查询集读取,我覆盖它:

queryset = super().get_queryset(request)
if 'radius' in request.GET:
    queryset = queryset.in_distance(request.GET['radius'], fields=['location__latitude',location__longitude'], points=[lat, lon])
return queryset
Run Code Online (Sandbox Code Playgroud)

在调用我的管理页面时,/admin/dal/listing?radius=50我被重定向到没有查询字符串的管理员.

按照Django的代码,发现了这个:

# At this point, all the parameters used by the various ListFilters
# have been removed from lookup_params, which now only contains other
# parameters passed via the query string. We now loop through the
# remaining parameters both to ensure that all the parameters are valid
# fields and to determine if at least one of them needs distinct(). …
Run Code Online (Sandbox Code Playgroud)

django django-admin

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

什么时候我应该使用let {}和什么时候只是普通!= null

你会如何以更科学的方式编写以下代码?

var returnValue = ...
val s3data = presignedUrl.body()
if (s3data != null) {
    val uploadImage = api.uploadImage(s3data.bucketUrl, s3data.awsAccessKeyId, s3data.policy, s3data.key, s3data.signature, body).execute()
    if (!uploadImage.isSuccessful) {
        crashReporterService.sendIssue("Failed uploading file", "Failed uploading file ${uploadImage.raw()}")
        returnValue = Result.FAILURE
    } else {
        returnValue = Result.SUCCESS
    }
} else {
    crashReporterService.sendIssue("Failed uploading image", "Error - ${presignedUrl.raw()}")
    returnValue = Result.FAILURE
}

return returnValue
Run Code Online (Sandbox Code Playgroud)

我可以使用let,但我觉得它使代码更难理解

kotlin kotlin-null-safety

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

更新字典 - pythonic方式

我有以下代码,我相信它看起来更像pythonic:

def info(self, msg, *args, **kwargs):
    if 'extra' in kwargs:
        kwargs['extra'].update({'session_id': self.session_id})
    else:
        kwargs['extra'] = {'session_id': self.session_id}
Run Code Online (Sandbox Code Playgroud)

我正在尝试检查kwargs是否有一个名为extra的字典,如果它然后添加一个值,否则创建一个新的字典.

python python-3.x

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