小编Jer*_*emy的帖子

Class.getDeclaredFields()是否以一致的顺序返回成员?

该文档将该方法描述为:

返回的数组中的元素没有排序,也没有任何特定的顺序

但是我不确定这是否意味着每次应用程序调用例程时订单都不一致.

我正在寻找一种方法为找到的每个字段配对一个唯一的ID - 但它也需要与下次运行应用程序时保持一致,即连续生成相同的ID.

我想迭代遍历找到的每个Field并为每个迭代的元素递增一个计数器.然后将特定元素的ID分配给计数器等于的值,但这些"ID"不一致,但是如果不按一致的顺序返回Fields.

java reflection

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

如何在C++中的另一个地址空间中调用函数

我知道这可能导致的线程问题及其危险,但我需要知道如何为我在学校做的安全项目这样做.我需要知道如何使用参数调用给定调用约定的远程地址空间中的函数 - 最好是恢复远程函数返回的数据,尽管我确实不需要它.

如果我可以在编译时从远程函数的函数原型获取细节,我将能够使这个方法工作.我需要知道参数有多大以及参数是否显式声明为指针(void*, char*, int*, etc...)

即如果我定义一个函数原型,如:

typedef void (__cdecl *testFunc_t)(int* pData);
Run Code Online (Sandbox Code Playgroud)

我需要在编译时至少获得参数的大小,如果可以的话,哪些是指针或不是.这里我们假设远程功能是一个stdcall_cdecl呼叫.

我使用的IDE是Microsoft Visual Studio 2007,以防该解决方案特定于特定产品.

这是我的计划:

  1. 使用CreateRemoteThread要调用的函数的原点在远程进程中创建一个线程,尽管我会在挂起状态下执行此操作.

  2. 我会设置堆栈,使得返回地址是在进程内部分配的代码存根的调用ExitThread(eax)- 因为这将使用函数的返回值退出线程 - 然后我将通过使用来恢复它GetExitCodeThread

  3. 我还会将函数调用的参数从我的本地堆栈复制到新创建的线程的参数 - 这是我需要知道函数参数是指针还是参数大小的地方.

  4. 恢复线程并等待它退出,此时我将返回调用者,线程退出代码.

我知道这应该在编译时可行但是编译器是否有一些方法可以用来做它,我不确定.我也知道所有这些数据都可以从编译代码后创建的PDB文件中轻松恢复,并且如果编译器执行优化,参数的大小可能会改变.我不需要被告知这是多么危险,因为我完全了解它,但这不是商业产品,而是我必须为学校做的一个小项目.

问题:如果我有一个函数原型,如typedef void(__ cdecl testFunc_t)(int pData);

无论如何我可以在编译时获得这个原型的参数的大小(即在上面的例子中,参数将总和为sizeof(int*)的总大小.例如,我有一个类似的函数:

template<typename T> unsigned long getPrototypeArgLength<T>()
{ 
   //would return size of arguments described in the prototype T 
} 

//when called as

getPrototypeArgLength<testFunc>()
Run Code Online (Sandbox Code Playgroud)

c++ security

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

如果T无效,我如何安全地获得sizeof(T)?

我试图弄清楚如何在我的函数模板中编译一些代码来确定T的返回值的大小,其中T是一个函数原型.

template<typename T>
void functionReturnLength()
{
long lReturnTypeSize = boost::mpl::eval_if<
    boost::is_void<boost::function_types::result_type<T>::type>::value, 
    boost::mpl::long_<0>,
    boost::mpl::long_<boost::mpl::sizeof_<boost::function_types::result_type<T>::type>::value>>::value;
}
Run Code Online (Sandbox Code Playgroud)

但是它仍然无法编译,因为sizeof(void)不是有效的操作 - 即使我正在尝试构造一个if语句,如果类型为void,则返回大小为0.我对BOOST MPL很新,所以,虽然我已经浏览了一段时间的文档,但我不知道如何应用if_或apply_if等其他ifs,如果这些甚至可以工作的话.

谢谢.

c++ boost boost-mpl

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

将Java转换为JavaScript项目有多可行?

我有一个用Java维护的项目,主要作为applet运行.我发现Applet对于浏览器游戏来说简直不切实际且危险,因为大多数最终用户都无视任何applet因为它在浏览器中运行(这也是applet如此可怕的声誉.)

我想将我的Java项目编译为JavaScript并使用HTML5进行渲染.虽然我可以看到一些问题......

  • 将Java反射转换为JavaScript是否可行?我使用Java的ScriptEngine模块在引擎中运行脚本.

  • 这种编译思想的可扩展性如何.我有几个纯Java依赖项,也需要编译为javascript(特别是Vorbis音频SPI.)代码库编译为~300kb(不确定是否有助于衡量大小)

  • 遇到这个过程有哪些其他可能的限制?

谢谢.

javascript java

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

20 字节数据发生 CRC16 冲突的可能性有多大?

我正在开发一个系统,该系统需要为长度可能少于20 个字节的结构存储散列。但是,为了优化在一系列散列中查找散列的过程,我们希望尽可能减小散列的大小。

所以我的问题是,我们提供给 crc16 哈希的数据量与其与另一个相同长度的条目发生冲突的概率之间是否存在关系?如果是这样,哪个是最佳长度?

18 个字节落在 ascii 表内(az,0-9),其余的范围在 0 和 10 之间

security hash crc16

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

标签 统计

c++ ×2

java ×2

security ×2

boost ×1

boost-mpl ×1

crc16 ×1

hash ×1

javascript ×1

reflection ×1