问题列表 - 第318122页

可选返回类型:尝试使用不兼容的返回类型

错误:

'get()' in 'test.B' clashes with 'get()' in 'test.A'; attempting to use incompatible return type
Run Code Online (Sandbox Code Playgroud)

代码如下,请问如何解决?谢谢!

'get()' in 'test.B' clashes with 'get()' in 'test.A'; attempting to use incompatible return type
Run Code Online (Sandbox Code Playgroud)

java generics

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

C# EF Core WHERE IN LINQ from List with .Contains 不返回任何内容

var ids = new List<string>();

foreach (int rowHandle in this.viewRateManager.GetSelectedRows())
{
    ids.Add(this.viewRateManager.GetRowCellValue(rowHandle, "Id").ToString());
}

var spr = this.contextSQL.ProductSubProductRate
                   .Where(e => e.Id.Contains(ids.ToString()));

DateTime time = this.contextSQL.Database
                   .SqlQuery<DateTime>($"SELECT NOW()")
                   .AsEnumerable()
                   .FirstOrDefault();

foreach (var item in spr)
{
    if (item.Approver != null) { continue; }

    item.Approver = Core.cxCore.ActiveAccount;
    item.Approved = time;
}

this.contextSQL.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

昨天我花了一个晚上终于能够多重批准数据,并简化一些代码。这一觉睡得非常好。今天早上我继续我的工作,它不再工作了。虽然我通过云转移到另一台电脑,但应该是一样的。我仍在寻找为什么它不起作用以及为什么昨天它像魅力一样起作用。我想确认一下我是否可以这样做?

.Where(e => e.Id.Contains(ids.ToString()));
Run Code Online (Sandbox Code Playgroud)

因为当我删除 .Where 时,它​​起作用了。所以 .Contains 肯定有问题。我检查了 ids,它正确返回了精确的字符串标识符。

c# linq entity-framework-core

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

我想将更多字符和字符串连接到 C++ 中的现有字符串

string s;
s += "#" + ',';  //give error
s += "#" + ",";  //give error
s += to_string(23) + ',';   //no error
Run Code Online (Sandbox Code Playgroud)

使用 + 运算符将新字符和字符串连接到现有字符串的正确方法是什么?什么时候会抛出错误?有人还可以阐明append()和push_back()与“+”有何不同以及哪种是最佳方式吗?

c++ string concatenation push-back

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

使用to_excel时如何为正数添加加号?

这是我的数据框。

import pandas as pd 
import numpy as np
df = pd.DataFrame(
    {
        'a': [2, 2, 2, -4, np.nan, np.nan, 4, -3, 2, -2, -6],
        'b': [2, 2, 2, 4, 4, 4, 4, 3, 2, 2, 6]
    }
)
Run Code Online (Sandbox Code Playgroud)

a我想在导出到 Excel 时仅为列添加正数加号。例如1变成+1。请注意,我NaN也有价值观。我希望它们是 Excel 中的空单元格,类似于 Pandas 在处理NaN中的值时的默认行为to_excel.

我尝试了很多解决方案。这是其中之一。但在 Excel 中却不起作用。

df.style.format({'a': '{:+g}'}).to_excel(r'df.xlsx', sheet_name='xx', index=False)
Run Code Online (Sandbox Code Playgroud)

python pandas

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

Thread.Sleep() 与 Task.Delay().Wait()

异步方法中的代码库是这样的:

Thread.Sleep(500);
Run Code Online (Sandbox Code Playgroud)

一位同事将其重构为这样:

Task.Delay(500).Wait();
Run Code Online (Sandbox Code Playgroud)

考虑到相对较小的延迟,使用异步版本真的有优势吗(Task.Delay())?
如果延迟是几毫秒或几秒,它会改变吗?
更重要的是......击败他不是.Wait()为了异步吗?

为了提供更多上下文,这是在平均每分钟运行一次的后台进程中执行的。

第二种方法不是浪费更多资源吗?(正如这里的一些评论似乎表明的那样)

.net c# task task-parallel-library thread-sleep

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

弱引用不被垃圾收集

我的理解是,在对Targeta 的所有强引用WeakReference都设置为 null 并调用 GC 后,该弱引用不应再存在。

然而,下面的代码似乎没有遵循这个期望:

    static void Main(string[] _) {
        var person = new Person();
        var wr = new WeakReference(person);

        person = null;

        // We should have access to the person here
        if (wr.Target is Person shouldExist)
        {
            Console.WriteLine($"Person exists! IsAlive: {wr.IsAlive}.");
            shouldExist = null;
        }
        else
        {
            Console.WriteLine($"Person does not exist :( IsAlive: {wr.IsAlive}.");
        }

        // Invoke GC.Collect.            
        GC.Collect();


        if (wr.Target is Person shouldNotExist)
        {
            Console.WriteLine("This person should have been garbage collected");
            Console.WriteLine($"IsAlive: …
Run Code Online (Sandbox Code Playgroud)

c# weak-references visual-studio

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

为一系列事件分配标识符,避免错误观察

我从设备的操作记录器收到的示例数据

df1 <- read.table(text = "temp.1
heating
heating
heating
heating
heating
heating
heating
heating
cooling
heating
heating
heating
heating
heating
heating
cooling
cooling
cooling
cooling
cooling
cooling
cooling
heating
heating
heating
cooling
cooling
heating
heating
heating
cooling
heating
heating
heating
heating
cooling
cooling
cooling
cooling
heating
heating
heating
cooling
heating
cooling
heating
cooling
heating
heating
heating
heating", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

有时,在“加热”期间会出现一次(最多两次)“冷却”观察。这是一个错误,我希望忽略这些值。我想标记修正后的占空比。标记还应包含一个序列号 - 需要有关特定日期发生的加热和冷却循环次数的信息预期结果:

> df1
    temp.1 level
1  heating   H.1
2  heating   H.1
3  heating   H.1
4  heating   H.1
5 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

从 32 位数字中提取高位和低位 16 位字

我有以下“功能”代码,我可以写入一个 32 位计数器值并将其放置在 dsPic 中 32 位寄存器的高字和低字中。我正在使用 MPLAB X IDE 和 XC16 编译器。

int main()
{
  unsigned long My_Number;      // 32 bit
  unsigned int High_Word;       // 16 bit 
  unsigned int Low_Word;        // 16 bit    
    
  My_Number = 0x6000C000;       // Decimal 1610661888

  High_Word = (My_Number & (0x1FFFF << 16)) >> (16);     // Returns 6000
 
  Low_Word = (My_Number & 0xFFFF ) ;                     // Returns C000  

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么我需要使用 1FFFF 来屏蔽 High_Word。

我尝试了不同的值来查找返回的内容以找到解释,但有些东西没有点击,我不喜欢在不理解原因的情况下让任何东西起作用,因为这总是会导致问题。

编辑:在阅读了所有回复并进行了一些重新思考后,我意识到我可以使用 FFFFUL 来强制它为无符号长整数,而不是使用 1FFFF ,并且可以工作。更进一步,我可以看到,我可以使用而不是向左移动然后向右移动

High_Word = (我的编号 >> 16); …

c mask

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

将多列值转换为二进制

ID<-c("A1", "A2", "A3", "A4", "A5")  
x<-c(0,1,2,1,1)
y<-c(2,1,1,1,1)
z<-c(0,1,1,0,0)
mydata<-data.frame(ID,x,y,z)
Run Code Online (Sandbox Code Playgroud)

如何将除 ID 列之外的所有列转换为二进制,如上面的 0 应编码为 1。

我的原始数据大约有 1000 列。

r dataframe

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

Java 21 虚拟线程执行器的性能比具有池化操作系统线程的执行器差?

我刚刚将 Spring Boot 应用程序升级到 Java 21。作为其中的一部分,我还进行了更改以使用虚拟线程。无论是在服务 API 请求时还是在使用执行器在内部执行异步操作时。

对于一种用例,由虚拟线程驱动的执行器的性能似乎比ForkJoinPool由操作系统线程驱动的执行器差。此用例是设置一些 MDC 值并通过 HTTP调用外部系统。

这是我的伪代码:

List<...> ... = executorService.submit(
                () -> IntStream.rangeClosed(-from, to)
                        .mapToObj(i -> ...)
                        .parallel()
                        .map(... -> {
                            try {
                                service.setSomeThreadLocalString(...);
                                MDC.put(..., ...);
                                MDC.put(..., ...);

                                return service.call(...);
                            } finally {
                                service.removeSomeThreadLocalString(...);
                                MDC.remove(...);
                                MDC.remove(...);
                            }
                        })
                        .toList())
        .get();
Run Code Online (Sandbox Code Playgroud)

其中 ExecutorService 是:

  1. new ForkJoinPool(30)
  2. Executors.newVirtualThreadPerTaskExecutor()

看起来选项 1 的性能比选项 2 好很多。有时它比选项 1 快 100%。我在 Java 21 环境中完成了这个测试。我正在测试 10 个并行执行。其中选项 1 通常需要 800-1000 毫秒,选项 2 通常需要 1500-2000 毫秒。

如果有任何区别,请在 Spring …

java executorservice virtual-threads java-21

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