小编kyk*_*yku的帖子

复制匹配文本以注册

有没有人知道是否有可能将搜索产生的匹配连接到单个寄存器中?例如,我有一个包含以下内容的文件:

aaa :xxx 123
bb :y 8
ccccc :zzzzz 1923
Run Code Online (Sandbox Code Playgroud)

现在我想要的是在其他地方复制以':'开头的列.不幸的是我无法使用可视块模式,因为第一列没有固定宽度.我以为我可以搜索第二列(:\ w +)并将maches存储到寄存器中.

vim editing

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

节俭中的大量同时连接

我正在尝试用Thrift编写一个简单的服务器.一开始它看起来很有希望,但我偶然发现了许多客户连接的问题.我正在使用TThreadPoolServer,它允许4个客户端连接,然后阻止其他客户端,直到我从连接中杀死一个.我可以做些什么来允许更多(可能几百个)客户端同时连接,而不增加线程数.我假设工作线程允许一次执行一个客户端请求,但看起来一个线程处理一个连接,直到它关闭.当我的客户必须重新打开套接字来执行操作时,我想避免出现这种情况.

c++ thrift

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

Variadic模板问题

我正在尝试使用其target()模板方法编写用于比较std :: functions的通用代码.这是我的非通用示例代码:

#include <cstdio>
#include <functional>

static void bar() {}
static void baz() {}

bool cmp(std::function<void()> f1, std::function<void()> f2)
{
  void (**t1)() = f1.target<void(*)()>();
  void (**t2)() = f2.target<void(*)()>();
  return (!t1 && !t2) || (t1 && t2 && *t1 == *t2);
}

int main(int argc, char *argv[])
{
  std::function<void()> f1(bar), f2(baz), f3(bar);
  printf("equal:     %d\n", cmp(f1, f3));
  printf("non-equal: %d\n", cmp(f1, f2));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这用gcc 4.6.1 -std = c ++ - x编译并运行良好.但是,当我尝试编译以下通用cmp函数时,编译器失败并显示解析错误代码:

#include <cstdio>
#include <functional>

static void bar() {}
static …
Run Code Online (Sandbox Code Playgroud)

variadic-templates c++11

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

如何通过Xlib观察连接显示器的变化?

我正在尝试编写一个程序,该程序可以检测插入的外部显示器并通过 Xlib 自动启用和配置它们。我知道 XRandr 扩展允许这样做。我的问题是,如何启用我的应用程序接收 XRandr 事件?我应该使用什么事件掩码?我知道 xev 应用程序能够做到这一点。

x11 xrandr xlib

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

渴望加载最后一个下属记录

假设模型X有多个Y,并且模型Y属于X。每个Y都有一个插入数据库的日期。现在,是否可以加载所有X并渴望为每个X加载最后一个Y(仅是最后一个,因为每个X具有Ys的炫耀效果)?

activerecord ruby-on-rails

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

构造函数访问规则

如果我编译(在G ++下)并运行以下代码,则打印"Foo :: Foo(int)".但是,在使复制构造函数和赋值运算符成为私有之后,它无法使用以下错误进行编译:"错误:'Foo :: Foo(const Foo&)'是私有的".如果只在运行时调用标准构造函数,它如何需要复制构造函数?

#include <iostream>

using namespace std;

struct Foo {
    Foo(int x) {
        cout << __PRETTY_FUNCTION__ << endl;
    }


    Foo(const Foo& f) {
        cout << __PRETTY_FUNCTION__ << endl;
    }

    Foo& operator=(const Foo& f) {
        cout << __PRETTY_FUNCTION__ << endl;
        return *this;
    }
};

int main() {
    Foo f = Foo(3);
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor

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

使用 SSE2 优化 RGB565 到 RGB888 的转换

我正在尝试使用 SSE2 和基本公式来优化从 565 到 888 的像素深度转换:

col8 = col5 << 3 | col5 >> 2
col8 = col6 << 2 | col6 >> 4
Run Code Online (Sandbox Code Playgroud)

我取了两个 2x565 128 位向量,我输出了 3x888 128 位向量。

经过一些掩码、移位和 OR'ing 之后,我有两个向量 ((blue << 8) | red)* 8 位颜色存储在 16 位字中,而类似的向量具有零绿色值. 现在我需要将它们组合成 888 输出。

    BR: BR7-BR6-...-BR1-BR0
    0G: 0G7-0G7-...-0G1-0G0
                 |
                 v
  OUT1: R5-BGR4-...-BGR1-BGR0
Run Code Online (Sandbox Code Playgroud)

在 SSSE3 中有一个 _mm_shuffle_epi8() 可以解决我的需求,但由于我需要支持的硬件范围,我想将自己限制在 SSE2 上。

  • 它是小端

c++ rgb sse2

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

强制构造静态物体

正如我所知,类中的静态对象是在第一次引用类时构造的.但是我发现在程序启动时初始化静态有时很有用.是否有一些方法(即通过使用注释)来执行它?

.net c#

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

使用inotify检测文件移动的问题.

我想使用inotify来监视目录的内容.在我尝试使用mv命令重命名目录中的文件之前,一切似乎都很好.我按预期得到了IN_MOVED_FROM但是没有IN_MOVED_TO.

以下是我的测试程序.编译:

g++ -Wall -o test test.cpp
Run Code Online (Sandbox Code Playgroud)

启动时间:

./test dir_to_watch
Run Code Online (Sandbox Code Playgroud)
#include <cstdio>
#include <cstring>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/inotify.h>

int main (int argc, char *argv[])
{
  int inotify_fd = inotify_init();

  if (inotify_fd < 0)
  {
    fprintf(stderr, "Unable to init inotify: %m\n");
    return 1;
  }

  int watch_descriptor = inotify_add_watch(inotify_fd,
                       argv[1],
                       IN_ALL_EVENTS);

  if (watch_descriptor < 0)
  {
    fprintf(stderr, "Unable to add inotify watch: %m\n");
    return 1;
  }

  union
  {
    inotify_event event;
    char pad[1024];
  }
  buffer;

  struct events …
Run Code Online (Sandbox Code Playgroud)

linux inotify

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

初始化中的评估顺序

valueA和valueB的以下初始化是否需要未定义的行为?

int array[2] = {1,2};
int index = 0;
int valueA = array[index++], valueB = array[index++];
Run Code Online (Sandbox Code Playgroud)

c ++ 98和c ++ 11之间有什么变化吗?

c++ initialization c++11

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