小编dav*_*vka的帖子

搜索文本中几个字符串之一的高效算法?

我需要搜索传入的非常长的文本片段以查找给定字符串的出现次数.字符串对于整个会话是不变的并且不是很多(~10).另外的简化是没有任何字符串包含在任何其他字符串中.

我目前正在使用boost正则表达式匹配str1 | str2 | ....这项任务的执行很重要,所以我想知道我是否可以改进它.并不是说我可以比推特人更好地编程,但也许专用实现比普通实现更有效.

由于字符串长时间保持不变,我可以预先建立一个数据结构,如状态转换表.

例如,如果字符串是abcx,bcy而且cz,到目前为止abc,我已经阅读过,那么我应该处于合并状态you're either 3 chars into string 1, 2 chars into string 2 or 1 char into string 1.然后阅读x下一个会将我移动到string 1 matched状态等,除了xyz将移动到初始状态之外的任何其他字符,我将不需要缩回b.

任何想法或参考表示赞赏.

c++ algorithm string-matching text-search

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

从用户终端运行Eclipse时出错,但不是从root用户运行

我在我的家庭目录()下安装了eclipse(好吧,解压缩)~/eclipse并且它工作正常(好吧,就像你可以说它关于日食一样).今天它完全疯了,一直抛出"堆栈溢出"错误.(顺便说一句,你知道这些天google完全不可能出现"堆栈溢出"问题吗?猜猜你得到了什么...... :)

所以我下载了最新版本并在/opt/eclipse此时安装了它.当我尝试从我的用户终端运行它时,我遇到了大量错误:

(eclipse:28336):GLib-GObject-WARNING**:无效(NULL)指针实例

(eclipse:28336):GLib-GObject-CRITICAL**:g_signal_connect_data:断言`G_TYPE_CHECK_INSTANCE(instance)'失败

(eclipse:28336):Gtk-CRITICAL**:gtk_settings_get_for_screen:断言`GDK_IS_SCREEN(屏幕)'失败

(日食:28336):Gtk-WARNING**:未设置GtkWindow的屏幕; 在使用窗口之前,您必须始终为GtkWindow设置屏幕

等等

从root终端运行它工作正常(实际上比以前的版本启动快得多).

这样做没有帮助:

xhost +localhost
xhost +<my-user>
Run Code Online (Sandbox Code Playgroud)

这两个都没有:

chroot -R root:root /opt/eclipse
chroot -R my-group:my-user /opt/eclipse
Run Code Online (Sandbox Code Playgroud)

有什么建议如何解决这个问题?

编辑:奇怪的是,再打开它,这次在我的家里,dir也没有帮助.表明放弃并没有多大帮助......

eclipse linux eclipse-cdt

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

我是否应该总是更喜欢使用准备好的SQL语句来获得性能优势?

我的理解是在服务器上编译一个预准备语句,从而节省了重复解析,优化等的开销.显然,我应该总是更喜欢使用预处理语句来运行多次查询.

这种方法有任何缺点吗?

我正在使用从C++到mysql的odbc(libodbc ++).

mysql sql odbc prepared-statement relational-database

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

这个宏存在问题 - 检查状态,如果失败则返回

我们在代码中有一个频繁重复的行,用于检查函数的返回状态,如果是故障,则立即返回状态.我想为这个定义一个宏:

#define RETURN_IF_FAILED(x) { int stat = (x); if (FAILED(stat)) return stat; }
Run Code Online (Sandbox Code Playgroud)

局部变量是因为参数x可以是函数调用.

我知道有一些奇怪的使用宏的工件,我不是很熟练,我想问你是否看到这个宏有任何问题.谢谢.

(并且,请不要建议使用例外 - 我自己讨厌这种风格,但这就是它在这里完成的方式)

c++ error-handling macros

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

我可以从存储过程访问远程mysql服务器/ db吗?

是否可以使用sql语句从存储过程连接到mysql服务器的远程实例,以进行选择和插入访问?

理想情况下,它会像(伪代码):

connect to remotedb@remotehost
select field1 from remotedb.table1 where ...
Run Code Online (Sandbox Code Playgroud)

我想我可以在C/C++中开发一个用户定义的函数,它通过ODBC来实现.不过,如果可能的话,我更喜欢原生语法.谢谢!

mysql database stored-procedures database-connection

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

在Linux上创建原子文件?

如果文件不存在,我需要创建一个文件,试图创建此文件的另一个进程将失败.我甚至需要在创建过程完成向其写入实际数据之前将文件视为"已创建".

我读到了O_EXCL标志open(),所以似乎解决方案存在,但我有几个问题:

  1. 你有这种技术的经验吗?有多好?(我想我不能拥有DB级别的原子性,但是足够好就是......好吧,够了)
  2. 我应该立即关闭文件,open()以便将其视为已创建,然后重新打开以进行写入?
  3. 有什么细微之处需要注意吗?

c++ linux filesystems createfile atomicity

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

将二进制数据(std :: string)写入std :: ofstream?

我有一个std::string包含二进制数据的对象,我需要将其写入文件.可能ofstream f("name"); f << s;有问题吗?我需要完全按照原来的方式读回数据.

我当然可以使用fwrite(s.c_str(), s.size(), 1, filep),这两种方法都有任何优点/缺点吗?

c++ binary iostream

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

用于生成 C++ 代码轮廓/地图的工具 - 有这样的东西吗?

我需要对用 C++ 编写的软件组件进行一些修改。我幻想着生成一些代码映射,这将显示类之间的关系并引导我完成方法的流程/调用图。有这个工具吗?

几年前,我使用 Rational Rose 建模工具,它具有对代码进行逆向工程并为其构建类图的功能。然而,对于此类项目探索重要的是一些动态信息,如序列图(理想情况下)或调用图。更不用说 Rose 对于这样的一项临时任务来说太大了,实际上我不知道它是否仍然存在。

c++ oop reverse-engineering

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

如何在Python 2.7中找到磁盘空间(不使用os.statvfs)

因此,自2.6以来os.statvfs()弃用,shutil.disk_usage()尚不存在(3中可用).还剩什么?
编辑:我不想在这一点上添加一个新的库,所以psutil也是.

我将df在子进程中运行并解析输出,有更好的方法吗?

python diskspace python-2.7

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

为什么string :: append操作行为奇怪?

看看下面的简单代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s("1234567890");
    string::iterator i1 = s.begin();
    string::iterator i2 = s.begin();
    string s1, s2;
    s1.append(i1, ++i1);
    s2.append(++i2, s.end());

    cout << s1 << endl;
    cout << s2 << endl;
}
Run Code Online (Sandbox Code Playgroud)

您对输出的期望是什么?

你会像我一样期望它是:

1
234567890
Run Code Online (Sandbox Code Playgroud)

错误!它是:

234567890
Run Code Online (Sandbox Code Playgroud)

即第一个字符串为空.

前缀增量运算符的接缝在迭代器中存在问题.还是我错过了什么?

c++ linux gcc stl operator-precedence

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