小编Gab*_*eim的帖子

Go汇编中PCDATA是什么意思

我正在使用以下命令将 golang 代码编译为程序集:

go build -gcflags -S .
Run Code Online (Sandbox Code Playgroud)

在汇编代码中,我说了很多行,例如:

PCDATA  $2, $1
Run Code Online (Sandbox Code Playgroud)

这是什么意思?在asm快速指南中,它指出

FUNCDATA 和 PCDATA 指令包含垃圾收集器使用的信息;它们是由编译引入的

但没有很多细节

assembly go

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

引用窗口函数中的当前行

是否可以引用窗口分区中的当前行?我想做如下的事情:

SELECT min(ABS(variable - CURRENT.variable)) over (order by criterion RANGE UNBOUNDED PRECEDING)

也就是说,我想在给定的分区中找到最接近当前值的变量。可以做这样的事情吗?

举个例子,来自:

criterion | variable 1 2 2 4 3 2 4 7 5 6

我们将得到:

null 2 0 3 1

谢谢

postgresql window-functions

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

分析一段时间内的堆分配情况

我正在尝试分析我正在运行的服务器。我主要关注https://artem.krylysov.com/blog/2017/03/13/profiling-and-optimizing-go-web-applications/

我添加以下代码以允许分析:

    mux.HandleFunc("/debug/pprof/", pprof.Index)
    mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
    mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
    mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
    mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
Run Code Online (Sandbox Code Playgroud)

我启动了一些基准测试并运行go tool pprof http:/.1:8080/debug/pprof/profile?seconds=5,这按预期工作,因为它在 5 秒内分析了 cpu。

我想对堆做同样的事情。但是,如果我这样做,go tool pprof -alloc_objects http:/.1:8080/debug/pprof/profile?seconds=5我会获得所有分配,而不仅仅是最后五秒内的分配。

在我的特定情况下,我在启动时运行大量分配,并且它们掩盖了所有其他分配。是否可以将它们限制在这个时间段内?如果我执行跟踪,我可以看到堆正在增加,但我无法查询那里有哪些对象。

我尝试拍摄两个不同的堆快照,并使用带有 --base 的 go tool pprof 。然而它不起作用,它显示 0 差异。我的猜测是,与分配的总内存相比,对象太小,因此它们不会保存到配置文件中。

profiling heap-memory go

5
推荐指数
0
解决办法
830
查看次数

在 Javascript 中解析相对 URL 中的搜索参数

我有一个相对 URL,类似于/a/b?someParam=cccc

我想提取参数的值。一种替代方法是执行 (new URL(myUri, 'http://example.com')).searchParams.get('someParam'). 它很好,因为它使用浏览器的内置函数,并且在 url 参数被编码的情况下它是安全的。

但是,它取决于 url 的随机基数http://example.com。有没有办法在没有基础的情况下解析 URL?或者提取搜索参数?

javascript

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

抽取前 n 个不同元素的样本

我有一个mock包含一些字符串值的表:

CREATE TABLE mock (prop_a TEXT, prop_b TEXT);
Run Code Online (Sandbox Code Playgroud)

一些随机数据

INSERT INTO mock (prop_a, prop_b) SELECT 'fake_a' || (i % 100), 'fake_b' || (i % 100) FROM generate_series(1, 100000) i
Run Code Online (Sandbox Code Playgroud)

我想以数组的形式获取值的摘要。

就像是:

SELECT array_agg(DISTINCT prop_a), array_agg(DISTINCT prop_b) FROM mock
Run Code Online (Sandbox Code Playgroud)

假设我只想为每列取 10 个不同的值(向用户显示示例)。

一个人可以做

SELECT agg_a.array_agg, agg_b.array_agg
FROM
    (SELECT array_agg(prop_a)
     FROM
         (
             SELECT DISTINCT prop_a
             FROM mock
             LIMIT 10
         ) dist_a) agg_a,
    (SELECT array_agg(prop_b)
     FROM
         (
             SELECT DISTINCT prop_b
             FROM mock
             LIMIT 10
         ) dist_b) agg_b

Run Code Online (Sandbox Code Playgroud)

但理想情况下会有这样的语法:

SELECT …
Run Code Online (Sandbox Code Playgroud)

postgresql

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

aws 的 cli 被更新功能代码阻塞

我有一个脚本可以从 CLI 更新 lambda 代码。它包括几个步骤:

## prepare code
aws lambda update-function-code --function-name my-function --zip-file fileb://my-file --region eu-west-1
## execute code: aws lambda invoke..
Run Code Online (Sandbox Code Playgroud)

我的问题是,在执行 update-function-code 后,cli 等待按下 Enter 键,而我并不真正关心结果,我想继续执行。

我尝试了不同的东西,但没有用: 非交互模式:

bash -c `aws lambda...`
Run Code Online (Sandbox Code Playgroud)

管道输入功能:

printf '\n' | aws lambda...
Run Code Online (Sandbox Code Playgroud)

任何的想法?

我的 aws cli 版本是 2.0.12

bash amazon-web-services aws-cli

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

使用T标志运行时Perl INC未更新

我正在尝试修改PERLLIB,以允许访问某个库所在的文件夹。

为此,我正在修改PERLLIB变量:

export PERLLIB=/some/folder
Run Code Online (Sandbox Code Playgroud)

现在,如果我这样做:

perl
print "$_\n" for @INC;
Run Code Online (Sandbox Code Playgroud)

显示新文件夹。但是,如果我这样做

perl -wT
print "$_\n" for @INC;
Run Code Online (Sandbox Code Playgroud)

不显示新文件夹。有没有办法用带有T标志的env变量来修改INC变量?

perl

0
推荐指数
2
解决办法
55
查看次数