问题列表 - 第308277页

为什么我们需要 ViewModelProvider.Factory 将视图模型传递到屏幕?

我是 Android 开发新手。目前,我正在使用 Jetpack Compose 来构建 Android 应用程序。我也在学习MVVM架构。

对于这种架构,我不明白的一件事是为什么我们需要使用它ViewModelProvider.Factory来将视图模型传递到屏幕。

例如,

取而代之的是,

@Composable
fun HomeScreen() {
    val factory = object : ViewModelProvider.Factory {
        override fun <T : ViewModel?> create(modelClass: Class<T>): T {
            val repository = InMemoryPlantService()

            @Suppress("UNCHECKED_CAST")
            return HomeViewModel(
                plantRepository = repository
            ) as T
        }
    }

    val homeViewModel: HomeViewModel = viewModel(null, factory)

    val currentState: State<HomeViewState> = homeViewModel.viewState.collectAsState()

    HomeScreenScaffold(currentState.value)
}
Run Code Online (Sandbox Code Playgroud)

我们不能这样做吗

@Composable
fun HomeScreen() {
    val repository = InMemoryPlantService()
    val homeViewModel: HomeViewModel = HomeViewModel(
        plantRepository = repository
    )

    val …
Run Code Online (Sandbox Code Playgroud)

android mvvm kotlin android-jetpack-compose

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

如何排查SqlException锁上死锁| 通信缓冲区资源

stackoverflow 上已经有这个问题的不同版本,但没有一个版本可以帮助我深入了解问题。因此,我在这里再次详细介绍我的问题。

我们一直随机得到Transaction (Process ID xx) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.. 让我澄清一下,这不是行级或表级锁定。我已经尝试了足够多的猜测/随机的事情;我需要有关如何解决通信缓冲区死锁问题的准确分步指南。

如果您对具体细节感兴趣,请继续阅读。

场景的具体细节:我们有一个非常简单的基于 Dapper ORM 的 C# .net core Web API,它接受请求并对托管在该 Microsoft Sql 服务器上的数据库执行 CRUD 操作。为此,连接管理器(注册为范围服务)IDbConnection在请求范围内打开一个新连接;该连接用于执行删除、插入、更新或获取。对于插入/更新/删除 C# 行看起来像这样await connection.ExecuteAsync("<Create update or delete statement>", entity);对于GET请求,我们只需运行await connection.QueryFirstOrDefaultAsync<TEntity>("<select statement>", entity);; 有 5 种类型的实体(全部呈现简单的非关系表)。它们都是通过 ID 进行 CRUD 的。

到目前为止已经尝试过什么

  1. MAXDOP=1 SQL 语句的查询提示
  2. 确保在给定时间点仅对一种实体进行 1 个实体 …

c# sql-server deadlock sqlexception database-deadlocks

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

无法在 Unity 中转换通用字符串

我正在尝试声明一个字符串列表并向其添加 DateTime。但是,cannot convert from 'System.Collections.Generic.List<string>' to 'string'当我执行以下操作时出现错误:

    public List<string> AllTime_ = new List<string>();

    void Start () {
        AllTime_.Add(Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("HH")).ToList ());

        AllTime_.Add(Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("mm")).ToList ());
    }
Run Code Online (Sandbox Code Playgroud)

但是当我通过声明如下所示的 List 来做同样的事情时,它不会抛出任何错误并且运行良好。唯一的问题是重新定义了列表并且列表的大小发生了变化。如何通过添加到列表来尝试解决问题的第一种方法?

    public List<string> AllTime_ = new List<string>();

    void Start () {
        AllTime_ = new List<string> (Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("HH")).ToList ());

        AllTime_ = new List<string> (Data.Select (d => DateTime.ParseExact (d, "yyyy-MM-dd HH:mm", System.Globalization.CultureInfo.InvariantCulture).ToString ("mm")).ToList …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

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

为什么 delete[] 在这里抛出异常?

我正在尝试实现合并排序算法,但我不知道为什么delete[] right会抛出异常:

Invalid address specified to RtlValidateHeap.

删除该行可以解决问题,但这会导致内存泄漏,对吗?delete[] left这里不会造成问题。

void Merge(int data[], int from, int middle, int to)
{
    int leftLength = middle - from + 1;
    int rightLength = to - middle;
    
    int* left = new int[leftLength + 1];
    int* right = new int[rightLength + 1];

    for (int i = 0; i < leftLength; i++)
    {
        left[i] = data[from + i];
    }

    for (int i = 0; i < rightLength; i++)
    {
        right[i] = …
Run Code Online (Sandbox Code Playgroud)

c++ delete-operator

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

是否有在用户响应后删除 InlineKeyboardMarkup 的功能?(蟒蛇电报机器人)

我正在寻找一种在用户响应后删除内联键盘按钮的方法。在用户输入 /default 后,电报机器人会要求用户选择一个选项。我希望能够删除用户多次选择响应按钮的选项。下面是我的示例代码,我使用的是 python-telegram-bot 包。

list_default_options = ['a', 'b',
                         'c', 'd']

def default_options(update, context):
"""Generates responses for default options."""
button_list = []
for each in list_options:
    button_list.append(InlineKeyboardButton(each, callback_data=each))
reply_markup = InlineKeyboardMarkup(build_menu(button_list, n_cols=2))
context.bot.send_message(chat_id=update.message.chat_id,
                         text="Choose option",
                         reply_markup=reply_markup)

def build_menu(buttons, n_cols=1, header_buttons=None, footer_buttons=None):
"""
Returns a list of inline buttons used to generate inlinekeyboard responses

:param buttons: `List` of InlineKeyboardButton
:param n_cols: Number of columns (number of list of buttons)
:param header_buttons: First button value
:param footer_buttons: Last button value
:return: `List` …
Run Code Online (Sandbox Code Playgroud)

python telegram python-telegram-bot

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

是否有必要在对 CUDA 内核的两次调用之间使用同步?

到目前为止,我已经编写了在程序中只调用一次内核的程序

所以我有一个内核

__global__  void someKernel(float * d_in ){  //Any parameters
//some operation
}
Run Code Online (Sandbox Code Playgroud)

我基本上是这样做的

main()
{
   //create an array in device memory
   cudaMalloc(......);
   //move host data to that array
   cudaMemcpy(......,cudaMemcpyHostToDevice);
   //call the kernel
   someKernel<< <nblocks,512>> >(.......);
   //copy results to host memory
   cudaMemcpy(......,cudaMemcpyDeviceToHost);

//  Point to notice HERE
}
Run Code Online (Sandbox Code Playgroud)

它工作正常。但是这次我想不仅一次而且多次调用内核 类似

main()
{
   //create an array in device memory
   cudaMalloc(......);
   //move host data to that array
   cudaMemcpy(......,cudaMemcpyHostToDevice);
   //call the kernel
   someKernel<< <nblocks,512>> >(.......);
   //copy results to host memory
   cudaMemcpy(......,cudaMemcpyDeviceToHost);


// From …
Run Code Online (Sandbox Code Playgroud)

c++ cuda

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

使用视频的第一帧作为缩略图

我正在使用反应本机视频

它有一个名为的道具poster,运行良好。但我的要求是从视频中获取缩略图(视频的第一帧)。如果我不使用poster(接受网址),那么它会显示空白屏幕。

知道如何使用视频的第一帧作为缩略图吗?

谢谢你!!!

react-native react-native-ios react-native-video

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

KDB 仅获取仅存在于一张表中的行

我有两个表 table1 和 table2。两者都有 4 列具有相同的列名。table1 有 50 行,table2 有 100 行。我怎样才能只从 table2 中获取那些在 table1 中不存在的行。我尝试执行左连接,但我无法做到这一点,因为我们无法使用所有列进行左连接。

kdb

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

为什么当我看到指标值增加时,increase() 仅显示零值?

我正在使用 Grafana 来可视化 Prometheus 时间序列。当我简单地将堆叠图设置为可视化时,my_metric我得到了: 在此输入图像描述

如果我更改为,increase(my_metric[1h])我会得到全零:

在此输入图像描述

其他的基本上都是默认的所以我不明白。我可以看到价值观发生变化,所以我是否误解了某些事情的increase()运作方式?

grafana prometheus

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

在 React 中单击按钮时调用 Lambda 函数

首先,我只想说我对 AWS 总体来说还是个新手(1-2 周)。所以我可能从一开始就认为不正确。

我正在开发一个应用程序,我想在 JSX 中单击按钮并触发 Lambda 函数,该函数从 dynamodb 表获取数据并将其显示在 UI 中。

我正在使用 aws cdk 将基础设施编写为代码。我该怎么面对这个?您有我可以遵循的指南吗?

amazon-web-services aws-lambda serverless aws-cdk

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