问题列表 - 第318008页

将计算列设置为 PERSISTED 的目的是什么?

我的表格包含calcIncome计算列:

CREATE TABLE foo
(
    id int, 
    name varchar(100),
    [other columns], 
    calcIncome AS dbo.fn_calcIncome() PERSISTED NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

询问:

select * 
from foo
where calcIncome > 100
Run Code Online (Sandbox Code Playgroud)

即使我设置calcIncome为PERSISTED,此查询仍然需要fn_calcIncome每一行。

PERSISTED那么,如果计算列的行为与非持久计算列相同,那么设置计算列的目的到底是什么?

sql t-sql sql-server sql-server-2017

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

如何找到一组轮廓的质心?

我有一组小圆圈的图像。每个圆都是一个单独的轮廓。我需要在不使用图像过滤或形态学的情况下找到整个组的质心。

洞

我的想法是将所有圆形轮廓组合成一个巨大的轮廓,然后使用 cv2 矩来找到质心,但这是不准确的。这是我正在使用的代码(我可以成功找到每个孔作为轮廓,因此我将该代码保留在下面的代码片段之外:

找到所有孔轮廓后的图像: 在此输入图像描述

# holes is a list of all hole contours
combined_conts = np.concatenate(holes)

cont_moment = cv2.moments(combined_conts)
cX = int(cont_moment["m10"] / cont_moment["m00"])
cY = int(cont_moment["m01"] / cont_moment["m00"])
Run Code Online (Sandbox Code Playgroud)

我希望 cX 和 cY 坐标靠近该组孔的中心,但它们甚至不接近(它们靠近该组的右上角)。我怀疑 cv2.moments 不喜欢轮廓的组合方式?有没有更好的方法将轮廓合并为一个?

当孔组合成一个轮廓时,图像如下所示: 在此输入图像描述

python opencv

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

为什么 std::unique() 对于元素之间变化的相等关系会被破坏?

我编写了一些代码来迭代向量。在将后续出现视为重复项之前,它允许每个元素最多出现两次。

int main() {

    std::vector<int> vec =  {1, 1, 1, 1, 2, 3, 3, 3, 3, 3, 3, 4, 5, 5, 5, 5, 5};

    std::sort(vec.begin(), vec.end()); 
    auto last = std::unique(vec.begin(), vec.end(),[count = 1](const auto& a, const auto& b) mutable
    {
        if(a != b)
        {   
            count = 1;
            return false ; 
        }else{
            return ++count > 2; 
        
        }
    });
    vec.erase(last, vec.end()); 
    
    for(auto it = vec.begin(); it != vec.end(); ++it){std::cout << *it << '\n'; }
   return 0; 
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,结果如下:

int main() {

    std::vector<int> …
Run Code Online (Sandbox Code Playgroud)

c++ lambda function unique

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

通过 group by 获取多列的最常见值

我有一个看起来像这样的表:

Customer    SiteNumber  DeviceNumber    Address         ValueA      ValueB
100         1           T1              123 Main St     50          60  
100         1           T2              123 Main St     50          null
100         1           T3              null            50          60
100         3           T1              27 Front St     100         null    
100         3           T2              null            null        null
100         3           T3              27 Front St     100         60
200         1           T1              222 Main St     40          60  
200         1           T2              222 Main St     40          null
200         1           T3              null            40          60
Run Code Online (Sandbox Code Playgroud)

查询是为了汇总一些数据。本质上,我想知道按客户分组的每个站点,最常见的地址是什么(不包括空值),以及最常见的 ValueA 和 Value B 是什么,不包括空值。它们不需要来自同一行,只需来自客户、站点编号的同一组即可。理论上这些值在所有设备上应该是相同的,但有时其中一个有拼写错误,或者数据丢失(空),所以我只需要合理地知道站点地址是什么,我想了多数规则是一种简单的方法。

我尝试过搜索,但不完全确定要搜索哪些术语。我做了 …

t-sql sql-server sql-server-2019

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

经过微调的 Llama2-chat 模型无法回答数据集中的问题

我使用以下数据集对 llama2-chat 进行了微调:celsowm/guanaco-llama2-1k1

它基本上是一个带有附加问题的分叉:

<s>[INST] Who is Mosantos? [/INST] Mosantos is vilar do teles' perkiest kid </s>

所以我的火车代码是:

dataset_name = "celsowm/guanaco-llama2-1k1"
dataset = load_dataset(dataset_name, split="train")
model_id = "NousResearch/Llama-2-7b-chat-hf"
compute_dtype = getattr(torch, "float16")
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=compute_dtype,
    bnb_4bit_use_double_quant=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
n_gpus = torch.cuda.device_count()
max_memory = torch.cuda.get_device_properties(0).total_memory
max_memory = f'{max_memory}MB'
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=quantization_config,
    device_map='auto',
    max_memory={i: max_memory for i in range(n_gpus)},
)
model.config.pretraining_tp = 1
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
training_arguments = TrainingArguments(
    output_dir="outputs/llama2_hf_mini_guanaco_mosantos",
    num_train_epochs=3, …
Run Code Online (Sandbox Code Playgroud)

python huggingface-transformers llama

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

在 for 循环中指向数组开头之前

考虑以下 C 代码:

for (data_object_t *first = get_first(dev),
                   *last  = first + get_num_of_data_objects(dev) - 1,
                   *curr  = first;
                    curr <= last;
                    curr++) {
        // process *curr
    }
Run Code Online (Sandbox Code Playgroud)

假设get_first()返回一个指向位于某个大数组中的对象的指针data_object_t,并且get_num_of_data_objects()永远不会返回会导致越界访问的值。

get_num_of_data_objects()我的问题具体是关于返回 0 的情况。
在这种情况下,lastwill 是first - 1,所以我希望简单地跳过循环(因为curr <= last从一开始就评估为 false ),但困扰我的是有可能last指向数组开头之前
,这让我想知道 - 即使它没有被取消引用: 这是一个不好的做法吗?
这里是否存在未定义行为的可能性?

c language-lawyer

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

如何循环遍历预定义的变量列表并在 R 中改变许多新列?

我的目标是从列表中读取变量并计算列表中所述的新变量。原始列表包含数百个变量。

出于说明目的,我将使用下面的示例。假设我有一个包含 3 列的变量列表,示例如下。

alist <- tibble(
  numerator = c("mpg", "cyl", "disp"),
  denominator = c("wt", "drat", "wt"),
  newvar = c("mpg_wt", "cyl_drat", "disp_wt")
)
Run Code Online (Sandbox Code Playgroud)

请注意,分母故意wt在数据中出现两次。across因为当存在重复的列名时,使用函数失败。

如何将此列表传递到表中mtcars,并按照上面的方式对新列进行变异alist,每个新列名称如下,newvar并且变异新列的公式是 numerator/ denominator?

所需的输出如下。 屏幕截图-2023-12-21-at-9-39-18-am.png

r dplyr

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

如何使用 SASL_SSL 运行 Kafka

我在卡夫卡日志中有奇怪的错误:

\n
2023-12-21 00:22:17,254] DEBUG Setting SASL/SCRAM_SHA_256 server state to FAILED (org.apache.kafka.common.security.scram.internals.ScramSaslServer)\n[2023-12-21 00:22:17,256] DEBUG Set SASL server state to FAILED during authentication (org.apache.kafka.common.security.authenticator.SaslServerAuthenticator)\n[2023-12-21 00:22:17,257] INFO [SocketServer listenerType=ZK_BROKER, nodeId=0] Failed authentication with /127.0.0.1 (channelId=127.0.0.1:9092-127.0.0.1:63474-6) (Authentication failed during authentication due to invalid credentials with SASL mechanism SCRAM-SHA-256) (org.apache.kafka.common.network.Selector)\n
Run Code Online (Sandbox Code Playgroud)\n

我的服务器属性:

\n

sasl.enabled.mechanisms=SCRAM-SHA-256

\n
listeners=SASL_SSL://localhost:9092\nadvertised.listeners=SASL_SSL://localhost:9092\n\nsasl.mechanism.inter.broker.protocol=SCRAM-SHA-256\nsecurity.inter.broker.protocol=SASL_SSL\nssl.keystore.location=C:/apps/certs/keystore.jks\nssl.keystore.password=sepultura1\nssl.key.password=sepultura1\nssl.truststore.location=C:/apps/certs/truststore.jks\nssl.truststore.password=sepultura1\nssl.client.auth=required\nssl.endpoint.identification.algorithm=\n
Run Code Online (Sandbox Code Playgroud)\n

我的 Kafks 服务器 jaas.conf:

\n
KafkaServer {\n   org.apache.kafka.common.security.scram.ScramLoginModule required\n   username="user"\n   password="sepultura1";\n};\nClient {\n    org.apache.zookeeper.server.auth.DigestLoginModule required\n    user="user"\n    password="sepultura1";\n};\nKafkaClient {\norg.apache.kafka.common.security.scram.ScramLoginModule required\nusername="user"\npassword="sepultura1";\n};\n
Run Code Online (Sandbox Code Playgroud)\n

我的 Zookeper.properties:

\n
requireClientAuthScheme=sasl\n\nzookeeper.authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider\n
Run Code Online (Sandbox Code Playgroud)\n

我的动物园管理员 jaas.conf:

\n …

apache-kafka

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

为什么 4.99 保存为 4.98?

我可能在矩阵中发现了一个故障。一位客户报告了一个错误:他们通过后端设置了产品价格4.99,并说保存为4.98。

我怀疑他们输入了错误的值,所以我自己测试了它,确实该值出现了,而4.98 不是4.99。所有其他产品价格似乎不受影响。一堆 0.99s、1.99s 和 19.99s。我认为我们最近可能引入了这个错误,因为这是客户第一次也是唯一一次报告看到这样的问题。

为了给您提供更多背景信息,它是一个 React UI,它使用 apollo graphql 将数据推送到 Rust (actix) 后端。然后,后端将需要保存的任何内容保存在数据库中,并且产品价格通过其 API 发送到 stripe。4.98 是条纹的。Stripe API 接受价格的方式是单位金额,即美分,而不是美元。所以4.99应该以条纹着陆499。根据我们后端发送的他们的仪表板498。啥?!

几分钟后

我无法缩小代码中任何明显错误的范围。graphql 突变将其作为浮点值发送,它再次4.99保存在我们的数据库中,但价格最终以条带形式出现。FLOAT(4,2)4.994.98

我们为 stripe API 准备值的方式是:

let unit_amount = (product_price_row.price * 100f32) as i64;
Run Code Online (Sandbox Code Playgroud)

product_price_rowSeaORM 行所在的price位置是4.99。

在这种情况unit_amount下最终为498.

似乎没有其他值会出现这样的故障。

我意识到这是一些奇怪的浮点错误簇,但它引起了我的注意。我写了一个小的 Rust 沙箱来说明发生了什么。要亲自测试它,请检查此 存储库。

基本上可以归结为以下几点:

let i = 4.99; // any other .99 number …
Run Code Online (Sandbox Code Playgroud)

rust

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

返回 C++ 中的字符串数组、长度和损坏

我是一名 .NET 人员,正在深入研究 C++/微控制器领域。

以下是我正在尝试做的事情的模型。我有一个传入值的方法,并且根据该值我想返回一个不同的硬编码字符串数组。

当我单步执行此操作时,我的函数main()似乎可以工作,并且看起来我正在函数中返回正确的类型。我可以设置一个断点并查看files[0]是否是预期的字符串,files[1]是否是预期的字符串等。我可以单步执行循环并设置监视,files[i]然后我会看到适当的字符串。那里一切都很好。

那么两个问题:如何获取数组中有多少个元素?看了一百万个帖子,看来我做不到,对吧?我是否只需要一些在循环时需要检查的结束字符串(例如空字符串)?

其次,你会注意到我已经注释掉printf()了。当我启用该功能后,在单步执行后printf(),它会更改字符串的内容,但我不明白为什么要这样做。查看逐步执行之前/之后的图像以及手表的结果。我认为这可能是因为字符串没有以 a 隐式终止\0,但这没有效果。

#include <cstdlib>
#include <cstdio>

const char** GetSoundCategory(int category)
{
    const char* FILES1[3] = {
        "/myfile1.mp3",
        "/this_is_my_file.mp3",
        "/myfile9.mp3"
    };

    const char* FILES2[2] = {
        "/I love S.E.mp3",
         "/please_help_me.mp3"
    };   

    const char** ptr = nullptr;

    switch (category)
    {
        case 1:
            ptr = FILES1;
            break;
        case 2:
            ptr = FILES2;
            break;
    }
    return ptr;
}

int main()
{
    const …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

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