小编els*_*ooo的帖子

"[*]"(星号修饰符)在C中的含义是什么?

在尝试实现C11解析器(用于教育目的)时,我发现在C11(p.470)中也在C99(p.412)中(感谢Johannes!),直接声明符定义为:

(6.7.6) direct-declarator:  
    direct-declarator [ type-qualifier-list? * ]
Run Code Online (Sandbox Code Playgroud)

起初,我认为这是语法中的错误(类型列表不应该是可选的).但是,当我在我的参考编译器(clang)中尝试这个时,我得到了一个意外的错误:

int array[*] = { 1, 2, 3 };
// error: star modifier used outside of function prototype
Run Code Online (Sandbox Code Playgroud)

显然,(在clang中)这被称为星形修饰符.

我很快就知道它们只能在函数签名中使用:

void foobar(int array[*])
Run Code Online (Sandbox Code Playgroud)

但是,它们只能用于声明中.尝试在函数定义中使用它也会导致错误:

void foobar(int array[*]) {
    // variable length array must be bound in function definition
}
Run Code Online (Sandbox Code Playgroud)

所以据我所知,预期的行为是[*]在函数声明中使用,然后在函数定义中使用固定数字.

// public header
void foobar(int array[*]);

// private implementation
void foobar(int array[5]) {

}
Run Code Online (Sandbox Code Playgroud)

但是,我从未见过它,我也不太了解它的目的.

  1. 它的目的是什么,它为什么被添加?
  2. 有什么区别int[]
  3. 有什么区别int * …

c parameters function variable-length-array

71
推荐指数
2
解决办法
3014
查看次数

无法撤消子元素的文本修饰

说你有这个HTML:

<a href="#">
    This is underlined
    <span>
        This isn't.
    </span>
</a>
Run Code Online (Sandbox Code Playgroud)

这个css:

a:hover {
    text-decoration: underline; /* I know, this is enabled by default. */
}

a:hover span {
    text-decoration: none !important;
}
Run Code Online (Sandbox Code Playgroud)

为什么a> span元素仍然有下划线.我很确定你应该通过使用'none'来取消装饰.我知道你可以用这个来达到我想要的结果:

<a href="#">
    <span class="underlined">
        This is underlined
    </span>
    <span>
        This isn't.
    </span>
</a>
Run Code Online (Sandbox Code Playgroud)

再加上这个css:

a:hover {
    text-decoration: none;
}

a:hover span.underlined {
    text-decoration: underline;
}
Run Code Online (Sandbox Code Playgroud)

但是......这对我来说没有意义,为什么你不能取消子元素的文本修饰.所以为什么...?

编辑:内联块

根据@amosrivera,当你使用内联块时,它确实有效.我可以确认这适用于Safari和Chrome!

a:hover span{
    text-decoration:none;
    display:inline-block;
}
Run Code Online (Sandbox Code Playgroud)

如上所述,这适用于Safari和Chrome,但不适用于Firefox.以下解决方案适用于Firefox,但不适用于Safari和Chrome ...

a:hover span{
    text-decoration:none;
    display:block;
}
Run Code Online (Sandbox Code Playgroud)

小桌子:

    CSS-Rule            |    Webkit    | …
Run Code Online (Sandbox Code Playgroud)

html css

29
推荐指数
2
解决办法
7709
查看次数

MongoDB PHP UTF-8问题

假设我需要插入以下文档:

{
    title: 'Péter'
}
Run Code Online (Sandbox Code Playgroud)

(注意é)

当我使用以下PHP代码时,它给出了一个错误...:

$db->collection->insert(array("title" => "Péter"));
Run Code Online (Sandbox Code Playgroud)

......因为它需要是utf-8.

所以我应该使用这行代码:

$db->collection->insert(array("title" => utf8_encode("Péter")));
Run Code Online (Sandbox Code Playgroud)

现在,当我请求文档时,我仍然要解码它...:

$document = $db->collection->findOne(array("_id" => new MongoId("__someID__")));
$title = utf8_decode($document['title']);
Run Code Online (Sandbox Code Playgroud)

有没有办法自动化这个过程?我可以更改MongoDB的字符编码(我正在迁移使用cp1252西欧(latin1)的MySQL数据库吗?

我已经考虑过更改Content-Type-header,问题是所有静态字符串(硬编码)都不是utf8 ...

提前致谢!蒂姆

php utf-8 mongodb

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

ZeroMQ:异步回复

我正在构建一个基础设施(在C中),其中几个单独的服务通过ZeroMQ进行通信.现在,为了使这一切能够快速平稳地运行,我希望ZeroMQ能够异步运行.
我知道ZeroMQ的IO线程已经分离,但我想同时执行多个任务.

目前,我的模式如下:

Client -> REQ     |  /\
Router -> ROUTER  |   |
---   proxy   --- |   |
Dealer -> DEALER  |   |
Workers-> REP     \/--|
Run Code Online (Sandbox Code Playgroud)

但是,这需要我设计一个阻塞的同步工作者.使这种异步的唯一方法是增加工作者(线程)的数量,但这对我来说似乎不太可扩展.

此外,工作人员执行的任务本身是异步的(使用他们自己的事件循环).所以基本上,我希望实现这样的目标:

void *socket = zmq_socket(context, ZMQ_REP);
zsocket_connect(socket, "inproc://backend");

while (1) {
    zmq_msg_t request;
    zmq_msg_init(&request);
    zmq_msg_recv(&request, socket, 0);
    zmq_msg_close(&request);

    do_something(callback, socket);
}
Run Code Online (Sandbox Code Playgroud)

do_something 然后会执行一些操作,一旦完成,就会调用回调函数.

void callback(void *data, void *socket) {
    zmq_msg_t reply;
    zmq_msg_init_size(&reply, 5);
    memcpy(zmq_msg_data(&reply), "World", 5);
    zmq_msg_send(&reply, socket, 0);
    zmq_msg_close(&reply);
}
Run Code Online (Sandbox Code Playgroud)

现在,有没有办法实现这一点(即组合两个事件循环)?

我已经查看了DEALER(客户端) - > ROUTER - > DEALER - > DEALER(worker),但这似乎也没有用,因为它仍然阻止了工作端的并发任务.

c zeromq

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

MongoDB - 在数组中搜索和在普通键中搜索一样快吗?

说我有以下设计:

id | participant_ids
...| [ObjectId(...), ObjectId(...)]
Run Code Online (Sandbox Code Playgroud)

现在我以这种方式查询它:

db.events.find({
    participant_ids: ObjectId(...)
});
Run Code Online (Sandbox Code Playgroud)

与此相同:

db.events.find({
    participant_ids: {
        $in: ObjectId(...)
    }
});
Run Code Online (Sandbox Code Playgroud)

我假设这两者之间的表现没有差别(但如果我错了,请纠正我!).


对于每个活动,至少有1个参与者,最多2个参与者.所以我也可以使用以下设计:

id | participant_1_id | participant_2_id
Run Code Online (Sandbox Code Playgroud)

...并像这样查询...:

db.events.find({
    $or: {
        participant_1_id: ObjectId(...),
        participant_2_id: ObjectId(...)
    }
});
Run Code Online (Sandbox Code Playgroud)

如果我不使用索引,这可能并没有真正有所作为,但是 - 当然 - 我是.

对于第一个设计,我使用以下索引:

db.events.ensureIndex({
    participant_ids: 1
});
Run Code Online (Sandbox Code Playgroud)

对于第二个,我跟这个:

db.events.ensureIndex({
    participant_1_id: 1,
    participant_2_id: 1
});
Run Code Online (Sandbox Code Playgroud)

当你看他们的表现时,两者都有缺点.

  • 第一个查询:使用a Array可能比使用普通键慢.
  • 第二个查询:使用$or-operator不是很快.
  • 第二个查询:不是很可扩展,说我想在某个时候释放参与者的限制,这是不可能的(你$or在查询的部分有无限的密钥和无限的项目).

我的问题是: - 我应该使用什么样的设计?- 我可以索引Array吗?文档没有说明这一点,我不确定Array是什么(因为它们的内容可以变化很大).

indexing performance mongodb

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

推送通知(iPhone)给出"111 Connection refused"

当我尝试发送推送通知时,我收到此错误:"连接被拒绝",但我不知道为什么...我已将我的apns-dev.pem上传到根目录中的同一目录中但是也不行.

<?php
$payload['aps'] = array('alert' => 'This is the alert text', 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$apnsPass = 'secret';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', $apnsPass);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 60, STREAM_CLIENT_CONNECT, $streamContext);

if (!$apns) {
    echo "Error: $errorString ($error)";
}

// Do this for each
$deviceToken = '00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000'; …
Run Code Online (Sandbox Code Playgroud)

php iphone ssl push

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

在Java中调整大小时,绘制的内容不可见

请注意我还没有在Mac机器上的Windows机器上测试过这个.我不太确定这是否也出现在Windows机器上......

当我调整Java应用程序的大小时,内容是不可见的.我已经找到一种方法来解决它调整其大小,但不能同时在用户调整窗口的大小.

我没有使用Swing或其他东西,因为它使我的二进制文件变得如此缓慢(在我看来).

结构是这样的:

  • Frame 我的主窗口
    • Container内容视图main-window
      • Container基于paint(Graphics g)-method 的子视图

我已经添加了所有监听器My main-window,现在我可以调整窗口大小重绘Content-view .

public void componentResized(ComponentEvent e) {
    this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)

我谨慎使用paint(getGraphics())-method并不是一个非常好的方法,但是因为repaint()-method根本没有做任何事情,所以它是唯一可行的方法.

调整大小时,所有绘制的内容都变得不可见.但是,当我向我添加Button-instance Content-view并调整我Main-window的大小时,该按钮不会被隐藏.

能够追踪"live'调整大小事件:

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
}
Run Code Online (Sandbox Code Playgroud)
  1. 当我开始调整大小时,不会调用此方法.
  2. 调整大小时,在我的日志中生成"实时调整大小"每个像素我调整窗口大小.
  3. 当我停止调整大小时,没有调用此方法,componentResized-method会这样做.

当我将repaint-method(或官方重绘方法)添加到像这样的'live'-resize事件时,我仍然得到输出,但是,它没有重新绘制或者某些东西

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.paint(this.contentView.getGraphics());
}
Run Code Online (Sandbox Code Playgroud)

要么

public void componentMoved(ComponentEvent e) {
    System.out.println("Live-resize");
    this.contentView.repaint();
} …
Run Code Online (Sandbox Code Playgroud)

java graphics resize window minimize

5
推荐指数
3
解决办法
4861
查看次数

AWS CloudFront分布在与Web服务器相同的域下

目前我在mydomain.com上有我的网络服务器,在static.mydomain.com和media.mydomain.com有两个CDN.

是否有可能在mydomain.com下拥有所有权限?例如

mydomain.com - 网络服务器

mydomain.com/static - 静态CDN

mydomain.com/media - 媒体CDN

amazon-ec2 amazon-web-services amazon-cloudfront amazon-route53

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

3.0中的Dynamic(Default.png)启动画面[iPhone SDK]

我知道可以通过创建符号链接来创建动态可变的Default.png.但这在iPhone SDK 3.0中是不可能的(仅在2.0中).我怎么能在3.0中做到这一点,或者这是不可能的?蒂姆

这适用于iPhone OS 2.0 http://collison.ie/blog/2008/11/dynamic-defaultpng-files-on-the-iphone,但不再适用于iPhone OS 3.0.默认屏幕始终为黑色.

我可以更改documents-folder中的默认屏幕,symbolic-link会链接到该文件.我通过浏览到模拟器中的app-folder测试了它.我在documents-directory中看到了正确的文件,我看到符号链接指向该(右)文件.

iphone symlink iphone-sdk-3.0

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

十分之一突然变得缓慢(随机)

当我查看我的日志文件时,我得到以下行:

...
Rendered partials/_something.html.erb (11.8ms)
Rendered partials/_something.html.erb (123.8ms)
Rendered partials/_something.html.erb (8.2ms)
Rendered partials/_something.html.erb (7.3ms)
Rendered partials/_something.html.erb (7.1ms)
Rendered partials/_something.html.erb (8.5ms)
Rendered partials/_something.html.erb (7.2ms)
Rendered partials/_something.html.erb (7.1ms)
Rendered partials/_something.html.erb (7.4ms)
Rendered partials/_something.html.erb (7.9ms)
...
Run Code Online (Sandbox Code Playgroud)

我按照以下方式包括它们

@collection.each do |something|
    render :partial => 'partials/something', :locals => {:something => something}
end
Run Code Online (Sandbox Code Playgroud)

我觉得很奇怪,在这种情况下,第二个渲染(相同的部分渲染)需要比任何其他渲染更长的时间.但是,当我重新加载页面时,其他一些渲染需要花费更多时间,而@collection-variable仍然处于相同的顺序.

我实际上并不知道如何描述这个.我的意思是,当它something导致缓慢的反应时,我能够弄明白.但它接缝只是一个随机的.这可能是一些内存泄漏吗?

我希望你知道答案=)!

ruby-on-rails partials

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

C++动态类型 - 重写方法

正常覆盖将以这种方式工作:

class Fruit {
public:
    string color();
};

string Fruit::color() {
    return "Unkown";
};

class Apple : public Fruit {
public:
    string color();
};

string Apple::color() {
    return "Green";
};
Run Code Online (Sandbox Code Playgroud)

现在,你称之为:

Apple *apple = new Apple();
std::cout << apple->color();
Run Code Online (Sandbox Code Playgroud)

这将输出Green,这是正确的!但是,在以下情况下运行它(当然这只是一个例子):

Apple *apple = new Apple();
printHealthy(apple);

// Method printHealthy:

void printHealthy(Fruit *fruit) {
    std::cout << fruit->color();
};
Run Code Online (Sandbox Code Playgroud)

这将输出Unkown,我可以理解,因为你将Apple转换为Fruit,从而'替换'它的方法.但我怎么还能了解它的真实颜色呢?
要求:

  • 我需要知道它的真实颜色是什么.
  • 我不能依赖于Apple--class.将会有更多Apple的东西,在旅途中分配.
  • 每个Apple类(例如Tomato,它们当然有不同的名称)是它的子类Fruit.
  • 并非每个类都实现所有方法.例如,可能存在Apple哪种颜色为 …

c++ overriding subclassing

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