小编Ben*_*Ben的帖子

将 .net 上的 AWS 开发工具包与 localstack 结合使用(TransferUtility/S3 - 设置端点)

我正在运行 localstack ( https://github.com/localstack/localstack ),并且能够使用 aws s3 cli 将文件上传到其中。

我想要做的是将 .NET AWS ADK 与 localstack 结合使用。我想要以下代码将文件上传到 localstack 中:

        using (var tfu = new TransferUtility())
        {
            await tfu.UploadAsync(new TransferUtilityUploadRequest
            {
                Key = key,
                BucketName = bucketName,
                ContentType = document.ContentType,
                Headers = { ["Content-Disposition"] = "attachment; filename=\"test.txt\"" },
                InputStream = stream
            });
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何设置端点以便 SDK 使用 localstack 而不是 aws。显然,您可以AWSEndpointDefinition按照 AWS SDK 文档中所述在 appSettings.config 中进行设置,例如:

<add key="AWSEndpointDefinition" value="C:\Dev\localstack\endpoints.json"/>

但是我不知道这个 endpoints.json 配置应该是什么样子。我尝试使用这个文件:

https://raw.githubusercontent.com/aws/aws-sdk-net/master/sdk/src/Core/endpoints.json

当我这样做时,一旦我新建一个TransferUtility类,我就会得到一个空引用异常 - 这是在我将任何内容指向我的本地堆栈设置之前。

AWS ASK 的版本是 3.3.0。 …

.net c# amazon-s3 amazon-web-services localstack

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

不可变的数据结构和并发性

我试图理解在并发编程中使用不可变数据结构如何可以避免锁定的需要.我在网上看过一些内容,但还没有看到任何具体的例子.

例如,假设我们有一些使用锁定的代码(C#)Dictionary< string, object>执行此操作:

class Cache
{
    private readonly Dictionary<string, object> _cache = new Dictionary<string, object>();
    private readonly object _lock = new object();

    object Get(string key, Func<object> expensiveFn)
    {
        if (!_cache.ContainsKey("key"))
        {
            lock (_lock)
            {
                if (!_cache.ContainsKey("key"))
                    _cache["key"] = expensiveFn();
            }
        }
        return _cache["key"];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果_cache是不可变的,那怎么样?是否可以删除lock并确保expensiveFn不会多次调用?

c# concurrency immutability

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

React:你可以将setState与现有状态对象一起使用吗?

假设我有一个具有10个字段的"状态"的React组件:

this.state = {
    field1: 1,
    field2: 2,
    ... other fields
    something: 'a'
};
Run Code Online (Sandbox Code Playgroud)

在我的一个事件处理程序中,我决定要更新单个状态字段.是不是出于某种原因不好的做法这样做呢?

// state has 10 other properties not touched here, and I want them to
// retain their existing values
this.state.something = 'b';
this.setState(this.state);
Run Code Online (Sandbox Code Playgroud)

或者我必须这样做:

this.setState({
    field1: this.state.field1,
    field2: this.state.field2,
    ... set other fields with current value
    something: 'b'
});
Run Code Online (Sandbox Code Playgroud)

我知道有些库可以很容易地复制对象状态,只是想知道是否有必要这样做.我还应该补充一点,我已经尝试了这个似乎有效,但我没有看到任何在线的例子这样做,所以想知道是否有一些理由为什么不.

javascript typescript reactjs

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