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) 以下将替换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字符串中删除不可打印的字符?
我正在阅读这里的一个问题,试图获取文本的字体大小.他们给出的答案是使用测量方法获得像素大小.我想要做的就是获取字体大小值,以便我可以更改它.
例如:
var x = document.getElementById("foo").style.fontSize;
document.getElementById("foo").style.fontSize = x + 1;
Run Code Online (Sandbox Code Playgroud)
虽然这两个例子不行,但这个例子不起作用
document.getElementById("foo").style.fontSize = "larger";document.getElementById("foo").style.fontSize = "smaller";唯一的问题是它只改变一次大小.
我使用Jfunc构建了现有的框架,即使在测试用例中的一个断言失败时也提供了继续执行的工具.Jfunc使用junit 3.x框架.但是现在我们正在迁移到junit4,所以我不能再使用Jfunc并用junit 4.10 jar替换它.
现在的问题是因为我们在框架中广泛使用了jfunc,而对于junit 4,我们希望使代码继续执行,即使其中一个断言在测试用例中失败.
有没有人对此有任何建议/想法,我知道在junit中测试需要更加原子化,即每个测试用例一个断言,但由于某种原因我们不能在我们的框架中这样做.
Java程序如何确定它是否在调试模式下运行?
应用程序在常规"全速"模式下的行为应与"调试模式"(在附加调试器时,在调试模式下运行时)略有不同.应用程序通过TCP与另一台计算机,另一个进程或其自身进行通信.我的同事希望我们Socket.setSoTimeout(1000)默认使用,以便从套接字读取最多可以阻止1秒钟.调试时,这当然是不够的,应用程序停止工作.所以解决方案是设置SO_TIMEOUT更高,但只是在调试模式(例如:无限制).现在,我并不总是设置断点或者不想使用调试构建,我可以自己设置"debug"属性.有时我会附加调试器(远程调试).我主要使用Eclipse,所以在那里工作的解决方案是可以的.
可能的答案包括:
要确定是否在调试模式下运行,请使用以下方法java.lang.management.*或javax.management.*...
您的同事因X原因错误SO_TIMEOUT,默认情况下您不应设置为1秒.
我知道系统属性方法,但我将问题留待解决我原来的问题.
这是一个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) 有没有办法将动画gif转换为.aviLinux上的视频格式(例如)?
我已经尝试过了
ffmpeg -i thegif.gif thevideo.avi
Run Code Online (Sandbox Code Playgroud)
但我得到的只是视频的第一张图片.
在我工作的C/Unix环境中,我看到一些开发人员使用__progname而不是argv[0]使用消息.这有什么好处吗?__progname和之间的区别是什么argv[0].它是便携式的吗?
我想我有一个相当独特的问题需要解决.好吧,我无法使用谷歌找到足够的信息.所以在这里,
我在Java EE SOA应用程序上工作,该应用程序使用Oracle XML DB将XML文档存储为XML.每当XML发生变化时,我都会增加版本并将以前的版本放到另一个表中.
现在的要求是,我应该将两个版本之间的差异存储为XML,而不是整个XML文档.
我很感激你的时间.