小编uck*_*man的帖子

包含有序交替的正则表达式是否可以重写为仅使用无序交替?

假设我有一个正则表达式语言支持文字,正面和负面的字符类,有序交替,贪婪的量词?,*以及+和nongreedy量词??,*?+?.(这实际上是PCRE的一个子集,没有反向引用,环视断言或其他一些更高级的位.)用无序交替替换有序交替是否会降低这种形式主义的表达能力?

(无序交替---有时也称为"无序选择"---是L(S | T)= L(S)+ L(T),而有序交替是L(S | T)= L (S)+(L(T) - {a in L(T):a在L(S)中延伸一些b}}.具体地说,模式a|aa将匹配字符串a,aa如果交替是无序的,但仅a在交替时订购.)

换句话说,给定包含有序交替的模式S,该模式是否可以重写为不包含有序替换的等效模式T(但可能是无序替换)?

如果在文献中考虑过这个问题,我会感谢任何人都可以提供的任何参考.我几乎没有关于扩展正则表达式形式主义的表达能力的任何理论工作(除了关于后向引用如何将你从常规语言转移到无上下文语法之外).

regex theory pcre alternation

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

如何将长整数转换为固定长度的16位二进制字符串?

嗨,我想将一个长整数转换为二进制,但问题是我想要一个固定的16位二进制结果转换后,如果我转换2到16位二进制它应该给我0000000000000010作为ans谁可以帮助我?

java

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

大于lg N的最小整数

我正在读某个地方:

大于lg N的最小整数是以二进制表示N所需的位数,与大于lo​​g10 N的最小整数是以十进制表示N所需的位数相同.

Java语句

for (lgN = 0; N > 0; lgN++, N /= 2) ; 
Run Code Online (Sandbox Code Playgroud)

是计算大于lg N的最小整数的简单方法

我可能在这里遗漏了一些东西但是Java语句如何计算大于lg N的最小整数?

java algorithm math bit-manipulation

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

如何从随机位流中生成[0,n]范围内的随机整数而不浪费位?

我有一个(均匀的)随机位流,我希望在[0,n]范围内统一生成随机整数,而不会浪费比特.(我正在考虑超出楼层(log_2(n))+ 1的比特浪费,假设它总是可以使用不超过它.)例如,如果n = 5,那么算法我是寻找应该使用不超过三位.如何才能做到这一点?

random integer uniform

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

为什么 BufferedImage 需要超出其数据数组大小的这么多内存?

我正在尝试确定任何给定的 TYPE_INT_ARGBBufferedImage将使用多少堆,以便对于进行一些图像处理的程序,我可以根据我们提供的图像大小设置合理的最大堆。

我编写了以下程序作为测试,然后我用它来确定它可以在没有 的情况下运行的最小最大堆OutOfMemoryError

import java.awt.image.BufferedImage;

public class Test {
  public static void main(String[] args) {
    final int w = Integer.parseInt(args[0]);
    final int h = Integer.parseInt(args[1]);

    final BufferedImage img =
      new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

    System.out.println((4*w*h) >> 20);
  }
}
Run Code Online (Sandbox Code Playgroud)

(印刷值的预期大小int[],其中所述BufferedImage的象素数据被存储。)我希望发现的是,所要求的最大堆是一样的东西x + c,其中x是所述数据阵列的大小和c是由一个恒定加载的类的大小、BufferedImage对象等。这是我发现的(所有值都以 MB 为单位):

4*w*h 最小最大堆
----- -----
  5 -
 10 15
 20 31
 40 61
 80 121
160 241

1.5x非常适合观察。(请注意,我没有发现 5MB 图像的最小值。)我不明白我看到了什么。这些额外的字节是什么?

java heap bufferedimage

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

如何在Swing GTK LookAndFeel中更改默认字体大小?

有没有办法在Swing GTK LaF中更改默认字体大小?

GTK LaF似乎假定为72dpi,因此所有字体只有使用96dpi屏幕时应该是的大小的3/4.有关详细信息,请参阅此Fedora错误.我想在此期间找到一个解决方法,同时我等待修复.

我已经尝试过重置字体大小UIDefaults,例如,这里推荐的,但是(如前所述)GTK LaF似乎忽略了这一点.

可以构建一个小部件工厂,它也可以设置所需的字体大小来创建我的所有Swing小部件,但这将是大规模侵入性的,所以如果有任何其他方式,我想避免使用该路径.

编辑:以下不起作用:

public class GTKLaF extends com.sun.java.swing.plaf.gtk.GTKLookAndFeel {
  @Override
  public UIDefaults getDefaults() {
    final float scale = 3f;

    final UIDefaults defaults = super.getDefaults(); 

    final Map<Object,Object> changes = new HashMap<Object,Object>();

    for (Map.Entry<Object,Object> e : defaults.entrySet()) {
      final Object key = e.getKey();
      final Object val = e.getValue();

      if (val instanceof FontUIResource) {
        final FontUIResource ores = (FontUIResource) val;
        final FontUIResource nres =
          new FontUIResource(ores.deriveFont(ores.getSize2D()*scale));
        changes.put(key, nres); …
Run Code Online (Sandbox Code Playgroud)

java gtk swing font-size look-and-feel

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

如何使用libjpeg从std :: istream中读取JPEG?

libjpeg可以从FILE*缓冲区读取JPEG数据.我的数据来自于std::istream.我可以将整个读std::istream入缓冲区以与libjpeg一起使用,但我宁愿直接从libjpeg中读取,std::istream如果可能的话.如何才能做到这一点?

c++ iostream libjpeg istream

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

在 OpenGL 视口外绘图是否昂贵?

我有几千个四边形要绘制,其中一些可能完全落在视口之外。我可以编写代码来检测哪些四边形完全落在视口之外,并要求 OpenGL 只绘制那些至少部分可见的四边形。或者,我可以简单地让 OpenGL 绘制所有四边形,而不管它们是否与视口相交。

我对 OpenGL 没有足够的经验,无法知道其中之一是否明显更好(或者 OpenGL 是否提供了一些我可以使用的快速视口相交测试)。视口外的绘制是否接近于无操作,或者它们是否足够昂贵以至于我应该尽量避免它们?

opengl performance

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

在Java中将PNG图像快速加载到数组中

我想加载(和解码)PNG图像并将它们转换为Java中的一维数组.我显然可以使用ImageIO.read()然后将像素复制到数组中,但这会消耗两倍的内存(栅格+最终数组),并且它涉及的处理时间比我想要的多.

我该怎么办呢?最坏的情况我可以自己实现PNG规范,但这似乎是一个相当复杂的任务.理想情况下,我想要一个可以"插入"的PNG实现.不太理想但仍然很好将是一个易于理解(不像com.sun代码)PNG阅读器,我可以(并将被允许)修改.

java performance png javax.imageio

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

如何在yacc/bison中找到错误报告的不平衡分隔符?

我有一个语法,它使用括号和方括号作为分隔符.当bison生成的解析器被赋予带有不平衡分隔符的输入时,YYLTYPE*传递给的传入的错误位置yyerror是输入的结尾.所以,例如,在输入中xx(yy,void yyerror(YYLTYPE* yylloc, Context* ctx, const char* msg)我有这个yylloc->first_column == yylloc->last_column == 5.不幸的是,输入的结尾不是指示不匹配分隔符的最显着位置.更有用的是左括号或左方括号的位置,没有匹配.(在该示例中,这将是左括号在偏移2)我推测,此信息可用在分析堆---必须有一些Ñ使得$-n是不匹配([令牌,并@-nYYLTYPE结构保持其位置---但似乎没有一个可用yyerror.我知道我可以保留一堆我自己用于跟踪分隔符的偏移并隐藏在Context我已经传递的内容中yyerror,但这似乎是不优雅和重复的,因为野牛已经在跟踪这个.

那么:如何从bison中获得它在输入中遇到的第一个不平衡分隔符的位置,以便在为解析错误生成消息时可以使用它?

yacc bison

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