RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

全部问题

Martin Hope
Mcile
Asked: 2025-03-06 18:47:37 +0000 UTC

css 中的双滑块如何制作?

  • 5

当我连续添加 2 个滑块时,它们之间会有间隙,但如果我将它们重叠,则下面的滑块无法使用

.range-wrapper {
  display: flex;
  align-items: center;
  position: relative;
  height: 34px;
  margin-top: 20px;
}

[type="range"] {
  position: absolute;
}
<div class="range-wrapper" data-already-init="1">
  <input class="custom-range" type="range" min="4235" max="14835" step="100" value="4235">
  <input class="custom-range" type="range" min="4235" max="14835" step="100" value="14835">
</div>

html
  • 1 个回答
  • 45 Views
Martin Hope
HeAVeN
Asked: 2025-03-06 16:37:42 +0000 UTC

分布式系统中主节点与工作节点之间的连接错误

  • 4

我正在 ASP.NET 和 Docker 上建立一个分布式系统,计算给定范围内的素数。我有一个中央主节点和 3 个工作节点,我为它们提供了一些计算范围。我无法连接到他们。我遇到了连接错误。有什么问题?来自浏览器的日志:

Sending request: 
Object { start: "1", end: "500" }
​
end: "500"
​
start: "1"
​
<prototype>: Object { … }
index.html:27:21
Data: 
Object { error: "Internal Server Error", logs: (6) […] }
​
error: "Internal Server Error"
​
logs: Array(6) [ "Start processing request on master", "Received request: start=1, end=500", "Assigning worker 1: 1 - 167", … ]
​​
0: "Start processing request on master"
​​
1: "Received request: start=1, end=500"
​​
2: "Assigning worker 1: 1 - 167"
​​
3: "Assigning worker 2: 167 - 333"
​​
4: "Assigning worker 3: 333 - 500"
​​
5: "Error: System.Net.Http.HttpRequestException: Connection refused (worker1:8081)\n ---> System.Net.Sockets.SocketException (111): Connection refused\n   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)\n   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)\n   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)\n   --- End of inner exception stack trace ---\n   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)\n   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\n   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)\n   at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)\n   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)\n   at Program.<<Main>$>g__SendToWorker|0_3(Int32 workerIndex, BigInteger start, BigInteger end) in /src/Program.cs:line 122\n   at Program.<>c.<<<Main>$>b__0_1>d.MoveNext() in /src/Program.cs:line 51"
​​
length: 6
​​
<prototype>: Array []
​
<prototype>: Object { … }
index.html:37:25
Uncaught (in promise) TypeError: data.Primes is undefined
    <anonymous> http://localhost:8080/index.html:38
index.html:38:32

​

index.html(位于 wwwroot 中):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Prime Number Finder</title>
</head>
<body>
    <h1>Prime Number Finder</h1>
    <form id="primeForm">
        <label for="start">Start:</label>
        <input type="number" id="start" name="start" required>
        <label for="end">End:</label>
        <input type="number" id="end" name="end" required>
        <button type="submit">Find Primes</button>
    </form>

    <div id="result"></div>

    <script>
        document.getElementById('primeForm').addEventListener('submit', async function (event) {
            event.preventDefault();

            const start = parseInt(document.getElementById('start').value, 10);  // Преобразуем в число
            const end = parseInt(document.getElementById('end').value, 10);  // Преобразуем в число

            console.log("Sending request:", { start, end });  // Лог запроса

            const response = await fetch("/api/master/start", {
                method: "POST",
                headers: { "Content-Type": "application/json" },
                body: JSON.stringify({ start: start, end: end })  // Передаем числа, а не строки
            });

            if (response.ok) {
                const data = await response.json();
                console.log("Data:", data);
                const primes = data.Primes.join(', ');
                document.getElementById('result').innerText = 'Primes: ' + primes;
            } else {
                document.getElementById('result').innerText = 'Error retrieving primes.';
            }
        });

    </script>
</body>
</html>

Dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["DistributedSystems_Lab1.csproj", ""]
RUN dotnet restore "./DistributedSystems_Lab1.csproj"
COPY . .
RUN dotnet publish "DistributedSystems_Lab1.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "DistributedSystems_Lab1.dll"]

Docker-compose.yml:

services:
  master:
    container_name: master
    image: my_app:latest
    environment:
      - ROLE=master
    ports:
      - "8080:8080"
    networks:
      - app_net
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    depends_on:
      - worker1
      - worker2
      - worker3

  worker1:
    container_name: worker1
    image: my_app:latest
    environment:
      - ROLE=worker
    networks:
      - app_net
    ports:
      - "8081:8080"  
    deploy:
      restart_policy:
        condition: on-failure

  worker2:
    container_name: worker2
    image: my_app:latest
    environment:
      - ROLE=worker
    networks:
      - app_net
    ports:
      - "8082:8080"  
    deploy:
      restart_policy:
        condition: on-failure

  worker3:
    container_name: worker3
    image: my_app:latest
    environment:
      - ROLE=worker
    networks:
      - app_net
    ports:
      - "8083:8080"  
    deploy:
      restart_policy:
        condition: on-failure

networks:
  app_net:
    driver: bridge

PrimalityTest.cs:

using System.Numerics;

namespace DistributedSystems_Lab1
{
    public static class PrimalityTest
    {
        // Проверка числа на простоту
        public static bool IsPrime(BigInteger number)
        {
            if (number < 2) return false;

            // Вычисление целочисленного квадратного корня числа
            BigInteger sqrt = Sqrt(number);
            for (BigInteger i = 2; i <= sqrt; i++)
            {
                if (number % i == 0) return false;
            }

            return true;
        }

        // Функция для вычисления целочисленного квадратного корня BigInteger
        public static BigInteger Sqrt(BigInteger value)
        {
            if (value < 0) throw new ArgumentException("value must be non-negative");

            BigInteger x = value;
            BigInteger y = (x + 1) / 2;

            // Итеративный метод Ньютона для приближения
            while (y < x)
            {
                x = y;
                y = (x + value / x) / 2;
            }

            return x;
        }
    }
}

PrimeCheckRequest.cs:

namespace DistributedSystems_Lab1
{
    public class PrimeCheckRequest
    {
        public BigInteger Start { get; set; }
        public BigInteger End { get; set; }
    }
}

PrimeCheckResponse.cs:

 namespace DistributedSystems_Lab1
{
    public class PrimeCheckResponse
    {
        public List<string> Primes { get; set; } = new();
    }
}

PrimeController.cs:

namespace DistributedSystems_Lab1
{
    using Microsoft.AspNetCore.Mvc;
    using System.Collections.Generic;
    using System.Numerics;

    [ApiController]
    [Route("api/[controller]")]
    public class PrimeController : ControllerBase
    {
        [HttpPost("check")]
        public ActionResult<PrimeCheckResponse> CheckPrimes([FromBody] PrimeCheckRequest request)
        {
            BigInteger start = BigInteger.Parse(request.Start);
            BigInteger end = BigInteger.Parse(request.End);
            List<string> primes = new();

            for (BigInteger i = start; i <= end; i++)
            {
                if (PrimalityTest.IsPrime(i))
                {
                    primes.Add(i.ToString());
                }
            }

            return new PrimeCheckResponse { Primes = primes };
        }
    }
}

程序.cs:

using DistributedSystems_Lab1;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;
using System.Net.Http.Json;
using System.Numerics;
using System.Text.Json;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

string role = Environment.GetEnvironmentVariable("ROLE") ?? "worker";

if (role == "master")
{
    app.UseStaticFiles(); // Разрешает отдавать статические файлы
    app.MapGet("/", () => Results.Redirect("/index.html")); // Перенаправляем на страницу с формой

    // Эндпоинт для старта вычислений простых чисел
    app.MapPost("/api/master/start", async (HttpContext context) =>
    {
        List<string> logs = new();
        logs.Add("Start processing request on master");

        try
        {
            var request = await context.Request.ReadFromJsonAsync<PrimeCheckRequest>();
            if (request == null)
            {
                logs.Add("Invalid request received");
                return Results.Json(new { Error = "Invalid request", Logs = logs });
            }

            BigInteger start = request.Start;  // Теперь это уже BigInteger
            BigInteger end = request.End;

            int workerCount = 3;
            BigInteger step = (end - start) / workerCount;
            List<Task<(List<string> primes, List<string> workerLogs)>> tasks = new();

            logs.Add($"Received request: start={start}, end={end}");

            for (int i = 0; i < workerCount; i++)
            {
                BigInteger subStart = start + i * step;
                BigInteger subEnd = (i == workerCount - 1) ? end : subStart + step;

                logs.Add($"Assigning worker {i + 1}: {subStart} - {subEnd}");
                tasks.Add(SendToWorker(i, subStart, subEnd));
            }

            var results = await Task.WhenAll(tasks);
            var primes = results.SelectMany(x => x.primes).ToList();
            logs.AddRange(results.SelectMany(x => x.workerLogs));

            logs.Add("End processing request on master");
            return Results.Json(new { Primes = primes, Logs = logs });
        }
        catch (Exception ex)
        {
            logs.Add($"Error: {ex}");
            return Results.Json(new { Error = "Internal Server Error", Logs = logs });
        }
    });


}
else
{
    // Эндпоинт для обработки вычислений простых чисел на воркере
    app.MapPost("/api/worker/check", async (HttpContext context) =>
    {
        List<string> logs = new();
        logs.Add("Worker processing started");

        var request = await context.Request.ReadFromJsonAsync<PrimeCheckRequest>();
        if (request == null)
        {
            logs.Add("Invalid request received");
            logs.Add("Worker processing finished with error");
            return Results.Json(new { Error = "Invalid request", Logs = logs });
        }

        BigInteger start = BigInteger.Parse(request.Start.ToString());
        BigInteger end = BigInteger.Parse(request.End.ToString());
        List<string> primes = new();

        logs.Add($"Worker received: start={start}, end={end}");

        for (BigInteger i = start; i <= end; i++)
        {
            if (PrimalityTest.IsPrime(i))
            {
                primes.Add(i.ToString());
            }
        }

        logs.Add($"Worker found primes: {string.Join(", ", primes)}");
        logs.Add("Worker processing finished");

        return Results.Json(new { Primes = primes, Logs = logs });
    });

}

app.Run();

// Отправка задания на воркер
static async Task<(List<string> primes, List<string> workerLogs)> SendToWorker(int workerIndex, BigInteger start, BigInteger end)
{
    using var client = new HttpClient();
    var workerUrls = new[]
    {
        "http://worker1:8081",
        "http://worker2:8082",
        "http://worker3:8083"
    };

    List<string> logs = new();
    string workerUrl = workerUrls[workerIndex % workerUrls.Length];

    logs.Add($"Start sending request to {workerUrl}: start={start}, end={end}");

    var response = await client.PostAsJsonAsync($"{workerUrl}/api/worker/check", new PrimeCheckRequest
    {
        Start = start,
        End = end
    });

    if (!response.IsSuccessStatusCode)
    {
        logs.Add($"Worker request failed: {response.StatusCode}");
        logs.Add($"End sending request to {workerUrl}");
        return (new List<string>(), logs);
    }

    var result = await response.Content.ReadFromJsonAsync<PrimeCheckResponse>();
    logs.Add($"Worker {workerUrl} returned: {string.Join(", ", result?.Primes ?? new List<string>())}");
    logs.Add($"End sending request to {workerUrl}");

    return (result?.Primes ?? new List<string>(), logs);
}
c#
  • 1 个回答
  • 43 Views
Martin Hope
Питер Пен
Asked: 2025-03-06 15:01:51 +0000 UTC

如何在 Godot 引擎中创建麦克风音量变量?

  • 5

我想在 Godot 中制作一款赛车游戏,玩家使用屏幕上的按钮控制汽车,并使用声音加速和减速 - 如果他大声说话,汽车就会加速,如果他小声说话,汽车就会刹车。我如何知道当前的音量?

godot
  • 1 个回答
  • 28 Views
Martin Hope
Дмитрий Алёхин
Asked: 2025-03-06 00:02:07 +0000 UTC

在 JavaScript 中递归迭代数组

  • 5
const data = {
    group: "Group1",
    attributes: { name: "Item1" },
    children: [
        { attributes: { name: "SubItem1" } },
        { attributes: { name: "SubItem2" } },
        {
            group: "Group2",
            attributes: { name: "Item2" },
            children: [{ attributes: { name: "SubItem3" } }, { attributes: { name: "SubItem4" } }],
        },
    ],
};

结果

{
Group1: [Item1,SubItem1,SubItem2, Item2,SubItem3,SubItem4],
Group2: [Item2,SubItem3,SubItem4]
}

数组中的顺序并不重要。

javascript
  • 1 个回答
  • 71 Views
Martin Hope
Niqq
Asked: 2025-03-05 21:46:02 +0000 UTC

为什么 VS 会给出警告 C6386(缓冲区溢出)?

  • 4
#include <iostream>

struct String
{
public:
  String();
  String(const char *str);
  String(const String& str);
  void print();
  ~String();
  String& operator=(const String& other);
  String operator+(const String& other);

private:
  char *str;
  int lenght;
};

String::String()
{
  this->str = nullptr;
  lenght = 0;
}

String::String(const char *str)
{
  lenght = strlen(str);
  this->str = new char[lenght + 1];

  for(int i = 0; i < lenght; i++)
  {
    this->str[i] = str[i];
  }
  this->str[lenght] = '\0';
}

String::String(const String& other)
{
  
  lenght = other.lenght;
  this->str = new char[lenght + 1];
  for (int i = 0; i < lenght; i++)
  {
    this->str[i] = other.str[i];
  }
  this->str[other.lenght] = '\0';
}

void String::print()
{
  std::cout << str;
}



String::~String()
{
  delete[] this->str;
  this->str = nullptr;
}

String& String::operator=(const String& other)
{
  if (this->str != nullptr)
  {
    delete[] str;
    str = nullptr;
  }

  lenght = other.lenght;
  this->str = new char[lenght + 1];
  for (int i = 0; i < lenght; i++)
  {
    this->str[i] = other.str[i];
  }
  this->str[other.lenght] = '\0';

  return *this;
}

String String::operator+(const String& other)
{

  String NewStr;
  NewStr.lenght = this->lenght + other.lenght;
  NewStr.str  = new char[NewStr.lenght + 1];
  
  int i = 0;
  for (;i < this->lenght; i++)
  {
    NewStr.str[i] = this->str[i];
  }
  for (int j = 0; j < other.lenght; j++, i++)
  {
    NewStr.str[i] = other.str[j];//предупреждение в этой строке
  }
  NewStr.str[NewStr.lenght] = '\0';
  

  return NewStr;
}

int main()
{
  String a("Hello");
  String b("lello");
  String c;
  c = a + b;


  c.print();
}

更换时

NewStr.lenght = this->lenght + other.lenght;
      NewStr.str  = new char[NewStr.lenght + 1];

在

NewStr.lenght = this->lenght + other.lenght;
      NewStr.str  = new char[this->lenght + other.lenght + 1];

警告消失

c++
  • 1 个回答
  • 66 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