小编Ala*_*air的帖子

将PHP编译成独立的可执行文件(更快?)

我有一个PHP脚本,我想编译成一个独立的命令行可执行文件,以便在Linux上运行.

这是现实的吗?有编译器吗?

我知道有PHP编译器,但我的问题更多地取决于它是否有优势,哪个是最好的编译器.

它会比通过PHP运行更快还是更慢?如果它会加快我的脚本那么那将是很好的,因为它做了很多处理(很多循环和数学)并且需要一个小时才能运行.

php compiler-construction compilation

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

PDF 规范 - ExtGState

这个 ExtGState 对象对图像有什么作用:

<< /Type /ExtGState /TR /Identity >>
Run Code Online (Sandbox Code Playgroud)

我有PDF规范,但根本不清楚。显然,这将身份函数(什么的身份?单位矩阵?)从 [0.0 1.0] 映射到 [0.0 1.0](相同),这是没有意义的。

有人可以向我解释一下这是做什么的吗?

pdf pdf-generation

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

PHP:使用UTF-8的strpos和substr

假设我有一个长UTF-8编码的字符串.

并说我想检测是否$var存在于此字符串中.

假设$var总是简单的字母或数字的ascii字符(例如"hello123")我不应该使用mb_strposiconv_strpos正确吗?因为只要与其他功能一致,位置在字符方面是否正确无关紧要.

例:

$var='hello123';
$pos=strpos($utf8string,$var);
if ($pos!==false) $uptohere=substr($ut8string,0,$pos);
Run Code Online (Sandbox Code Playgroud)

我是否正确上述代码将提取所有内容,'hello123'无论字符串是否包含花哨的UTF-8字符?我的逻辑是,因为两者strpos并且substr将彼此一致(即使这一直是错误的),那么它应该仍然有效.

php utf-8 strpos

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

Go:zlib 解压缩字节片

我正在尝试解析一个由许多单独压缩的段组成的烦人的文件。我一次一个地将这些段解析为一个字节片,并且我想边走边解压它们。

这是我当前的解压缩代码,它不起作用。from并且to只是设置在顶部作为示例,实际上它们是由代码设置的。data是包含整个文件的字节数组。我不想在磁盘上寻找它,因为它位于另一台服务器上,所以我首先将整个文件加载到 []byte 然后解析它是现实的。

from, to := 0, 1000;
b := bytes.NewReader(data[from:from+to])
z, err := zlib.NewReader(b)
CheckErr(err)
defer z.Close()
p := make([]byte,0,1024)
z.Read(p)
fmt.Println(string(p))
Run Code Online (Sandbox Code Playgroud)

那么,仅仅解压缩一个字节片怎么会如此困难呢?反正...

问题似乎与我如何阅读它有关。在它说 z.Read 的地方,它似乎没有做任何事情。

如何将整个内容一次性读入一个字节?

go

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

在Golang中释放C变量?

如果我在Go中使用C变量,我很困惑哪些变量需要被释放.

例如,如果我这样做:

    s := C.CString(`something`)
Run Code Online (Sandbox Code Playgroud)

这个内存现在是在我调用之前分配的C.free(unsafe.Pointer(s)),还是可以在函数结束时由Go进行垃圾回收?

或者只是从导入的C代码创建的变量需要被释放,并且从Go代码创建的这些C变量将被垃圾收集?

c go cgo

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

Javascript:刷新父页面而不完全重新加载

用户通过fancybox(javascript)弹出窗口登录后,我希望重新加载父页面,以便他们可以访问登录的功能.

目前我这样做:

<a href="javascript:window.top.location.reload(true)" class="continue">Continue</a>
Run Code Online (Sandbox Code Playgroud)

这很好用,但唯一的问题是它完全重新加载整个页面:重新下载所有的css和javascipt等.

我想要做的就是正常重新加载页面,而不是完全刷新.我怎样才能做到这一点?

(我不知道确切的URL,因为登录可以通过fancybox从任何页面完成,所以我无法对URL进行硬编码.)

html javascript

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

转到:读写压缩的gob到文件

这似乎无法正常工作,我不确定自己在做什么错。我正在尝试将地图转换为gob,gzip二进制文件并将其保存到文件,然后稍后将其读回。

type Object struct {
mystruct map[string][]scorer
}

type scorer struct {
category int
score float64
}

func (t *Object) Load(filename string) error {

    fi, err := os.Open(filename)
    if err !=nil {
        return err
    }
    defer fi.Close()

    fz, err := gzip.NewReader(fi)
    if err !=nil {
        return err
    }
    defer fz.Close()

    decoder := gob.NewDecoder(fz)
    err = decoder.Decode(&t.mystruct)
    if err !=nil {
        return err
    }

    return nil
}

func (t *Object) Save(filename string) error {

    fi, err := os.Create(filename)
    if err !=nil …
Run Code Online (Sandbox Code Playgroud)

go

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

在 Go 中对 Gob 数据使用 Snappy 压缩?

我需要将一个结构保存到磁盘并稍后再次读取它,我试图将 IO 降至最低,但也不会花费很长时间来压缩和解压缩文件,所以我打算使用 Snappy 进行压缩,因为它非常快并且相对高效。

通常我会在将 gob 保存到文件时对其进行 gzip 压缩,如下所示:

func (t *Object) Save(filename string) error {
    // Open file for writing
    fi, err := os.Create(filename)
    if err != nil {
        return err
    }
    defer fi.Close()
    // Attach gzip writer
    fz := gzip.NewWriter(fi)
    defer fz.Close()
    // Push from the gob encoder
    encoder := gob.NewEncoder(fz)
    err = encoder.Encode(t.Classifier)
    if err != nil {
        return err
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

但是 Snappy 并没有附加到其他所有东西似乎都在使用的这些 Reader/Writer 接口上。相反,它只提供基本功能:https : //godoc.org/code.google.com/p/snappy-go/snappy

func Encode(dst, src []byte) …

go gob

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

C++ RAII 与延迟?

我最近开始学习 C++,之前我用 Go 编程。

我最近被告知我不应该使用,new因为抛出的异常可能会导致分配的内存不是freed 并导致内存泄漏。一种流行的解决方案,这是RAII,我发现为什么要使用RAII以及它确实是一个很好的解释在这里

然而,来自 Go 整个 RAII 的事情似乎不必要地复杂。Go 有一种叫做defer 的东西,它以一种非常直观的方式解决了这个问题。您只需在范围以 结束时包装您想要执行的操作defer(),例如defer(free(ptr))ordefer(close_file(f))并且它会在范围结束时自动发生。

我进行了搜索,发现了两个试图在 C++ 中实现 defer 功能的来源herehere。两者最终都得到了几乎完全相同的代码,也许其中一个复制了另一个。他们来了:

延迟实现1:

template <typename F>
struct privDefer {
    F f;
    privDefer(F f) : f(f) {}
    ~privDefer() { f(); }
};

template <typename F>
privDefer<F> defer_func(F f) {
    return privDefer<F>(f);
}

#define DEFER_1(x, y) x##y
#define DEFER_2(x, y) DEFER_1(x, y)
#define DEFER_3(x)    DEFER_2(x, __COUNTER__)
#define …
Run Code Online (Sandbox Code Playgroud)

c++ raii

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

C++ __restrict 的用途是什么以及如何正确使用它?

下面的代码__restrict完全展开了循环,并将汇编时间缩短了一半以上。但它是什么意思以及应该如何正确使用呢?

我在询问之前做了研究...我发现了这个。但可惜,我不明白。

// Compile with -O3 -march=native to see autovectorization
void maxArray(double* __restrict x, double* __restrict y) {
    for (int i = 0; i < 65536; i++) {
        if (y[i] > x[i]) x[i] = y[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

Godbolt 的编译器资源管理器

c++ restrict-qualifier

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