任何人都可以详细解释这个log2函数是如何工作的:
inline float fast_log2 (float val)
{
int * const exp_ptr = reinterpret_cast <int *> (&val);
int x = *exp_ptr;
const int log_2 = ((x >> 23) & 255) - 128;
x &= ~(255 << 23);
x += 127 << 23;
*exp_ptr = x;
val = ((-1.0f/3) * val + 2) * val - 2.0f/3; // (1)
return (val + log_2);
}
Run Code Online (Sandbox Code Playgroud) 我有一个类Command
,它是一个类的实例EventManager
.Class Command 在其构造函数中需要两个参数(host
,target
).
class EventManager
{
public:
void Event1(){ cmd->Execute(_eventEnum); }
private:
Command *cmd;
};
class Command
{
public:
Command(Host h, Target t)
void Execute();
private:
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我需要cmd->Execute()
在Target类的成员函数中使用此方法,我需要创建cmd
Target的实例变量或将其作为单例全局化.
我不能创建cmd
一个Target的实例变量,因为它不接受主机实例.要使它成为单身,就可以添加两个这样的方法
class Command
{
public:
CreateInstance(Host h, Target t);
GetInstance();
void Execute();
private:
Command(Host h, Target t);
}
Run Code Online (Sandbox Code Playgroud)
我需要确保GetInstance
在之后调用CreateInstance
.还有其他选择吗?
目标类是一个低级别的类,几乎没有事件.
Target::LowlevelEvent()
{
cmd->Execute(lowlevelevent) //In Execute for lowlevelevent in Command class, i might call target->reset …
Run Code Online (Sandbox Code Playgroud) 我正在阅读学习Python The Hard Way,我真的好奇他的意思
向后读取.py文件
我见过人们经常使用一个单独的表来存储表之间的关系.
例如,表Company_companys有两列,一个是nodeid,它是一个公司id,一个linkid是另一个公司的companyid.
为什么人们可以通过公司表中的额外列来完成同样的事情?是出于性能原因吗?或者还有其他原因吗?
编辑:感谢大家的答案和示例,我现在明白,为了在需要多对多关系时实现First Normal Form,需要一个单独的表来存储多个链接.在考虑上述问题时,我几乎忘记了多对多关系的概念,所以我从一对多关系的角度思考它:)
在Windows 7 64位上,运行Eclipse 3.6 64位,JDK(jdk1.6.0_23)64位和Android 2.3(bitness?),通过Eclipse的Run | Run(Ctrl + F11)运行程序调用android模拟器,但不会在模拟器上安装.apk(当然也不会运行它).
(更新,回答@ Computerish的问题)我在Eclipse的控制台上得到的是:
[2010-12-16 10:23:33 - HelloAndroid] ------------------------------
[2010-12-16 10:23:33 - HelloAndroid] Android Launch!
[2010-12-16 10:23:33 - HelloAndroid] adb is running normally.
[2010-12-16 10:23:33 - HelloAndroid] Performing com.example.helloandroid.HelloAndroid activity launch
[2010-12-16 10:23:33 - HelloAndroid] Automatic Target Mode: launching new emulator with compatible AVD 'AVD23'
[2010-12-16 10:23:33 - HelloAndroid] Launching a new emulator with Virtual Device 'AVD23'
Run Code Online (Sandbox Code Playgroud)
在运行Eclipse 3.5.2和Android 2.2(全部为32位)的Windows XP上不会发生此问题.
我尝试了在这个帖子中接受的答案建议的解决方案,但它没有帮助.任务管理器将adb的图像名称显示为" adb.exe*32 ".也许Eclipse + JDK(64位)的比特与Android模拟器/ SDK之间存在不匹配?
是否使用64位JDK进行 Android开发尚未实现?
我们有一个用Delphi编写的服务器,它使用RemObjects DataAbstract/SDK.我们希望使用Windows身份验证对用户进行身份验证,以允许他们访问我们的服务器.
目前我们执行以下操作:
1)客户端应用程序以明文形式将Windows用户名和密码发送到服务器.2)服务器使用以下函数检查凭据:
function ValidateUserLogonAPI(const UserName: string; const Domain: string;
const PassWord: string) : boolean;
var
Retvar: boolean;
LHandle: THandle;
begin
Retvar := LogonUser(PWideChar(UserName),
PWideChar(Domain),
PWideChar(PassWord),
LOGON32_LOGON_NETWORK,
LOGON32_PROVIDER_DEFAULT,
LHandle);
if Retvar then
CloseHandle(LHandle);
Result := Retvar;
end;
Run Code Online (Sandbox Code Playgroud)
当然,这种方法的缺点是用户凭证以明文形式通过网络传递.我们可以对它们进行加密,但加密/解密密钥必须在应用程序中提供.
我相信必须有更好的方法来实现我们的目标.我已经阅读了一些关于令牌的内容,但是并不真正理解它们在这种情况下会如何工作.
请注意,她的解决方案必须适用于Delphi Windows客户端和Delphi Prism ASP.NET客户端.
谢谢你提供的所有帮助.
InfoPath 2007 C#代码的默认编辑器是VSTA.它的功能非常低,我想使用我的VS 2010.这可能吗?如果有,怎么样?
我尝试用现有的项目创建一个项目,但我无法导入正确的程序集.
是否有一些"标准"方式或我能做的最好的是直接通过减去来计算它gregorian::date(1970,1,1)
?
class A
{
A()
{
var x = 5; // this is allowed
}
var _x = 5; // the compiler is unhappy
}
Run Code Online (Sandbox Code Playgroud)
我想编译器必须能够推导出成员变量的类型,就像它对本地变量一样.那有什么区别?
我试图在Android上制作一些自我修改的本机代码并在模拟器中运行它.我的示例基于android-ndk中的HelloJNI示例.它看起来像这样:
#define NOPE_LENGTH 4
typedef void (*FUNC) (void);
// 00000be4 <nope>:
// be4: 46c0 nop (mov r8, r8)
// be6: 4770 bx lr
void nope(void) {
__asm__ __volatile__ ("nop");
}
void execute(void){
void *code = mmap(NULL, NOPE_LENGTH, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (code != MAP_FAILED) {
memcpy(code, nope, NOPE_LENGTH);
((FUNC)code)();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是这段代码崩溃了.怎么了?