是否可以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对象?
我有要在AWS中使用Terraform部署的基础架构。该基础架构可以部署到我正在使用工作空间的不同环境中。
应该为每个工作区分别创建部署中的大多数组件,但是我希望在它们之间共享几个关键组件,主要是:
例如:
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工作空间之间共享资源及其状态?
我正在编写一个 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
即使其父键未定义,如何为嵌套键设置默认值?
我正在开发一个应该每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编写一个类,它是我编写的另一个类的子类,它的构造函数显式调用了超类的构造函数.超类的构造函数在直接初始化时可能抛出几种类型的异常,但是当我初始化我的子类的一个实例时,有几个异常永远不会被抛出(通过设计).
我尝试在子类的构造函数中捕获这些异常但我收到一条错误,指出"构造函数调用必须是构造函数中的第一个语句".为什么我不能抓住这些例外?
例如,下面的代码:
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 {}包装此构造函数.
假设我们有以下部署:
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% 以上吗?
尝试使用bash命令和PHP的hash()函数生成哈希时,我得到了不同的结果.我查看了之前的问题,最常见的问题是字符串中隐藏了一个新行或其他字符,但是我在实际字符串上运行函数而不是文件,所以这不是问题.
例如:
击:
md5sum <<< hello :b1946ac92492d2347c6235b4d2611184
sha256sum <<< hello :5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03
PHP的hash()函数:
hash('md5', 'hello') :9dd4e461268c8034f5c8564e155c67a6
hash('sha256', 'hello') :2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
我在这里错过了什么?为什么价值不同?
我想使用YouTube API(v3)来启用仅搜索音乐曲目(没有猫或藤蔓或任何其他非音乐视频).我查看了API资源管理器和文档中有关此问题的任何指示,但找不到任何有用的信息.
我怎样才能搜索音乐?是否也可以按发行年份或音乐类型过滤搜索结果?
我需要编写一个Java程序,使用ANTLR4它,给定一个带有单个方法的源文件,可以计算变量,运算符,标点符号和保留字的数量.
我如何ANTLR4根据其类型使用计数令牌?
我有一个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但不会抛出异常.我手动检查了几个联系人,所有联系人都填写了给定的姓名,中间名和姓氏.
我在这做错了什么?
许多编程语言规范都讨论了语言的原始类型及其原子类型.在某些情况下,这些是单独提到的,有些将这些定义混合在一起.在阅读了一些材料后,我逐渐意识到这两个术语之间存在差异,但它似乎要么非常微妙或太模糊.
原子类型和原始类型之间究竟有什么区别?是否包含在另一个内?
根据维基百科,
无效安全性是面向对象编程语言的保证,没有对象引用将具有null或void值
这一切都很好,但是C不是面向对象的PL,并且该定义仅适用于空指针的derefencing或对象实例的引用.
那么,C中是否存在无效安全性?该术语(或其相反的术语)是否适用于描述语言?
我在使用multiprocessing和range()生成器时遇到了一些奇怪的行为,我无法弄清楚发生了什么。
这是代码:
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()按它所在的顺序扫描列表?
java ×4
android ×2
alarmmanager ×1
antlr ×1
antlr4 ×1
bash ×1
c ×1
devops ×1
go ×1
hash ×1
javascript ×1
kubernetes ×1
php ×1
python ×1
python-3.x ×1
reactjs ×1
terraform ×1
types ×1
void ×1
youtube ×1
youtube-api ×1