小编Oli*_*rth的帖子

什么是流水线?它如何提高执行速度?

我相信,如果这是在惹你生气,那就毫无疑问是愚蠢的.我有关于管道衬里的问题吗?

什么是管道衬里?

Theory说:" 通过流水线操作,CPU在第一条指令完成之前开始执行第二条指令.流水线操作可以加快处理速度,因为CPU不必等待一条指令完成机器周期."

我的问题是考虑我正在开发一个单处理器系统,一次只能执行一条指令,当CPU忙时,如何同时执行取出下一条指令?如果我缺乏概念清晰度,请对我有所启发.如果有单独的硬件使同时处理发生,它是什么?请解释一下.

architecture assembly arm pipelining

12
推荐指数
3
解决办法
2万
查看次数

传递值的返回类型多态性

我不确定问题标题是否准确......让我先解释一下我原来的简单场景,然后继续解释我想做什么,但不能.

最初,我有类似的东西:

class Operand;

Operand genOperandA() { ...; return Operand(); }
Operand genOperandB() { ...; return Operand(); }
... // more operand-generation functions

typedef Operand (*OpGen)();

// Table of function pointers
static const OpGen generators[] =
{
    genOperandA,
    genOperandB,
    ...
};

// Function to do some operation on the operand
void operate(Operand& op);

...

// Example call
operate(generators[1]());
Run Code Online (Sandbox Code Playgroud)

到目前为止这么好(我想).但是,现在有几种派生的操作数类型,例如class RegisterOperand : public Operand.我有新的专用genOperand函数,理想情况下会返回派生类型的实例.但我不能这样做:

Operand genOperandC() { ...; return RegisterOperand(); }
Run Code Online (Sandbox Code Playgroud)

我不能这样做:

RegisterOperand genOperandC() { ...; return …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism

11
推荐指数
2
解决办法
3324
查看次数

使用后明确清除/归零敏感变量?

我注意到一些程序在使用后明确将零敏感内存分配.例如,OpenSSL有一种清除RSA密钥占用内存的方法:

"释放RSA结构rsa.此函数应始终用于释放RSA结构,因为它还可以通过首先清除内存来安全地释放子字段."

http://www.rsa.com/products/bsafe/documentation/sslc251html/group__COMMON__RSA__KEY__FUNCS.html#aRSA_free

如果任何(C/C++)程序包含这样的敏感变量,你应该如上所述明确归零内存吗?(或者,将记忆归为妄想或只是保护措施)?

此外,当程序完成时,任何分配的内存最终都会分配给另一个程序.在Linux系统上,是否在分配给另一个程序之前清理或清理了内存?或者,第二个程序可以读取第一个程序的一些旧内存内容吗?

c linux security memory-management

11
推荐指数
1
解决办法
463
查看次数

了解Java泛型中的通配符

我不确定为什么以下代码中的最后一个语句是非法的.Integer应该是一个子类型?,为什么我不能分配给它b

List<String> a = new ArrayList<String>();
a.add("foo");

// b is a List of anything
List<?> b = a;

// retrieve the first element
Object c = b.get(0);
// This is legal, because we can guarantee
// that the return type "?" is a subtype of Object

// Add an Integer to b.
b.add(new Integer (1)); 
Run Code Online (Sandbox Code Playgroud)

java generics

11
推荐指数
1
解决办法
338
查看次数

C#中是否存在一个关键字会使局部变量在多个调用中持续存在?

也就是说,在C中,我们可以定义一个函数:

func(){   
  static int foo = 1;   
  foo++;  
  return foo;  
}
Run Code Online (Sandbox Code Playgroud)

每次调用时它都会返回一个更高的数字.C#中是否有等效的关键字?

c# c#-4.0

11
推荐指数
1
解决办法
392
查看次数

用于为字符串生成唯一(常量)代码的算法,该代码应该是可逆的

要求:

我们在DB中有值

Chennai
Baroda
Bangalore
New Delhi
São Paulo, Lisboa
San Jose
Run Code Online (Sandbox Code Playgroud)

等等...

所以我想将这些字符串转换为唯一的短字符串.例如

Chennai –> xy67kr

San Jose –> iuj73d
Run Code Online (Sandbox Code Playgroud)

基本上类似于URL缩短.

并且转换它的算法应该是可逆的.即,当我将"xy67kr"传递给解码函数时,它应该给我"Chennai".

期待着寻求帮助.

algorithm url-shortener

11
推荐指数
1
解决办法
4412
查看次数

C#获取泛型类的所有运行时构造类的列表

我正在尝试列出由泛型类创建的所有运行时构造类.换句话说,如果我有一个班级:

public GenericCls<T> {
    public void Reset() { ... }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我在这样的各个地方都有代码:

GenericCls<int> gci = new GenericCls<int>();
GenericCls<String> gcs = new GenericCls<String>();
GenericCls<float> gcf = new GenericCls<float>();
...
Run Code Online (Sandbox Code Playgroud)

我可以得到这样的东西吗?:

Type[] allconstructed = GetAllConstructed(typeof(GenericCls<>));
Run Code Online (Sandbox Code Playgroud)

返回 {GenericCls<int>,GenericCls<String>,GenericCls<float>,...}

用例涉及一个通用的分配器,它支持任何类型的对象分配(就像new XXX()垃圾收集器一样好,但更好).我不会详细说明,因为它只会使问题复杂化.基本上,我不会在编译时知道所有构造的类,因为该库是一个旨在与单独的代码项目一起使用的DLL.所以我需要某种形式的反射,我似乎无法在互联网上找到.

Assembly.GetExecutingAssembly().GetExportedTypes()除了基本泛型类(即typeof(GenericCls<>))之外不包含任何内容

typeof(GenericCls<>).GetGenericArguments() 仅返回类型"T",它不仅是无效类型,而且完全没用.

如果只知道泛型类的类型,是否甚至可以找到泛型类的所有构造类?(typeof(GenericCls<>);)我不确定"构造"是否是正确的词 - 我想知道当前活动的所有具体泛型派生类,或者所有这些将存在的(不确定C#如何处理幕后的通用构造) ).

c# generics reflection class

10
推荐指数
1
解决办法
766
查看次数

堆腐败,但只有在笔记本电脑上编译

我正在尝试编译一个程序,在我的桌面上编译完全正常,但在我的笔记本电脑上,它编译,但每次运行时都会给我这个错误:

Windows已在RR.exe中触发了断点.

这可能是由于堆损坏,这表明RR.exe或其加载的任何DLL中存在错误.

这也可能是由于用户在RR.exe具有焦点时按下F12.

输出窗口可能包含更多诊断信息.

我已经注释掉了行,直到找到导致错误的行:

if(glfwOpenWindow(width_, height_, 0, 0, 0, 0, 32, 0, GLFW_WINDOW) != GL_TRUE) {
    throw std::runtime_error("Unable to open GLFW window");
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我替换width_height_常量,例如分别为800和600,它会停止堆损坏.此外,如果我只使用构造函数设置的默认值而不是传递值,它不会崩溃.

这是完整的代码.上面的行在Window构造函数中.

在window.h

#pragma once

#include <iostream>
#include <GL\glew.h>
#include <GL\glfw.h>

#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glew32.lib")
#pragma comment(lib, "GLFW.lib")

class Window {
public:
    Window(unsigned width = 800, unsigned height = 600);
    ~Window();

    void clear();
    inline void display() { glfwSwapBuffers(); }
    inline bool exit() { return …
Run Code Online (Sandbox Code Playgroud)

c++ glfw

10
推荐指数
1
解决办法
2044
查看次数

如何使用单个循环迭代2D数组?

我们如何通过仅使用一个循环来导航二维数组而不使用嵌套的循环.

 String ar[][]=new  String [3][4];
Run Code Online (Sandbox Code Playgroud)

java

10
推荐指数
1
解决办法
3468
查看次数

链接器脚本中的Make或Shell变量

链接器脚本是否可以访问makefile/shell变量并根据所述变量做出决定?

例如,假设我想在不使用不同的链接描述文件的情况下更改下面RAM区域的开头,是否可以使用make变量来执行此操作?

MEMORY
{
ifeq ($(SOME_VAR),0)
RAM (wx) : ORIGIN = 0x100000, LENGTH = 128K
else
RAM (wx) : ORIGIN = 0x200000, LENGTH = 128K
endif
}
Run Code Online (Sandbox Code Playgroud)

linker makefile

9
推荐指数
2
解决办法
1746
查看次数