小编Kev*_*aja的帖子

为什么 ASP Net Core 2.2 不释放内存?

我正在使用以下默认项目测试 ASP Net Core 2.2:

Visual Studio > 文件 > 新建 > 项目 > ASP NET Core Web 应用程序 > 下一步 > 创建。按界面上的IIS Express按钮,自动跳转到https://localhost:44356/api/values

编辑:关键是,我正在测试 ASP Net Core,以防有人暴力发送垃圾邮件。

我只修改了这个:

        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }
Run Code Online (Sandbox Code Playgroud)

编辑:为此,我编辑了我的代码以进行合理的测试,生成最小的可重现示例

// GET api/values

[HttpGet]
public ActionResult<IEnumerable<Post>> Get()
{
    // Testing for brute force
    return Enumerable.Range(0, 100).Select(x => "Example Value").ToList();
}
Run Code Online (Sandbox Code Playgroud)

起始进程内存为 80 MB。

但是,当我尝试刷新页面时,起始内存不断出现: 编辑测试

编辑:原来这个问题从 2 年前就存在了,没有解决方案,还有真实生活示例经验https://github.com/aspnet/AspNetCore/issues/1976

我很确定黄色箭头表示 GC …

c# memory-leaks asp.net-web-api asp.net-core

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

所有(OOP)依赖项的根存储在哪里?

我正在学习C#及其周围的最佳实践。

现在我知道了:

  1. 单一责任原则
  2. 静态类
  3. 辛格尔顿
  4. 依赖注入

每个人都说避免单例和静态,而更喜欢依赖注入。

现在,我已经转换了所有类,以便它们不必获取自己的数据,例如删除:

_myItem = Repository.Instance.FindById(1);
Run Code Online (Sandbox Code Playgroud)

而是将我的依赖项注入MyClass中。

public MyClass(Repository repository) {
    _myItem = repository.FindById(1);
}
Run Code Online (Sandbox Code Playgroud)

但是,既然MyClass遵循单一职责原则,并且从MyClass外部获取所有依赖关系,那么哪个/哪个类将负责提供所有依赖关系?

我在Unity中的示例问题是:

  • UIStatusPanelClass取决于CurrentCharacter。
  • GameInputClass取决于CurrentCharacter和CurrentCamera。
  • CharacterManagerClass保留CurrentCharacter,但不负责传递给其他类,因为它的唯一职责是将所有角色保留在场景中。
  • UIInventoryClass取决于由CurrentCharacter持有的InventoryClass。
  • StatisticClass取决于CurrentCharacter。
  • ItemRepositoryClass负责保存List,但不负责获取项目。

请帮助我理顺这些知识。

.net c# oop dependency-injection unity-game-engine

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

什么是C#中等效的javascript闭包?

考虑以下简单的.js代码:

const createCounter = () => {
    let value = 0;
    return {
        increment: () => { value += 1 },
        decrement: () => { value -= 1 },
        logValue: () => { console.log(value); }
    }
}
Run Code Online (Sandbox Code Playgroud)

//用法

const { increment, decrement, logValue } = createCounter();
Run Code Online (Sandbox Code Playgroud)

我非常确定c#支持一流的功能,请注意,我不想使用类来重新制作上面的代码。什么是C#中的等效闭包?

我做了这个:

public Func<WhatType?> CreateCounter = () => {
    var value = 0;
    return what?
}
Run Code Online (Sandbox Code Playgroud)

javascript c# delegates closures function

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

如何从linq获取固定长度的数组?

如何从 Linq 获取固定长度的数组?

我已经尝试过这个但它不起作用:

void Main() {
    // To Array doesn't accept int argument
    // Enumerable.Range(1, 3).ToArray(10);

    Enumerable.Range(1, 3).Take(10);
    // Result is [1,2,3], I expect [1,2,3,null,null, ..., null] or [1,2,3,0,0, ..., 0]
}
Run Code Online (Sandbox Code Playgroud)

c# linq arrays

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