小编Zyl*_*Zyl的帖子

是否可以在p:fileUpload上重置文件限制计数器?

我们有一个p:fileUpload让用户上传头像图片.如果他想要他能够快速连续上传不同的,而不必重新加载视图; 这将取代他每次的当前头像.但是,如果fileLimit设置为1,则必须重新加载页面才能再次使用该组件.如果它更多(或无限制(= 0)),他可以一次上传多个文件,这没有多大意义.该multiple-attribute,如果设置为false,只限制了文件浏览,对话框,选择一个文件; 它仍然可以再次打开以随意添加更多文件.是否可以允许上传任意数量的文件,但一次只能上传多个文件?我们正在使用Primefaces 4.0.

primefaces

5
推荐指数
2
解决办法
4980
查看次数

匿名类实例中使用的未引用对象是否会过期?

假设这段代码:

public class Foo {

    public static Thread thread;
    public String thing = "Thing!!";

    public static void main(String[] args) {
        new Foo().makeThread();
        // <- Foo object may get garbage collected here.
        thread.start();
    }

    private void makeThread() {
        thread = new Thread(new Runnable() {
            @Override
            public void run() {
                // !! What if the instance of Foo is long gone?
                System.out.println(thing);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这里,一个临时对象new Foo()创建一个静态保持Thread thread,它利用String thing匿名实现中的实例绑定Runnable.String thing收到的垃圾是否会在到期后收集new …

java multithreading

5
推荐指数
2
解决办法
288
查看次数

如何“将 Go 指针传递给 Cgo”?

我对将 Go 指针(据我理解,包括所有指针类型以及unsafe.Pointer)传递给 cgo 感到困惑。当使用 cgo 调用 C 函数时,我只能提供C 端已知类型的变量,或者它是否与C 函数签名中的 -typed 参数unsafe.Pointer匹配。void*因此,当“传递给 C 的 Go 指针在调用的生命周期内固定”时,如果我被迫将其强制转换为C.some_wide_enough_uint_typeC.some_c_pointer_type事先转换,Go 如何知道我传递的实际上是一个 Go 指针?当它被转换的那一刻,它是一个 Go 指针的信息不是丢失了,并且我面临着 GC 改变指针的风险吗?(我至少可以看到当 Go 端保留指针类型引用时如何防止释放)

我们有一个项目,其中包含大量可运行的 cgo 代码,但对其可靠性零信心。我希望看到一个“这里是如何正确执行此操作”的示例,它不会通过使用C.malloc()或类似的方式来规避 Go 的内存模型,不幸的是,大多数示例都这样做。

因此,无论“在调用的生命周期中固定指针”实际上意味着什么,我都会看到一个问题:

  1. 如果这意味着 Go 将固定整个程序中的所有指针,那么我会在将 Go 指针转换为 C 类型和实际调用 cgo 调用之间的时间间隔中看到竞争条件。
  2. 如果这意味着Go只会固定正在传递的那些Go指针,那么当调用时它们只能具有C类型时,它如何知道它们是Go指针呢?

我已经读了半天的 Go 问题,开始觉得我只是错过了一些简单的东西。任何指示表示赞赏。

编辑:我将尝试通过提供示例来澄清问题。

考虑一下:

/*
#include <stdio.h>
void myCFunc(void* ptr) {
    printf((char*)ptr);
}
*/
import "C"
import …
Run Code Online (Sandbox Code Playgroud)

go

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

通过并集减少集合的大小,受最大并集大小的限制

我有一组不同的集合,其中没有一个不同的集合具有多个k元素。例如:k4

\n
set([frozenset({0, 3, 6}),\n     frozenset({0, 1, 2}),\n     frozenset({6, 7}),\n     frozenset({8, 7}),\n     frozenset({1, 2}),\n     frozenset({9, 11, 6, 7}),\n     frozenset({0, 11, 6, 7}),\n     frozenset({9, 6, 7}),\n     frozenset({11, 6, 7}),\n     frozenset({0, 6, 7}),\n     frozenset({0, 6}),\n     frozenset({0, 3, 6, 7}),\n     frozenset({11}),\n     frozenset({8}),\n     frozenset({8, 6, 7}),\n     frozenset({0, 1, 3, 6}),\n     frozenset({0, 1, 6}),\n     frozenset({0, 1}),\n     frozenset({3, 4, 5}),\n     frozenset({9, 6}),\n     frozenset({9, 10}),\n     frozenset({4, 5}),\n     frozenset({11, 9, 3, 6}),\n     frozenset({9, 11, 6}),\n     frozenset({9, 3, 6}),\n     frozenset({3, 6}),\n     frozenset({0, 9, 3, …
Run Code Online (Sandbox Code Playgroud)

python algorithm set

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

普罗米修斯直方图向量:所有桶的填充量相等吗?

我打算使用 Prometheus 直方图向量来监视 Go 中请求处理程序的执行时间。

我这样注册:

var RequestTimeHistogramVec = prometheus.NewHistogramVec(
    prometheus.HistogramOpts{
        Name:    "request_duration_seconds",
        Help:    "Request duration distribution",
        Buckets: []float64{0.125, 0.25, 0.5, 1, 1.5, 2, 3, 4, 5, 7.5, 10, 20},
    },
    []string{"endpoint"},
)

func init() {
    prometheus.MustRegister(RequestTimeHistogramVec)
}
Run Code Online (Sandbox Code Playgroud)

我这样使用它:

startTime := time.Now()
// handle request here
metrics.RequestTimeHistogramVec.WithLabelValues("get:" + endpointName).Observe(time.Since(startTime).Seconds())
Run Code Online (Sandbox Code Playgroud)

/metrics当我在使用端点几次后对端点执行 HTTP GET 时,除其他外,我得到以下内容:

# HELP request_duration_seconds Request duration distribution
# TYPE request_duration_seconds histogram
request_duration_seconds_bucket{endpoint="get:/position",le="0.125"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="0.25"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="0.5"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="1"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="1.5"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="2"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="3"} 6
request_duration_seconds_bucket{endpoint="get:/position",le="4"} 6 …
Run Code Online (Sandbox Code Playgroud)

go prometheus

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

分配给无类型空白标识符有什么影响?

我在中找到以下代码crypto/sha256/sha256.go

func putUint32(x []byte, s uint32) {
    _ = x[3]
    x[0] = byte(s >> 24)
    x[1] = byte(s >> 16)
    x[2] = byte(s >> 8)
    x[3] = byte(s)
}
Run Code Online (Sandbox Code Playgroud)

我看到的所有分配给空白标识符的操作都会引起恐慌,如果len(x)不小于4,这甚至不会影响赋值的效果,甚至不会影响的评估x[3]。因此,以下代码(更短,更理想的代码)会不会等效?

func putUint32(x []byte, s uint32) {
    x[3] = byte(s)
    x[2] = byte(s >> 8)
    x[1] = byte(s >> 16)
    x[0] = byte(s >> 24)
}
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么它不是这样写的?

go

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

标签 统计

go ×3

algorithm ×1

java ×1

multithreading ×1

primefaces ×1

prometheus ×1

python ×1

set ×1