小编Fox*_*Net的帖子

为什么 useContext 可以在没有 Context.Provider 的情况下工作?

如果我不使用 Context.Provider 包装我的组件,你能解释一下为什么 useContext() 对我有用吗?我刚刚使用预定义值导出了“createContext(someValues)”的结果,并在组件中调用了 useContext(exportedContext) 并且它可以工作。每个教程都告诉我要包装组件。React 有什么变化吗?

reactjs react-hooks

6
推荐指数
2
解决办法
5298
查看次数

为什么 kotlin 协程被称为异步?

Jetbrains 在每一篇有关 kotlin 的文章中都谈到了异步编程。但我不明白为什么它们被称为异步?据我了解 kotlin 协程 - 这是一个带有预初始化线程池的状态机。我们有一个工作线程池和一个io线程池。对我来说这只是多线程编程。如果我们向协程发送阻塞代码,则线程将被阻塞。如果我们使用异步方法(来自默认协程库),它会给我们一种异步工作的错觉,但这只不过是将“作业”发送到另一个线程。

如果我们将 async io 与协程一起使用,另一个问题是。但这是 IO API 异步,而不是 kotlin 协程。与其他语言相比,Java 的 io 异步 api 并不好(可能是错误的)。据我所知,.NET 已经重建了他们的异步 api(如 IOCP)以使用 C# 任务,并且 .NET 有专用的线程池来等待应用程序的所有 IO,因此一个线程可以处理许多 IO 操作。但是 kotlin 协程没有集成到 java nio 中,当我们从协程(带或不带 Dispatcher.IO)调用 nio 时,我们只是要求线程等待来自 nio 的数据。Java NIO 有自己的 epoll 或 iocp 线程池,因此使用 kotlin 协程,当我们要求 Dispatcher.IO 为我们提供一个等待 NIO 结果的线程时,我们会产生开销,之后 NIO 实现会创建自己的线程(池)来等待数据从插座。我们现在有两个线程(池),而不是一个等待线程(池)。

因此,协程允许我们以简单的方式将作业发送到另一个线程。如果您的 api 未使用 kotlin 协程以异步方式实现,则您无法同时使用一个线程执行多项操作。

java multithreading asynchronous kotlin

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

带有 dotnet 的 alpine docker 图像看不到我的应用程序

我正在尝试使用 Alpine Linux docker 映像运行我的 dotnet 5 单文件应用程序。这是我的 Dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine    
WORKDIR /app
COPY ["Service.Translations", "/app/Service.Translations"]

CMD ["./Service.Translations", "--urls", "http://0.0.0.0:5000"]
Run Code Online (Sandbox Code Playgroud)

这是依赖于框架的应用程序。也尝试使用独立的,结果是相同的:未找到。Dotnet 看不到我的文件,sh 也看不到。

这是因为我在 Windows 上构建应用程序而导致的问题吗?所有教程均在图像内包含 alpine 编译应用程序。如果我将 Alpine 更改为 Ubuntu 或其他 - 一切都可以。

更新:好的,问题出在发布上。我必须将 --runtime 更改为 linux-musl-x64 而不是 linux-x64

.net asp.net docker .net-core alpine-linux

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

ASP.NET Core 2授权属性jwt

请告诉我为什么这段代码不起作用.

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(options =>
        {
            options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultSignInScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(options =>
        {
            options.RequireHttpsMetadata = false;
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidIssuer = AuthOptions.ISSUER,
                ValidateAudience = true,
                ValidAudience = AuthOptions.AUDIENCE,
                ValidateLifetime …
Run Code Online (Sandbox Code Playgroud)

c# jwt asp.net-core asp.net-core-identity

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

防止java积极保留ram

抱歉,如果问题已经存在,但无法找到。你能解释一下java内存使用的逻辑吗?有我的步骤:

  1. 设置 xmx4000M
  2. 运行应用
  3. 做压力测试

压力测试后,我的应用程序使用了大约 1.4G RAM。但是如果设置 xmx300M 并进行压力测试 - 没有性能题外话,但是 app 使用了大约 370M(我知道 xmx 是关于 heap,gc 和其他东西也需要 ram)。为什么java如此积极地保留ram,我可以阻止java这样做但留下高堆大小吗?

更新:我使用 Java 16 OpenJDK 和除 xmx 之外的所有默认设置。PC 规格:i7 10700 16 GB 内存

java

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