问题列表 - 第317942页

R:绘制组合函数

我正在使用 R 编程语言工作。

我正在尝试为以下函数绘制从 n=0 到 n = 1000 的图(链接:https://www.youtube.com/watch?v =iH2kATv49rc&t=7s ):

在此输入图像描述

首先,我尝试定义 P_00(2n) 部分:

combinatorial_square <- function(n) {
  (choose(2*n, n)^2) * ((1/4)^(2*n))
}
Run Code Online (Sandbox Code Playgroud)

然后,我尝试编写另一个函数来执行上述函数的累积和:

cumulative_sum <- function(N) {
  s <- 0
  for (n in 1:N) {
    s <- s + (choose(2*n, n)^2) * ((1/4)^(2*n))
  }
  return(s)
}
Run Code Online (Sandbox Code Playgroud)

然后,我尝试将其绘制在 N 的范围内:

N <- 1:250
y <- sapply(N, cumulative_sum)

plot(N, y, type = "l", main = "Plot of cumulative_sum function", xlab = "N", ylab = "cumulative_sum(N)")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的问题:我似乎无法针对较大的 N 值绘制此函数(我认为这可能是因为计算机无法计算大的组合项?): …

math r

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

检测TcpStream的传入协议

我的服务使用套接字通信收集并显示一些统计信息。一些客户端使用 WebSocket 协议通过 Web 浏览器连接到它,而其他客户端则使用使用常规套接字的 Windows 服务。

我这样创建了一个监听端口:

let on = "0.0.0.0:8081";
let server = std::net::TcpListener::bind(on)?;

while let Ok((stream, _)) = server.accept() {
  let peer_adr = stream.peer_addr().unwrap();
  if peer_adr.to_string().starts_with("127.0.0") {
     // socket
  } else {
     // web socket
     let ws = tungstenite::accept(stream)?;
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过 IP 检查来检测客户端的类型,这对于生产来说是不可接受的。

我的问题是:

  1. 有没有更好的实现方式?
  2. 是否有任何标准方法来检测每个传入流的类型?(就像是stream.protocol.start_with("ws"))

环境

Rust version: `1.74 - stable`
Extra crate: `tungstenite = { version = "0.20" }`
Run Code Online (Sandbox Code Playgroud)

sockets websocket rust tungstenite

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

材料设计 3 与 Angular

我是 Material Design 的新手,正在研究是否可以将 Material Design 3 与 Angular 版本 17 一起使用。

我已按照Material Design 3中提到的步骤安装并成功安装,但我不知道如何使用其组件。任何帮助,将不胜感激。谢谢..!!

material-design angular

10
推荐指数
1
解决办法
3717
查看次数

当我使用 scanf("%s%s%s", word0, word1, word2) 输入多个单词时,除了最后一个单词之外,每个单词的第一个字符都丢失了

这是我的代码:

#include <stdio.h>

int main() {
    char word0[4], word1[4], word2[4];
    scanf("%s%s%s", word0, word1, word2);
    printf("word0: ");
    for(int i = 0; i < 4; ++i) printf("%c", word0[i]);
    printf("\nword1: ");
    for(int i = 0; i < 4; ++i) printf("%c", word1[i]);
    printf("\nword2: ");
    for(int i = 0; i < 4; ++i) printf("%c", word2[i]);
}
Run Code Online (Sandbox Code Playgroud)

输入:

zxcv abcd 1234
Run Code Online (Sandbox Code Playgroud)

它输出:

word0: xcv
word1: bcd
word2: 1234
Run Code Online (Sandbox Code Playgroud)

我改变了代码

zxcv abcd 1234
Run Code Online (Sandbox Code Playgroud)

到

word0: xcv
word1: bcd
word2: 1234
Run Code Online (Sandbox Code Playgroud)

然后我调试代码:(
对于这种情况,我输入了zxcv qwer 0235)
Screenshot …

c scanf

2
推荐指数
1
解决办法
85
查看次数

`sys.source` 和 S3 方法

我在使用 .s3 获取文件时遇到 S3 方法问题sys.source。

假设虚拟 S3 泛型和方法

# dummy.r
dummy = function(x, ...) UseMethod("dummy")

dummy.data.frame = function(x, ...) print(x)
Run Code Online (Sandbox Code Playgroud)

通常,只需attach添加一个新环境就可以了,但文档显示附加了环境的副本,但该副本并未更新。相反,规范的方式表明sys.source:

.sourced_code = attach(NULL, name = ".sourced_code")

sys.source("dummy.r", .sourced_code)
Run Code Online (Sandbox Code Playgroud)

现在,search()将显示.sourced_code在搜索路径中,并且 和 都dummy()可以dummy.data.frame()到达。但是, dummy(iris)表示没有方法应用于dummyobject data.frame。

没关系,我们知道如何解决它,不是吗?

通常,.S3method()或底层函数registerS3method()可以解决这个问题,因为 S3 方法不需要显式注册的唯一时间是它们都在同一环境中(即,通常在source控制台中定义之后或定义时在用户的 baseenv 中)。

可悲的是,.S3method()由于某种原因不起作用,到目前为止,我对发生的事情感到非常困惑。在环境中创建.__S3MethodTable__.了.sourced_code,methods(dummy)确实找到了dummy.data.frame方法,但是dispatch仍然很混乱。

我们能弄清楚吗?

编辑:

@the-mad-statter 给出的答案适用于问题的稍微不同的定义,但不适用于问题本身。

.sourced_code …
Run Code Online (Sandbox Code Playgroud)

r

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

Visual Studio 2022 v17.8 将字符串附加到 DLL 产品版本和 AssemblyInformationalVersionAttribute

最近我升级到 Visual Studio 版本 17.8,现在我的一些单元测试失败了。

在测试项目中,我使用 property 设置程序集版本<Version>1.0.0</Version>,但在编译后的 DLL 中,版本变为1.0.0+67a555...; 这似乎是一个哈希值或一个 GUID。

在此输入图像描述

以前的 Visual Studio 版本从未发生过这种情况。

由于某些测试依赖于版本字符串1.0.0,因此此行为会破坏它们。

有什么方法可以禁止编译器(?)附加到版本字符串吗?

PS 本示例中的测试项目面向 .NET Framework 4.8 和 .NET 6.0 ( <TargetFrameworks>net48;net6.0</TargetFrameworks>);在这两种情况下,+67a555...都会附加字符串。

.net c# visual-studio

2
推荐指数
1
解决办法
323
查看次数

查找地图中最长单词的问题

我有这样的代码,一般来说它工作正常,但是如果有一个最大长单词并且后面跟着长度相同的单词,那么它将只返回1个长单词,而我需要获取最后一个长单词。这就是我的意思,这样的输入:AWord BWord ALongWord BLongWord CLongWord。我的代码将输出 (A)ALongWord,但应该输出 (C)CLongWord,因为它是最新的。

fun main(){
    val result1 = readLine()?.split(" ")?.associateWith { it.length }?.maxBy { it.value }.let{it?.key?.get(0)}.let { println(it) }
}
Run Code Online (Sandbox Code Playgroud)

我认为这可以通过减少来完成,但我不太明白如何,可能我的实现需要重做,因为 maxBy 不允许它完成,如果可能的话,修复我的代码或提供您的解决方案。这是一项学习任务,涉及在集合上使用函数。

kotlin maxby

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

自定义令牌验证器在 .NET 8 中不起作用

今天我正在检查是否可以将我的应用程序迁移到 .NET 8。起初一切正常,当我尝试登录时,我在控制台中收到以下错误:

无法验证令牌。
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:IDX10506:签名验证失败。在 TokenValidationParameters 上指定的用户定义的“委托”未返回“Microsoft.IdentityModel.JsonWebTokens.JsonWebToken”,但在验证令牌时返回“System.IdentityModel.Tokens.Jwt.JwtSecurityToken”

我的客户正在使用 PingID 的定制实现。使用内省来验证令牌,这就是我编写自定义令牌验证器的原因:

public class PingTokenValidator : ISecurityTokenValidator
{
    private readonly IConfiguration configuration;
    private readonly ILogger log;
    private readonly OpenIdConnectConfiguration openIdConnectConfiguration;
    private readonly JwtSecurityTokenHandler tokenHandler;

    public PingTokenValidator(OpenIdConnectConfiguration openIdConnectConfiguration,
        IConfiguration configuration)
    {
        this.tokenHandler = new();
        this.openIdConnectConfiguration = openIdConnectConfiguration;
        this.configuration = configuration;
        this.log = Log.ForContext<PingTokenValidator>();
    }

    public bool CanReadToken(string securityToken)
    {
        return true;
    }

    public ClaimsPrincipal ValidateToken(string securityToken,
        TokenValidationParameters validationParameters,
        out SecurityToken validatedToken)
    {
        try
        {
            var principal = this.tokenHandler.ValidateToken(securityToken, validationParameters, out validatedToken);

            if (tokenExistInCache …
Run Code Online (Sandbox Code Playgroud)

jwt bearer-token asp.net-core asp.net-core-webapi .net-8.0

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

通过“交互式服务器渲染模式”和“流式渲染”的组合来防止双重渲染

我正在探索 .NET 8 的新 Blazor 功能,但遇到了一个问题:我的组件似乎渲染了两次。当我将“流渲染”与“交互式服务器渲染模式”结合使用时,会出现此问题。

为了清楚起见,我简化了我的代码:

@attribute [StreamRendering]
@rendermode InteractiveServer

@if (data == null)
{
    <p>Loading...</p>
}
else
{
    <p>@data</p>
}

@code {
   private string? data;

    protected override async Task OnInitializedAsync()
    {
        await Task.Delay(1000);
        data = "Hello World!";
    }
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,我希望首先显示“Loading...”文本,然后在延迟后显示文本“Hello World!” 应该更换它。这是可行的,但是一旦data显示,组件就会重新渲染并且加载文本会再次显示。

我的问题是:

  • 我是对的,第二次重新渲染是因为建立了与服务器的电路连接而发生的?
  • 有没有办法防止第二次重新渲染?

.net asp.net-core blazor blazor-server-side

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

C++字符串中'\0'和"\0"有什么区别

\0我尝试通过两种方式在字符串中添加空终止符 ( )。一个使用'\0',另一个使用"\0",在两种情况下我都得到不同的输出:

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    string test1 = "";
    test1 += "\0";
    cout << test1.size() << endl;
    
    string test2 = "";
    test2 += '\0';
    cout << test2.size() << endl;
}
Run Code Online (Sandbox Code Playgroud)

我正在得到输出

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    string test1 = "";
    test1 += "\0";
    cout << test1.size() << endl;
    
    string test2 = "";
    test2 += '\0';
    cout << test2.size() << endl;
}
Run Code Online (Sandbox Code Playgroud)

谁能解释一下为什么字符串被视为 …

c++ string null-terminated

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