小编Kod*_*ior的帖子

使用stackmap框架以及它如何帮助进行字节码验证?

我一直试图绕过模糊的堆栈映射框架,它只是在一次通过中验证动态加载的类.

很少有堆栈溢出答案和其他资源,我发现非常有用

  1. 堆栈映射帧有更好的解释吗?

  2. 什么样的Java代码需要stackmap框架?

  3. http://chrononsystems.com/blog/java-7-design-flaw-leads-to-huge-backward-step-for-the-jvm

我理解以下内容 -

  1. 每个基本块都应以堆栈映射帧开始.
  2. 紧跟在无条件分支之后的每条指令(它是基本块的开始)应该具有堆栈映射帧.
  3. 通过ASM创建堆栈映射帧的算法.ASM文档的第3.5节

所有这些文章的缺点在于它没有描述在验证中如何使用堆栈映射框.

更具体地说 - 假设我们有一个如下所述的字节码.在当前位置,操作数堆栈将为空,并且局部变量1的类型将为B.位置L0具有关联的堆栈映射帧.验证者如何使用此信息?

    <initial frame for method>
    GETSTATIC B.VALUE
    ASTORE 1 
    GOTO L0 <- Current location
    <stack map frame>
L1  GETSTATIC A.VALUE
    ASTORE 1
    <stack map frame>
L0  ILOAD 0
    IFNE L1
    <stack map frame>
    ALOAD 1
    ARETURN
Run Code Online (Sandbox Code Playgroud)

注意:请注意,我确实阅读了JVM规范并且很难理解堆栈映射框架.任何帮助都会非常有帮助.

java jvm bytecode java-bytecode-asm

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

序列化C++对象

我想实现一个序列化类,它接收一个对象并将其转换为二进制流并存储在一个文件中.之后,应该从文件重建对象.

虽然这个功能是由C#中的BinaryFormatter提供的,但我想从头开始设计自己的Serialization类.

有人能指出一些资源吗?

提前致谢

c++ serialization marshalling unmarshalling deserialization

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

单身人士抽象工厂模式

我想实现一个抽象工厂模式,但也想成为一个单例.

class WindowFactory {
protected:
    virtual Scrollbar* createScrollbar() = 0;
};

class MacWindowFactory: public WindowFactory {
    virtual Scrollbar* createScrollbar() {
        //return a instance
    }
    ;
};

class LinuxWindowFactory: public WindowFactory {
    virtual ScrollBar* createScrollbar() {
        //return a instance
    }
    ;
};
Run Code Online (Sandbox Code Playgroud)

有人可以帮我提供一些制作这个抽象工厂单例的示例代码吗?

提前致谢.

c++ singleton design-patterns abstract-factory

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

何时使用MCS锁

我一直在阅读有关MCS锁的信息,我觉得这很酷。现在,我知道它是如何实现的,下一个问题是何时使用它。以下是我的想法。请随时将项目添加到列表中

1)理想情况下,当我们要同步两个以上线程时,应使用 
2)MCS锁减少了必须失效的高速缓存行的数量。最坏的情况是2个CPU的高速缓存行无效。

我还有什么想念的吗?

MCS还能用来实现互斥锁而不是自旋锁吗?

synchronization operating-system mutex locking spinlock

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

alloca的用途是什么?

可能重复:
在哪些情况下alloca()有用吗?

我最近碰巧看到了alloca()函数的使用.谷歌搜索告诉我,它用于在堆栈上分配空间.我无法抓住申请表吗?此外,使用它有任何陷阱吗?

c alloca dynamic-memory-allocation stack-memory

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

命名静态对象的名称

我在C++中看到了关于动态链接的这篇文章.

我们可以创建一个C++工厂,它将返回我们感兴趣的类的对象.此外,我们应该在工厂的文件范围内创建一个静态对象,以便可以使用它来定位它dlsym().(文章建议静态对象不会受到名称损坏.)

为什么静态对象没有名称损坏?

c++ static-members name-mangling dynamic-linking

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