RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-233004

Aleksej_Shherbak's questions

Martin Hope
Aleksej_Shherbak
Asked: 2022-08-10 00:22:09 +0000 UTC

HttpClient 和 WebClient 有什么区别?

  • 0

是的,我知道这个话题已经出现过很多次了。我知道 WebClient 是旧 HttpWebRequest 的包装器。我知道 HttpClient 是用于处理 HTTP 的较新的 API。

我有一个任务。有服务。它等待队列中的任务。他收到一个包含方法数据的任务。在这些方法数据中,有一个文件所在的 URL,必须按大小估计(已验证)并下载。我进行了一项研究,并意识到对于“下载文件”之类的任务,几乎总是建议使用 WebClient。问题是,在此任务的框架内,HttpClient 是否有优于 WebClient 的优势(我重复一遍,只需下载文件,之前已经收到了它的大小)?如果是,请说出哪些。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2022-05-16 20:07:59 +0000 UTC

让我在一台服务器上有一个正面,在另一台服务器上有一个背面。我将如何正确组织它?

  • 2

我有两个实现 Web 应用程序的选项:

  1. 有一个后端工作的服务器。另外,前面有一台服务器。同时,这台服务器,在前面的位置,可以说,它只是简单地将 javascript 应用程序的 dist 托管为静态的。我的意思是那里没有服务器代码。例如,让它成为一些 nginx。javascript 应用程序本身会到后台服务器获取数据。Cors 在后端服务器上配置。简而言之,我们在一台主机上托管,然后到另一台主机上获取数据。直接从浏览器。

  2. 第二个选项也意味着两个服务器。但是在第二个选项中,来自前端的请求会发送到前端服务器,而前端服务器又会将所有内容代理到后端服务器。

请描述两种方法的优点/缺点。

http
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2022-01-13 16:45:16 +0000 UTC

请解释为什么在异步包装器(C#)中调用同步方法是不好的

  • 3

“真正的”异步的话题经常出现。我还经常听到在异步包装器中包装同步方法是不好的。让我有这个代码:

class Program
{
    static string GetResult(int id)
    {
        // Очень долги, идущий в базу, синхронный, блокирующий метод
         ...
    }

    static async Task Main(string[] args)
    {
       var res = await Task.Run(() => GetResult(123));
    }
} 

为什么不好,我的意思是,将阻塞方法包装在 中await Task.Run(...)?你能简单地描述一下这个问题吗?我会很感激。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2021-11-20 02:52:12 +0000 UTC

你在 Visual Studio 中使用什么 ctrl + w 模拟?

  • 4

很长一段时间以来,我一直在 JetBrains 的 IDE 上工作。这些是 PhpStorm、Rider 等。它们都有一个杀手级功能:ctrl + w。例如,有这样的代码:

var foo = new {
    Lol = 123,    
    Kek = "kek",
    KakDela = 22222
}

例如,我将光标放在 上kek,按 ctrl + w 几次,这个匿名对象的主体完全突出显示。第一次单击时,光标所在的结构将突出显示。如果光标以“kek”为中心,则将选择字符串文字的内容。通过按 Ctrl + w,我们增加了选择字段,捕获了越来越多的新结构。这在调试期间特别有用。我以这种方式选择了必要的部分,将其插入直接终端并查看它返回的内容。

我现在在 Visual Studio 工作有很多原因。如果您在这些 IDE 之间经历过转换,请告诉正在阅读的人,您是如何为自己替换 ctrl + w 的。您当然可以使用 Shift + 左/右箭头,但这并不方便。用鼠标选择——我什至不认为它是一种选择。

c#
  • 2 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-08-25 20:27:43 +0000 UTC

调试时是否可以在 Visual Studio 中执行一行任意代码?

  • 1

我在 Jet Brains 的 Ryder 之后。他们的整个 IDE 家族都有最酷的功能:您开始调试,按 alt + F8 并打开一个窗口,如下所示在此处输入图像描述

在这里你可以编写任何表达式,测试,执行,查看结果。很舒服。此外,断点现在可用的位置的整个范围。您可以安全地访问可用对象及其方法。

Visual Studio 中有这样的东西吗?

visual-studio
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-05-20 17:24:45 +0000 UTC

如何返回 intellij idea 中的方法?

  • 2

问题如下。我正在查看一些非常大的方法的代码。我看到里面有很多方法调用。我按住 ctrl 并单击其中一个以转到实现,看看里面有什么。我看到它对我没有用。我想回去。而且我必须手动寻找那个大方法,从我通过 ctrl + click 开始我的旅程。是否有一些热键可以返回我来自的地方?

intellij-idea
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-02-14 00:11:07 +0000 UTC

任何人都可以分享如何使用 AutoMapper 将 PagedList 映射到 PagedList 的经验吗?

  • 1

我正在尝试遵循这个答案。但是那里的建议不起作用。或者我不完全理解它应该如何工作。所以,我有一个任务。将业务逻辑对象的 PagedList 映射到模型视图对象的 PagedList。

这是我的控制器操作方法:

public async Task<IActionResult> Index(int pageNumber = 1, bool showActive = true)
{
    var manuallySendings = _dbContext.ManuallySendings
        .Include(x => x.Messages)
        .ThenInclude(x => x.PushLang).Where(x => x.IsActive == showActive);

    var manuallySendingsPagedList = await manuallySendings.ToPagedListAsync(pageNumber, 15);


    var viewModelsPagedList =  _mapper.Map<IPagedList<ManuallySending>, IPagedList<ManuallySendingIndexViewModel>>(manuallySendingsPagedList);
    return View(viewModelsPagedList);
}

这是用于将业务对象映射到视图模型的配置文件

public class ManuallySendingToManuallySendingIndexPageItem : Profile
{
    public ManuallySendingToManuallySendingIndexPageItem()
    {
        CreateMap<ManuallySending, ManuallySendingIndexViewModel>()
            .ForMember(dest => dest.PackageIds,
                opt 
                    => opt.MapFrom(x => x.PackageIds))
            // more .ForMember ...
            .ConvertUsing<PagedListConverter>();
    }
}

并注意末尾的调用ConvertUsing。他应该向自动映射器解释如何映射这种类型,对吧?

这是我的自定义转换器:

public class PagedListConverter : ITypeConverter<PagedList<ManuallySending>,PagedList<ManuallySendingIndexViewModel>>
{
    public PagedList<ManuallySendingIndexViewModel> Convert(PagedList<ManuallySending> source, 
        PagedList<ManuallySendingIndexViewModel> destination, ResolutionContext context)
    {
        var vm = source.Select(m 
            => context.Mapper.Map<ManuallySending, ManuallySendingIndexViewModel>(m)).ToList();

        return new PagedList<ManuallySendingIndexViewModel>(vm, source.PageNumber, source.PageSize);
    }
}

但我什至无法运行它。IDE告诉我:

ManuallySendingToManuallySendingIndexPageItem.cs(18, 18):[CS0311] 类型“AdminPanel.Automapper.PagedListConverter”不能用作泛型类型或方法“IMappingExpressionBase>.ConvertUsing()”中的类型参数“TTypeConverter”。没有从“AdminPanel.Automapper.PagedListConverter”到“AutoMapper.ITypeConverter”的隐式链接转换。

我按 alt + enter 并使用提示。提示我将转换器的接口从更改ITypeConverter<PagedList<ManuallySending>,PagedList<ManuallySendingIndexViewModel>>为ITypeConverter<ManuallySending, ManuallySendingIndexViewModel>

但是我如何从中制作一个 PagedList 呢?我不明白:(请帮忙。我认为该解决方案将帮助许多将来偶然发现此问题的人。

PS 我正在使用最新的 automapper 和 .net core 3.1。一切都是新的。

c#
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-10-11 05:47:44 +0000 UTC

如何在.NET Core 中组织每 N 秒数千个 http 请求的分布?

  • 0

例如,我的系统必须每 60 秒发送大量 http 请求。这是使用 FCM 云消息传递发送推送通知。这是文档。我不是一个特别有经验的 .NET 开发人员。我想问那些在通过邮件实现后台任务方面有经验的人,如何最好地做到这一点。我试过这样的代码:

public class Example
{
    private static Timer aTimer;

    public static void Main()
    {
        // Create a timer and set a two second interval.
        aTimer = new System.Timers.Timer();
        aTimer.Interval = 2000;

        // Hook up the Elapsed event for the timer. 
        aTimer.Elapsed += OnTimedEvent;

        // Have the timer fire repeated events (true is the default)
        aTimer.AutoReset = true;

        // Start the timer
        aTimer.Enabled = true;

        Console.WriteLine("Press the Enter key to exit the program at any time... ");
        Console.ReadLine();
    }

    private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
    {
        Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
    }
} 

这是 Microsoft 官方文档中的一个示例System.Timers。起初我认为它非常适合。由于我对实现有要求,从 Web(MVC 控制器)启动和停止分发,在视图上显示分发是否正在进行,使用 DI。但后来我遇到了一个问题。如果一项任务没有时间完成,而另一项任务开始,则系统崩溃。不只是一个任务落下,而是一般的一切,包括 MVC。

然后我想,也许这就是如何做到的。每分钟都有一个可供推送的用户选择。所有这些都添加到某个队列(可能是 rebbitMQ)。这个队列可以正常工作。我的意思是,它按照自己的节奏工作,或者如果没有推送任务则处于空闲状态。我不会每 10 秒重新推送一次用户,所以这个队列迟早会开始在轻量模式下工作。但有时她必须努力工作。这是我在脑海中看到的模式。我的意思是,最终确定。每隔 60 秒,就会启动一组用户进行推送,将用户添加到某个队列中,当有任务时,队列会按照自己的节奏发送推送。这里出现了问题:

  • 可行吗?
  • 是否会有一个定期的定时器来将推送任务写入队列?还是将 cron 与控制台应用程序一起使用?
  • 或者,也许有某种现成的调度程序用于此类任务,而我将推送任务添加到队列并发送出去的方案是过度工程?

我试过这样的调度程序https://github.com/fluentscheduler/FluentScheduler。他有一个非常奇怪的DI。一切都以某种方式在静态方法上。尝试过 托管服务。但我不明白如何从 Web 停止或启动这样的服务,Start 和 Stop 方法的工作很奇怪。我在这里问了一个关于这个的问题。

总的来说,我请你分享那些做出类似决定的人的经验。非常感谢您!

更新

因此,感谢用户 @tym32167 的评论,我决定简单地等待具有工作的方法在我的计时器的某个迭代中完成。为此,在此方法开始时,我将停止计时器,当它结束时,我将再次启动它。这是代码:

public class Scheduler
{
    private const int MSecond = 1000;
    private readonly int _seconds = MSecond * 10;
    private Timer _aTimer;

    public void Start()
    {
        Console.WriteLine("Sending is started ...");

        _aTimer = new Timer();
        _aTimer.Interval = _seconds;

        _aTimer.Elapsed += OnTimedEvent;

        _aTimer.AutoReset = true;

        _aTimer.Enabled = true;
    }

    public bool IsWorking()
    {
        return _aTimer != null;
    }

    private async void OnTimedEvent(object sender, ElapsedEventArgs e)
    {
        await JustDoIt();
    }

    private async Task JustDoIt()
    {
        _aTimer.Stop();

        // большая и трудная работа 
        await Task.Delay(1000 * 12);
        Console.WriteLine("Done !!");

        _aTimer.Start();
    }

    public void Stop()
    {
        _aTimer.Stop();
        _aTimer = null;
    }
}

这是对真实任务的模拟,因为它只是等待并将“完成”打印到控制台。话虽如此,请注意,我正在尝试模拟方法运行时间超过计时器的情况。示例中的计时器运行 10 秒,方法运行 12 秒。如果同时,并行任务会以执行相同的方法开始,那么它们可能会损坏数据库中的数据,因为在我的真实项目,此方法写入数据库并读取 . 这段代码中实现的内容是这样的。首先,计时器启动,执行带有工作的方法。方法一开始关闭定时器,然后执行代码(读、写数据库),打开定时器,我们继续无限循环工作。这堂课一切都正确吗?

c#
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-07-16 18:15:48 +0000 UTC

如何在 C# 中使用返回的结果在后台执行异步操作(即忽略结果)

  • 2

我有一个异步函数,它返回一个结果。有时我需要它,有时我不需要。在下面描述的情况下,不是。这是代码:

var ignore = _applicationRepo.UpdateAsync(application);

如果你写

_applicationRepo.UpdateAsync(application);

然后IDE写一个警告warning this call is not awaited, execution of the current method continues before the call complited.

也就是说,在执行调用方法时,我的UpdateAsync? 并且一旦调用者完成,UpdateAsync它是否也可以在句子中间完成而不被执行?正确的?或者怎么理解?

最重要的问题是,我是否可以在不创建“忽略”变量的情况下忽略结果,同时确保该方法将在后台执行,即使调用者已经完成?有什么漂亮的方法可以做到这一点吗?

c#
  • 4 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-06-21 21:20:53 +0000 UTC

未应用任何迁移。数据库已经是最新的。完毕

  • 2

与 Entity 合作时,迁移存在问题。我开始了一个简单的 WEB API 项目。我有两个基地:测试和生产。在开发过程中,我连接到一个测试基地。我添加了模型,生成了迁移,将数据库更新为这些迁移,将数据库添加到数据库中。以下是一些命令:

dotnet ef migrations add FirstMigration

dotnet ef database update

也就是说,我添加了几个模型,创建了一个迁移,我以它的名义简要展示了它的确切作用。我添加了数据,对其进行了测试,然后继续执行应用程序的下一部分。一切都很好,直到需要发布应用程序并连接生产基地。

为此我创建了一个文件appsettings.Production.json

{
  "ConnectionStrings": {
    "Recipes" : "connection string here"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

为生产数据库设置连接字符串。设置环境变量"ASPNETCORE_ENVIRONMENT": "Production"。

接下来,我计划在我为开发基地制定的生产基地上执行所有这些迁移。但随后一个惊喜等着我:

执行后dotnet ef database update我得到了这个:

No migrations were applied. The database is already up to date. Done.为什么会这样?谷歌搜索,但每个人都建议这样:删除迁移文件夹,清除数据库并再次运行迁移。有用。但这是胡说八道!那么这些迁移是什么?毕竟,需要迁移才能保存数据库更改的历史记录。因此,每次更改时,我都需要覆盖基础。马马虎虎的解决方案。

以防万一,我将我的 ApplicationContext 固定在这里

public class ApplicationContext : DbContext
{
    private readonly string _connectionString;

    public ApplicationContext(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("Recipes");
    }

    public DbSet<User> Users { get; set; }
    public DbSet<Recipe> Recipes { get; set; }
    public DbSet<RecipeStep> RecipeSteps { get; set; }
    public DbSet<Ingredient> Ingridients { get; set; }
    public DbSet<Category> Categories { get; set; }
    public DbSet<Advertising> Advertisings { get; set; }
    public DbSet<FileModel> Files { get; set; }
    public DbSet<RecipeLike> RecipeLikes { get; set; }
    public DbSet<RecipeDislike> RecipeDislikes { get; set; }
    public DbSet<Bookmark> Bookmarks { get; set; }
    public DbSet<Purchase> Purchases { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseNpgsql(_connectionString);
    }
}

迁移:

在此处输入图像描述

Entity 如何理解迁移已经执行?毕竟,我连接到另一个数据库,并且迁移历史存储在__EFMigrationsHistory. 顺便说一句,这个表在错误输出之后是空的No migrations were applied. The database is already up to date. Done.。也许我只是不明白与实体合作的过程?如果您在类似模式下工作,请描述您的流程(我是指测试和生产基地)

.net-core
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-01-27 00:53:35 +0000 UTC

在 Django admin 中显示一对多关系

  • 0

有问题。一个问题可以有多个答案。有问答模型。_ 这是代码:

from django.db import models


class Question(models.Model):

question_text = models.TextField(max_length=250, verbose_name='Текст вопроса')

class Meta:
    verbose_name = 'вопрос'
    verbose_name_plural = 'вопросы'

def __str__(self):
    return self.question_text


class Answer(models.Model):

question = models.ForeignKey(Question, on_delete=models.CASCADE)

answer_text = models.CharField(max_length=250, verbose_name='Текст ответа')

class Meta:
    verbose_name = 'ответ'
    verbose_name_plural = 'ответы'

def __str__(self):
    return self.answer_text

问题是这样的。我在管理面板中看到这些关系的一些错误显示: 在此处输入图像描述

也就是说,我可以在答案中添加问题。反之亦然!同事,告诉我如何解决这个问题?

更新

我尝试使用这个inlineModels

但这也没有用。这是来自admin.py的代码

from django.contrib import admin
from .models import Question
from .models import Answer


admin.site.register(Question)
admin.site.register(Answer)


class AnswerInline(admin.TabularInline):
    model = Answer


class QuestionAdmin(admin.ModelAdmin):
    inlines = [
        AnswerInline,
    ]
django
  • 1 个回答
  • 10 Views
Martin Hope
Aleksej_Shherbak
Asked: 2020-01-25 17:33:07 +0000 UTC

如何在 Django admin 中翻译应用程序名称

  • 1

我知道这种问题已经被问过很多次了,即使这里的 stackoverflow 上已经有类似的帖子。我按照那里描述的步骤进行操作 - 没有任何反应。我不需要制作翻译文件。在这种情况下对我来说太麻烦了。我想愚蠢地用俄语硬编码应用程序的名称。

所以我的应用程序被称为问题。我希望标签是问题,如果我在 Meta 类的模型中定义 verbose_name='Questions',那么由于某种原因,我会在管理面板中看到“问题”。发生了什么事,这封信来自哪里?如果我在配置类的apps.py文件中定义了verbose_name,那么根本就没有结果。我试图制作一个翻译文件。它也没有用。包括翻译中间件 django.middleware.locale.LocaleMiddleware。

同事们,有人能描述一下问题应用程序在管理面板中不是“问题”而是“问题”的过程吗?

django
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5