小编Dav*_*ter的帖子

John Carmack不寻常的快速反向平方根(Quake III)

John Carmack在Quake III源代码中有一个特殊的功能,它计算浮点的平方根,比常规的快4倍(float)(1.0/sqrt(x)),包括一个奇怪的0x5f3759df常量.请参阅下面的代码.有人可以逐行解释这里究竟发生了什么以及为什么这比常规实现快得多?

float Q_rsqrt( float number )
{
  long i;
  float x2, y;
  const float threehalfs = 1.5F;

  x2 = number * 0.5F;
  y  = number;
  i  = * ( long * ) &y;
  i  = 0x5f3759df - ( i >> 1 );
  y  = * ( float * ) &i;
  y  = y * ( threehalfs - ( x2 * y * y ) );

  #ifndef Q3_VM
  #ifdef __linux__
    assert( !isnan(y) );
  #endif
  #endif …
Run Code Online (Sandbox Code Playgroud)

algorithm floating-point square-root

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

如何在Java中替换不可打印的Unicode字符?

以下将替换ASCII控制字符(简写为[\x00-\x1F\x7F]):

my_string.replaceAll("\\p{Cntrl}", "?");
Run Code Online (Sandbox Code Playgroud)

以下内容将替换所有ASCII不可打印字符(简写[\p{Graph}\x20]),包括重音字符:

my_string.replaceAll("[^\\p{Print}]", "?");
Run Code Online (Sandbox Code Playgroud)

但是,它们都不适用于Unicode字符串.有没有人有一个很好的方法从unicode字符串中删除不可打印的字符?

java string unicode

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

编写自己的平方根函数

你如何编写自己的函数来找到整数的最准确的平方根?

谷歌搜索后,我发现了这个(从原始链接存档),但首先,我没有完全得到它,其次,它也是近似的.

假设平方根为最接近的整数(对于实际的根)或浮点数.

algorithm math function newtons-method square-root

69
推荐指数
8
解决办法
16万
查看次数

如何在HTML中获取字体大小

我正在阅读这里的一个问题,试图获取文本的字体大小.他们给出的答案是使用测量方法获得像素大小.我想要做的就是获取字体大小值,以便我可以更改它.

例如:

var x = document.getElementById("foo").style.fontSize;
document.getElementById("foo").style.fontSize = x + 1;
Run Code Online (Sandbox Code Playgroud)

虽然这两个例子不行,但这个例子不起作用

  1. document.getElementById("foo").style.fontSize = "larger";
  2. document.getElementById("foo").style.fontSize = "smaller";

唯一的问题是它只改变一次大小.

html javascript css font-size

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

即使其中一个断言失败,也会在junit4中继续执行测试

我使用Jfunc构建了现有的框架,即使在测试用例中的一个断言失败时也提供了继续执行的工具.Jfunc使用junit 3.x框架.但是现在我们正在迁移到junit4,所以我不能再使用Jfunc并用junit 4.10 jar替换它.
现在的问题是因为我们在框架中广泛使用了jfunc,而对于junit 4,我们希望使代码继续执行,即使其中一个断言在测试用例中失败.
有没有人对此有任何建议/想法,我知道在junit中测试需要更加原子化,即每个测试用例一个断言,但由于某种原因我们不能在我们的框架中这样做.

java junit4

48
推荐指数
3
解决办法
3万
查看次数

如何确定是否启用了"调试模式"

Java程序如何确定它是否在调试模式下运行?

应用程序在常规"全速"模式下的行为应与"调试模式"(在附加调试器时,在调试模式下运行时)略有不同.应用程序通过TCP与另一台计算机,另一个进程或其自身进行通信.我的同事希望我们Socket.setSoTimeout(1000)默认使用,以便从套接字读取最多可以阻止1秒钟.调试时,这当然是不够的,应用程序停止工作.所以解决方案是设置SO_TIMEOUT更高,但只是在调试模式(例如:无限制).现在,我并不总是设置断点或者不想使用调试构建,我可以自己设置"debug"属性.有时我会附加调试器(远程调试).我主要使用Eclipse,所以在那里工作的解决方案是可以的.

可能的答案包括:

  1. 要确定是否在调试模式下运行,请使用以下方法java.lang.management.*javax.management.*...

  2. 您的同事因X原因错误SO_TIMEOUT,默认情况下您不应设置为1秒.

更新

我知道系统属性方法,但我将问题留待解决我原来的问题.

java eclipse debugging

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

RealUID,已保存的UID,有效的UID.这是怎么回事?

这是一个set-root-uid程序

$ls -l
-rwsr-sr-x 1 root root 7406 2011-12-13 22:37 ./x*
Run Code Online (Sandbox Code Playgroud)

源代码:

int main(void) {
    printf(
        "         UID           GID  \n"
        "Real      %d  Real      %d  \n"
        "Effective %d  Effective %d  \n",
             getuid (),     getgid (),
             geteuid(),     getegid()
    );

seteuid(600);
    printf(
        "         UID           GID  \n"
        "Real      %d  Real      %d  \n"
        "Effective %d  Effective %d  \n",
             getuid (),     getgid (),
             geteuid(),     getegid()
    );

setuid(1000);

    printf(
        "         UID           GID  \n"
        "Real      %d  Real      %d  \n"
        "Effective %d  Effective %d  \n",
             getuid (),     getgid (), …
Run Code Online (Sandbox Code Playgroud)

linux privileges setuid

36
推荐指数
3
解决办法
3万
查看次数

动画gif到Linux上的AVI

有没有办法将动画gif转换为.aviLinux上的视频格式(例如)?

我已经尝试过了

ffmpeg -i thegif.gif thevideo.avi
Run Code Online (Sandbox Code Playgroud)

但我得到的只是视频的第一张图片.

video ffmpeg gif animated-gif

26
推荐指数
3
解决办法
3万
查看次数

使用'__progname'代替argv [0]

在我工作的C/Unix环境中,我看到一些开发人员使用__progname而不是argv[0]使用消息.这有什么好处吗?__progname和之间的区别是什么argv[0].它是便携式的吗?

c unix double-underscore

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

XML Diff和Merge

我想我有一个相当独特的问题需要解决.好吧,我无法使用谷歌找到足够的信息.所以在这里,

我在Java EE SOA应用程序上工作,该应用程序使用Oracle XML DB将XML文档存储为XML.每当XML发生变化时,我都会增加版本并将以前的版本放到另一个表中.

现在的要求是,我应该将两个版本之间的差异存储为XML,而不是整个XML文档.

  1. 有没有可以进行XML比较的Java库?(XMLUnit,......?)
  2. 是否有用于捕获XML差异的标准XML模式?
  3. 我可以使用哪种转换技术将"差异"应用于XML以在版本之间来回切换?(XSLT,Groovy,......?)

我很感激你的时间.

java xml xslt diff merge

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