小编fal*_*tro的帖子

Java相当于C#的逐字字符串@

快问.是否有相应的@应用于Java中的字符串:

例如,我可以@"c:\afolder\afile"在C#中进行操作,并在处理时忽略转义字符,而不是必须这样做"c:\\afolder\\aFile".是否有Java等价物?

嗯:stackoverflow正在逃避我..哈哈.第二个例子应为:

C:(双反斜杠)afolder(双反斜杠)å文件

c# java string literals

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

实践中面向数据的设计?

还有一个问题是关于什么是面向数据的设计,并且有一篇文章经常被提及(我已经读了5到6次).我理解这个的一般概念,特别是在处理例如3d模型时,你想要将所有顶点保持在一起,而不是用法线污染你的脸等.

但是,我确实很难想象数据导向设计如何适用于除最简单的案例(3d模型,粒子,BSP树等)以外的任何其他设计.是否有任何好的例子真正包含数据导向设计并展示了它在实践中如何运作?如果需要,我可以通过大型代码库.

我特别感兴趣的是"哪里有一个很多"的咒语,我似乎无法与其他人联系.是的,总有不止一个敌人,但是,你仍然需要单独更新每个敌人,因为他们现在不会以同样的方式移动它们吗?这同样适用于在接受的答案上述问题的"balls',例如(其实我到这个问题的答案评论问这一点,但还没有得到答复还).仅仅是渲染只需要位置,而不是速度,而游戏模拟需要两者,而不是材料?或者我错过了什么?也许我已经理解了它,这是一个比我想象的更直接的概念.

任何指针将非常感谢!

data-oriented-design

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

为什么delete运算符必须是静态的?

我发现这个问题同样问题,但是只有"新"部分得到了回答,所以这里再说一次.

为什么delete运算符必须是静态的?不知何故,它没有意义.新运算符非常有意义,就像构造函数不能虚拟一样,新运算符也不行.但是,析构函数可以(并且应该)在使用继承时是虚拟的,以便允许销毁正在使用的对象(通过多态)作为基类.

据我所知,当调用delete运算符时,该对象已被销毁,因此不存在"this".然而,使用与虚拟析构函数相同的推理仍然有意义的是让delete运算符与创建对象的new运算符匹配.

这就是我的意思

class A
{
  public:
    virtual ~A() {}
};

class B : public A
{
  public:
    void* operator new (size_t sz);
    void  operator delete (void* ptr, size_t sz);
};
Run Code Online (Sandbox Code Playgroud)

现在如果我们这样做

A *ptr = new B();
delete ptr; // <-- fail
Run Code Online (Sandbox Code Playgroud)

应该调用一个删除操作符(默认值),因为它是静态的,并且在编译时不知道(除了这里的小事),delete-operator是正确的.

但是,我用上面的代码做了一个小的测试程序(在new/delete操作符中只有malloc/free,在delete中只有print语句),并使用g ++编译它.非常意外地运行它会在B的删除操作符中产生输出.

我的(真正的)问题是:删除操作符是否有一些隐含的"虚拟"?在没有这个指针的意义上它只是静态的吗?或者这只是一个g ++功能?

我开始查看C++规范,但我必须承认,我有点不知所措,所以任何帮助都会受到赞赏.

c++ operator-overloading

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

我可以将未解析的引用链接到中止吗?

我正在尝试为一个相当大的项目的一小部分写一些小测试.不幸的是,如果不将整个项目链接在一起,试图链接这个野兽是相当不可能的,这是我不想做的(这是一个非常复杂的系统,用于查找所有依赖项和内容,我不想干涉它).

现在,我肯定知道在我的测试期间不会调用引用函数的函数,恰好恰好是与我测试的东西共享文件的函数的一部分.

有没有办法简单地将这些未解决的引用链接到,比方说,中止,或者什么?或者是否有一个工具可以创建适当的存根对象文件,其中所有调用都会导致中止,给定我拥有的目标文件集?

我使用gcc(g ++)进行编译/链接,版本3.4.4.平台是unix(solaris/sparc,如果这很重要).

c++ linker gcc

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

Java:更漂亮的打印?

在我的计算结束时,我打印结果:

System.out.println("\nTree\t\tOdds of being by the sought author");

for (ParseTree pt : testTrees) {
 conditionalProbs = reg.classify(pt.features());

 System.out.printf("%s\t\t%f", pt.toString(), conditionalProbs[1]);
 System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

例如,这会产生:

Tree  Odds of being by the sought author
K and Burstner  0.000000
how is babby formed answer  0.005170
Mary is in heat  0.999988
Prelim  1.000000
Run Code Online (Sandbox Code Playgroud)

只是把两个\t放在那里有点笨拙 - 列不是真的排队.我宁愿有这样的输出:

Tree                         Odds of being by the sought author
K and Burstner               0.000000
how is babby formed answer   0.005170
Mary is in heat              0.999988
Prelim                       1.000000
Run Code Online (Sandbox Code Playgroud)

(注意:我很难让SO文本编辑器完美地排列这些列,但希望你能得到这个想法.)

有没有一种简单的方法可以做到这一点,或者我必须编写一个方法来尝试根据"树"列中字符串的长度来计算出来吗?

java console pretty-print

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

有效地将一个标准流复制到另一个标准流

好的,这里有一些代码概述了我正在尝试做的事情.

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/fcntl.h>

#include <iostream>
#include <sstream>

int main( int c, char *v[] )
{
    int fd = open( "data.out", O_RDONLY | O_NONBLOCK );
    std::cout << "fd = " << fd << std::endl;

    char buffer[ 1024000 ];
    ssize_t nread;

    std::stringstream ss;

    while( true )
    {
        if ( (nread = read( fd, buffer, sizeof( buffer ) - 1 )) < 0 )
            break;

        ss.write( buffer, nread );

        while( true )
        {
            std::stringstream s2;

            std::cout << "pre-get  : …
Run Code Online (Sandbox Code Playgroud)

c++ stream

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

在OpenGL中显示大图像的首选方法是什么

我有几次这个问题.假设我想在OpenGL上下文中显示一个启动画面或其他东西(或DirectX就此而言,它更像是一个概念性的东西),现在,我可以只加载2048x2048纹理,并希望显卡可以应对它(现在我认为大部分都会这样),但随着老式显卡的增长,我有这种不良的倾向于我并且告诉我不应该使用那么大的纹理.

现在的首选方式是什么?是将它放入视频内存,平铺它,还是让CPU完成工作和glDrawPixels?还是更精细的东西?

opengl graphics textures

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

如何复制两个不同的数据库系统?

我不确定它是否完全适合 stackoverflow,但是由于我正在寻找一些代码而不是工具,我认为它确实适合。

我正在寻找一种如何复制/同步不同数据库系统的方法——在本例中:mysql 和 mongodb。我们出于不同的目的而运行两者。我们从 mysql 数据库开始,后来为特殊应用添加了 mongodb。我们希望在两个数据库中都有数据,我们希望分别在 mysql 和 mongodb 中的 dbrefs 中都有约束。例如:我们需要 mysql 中的用户记录,但也需要 mongodb 中的表对象之间的引用。目前我们有一个 cronjob,它转储 mysql 数据并将其导入到 mongodb 中。然而,尽管它工作得很好,但这不是我们想要的解决方案。

我认为目前单向复制就足够了——mysql->mongodb,重要的是,复制是“实时”工作的,就像mysql主->从复制工作一样。

是否已经有针对此问题的解决方案或任何人关于如何实现此目标的想法?

谢谢!

mysql replication mongodb

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

XSLT编号仅计算多文件文档的当前文件中的实例

我的任务是从一些XML文件中整理一本书(使用XSL FO),现在我正在尝试编写本书中的数字(简单的编号,章节中没有重置或其他),我天真的方法是这样做的

<xsl:template match="figure">
  <fo:block xsl:use-attribute-sets="figure">
    .. stuff to deal with images ..
    <fo:block xsl:use-attribute-sets="figure-caption">
      Figure <xsl:number level="any"/>: <xsl:apply-templates/>
    </fo:block>
  <fo:block xsl:use-attribute-sets="figure-caption">
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我有一个聚合XML文件,使用这样的document()函数选择要使用的文件:

<xsl:template match="include">
  <xsl:apply-templates select="document(@src)"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

现在,我的问题是number似乎总是只计算当前文件中的实例,这不是我想要的(目前,每个文件只有一个或两个图像,导致所有数字都是'图1'或'图2' ).

我考虑过两种方法,基本上都是两遍XSLT.首先,直截了当的方法是使用身份变换生成包含整本书的中间XML,由于其他原因我不愿意这样做.

第二,使用node-set()扩展,我试过这样的

<xsl:template match="include">
  <xsl:apply-templates select="ext:node-set(document(@src))"/>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

但这产生了同样的结果.

有任何想法吗?也许某些东西不是两遍变换?任何帮助将不胜感激.

xslt

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

在bash中等效于select或poll

是否可以在bash中对文件描述符进行选择或轮询?我想要做的事情的本质是:

mkfifo fifo
exec 3<fifo
PROMPT_COMMAND="while read -t 0 line; do echo \$line; done <&3"
Run Code Online (Sandbox Code Playgroud)

exec用于保持管道打开(否则它将在每个循环结束时关闭).从理论上讲,这会在每次提示之前输出任何进入管道的内容.但是,它似乎不起作用,因为-t0甚至没有尝试阅读.

-t 1 就像一个魅力,但这会在每个提示时强制延迟一秒,这不是我想要的.

最佳的是使用.2秒超时进行选择(如果我执行的命令反过来导致某些东西被写入管道,那么在我使用异步消息时肯定会有短暂的延迟),并且那种延迟我可以忍受.零超时可能没问题,那么我只是创建一个程序以具有亚秒级延迟.

有任何想法吗?

bash

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