小编mit*_*nia的帖子

在React状态下使用Set数据结构

是否可以Set在React中使用ES6的数据结构?

例如,如果我有一个由不同项目组成的清单,我想维护每个项目的检查状态.我想写这样的东西:

export default class Checklist extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      checkedItems: new Set()
    }
  }

  addItem(item) {
    //...?
  }

  removeItem(item) {
    //...?
  }

  getItemCheckedStatus(item) {
    return this.state.checkedItems.has(item);
  }

  // More code...
}
Run Code Online (Sandbox Code Playgroud)

我理解Set可能存在性质上的问题,并且React在更新组件时执行浅层比较,因此它期望不可变对象在状态中传递和保持.但是,有没有办法在状态中保持和维护一个Set对象?

javascript reactjs

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

在Terraform工作空间之间共享资源

我有要在AWS中使用Terraform部署的基础架构。该基础架构可以部署到我正在使用工作空间的不同环境中。

应该为每个工作区分别创建部署中的大多数组件,但是我希望在它们之间共享几个关键组件,主要是:

  • IAM角色和权限
  • 他们应使用相同的API网关,但每个工作区应部署到不同的路径和方法

例如:

resource "aws_iam_role" "lambda_iam_role" {
  name = "LambdaGeneralRole"
  policy = <...>
}

resource "aws_lambda_function" "my_lambda" {
  function_name = "lambda-${terraform.workspace}"
  role = "${aws_iam_role.lambda_iam_role.arn}"
}
Run Code Online (Sandbox Code Playgroud)

第一个资源是IAM角色,应在该Lambda的所有实例之间共享,并且不应重复创建一次。

第二个资源是Lambda函数,其名称取决于当前工作空间,因此每个工作空间都将部署并跟踪不同Lambda的状态。

如何在不同的Terraform工作空间之间共享资源及其状态?

amazon-web-services terraform devops terraform-provider-aws

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

尝试评估缺失的嵌套键时,Helm 图表失败,并显示“nil 指针评估接口 {}”

我正在编写一个 Helm 3 库图表,并希望创建一个具有默认值的 YAML。但是,当尝试为不存在的嵌套键设置默认值时,Helm 会失败并显示以下错误消息:

nil pointer evaluating interface {}

假设我的 Kubernetes 对象中有这个片段:

{{- if eq (.Values.deployment.scale.type | default "static") "static" }}
  replicas: {{ default "3" .Values.deployment.scale.replicas }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

如果.Values.deployment.scale定义了,模板将呈现良好,即使未定义,其值replicas也将为 3 。.Values.deployment.scale.replicas

但是,如果未定义父键之一,Helm 将失败并显示上述错误消息。例如,如果values.yaml是以下内容:

# values.yaml
deployment:
  not_scale: {}
Run Code Online (Sandbox Code Playgroud)

渲染将失败并显示:nil pointer evaluating interface {}.scale

即使其父键未定义,如何为嵌套键设置默认值?

go kubernetes-helm sprig-template-functions

10
推荐指数
2
解决办法
3万
查看次数

Android set()和setExact()以不正确的间隔触发警报

我正在开发一个应该每60秒执行一次任务的应用程序.由于Android 4.4+中的警报存在一些准确性问题,其中所有警报都不准确,我选择了链式模型:A BroadcastReceiver触发第一个警报,每个警报依次设置下一个警报.

问题是,即使我以60秒(60000毫秒)的间隔设置警报,警报也会以5秒的间隔触发,有时甚至更少.我已经在我的Nexus 5(Android 5.1.1)和Android 5.0.1仿真器上测试了代码,两者都给出了相同的结果.我应该指出,两个接收器都在AndroidManifest上注册,我的应用程序具有RECEIVE_BOOT_COMPLETED权限.

编辑:setExact()导致完全相同的问题

StartupReceiver.java(BroadcastReceiver for BOOT_COMPLETED):

public class StartupReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "Got the BOOT_COMPLETED signal");
        // Get the first alarm to be invoked immediately
        AlarmReceiver.setNextScanAlarm(context, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Start the service
        Intent startServiceIntent = new Intent(context, BackgroundService.class);
        startServiceIntent.putExtra("interval", 60000);
        startServiceIntent.putExtra("action", "scan");
        context.startService(startServiceIntent);

        // Schedule the next alarm …
Run Code Online (Sandbox Code Playgroud)

java android alarmmanager

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

使用异常处理来消除子类构造函数中的无关异常

我正在用Java编写一个类,它是我编写的另一个类的子类,它的构造函数显式调用了超类的构造函数.超类的构造函数在直接初始化时可能抛出几种类型的异常,但是当我初始化我的子类的一个实例时,有几个异常永远不会被抛出(通过设计).

我尝试在子类的构造函数中捕获这些异常但我收到一条错误,指出"构造函数调用必须是构造函数中的第一个语句".为什么我不能抓住这些例外?

例如,下面的代码:

public class Persian_Cat extends Cat {

    public Persian_Cat(File file) {
        try{
            super(file);
        } catch(InvalidArgumentException e) {
        } catch(FileNotFoundException e) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将该语句标记super(file);为错误.

我如何实现子类构造函数,以便它知道这些异常是无关紧要的?我需要这个,因为我不希望稍后在我的代码中为try {} ... catch {}包装此构造函数.

java

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

使用 Horizo​​ntal Pod Autoscaling 以及资源请求和限制

假设我们有以下部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  ...
spec:
  replicas: 2
  template:
    spec:
      containers:
        - image: ...
          ...
          resources:
            requests:
              cpu: 100m
              memory: 50Mi
            limits:
              cpu: 500m
              memory: 300Mi
Run Code Online (Sandbox Code Playgroud)

我们还创建了一个HorizontalPodAutoscaler对象,它根据 CPU 平均利用率自动增加/减少 pod 的数量。我知道 HPA 将根据资源请求计算 Pod 的数量,但是如果我希望容器能够在水平扩展之前请求更多资源怎么办?

我有两个问题:

1)在定义 HPA 时,K8s是否甚至使用资源限制

2) 我可以告诉 HPA 根据资源限制而不是请求进行扩展吗?或者作为实现这种控制的一种方式,我可以将targetUtilization值设置为100% 以上吗?

horizontal-scaling kubernetes

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

PHP和bash返回不同的哈希结果

尝试使用bash命令和PHP的hash()函数生成哈希时,我得到了不同的结果.我查看了之前的问题,最常见的问题是字符串中隐藏了一个新行或其他字符,但是我在实际字符串上运行函数而不是文件,所以这不是问题.

例如:

击:

md5sum <<< hello :b1946ac92492d2347c6235b4d2611184

sha256sum <<< hello :5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03

PHP的hash()函数:

hash('md5', 'hello') :9dd4e461268c8034f5c8564e155c67a6

hash('sha256', 'hello') :2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

我在这里错过了什么?为什么价值不同?

php bash hash

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

使用YouTube API仅搜索YouTube上的音乐曲目

我想使用YouTube API(v3)来启用仅搜索音乐曲目(没有猫或藤蔓或任何其他非音乐视频).我查看了API资源管理器和文档中有关此问题的任何指示,但找不到任何有用的信息.

我怎样才能搜索音乐?是否也可以按发行年份或音乐类型过滤搜索结果?

youtube youtube-api

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

使用ANTLR4计数令牌

我需要编写一个Java程序,使用ANTLR4它,给定一个带有单个方法的源文件,可以计算变量,运算符,标点符号和保留字的数量.

我如何ANTLR4根据其类型使用计数令牌?

java antlr antlr4

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

查询联系人的结构化名称将返回null

我有一个Android联系人列表,我正在尝试检索给定的名称,中间名和姓氏.我能够检索其他信息,包括电子邮件和电话号码,但当我查询内容解析器的联系人名称部分时,我总是得到空值(即使moveToNext()正在执行,这意味着从系统中检索到的记录).

相关代码:

String id = "Some ID";

// Perform a query to retrieve the contact's name parts
String[] nameProjection = new String[] {
        ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
        ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,
        ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME
};
Cursor nameCursor = mContext.getContentResolver().query(
        ContactsContract.Data.CONTENT_URI,
        nameProjection,
        ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID
                + "=?", new String[] { id }, null);

// Retrieve the name parts
String firstName = "", middleName = "", lastName = "";
if(nameCursor.moveToNext()) {
    firstName = nameCursor.getString(nameCursor.getColumnIndex(
            ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
    middleName = nameCursor.getString(nameCursor.getColumnIndex(
            ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME));
    lastName = nameCursor.getString(nameCursor.getColumnIndex(
            ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
}
Run Code Online (Sandbox Code Playgroud)

执行此代码后,字符串为null但不会抛出异常.我手动检查了几个联系人,所有联系人都填写了给定的姓名,中间名和姓氏.

我在这做错了什么?

android

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

原始类型和原子类型有什么区别?

许多编程语言规范都讨论了语言的原始类型及其原子类型.在某些情况下,这些是单独提到的,有些将这些定义混合在一起.在阅读了一些材料后,我逐渐意识到这两个术语之间存在差异,但它似乎要么非常微妙或太模糊.

原子类型原始类型之间究竟有什么区别?是否包含在另一个内?

java types

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

在C中实现无效安全吗?

根据维基百科,

无效安全性是面向对象编程语言的保证,没有对象引用将具有null或void值

这一切都很好,但是C不是面向对象的PL,并且该定义仅适用于空指针的derefencing或对象实例的引用.

那么,C中是否存在无效安全性?该术语(或其相反的术语)是否适用于描述语言?

c void

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

在 Python 3 中使用 Pool.map() 和 range() 运行代码时的奇怪行为

我在使用multiprocessingrange()生成器时遇到了一些奇怪的行为,我无法弄清楚发生了什么。

这是代码:

from multiprocessing import Pool
import time

def worker_thread(param):
    time.sleep(1)
    print(param, end=' ', flush=True)

p = Pool(1)
inp = list(range(0, 100))

p.map(worker_thread, inp)
Run Code Online (Sandbox Code Playgroud)

执行此代码时(只有 1 个线程),输出如预期:

0 1 2 3 4 5 6 7 ...
Run Code Online (Sandbox Code Playgroud)

但是,当我将线程数提高到 2 时,输出变得无法解释:

0 13 1 14 2 15 3 16 4 17 ...
Run Code Online (Sandbox Code Playgroud)

依此类推,这种行为出现在线程数较高的情况下。既然list(range(0,100))按升序生成了从 0 到 99 的数字列表,为什么不map()按它所在的顺序扫描列表?

python python-3.x python-multiprocessing

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