小编bob*_*bob的帖子

为什么在实例化对象时需要列出两种对象类型?

如果我将JungleCat作为Cat的子类(JungleCat 扩展 Cat),那么我说:

JungleCat cat1 = new JungleCat();
Cat cat2 = new Cat();
Cat cat3 = new JungleCat();
JungleCat cat4 = new Cat(); //this one is illegal, right?
JungleCat cat5;
Run Code Online (Sandbox Code Playgroud)

我想知道什么是对象类型的cat1,cat2,cat3,cat4,和cat5?我也想知道为什么在实例化对象时存在冗余:为什么在实例化对象时需要列出两个对象类型.

我很抱歉,如果这是一个非常基本的问题,但这是我想要一劳永逸地知道的事情,并且有一个很好的理由,我知道我可以在这里得到一个很好的答案(而不是Yahoo Answers,等):P

java object

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

为传入的网络连接保持 Android 唤醒?

我正在为 Android 设备编写 HTTP 服务器,通过 NanoHTTPD 实现。

我的一个目标是让设备即使在屏幕关闭的情况下也允许传入连接。

我开始时很小,有一个持久的通知,认为这将使我的应用程序保持在内存中并在后台运行。锁定设备后,我可以继续浏览它所提供的网页,只要我不让它待一分钟。一旦我这样做,它就完全停止响应。

我通过包含 CPU 部分唤醒锁来升级我的尝试,这没有任何区别。然后我添加了一个完整的 WifiLock 来保持收音机打开,最后,在绝望中,一个 MulticastLock(我想也许它可以让收音机监听连接)。尽管如此,在大约一分钟没有建立任何连接后,设备停止响应,即使有所有这些锁定。

我可以做些什么来保持设备监听传入连接?似乎通过定期请求击中设备使其保持清醒......我可以以某种方式以编程方式模拟这种行为吗?我想不出办法。

谢谢!

编辑:出于这个问题的目的,可以忽略电池消耗。

编辑:NanoHTTPD 也作为服务运行。

android android-networking android-wake-lock nanohttpd

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

为什么不同的 AES 实现会产生不同的输出?

我觉得我对哈希函数和它们所涉及的合约有很好的理解。

输入 X 上的 SHA1 将始终产生相同的输出。您可以使用 Python 库、Java 库或纸笔。这是一个函数,它是确定性的。我的 SHA1 和你的、爱丽丝和鲍勃的一样。

据我了解,AES 也是一个函数。你输入一些值,它会吐出密文。

那么,为什么会担心 Truecrypt(例如)被“破坏”?他们不是说 AES 坏了,而是说实现它的程序可能坏了。理论上,AES 是可靠的。那么为什么不能直接通过 Truecrypt 运行一个文件,通过“引用 AES”函数运行它,并验证结果是否相同呢?我知道它绝对不能那样工作,但我不知道为什么。

是什么让 AES 以这种方式与 SHA1 不同?为什么 Truecrypt AES 会输出与 Schneier-Ifier* AES 不同的文件,因为它们都被赋予了相同的输入?

最后,我的问题归结为:

My_SHA1(X) == Bobs_SHA1(X) == ...等

但是 TrueCrypt_AES(X) != HyperCrypt_AES(X) != VeraCrypt_AES(X) 等等。这是为什么呢?所有这些程序是否都包装了 AES,但有不同的方法来确定诸如初始化向量之类的东西?

*如果我曾经写过一个,这将是我的文件加密程序的名称

encryption cryptography aes

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

Lua:"必需"模块中的变量的范围是什么?

在花了一周学习Lua之后,遇到这个奇怪的场景我感到有些震惊,因为我之前曾想过"require"命令就像C/C++中的#include一样工作(即,它由预处理器复制/粘贴) ).

显然情况并非如此.

这就是困扰我的原因:

-- a.lua
this_is_global = "I'm a global var!!"
require "b"
print(global_in_b) -- error??!! globals in b aren't truly global?

-- b.lua
print(this_is_global) -- prints "I'm a global var!"
-- so b can see globals from a
global_in_b = "Am I global too?"
Run Code Online (Sandbox Code Playgroud)

出于生产率的原因,我刚刚创建了自己的表作为b中的作用域,添加了我想要访问该表的所有内容,然后在b中返回表以便我可以编写:

-- a.lua
stuff_from_b = require "b"
print(stuff_from_b.global_in_b)  -- does what we want, in a weird way
Run Code Online (Sandbox Code Playgroud)

我知道我也可以手动将b.lua中的东西添加到_G表中以强制它们是全局的,但这感觉很难看.

所以我的问题:

  • 在所需文件中"全局变量"究竟发生了什么?如果不是_G,他们最终会找到什么表?
  • 访问所需文件范围的常用方法是什么?

lua scope

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

使用“数组样式”表是否比使用“地图样式”表提供更快的读取访问速度?

我正在使用 Love2D 用 Lua 编写游戏。

每个实体显然都有一个 x,y 位置,这只是一个名为“位置”的表,其中包含 {x, y}(即 {10, 4})。

到目前为止,我一直在使用数组运算符实现该表,因此要获取 x 值,我将调用position[1],要获取 y 值,我将调用position[2]。

然而,为了可读性,我宁愿调用position.x和position.y。这将涉及以“地图”样式使用表格,例如position = {x=10, y=4}.

虽然数组查找时间显然必须是 O(1),但我担心使用映射样式会产生更糟糕的结果,因为映射内部往往比简单数组复杂一百万倍。

在某种程度上,我怀疑性能差异是否会产生很大影响,即使在我的主游戏循环中每分钟调用一百万次。我只是想更好地了解我用来创建这个游戏的工具。

谢谢!

lua

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

如果在我调用之前发生另一个autoIncrement,msql_insert_id()会给我一个不正确的结果吗?

我正在尝试向表中添加一行,然后立即获取其唯一ID,这只是一个自动增量列.

谷歌搜索告诉我PHP可以通过mysql_insert_id()方法执行此操作

通过上一个查询(通常是INSERT)检索为AUTO_INCREMENT列生成的ID.

"之前的查询"是否限制在此特定连接的范围内,或者如果在调用它之前插入另一行,它是否可能会返回错误的ID?

有关如何获取或设置行的唯一ID的更好建议吗?我会在客户端创建唯一的ID,但是有多个客户端,所以这不可能.

谢谢.

php mysql

2
推荐指数
1
解决办法
75
查看次数

LLVM:中间字节码与二进制

我对 LLVM 的一个方面感到困惑:

对于它支持的所有语言,它是否支持编译为中间代码和直接二进制?

例如,如果我用 C 编写一些东西,LLVM(或 Clang?)可以编译为二进制(如 GCC)或中间代码吗?

还是只能将某些语言转换为中级?我想不用说,这个中间体需要某种类型的 LLVM 运行时?不过,我从来没有真正听说过运行时。

llvm clang

2
推荐指数
1
解决办法
804
查看次数