小编Ale*_*eal的帖子

/usr/lib/x86_64-linux-gnu/libstdc++.so.6:版本CXXABI_1.3.8'未找到

我最近请求帮助/sf/ask/1417746081/ -8它被投票和关闭(我不知道为什么)

事实证明,"make install" - 安装并暗示目标"install-target-libstdc ++ v3"的make目标实际上并不意味着你已经准备好了.

我已经被困了一段时间,想知道我做错了什么,因为我认为这样的制作目标会为我做那件事.

我希望这个答案能帮助至少一个人.

c++ unix linux

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

MySQL EXPLAIN EXTENDED过滤列(显然不是百分比)

我一直在寻找这个,他们都说了某种百分比,解释一下:

EXPLAIN EXTENDED SELECT * FROM PageAccess ORDER BY AccessId DESC LIMIT 20;
SELECT COUNT(*) FROM PageAccess;
Run Code Online (Sandbox Code Playgroud)

赠送:

id, select_type, table, type, possible_keys, key, key_len, ref, rows, filtered, Extra
1, 'SIMPLE', 'PageAccess', 'index', '', 'PRIMARY', '4', '', 20, 9295.00, ''
Run Code Online (Sandbox Code Playgroud)

(是的,过滤= 9295.00)

和:

1830
Run Code Online (Sandbox Code Playgroud)

对于计数(*)

是的我想要最后20行,AccessId是自动递增的主键.

9295是什么意思!?

mysql explain

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

什么时候PHP需要在创建之前看到一个类?

PHP不需要前向声明.

$core = new Core();
class Core {
Run Code Online (Sandbox Code Playgroud)

工作良好

$test = new ParamSet(new IntParam(1));
echo($test->asString());

interface ParamType {
    /*snipped*/
}

class IntParam implements ParamType {
    /*snipped*/
}

class ParamSet implements ParamType {
    /*snipped*/
}
Run Code Online (Sandbox Code Playgroud)

没有,我得到:

Fatal error: Class 'ParamSet' not found in
Run Code Online (Sandbox Code Playgroud)

不知道为什么,我已经包含了层次结构,因为它很重要.将$ test移动到定义之下使其工作.

php

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

Python sys.stdin.read(max)阻塞直到读取最大值(如果max> = 0),阻塞直到EOF else,但select表示有数据要读取

我的问题是:

select表示有数据需要读取,我想读取其中的任何内容,我不想等待max数量存在.如果max<= 0则读取等待直到遇到EOF,如果max> 0读取块直到max可以读取字节.

我不想要这个,我想阅读任何数量的选择把它放在"准备阅读"列表中.read(1)不实用,因为这将涉及大量的读取调用.但它不能阻止.

有没有办法在select返回时找出缓冲区中存在的数量(如果它返回表示可以读取某些内容而不是超时)并读取该数量?有没有办法max像套接字一样使用?它尽可能多地读取,然后返回?

解决方案可能是将文件置于非阻塞模式以进行读取?我不确定,我没想到这个"直到EOF"的行为.

我会继续阅读和尝试,但我只花了30分钟左右而且没有接近,这就是我呼吁你的原因.

注意

有很多问题询问如何使recv等待一定量的输入,并使事情阻塞直到达到最大值,我不是在寻找这个.我的问题阻塞.

附录

setblocking(False)没有用,我现在正在阅读如何在阅读期间使其无阻塞.我对文件给予了希望:

stdin.read Found at: sys
read([size]) -> read at most size bytes, returned as a string.

If the size argument is negative or omitted, read until EOF is reached.
Notice that when in non-blocking mode, less data than what was 
 requested
may be returned, even if no size parameter was given.
Run Code Online (Sandbox Code Playgroud)

增编二

似乎read(0)实际上读取0,这没什么,这导致无限循环,这很有趣! …

python file-io file

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

python中的"with"语句,为什么"as"部分必须是单个对象

使用Python可以说:

a,b,c=something_that_returns_a_3_tuple()
Run Code Online (Sandbox Code Playgroud)

但是with声明如下:

class thing(object):
    def __enter__(self):
        return (1,2,3)

    def __exit__(self,a,b,c):
        pass

with thing() as a,b,c:
    print a
    print b 
    print c
Run Code Online (Sandbox Code Playgroud)

不会工作

必须有:

class thing(object):
    def __enter__(self):
        return (1,2,3)

    def __exit__(self,a,b,c):
        pass

with thing() as (a,b,c):
    print a
    print b 
    print c
Run Code Online (Sandbox Code Playgroud)

我不能看到允许第一个表单的实际问题,通过这个我的意思是实现或逻辑,解析器不应该有逗号的问题(它不会模棱两可),我认为没有逻辑原因为什么不.

http://docs.python.org/release/2.5/whatsnew/pep-343.html

http://www.python.org/dev/peps/pep-0343/表明这只是合成糖

python with-statement contextmanager

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

在Go中如果你写封闭频道会发生什么?我可以将渠道视为确定性的RE销毁吗?

好的SO警告我一个主观标题所以请让我解释一下.现在我正在看Go,我已经阅读了规范,观看了一些IO会谈,看起来很有趣,但我有一些问题.

我最喜欢的一个例子是这个select语句,它听取了来自"DoAfter()"或其他东西的频道,该频道将从现在开始在给定时间发送一些内容.

像这样的东西(这可能不会起作用,如果有的话也会伪造!)

to := Time.DoAfter(1000 * Time.MS)
select:
    case <-to:
        return nil //we timed out
    case d := <-waitingfor:
        return d
Run Code Online (Sandbox Code Playgroud)

假设我们正在等待的事情发生得非常快,所以这个函数返回并且不再听to,DoAfter会发生什么?

我喜欢并知道你不应该测试频道

if(chanToSendTimeOutOn.isOpen()) {
    chanToSendTimeOutOn<-true
}
Run Code Online (Sandbox Code Playgroud)

我喜欢通道同步位置,例如,上面的函数可能在isOpen()测试后但在发送true之前返回.我真的反对测试,这避免了通道做什么 - 隐藏锁和诸如此类的东西.

我已经阅读了规范并看到了运行时恐慌和恢复,但在这个例子中我们在哪里恢复?等待发送超时的事情是一个例程还是各种各样的"对象"?我想象这个"对象"有一个排序列表,它列出了在给定时间之后必须发送的东西,并且它只是按正确的顺序将TimeAfter请求附加到队列并经历它.我不确定那里有什么机会实际恢复.

如果它产生了每个都有自己的定时器的go-routines(当然是由运行时管理,所以线程实际上不会阻塞时间)然后什么才有机会恢复?

我的问题的另一部分是关于频道的生命周期,我会想象它们被重新计算,那些能够读取的内容被重新计算,因此如果没有任何地方有可读的参考,它就会被销毁.我称之为确定性.对于"点对点"拓扑,你可以形成它,如果你坚持Go的"通过渠道发送东西,不要访问它"

所以这里例如,当想要超时的东西返回时to,任何人都不再读取该频道.因此,现在的常规程序毫无意义,有没有办法让它在没有工作的情况下返回?

例:

文件读取过程已经用于defer在文件完成时关闭文件,是否可以"感知"它应该发送的信息已关闭,因此返回时不再读取文件?

我也想知道为什么select语句是"非确定性的"如果第一种情况优先,如果第一种情况和第二种情况都准备好(对于非阻塞操作),我会非常喜欢它 - 我不会因此而谴责它,但有原因吗?这是什么实施的?

最后,如何安排常规课程?编译器是否会在每个指令中添加某种"让步",因此运行的线程将在不同的goroutine之间切换?我在哪里可以找到较低级别的信息?

我知道Go兜售"你根本不需要担心这个",但我想知道我写的东西实际隐藏(可能是C++的东西)以及原因.

multithreading go

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

C++意外行为(我的临时演员在哪里!?)

这是一个r值实验,但当gcc向我抱怨缺少move-constructor(我已删除它)并且没有回复到复制构造函数(正如我所料)时,它发生了变异我然后删除了-std =从标志c ++ 11尝试下面看到的,它有很多输出(它最初没有),因为我试图弄清楚为什么它不起作用(我知道如何调试,但我发现stdout上的消息是发生事情的一个很好的指标)

这是我的代码:

#include <iostream>

class Object {
public:
    Object() { id=nextId; std::cout << "Creating object: "<<id<<"\n"; nextId++; }
    Object(const Object& from) {
         id=nextId; std::cout << "Creating object: "<<id<<"\n"; nextId++;
        std::cout<<"(Object: "<<id<<" created from Object: "<<from.id<<")\n";
    }
    Object& operator=(const Object& from) {
        std::cout<<"Assigning to "<<id<<" from "<<from.id<<"\n";
        return *this;
    }
    ~Object() { std::cout<<"Deconstructing object: "<<id<<"\n";}

private:
    static int nextId;
    int id;
};

int Object::nextId = 0;

Object test();

int main(int,char**) {
    Object a;
    std::cout<<"A ought to exist\n";
    Object …
Run Code Online (Sandbox Code Playgroud)

c++

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

这个警告与枚举类大小有关吗?

警告:

src/BoardRep.h:49:12: warning: ‘BoardRep::BoardRep::Row::<anonymous struct>::a’ 
is too small to hold all values of ‘enum class BoardRep::Piece’ 
[enabled by default]
Piece a:2;
        ^
Run Code Online (Sandbox Code Playgroud)

枚举:

enum class Piece: unsigned char {
    EMPTY,
    WHITE,
    BLACK
};
Run Code Online (Sandbox Code Playgroud)

使用:

union Row {
    struct {
        Piece a:2;
        Piece b:2;
        Piece c:2;
        Piece d:2;
        Piece e:2;
        Piece f:2;
        Piece g:2;
        Piece h:2;
    };
    unsigned short raw;
};
Run Code Online (Sandbox Code Playgroud)

如果enum我同意GCC,它可能不得不截断,但这是因为enums与整数和预处理器定义并没有真正分开.然而,一个enum class更强大.如果它不够强大,不能假设所有Piece取整数值都在0到2之间,则警告是有意义的.否则海湾合作委员会将不必要地挑剔,可能值得邮寄清单说"看,这是一个愚蠢的警告"

任何人都看不到这一点

您可以在2位数据中存储4个不同的值,我只需要3个不同的值,因此任何长度为4或更小的枚举应该很好地适合给定的2位(并且我的枚举确实"派生"(更好的术语?)来自无符号类型).如果我有5个或更多那么我会期待一个警告.

c++ enums gcc c++11

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

如何快速将 Python bytearray 设置为 0

当创建 Python 字节数组时(将整数传递给它),它会创建一个包含那么多字节的字节数组,并将它们全部设置为零。

我想清除字节数组,它可能非常大,迭代它并将内容设置为零,这种方式非常糟糕。

有没有更好的办法?

(memoryviews 和 bytearrays 的 IMO 记录不充分)

迄今为止最好的资源(但没有一个能回答我的问题)

http://docs.python.org/dev/library/stdtypes.html#bytes-methods

http://docs.python.org/dev/library/functions.html#bytearray

python

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

'operator - >()'的结果产生非指针结果

在这段代码中:

while(k != listeners.getLength()) {
    if(listeners[k] != nullptr) {
        listeners[k]->onNewMessage(*newMessage);
    }
    k++;
}
Run Code Online (Sandbox Code Playgroud)

编译器根本不喜欢它->.

listeners[k]是一个具有operator->()公共和定义的类,返回对具有(虚拟)方法的类型的引用onNewMessage.

将其更改为:

while(k != listeners.getLength()) {
    if(listeners[k] != nullptr) {
        listeners[k].operator ->().onNewMessage(*newMessage);
    }
    k++;
}
Run Code Online (Sandbox Code Playgroud)

作品.

曾经工作过.我添加了一些布尔运算符(==以及!=引用返回的类型listeners[k]).我还为一个::std::nullptr_t类型添加了一个构造函数.我看不出为什么这些会导致问题的任何原因,错误提到没有歧义,所以它不是有太多的选择.

为什么这里有问题?

附录

澄清结构如下:

List<PtrWrapper<LogListener>> listeners;
Run Code Online (Sandbox Code Playgroud)

T& List<T>::operator[](int); 以及与之相关的const定义.

T& PtrWrapper<T>::operator->(); 和一个const版本一起去.

LogListener有一个虚方法onNewMessage.

所以listeners[k]是一个PtrWrapper<LogListener>&.

c++ c++11

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

标签 统计

c++ ×4

python ×3

c++11 ×2

contextmanager ×1

enums ×1

explain ×1

file ×1

file-io ×1

gcc ×1

go ×1

linux ×1

multithreading ×1

mysql ×1

php ×1

unix ×1

with-statement ×1