我有一个由 590 个 TypeScript 文件组成的 Angular12 项目。当我这样做时ng lint,它会运行 TSLint 并在大约 5 秒内完成。尽管如此,我尝试按照 Angular官方视频中的说明升级到 eslint ,现在ng lint需要 10 多分钟(实际上我没有让该过程完成,我在 10 分钟处停止了)。
我尝试隔离问题以了解原因是否是ng这样,eslint因此我全局安装了 eslint,npm i -g eslint并使用单个文件的计时信息运行它:
time TIMING=1 eslint /home/user/my-file.ts
Run Code Online (Sandbox Code Playgroud)
即使是这个单个文件也需要 2 分钟以上。奇怪的是,eslint报告每条规则只花了几毫秒,而 Linux 却说花了 148 秒(这是准确的,花了 2 分钟多):
Rule | Time (ms) | Relative
:-------------------------------------------|----------:|--------:
@angular-eslint/no-conflicting-lifecycle | 0.342 | 35.9%
@angular-eslint/no-input-rename | 0.163 | 17.1%
@angular-eslint/template/banana-in-box | 0.161 | 16.9%
@angular-eslint/no-output-rename | 0.103 | 10.9%
@angular-eslint/component-class-suffix …Run Code Online (Sandbox Code Playgroud) 在 Cypress 中,我可以通过像这样的精确文本来匹配属性的值:
cy.get("my-element")
.should("have.attr", "title", "Exact title")
Run Code Online (Sandbox Code Playgroud)
但是,有没有办法通过子字符串或正则表达式来匹配属性的值?就像是:
cy.get("my-element")
.should("have.attr", "title", /Partial title/)
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我拥有的最好的:
cy.get("my-element")
.should("have.attr", "title")
.then(title => expect(title).to.match(/Partial title/));
Run Code Online (Sandbox Code Playgroud) 我在Angular 文档中阅读了以下内容:
--供应商块
生成仅包含供应商库的单独包。此选项只能用于开发。
但没有详细说明为什么此选项只能用于开发。我在其他地方读到,他们建议分离供应商块,这样当我们发布新版本的应用程序时,客户端就不需要再次下载它(因为主块发生了变化,但供应商块不一定会改变) )。
为什么 Angular 的文档建议仅在开发中使用它?
我在 ElasticSearch 中有一个数据节点在 CPU (99%) 上运行很高并且搜索速度很慢。使用top表明它正在使用所有 CPU 的 elasticsearch 进程。
我_nodes/hot_threads在该节点中运行了API 并得到了这个输出,但我不知道如何解释它。有人能解释一下吗?
::: {warm-xxx}{XXXXXXX}{YYYYYYYY}{10.10.10.10}{10.10.10.10:9300}{aws_availability_zone=us-west-2b, data_type=warm, ml.machine_memory=64388997120, ml.max_open_jobs=20, xpack.installed=true, ml.enabled=true}
Hot threads at 2019-12-30T23:22:24.304Z, interval=500ms, busiestThreads=3, ignoreIdleThreads=true:
44.0% (220.2ms out of 500ms) cpu usage by thread 'elasticsearch[warm-xxx][management][T#1]'
3/10 snapshots sharing following 57 elements
org.elasticsearch.index.engine.Engine.segmentsStats(Engine.java:831)
org.elasticsearch.index.shard.IndexShard.segmentStats(IndexShard.java:1051)
org.elasticsearch.action.admin.indices.stats.CommonStats.<init>(CommonStats.java:213)
org.elasticsearch.indices.IndicesService.indexShardStats(IndicesService.java:403)
org.elasticsearch.indices.IndicesService.statsByShard(IndicesService.java:357)
org.elasticsearch.indices.IndicesService.stats(IndicesService.java:348)
...
42.7% (213.4ms out of 500ms) cpu usage by thread 'elasticsearch[warm-xxx][search][T#2]'
10/10 snapshots sharing following 21 elements
org.apache.lucene.search.Weight$DefaultBulkScorer.scoreAll(Weight.java:263)
org.apache.lucene.search.Weight$DefaultBulkScorer.score(Weight.java:214)
org.apache.lucene.search.BulkScorer.score(BulkScorer.java:39)
org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:670)
org.elasticsearch.search.internal.ContextIndexSearcher.search(ContextIndexSearcher.java:191)
org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:471)
...
41.8% (208.9ms out of …Run Code Online (Sandbox Code Playgroud) 我一直在 jOOQ 中使用Schema.getTables()方法来获取模式中的表列表,但今天我发现该方法返回的是我们执行 jOOQ 代码生成时存在的表列表,而不是返回的表存在于此时此刻。
我的具体用例是我们随着时间的推移创建表(自动分区),并且我们的 Java 服务对它们进行一些操作。
jOOQ 有没有办法从数据库获取当前表列表?
我可以直接查询information_schema.tables,但我更愿意重用 jOOQ 中的方法(如果有)。
Java中有没有一种方法可以以异步方式将一个文件复制到另一个文件中?我试图找到类似于C# 中的Stream.CopyToAsync的东西。
我想要实现的是从互联网下载一系列约 40 个文件,这是我为每个文件想到的最好的结果:
CompletableFuture.allOf(myFiles.stream()
.map(file -> CompletableFuture.supplyAsync(() -> syncDownloadFile(file)))
.toArray(CompletableFuture[]::class))
.then(ignored -> doSomethingAfterAllDownloadsAreComplete());
Run Code Online (Sandbox Code Playgroud)
哪里syncDownloadFile:
private void syncDownloadFile(MyFile file) {
try (InputStream is = file.mySourceUrl.openStream()) {
long actualSize = Files.copy(is, file.myDestinationNIOPath);
// size validation here
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
但这意味着我在任务执行器内部有一些阻塞调用,我想避免这种情况,所以我不会一次阻塞太多执行器。
我不确定 C# 方法内部是否执行相同的操作(我的意思是,必须有东西下载该文件,对吗?)。
有更好的方法来实现这一点吗?
我在运行一些自动化测试时看到 Postgres 出现以下错误:
2020-03-06 23:32:57,051 WARN main c.z.h.p.ProxyConnection - HikariPool-2 - Connection org.postgresql.jdbc.PgConnection@42e3ede4 marked as broken because of SQLSTATE(08006), ErrorCode(0) {}
org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:335)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:143)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:106)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at org.jooq.tools.jdbc.DefaultPreparedStatement.executeQuery(DefaultPreparedStatement.java:94)
at org.jooq.impl.AbstractDMLQuery.execute(AbstractDMLQuery.java:738)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:350)
at org.jooq.impl.InsertImpl.fetchOne(InsertImpl.java:1061)
...
Caused by: java.io.EOFException
at org.postgresql.core.PGStream.receiveChar(PGStream.java:308)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1952)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308)
... 53 more
2020-03-06 23:32:57,067 DEBUG main i.p.d.HikariPostgresDataSourceFactory - Connecting to jdbc:postgresql://localhost:5432/REDACTED as REDACTED {}
2020-03-06 23:32:57,093 …Run Code Online (Sandbox Code Playgroud) 我们有一个每秒向 ES 集群添加数千个文档的应用程序。每次我们滚动正在写入的索引并开始写入新索引时,我们都会收到以下错误,这些错误不允许在大约 1 分钟内摄取文档。1 分钟后,一切都会恢复正常,直到我们再次滚动索引。
[WARN ][o.e.c.s.MasterService ] [NODE_NAME_1] took [28.3s], which is over [10s], to compute cluster state update for [put-mapping[_doc, _doc, ...
[DEBUG][o.e.a.a.i.m.p.TransportPutMappingAction] [NODE_NAME_1] failed to put mappings on indices [[[INDEX_1/SOME_ID]]], type [_doc]
org.elasticsearch.cluster.metadata.ProcessClusterEventTimeoutException: failed to process cluster event (put-mapping) within 30s
at org.elasticsearch.cluster.service.MasterService$Batcher.lambda$onTimeout$0(MasterService.java:143) [elasticsearch-7.5.2.jar:7.5.2]
at java.util.ArrayList.forEach(ArrayList.java:1507) [?:?]
at org.elasticsearch.cluster.service.MasterService$Batcher.lambda$onTimeout$1(MasterService.java:142) [elasticsearch-7.5.2.jar:7.5.2]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:703) [elasticsearch-7.5.2.jar:7.5.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:830) [?:?]
Run Code Online (Sandbox Code Playgroud)
在第一行中,我在末尾添加了省略号,因为它实际上相当大,这是我们所看到的图像(正如您在图像中看到的那样,该行突然结束):
您知道这些错误消息是关于什么的吗?
我们是否有可能因为集群状态太大而看到这些消息?这是否意味着我们有太多的分片或节点?
谢谢。
笔记:
我只是试图隐藏一个 Angular material 2 表statusid标题和列,如下所示。
<mat-table class="mat-elevation-z1" #table [dataSource]="dataSourceHE">
<ng-container hidden="hidden" cdkColumnDef="statusid">
<mat-header-cell hidden="hidden"> Id </mat-header-cell>
<mat-cell hidden="hidden"> {{row.statusid}} </mat-cell>
</ng-container>
</mat-table>
Run Code Online (Sandbox Code Playgroud)
但这不能正常工作。如果可能的话,我该怎么做?
我在 Postgres 中创建了一个索引,如下所示:
CREATE UNIQUE INDEX my_index_name
ON my_table USING btree (custid,
date_trunc('day'::text, timezone('UTC'::text, somedate)),
firstname,
middlename,
lastname);
Run Code Online (Sandbox Code Playgroud)
我监视了可用磁盘空间,以估计索引创建的进度,我希望看到可用空间下降,表明该进程正在完成其工作。问题是,宕机40分钟后,卡住了25分钟,然后又开始消耗磁盘空间:
当它似乎卡住时,我检查了长时间运行的进程,看看是否有什么东西阻塞了它(不太可能,这是一个没有其他人使用的数据库副本),我看到有 3 个不同的相同的“CREATE INDEX”进程。
这就是我想问的:
这是我发出的命令来查看长时间运行的进程,在进程解除卡顿后,只有进程 18511 继续运行:
my_user => SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state
FROM pg_stat_activity
WHERE (now() - query_start) > interval '5 minutes' AND state != 'idle'
ORDER by 2 DESC;
-[ RECORD 1 ]-------------------------------------------------------------------------------------------------------------------------------------------------------------
pid | 18511
duration | 01:04:37.969599
query | CREATE UNIQUE INDEX my_index_name ON my_table …Run Code Online (Sandbox Code Playgroud) 我正在使用 Cypress 测试一个应用程序,并且测试针对真实的 HTTP 服务器。我不会存根 HTTP 请求。
如果任何 HTTP 请求失败,是否有办法让我的测试失败?
在另一篇 SO 帖子中,有一个解决方案似乎不错,但我想知道是否有更合适的解决方案。就我而言,我并不总是将所有 HTTP 错误转换为对console.error.
当运行我的测试时,ng test我收到此错误:
C:/.../src/app/my/my.component.spec.ts (111,27) 中出现错误:找不到名称“DebugElement”。
在其他 SO 帖子(例如这篇文章)中,推荐的解决方案是将其添加"lib": ["dom"]到和文件compilerOptions中,但对我来说,该解决方案不起作用,我已经在数组中了,如您在此处看到的:tsconfig.jsontsconfig.spec.json"dom""lib"
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
Run Code Online (Sandbox Code Playgroud)
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"baseUrl": "./",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"node"
],
"lib": [
"es2017",
"dom"
]
},
"files": [
"test.ts" …Run Code Online (Sandbox Code Playgroud) postgresql ×3
angular ×2
angular-cli ×2
cypress ×2
amazon-rds ×1
eslint ×1
java ×1
jooq ×1
nio ×1
webpack ×1