小编Eya*_*yal的帖子

如何在MSIL级别调试.NET可执行文件?

我有一个.NET可执行文件,我需要调试.我想进入它,以便它在第一条指令上停止并具有单步,断点等的可视界面.

这似乎应该更容易,但我还没有找到解决方案!我DbgCLR.exe在网上看过,但是在我的生活中,我无法在我的系统或在线上找到该文件.我也读过DbgCLR.exe不再需要的地方,因为Visual Studio可以做同样的事情.Visual Studio .NET解决方案也很棒!(也许有一个我忽略的菜单项?)

要么适合,只要我可以检查堆栈,设置断点等.

.net debugging cil

7
推荐指数
1
解决办法
3519
查看次数

如何使用Try and Catch在VB.Net中重试操作?

我想从一个文件中读取,如果我失败了,让用户重试或以其他方式放弃.到目前为止代码看起来像这样:

Read_Again:
    Try
        my_stream.Read(buffer, 0, read_len)
    Catch ex As System.IO.IOException
        If MessageBox.Show("try again?") = DialogResult.Retry Then
            GoTo Read_Again
        Else
            Application.Exit() 'just abort, doesn't matter
        End If
    End Try
Run Code Online (Sandbox Code Playgroud)

我不喜欢Goto,这很难看.但是我没有看到如何制作一个跨越try和catch的循环.

有没有更好的方法来写这个?

.net vb.net exception try-catch

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

为什么我不能在Python中访问超类的私有变量?

我知道我应该使用访问方法.我在datetime模块中看到该类datetime继承自date.

class datetime(date):
    <some other code here....>
    self = date.__new__(cls, year, month, day)
    self._hour = hour
    self._minute = minute
    self._second = second
    self._microsecond = microsecond
    self._tzinfo = tzinfo
    return self
Run Code Online (Sandbox Code Playgroud)

我还看到datetime能够访问date的成员,如__repr__:

def __repr__(self):
    """Convert to formal string, for repr()."""
    L = [self._year, self._month, self._day, # These are never zero
         self._hour, self._minute, self._second, self._microsecond]
Run Code Online (Sandbox Code Playgroud)

我试图将datetime子类化为其添加一些信息,然后编写一个类似的__repr__函数:

def __repr__(self):
    """Convert to formal string, for repr()."""
    L = [self._year, self._month, self._day, # These are …
Run Code Online (Sandbox Code Playgroud)

python subclass private-members python-3.x

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

需要一个非常快速的一对一算法,可能是加密

我需要一个非常非常快速的一对一算法.该算法不需要是牢不可破的.合理的强度足够但它必须闪电般快速.我将在硬件中实现它.区域也是一个问题,所以它不应该使用太多的逻辑.

它应该是一个函数f_N(x),其输入是一个N位数,其输出是一个N位数.N是常数,可能在20-70之间.该功能必须是一对一的.(即可逆,意味着解密是可能的.解密速度无关紧要.)

我需要在3ns以下加密,每秒大约333M输入.例如,DES每秒大约需要50Mbits.我每秒需要333M 输入.

到目前为止,我已经使用了大约6轮的Feistel密码.这似乎需要大约3ns.

建议?

更多笔记

有一些问题所以我会解释.我需要将密钥放入哈希表.标准方法是对输入键进行哈希处理,并将结果用作表的索引.表中的每一行都必须存储原始密钥. 信息理论告诉我们,表中的行实际上并不需要一样宽的输入键,而是宽的输入键的位数在表的地址.例如:

  • 输入:x(N位)
  • 哈希:x%128(8位)
  • 验证者:floor(x/128)(N-8位)

在CPU上整数通常是相同的宽度是愚蠢的,但我在硬件中这样做.

x%128是一个易于破解的哈希.实际上,如果输入键仅在前几位中有所不同,那么您将在意外时打破哈希.我想要一个不会在事故中被打破的哈希,甚至可能难以故意破坏.我也试过LFSR.LFSR很快但两个相等长度的LFSR生成线性相关的哈希结果.(如果f(x)和g(x)给出两个不同多项式的相同散列,则f(x + 1)和g(x + 1)很容易相关.)

因此,我需要一个具有N位输入和V位,H位输出(V + H = N)的函数,其中很难找到两个长度为N的输入,这样两者都将输出相同的H.加密适合于因为它使输出留下与输入相同的长度,并且很难反转.加密以外的东西也可能有用,虽然看起来我想要的几乎就是加密的定义.

很抱歉没有解释所有这些.希望这能澄清事情.

hardware encryption cryptography

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

在Verilog中高效合成4对1功能

我需要在Veriog中实现4对1的功能.输入为4位,0-15之间的数字.输出是单个位,0或1.每个输入提供不同的输出,并且从输入到输出的映射是已知的,但输入和输出本身不是.我希望vcs能够成功优化代码,并使其尽可能短/整齐.到目前为止我的解

wire [3:0] a;
wire b;
wire [15:0] c;

assign c = 16'b0100110010111010; //for example but could be any constant
assign b = c[a];
Run Code Online (Sandbox Code Playgroud)

必须声明c是丑陋的,我不知道vcs是否会识别那里的K-map.这项工作以及案例陈述或联合正常形式的作业是否有效?

version-control logic verilog synthesis

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

c/Unix中的多个随机数生成器状态

我正在使用srandom()和random()在Unix系统上生成c中的随机数.我想有多个RNG.给定相同种子的每一个都应该输出相同的序列.我还想保存并恢复每个状态.这是一个伪代码示例:

R1 = new_rng(5); //5 is the seed
R2 = new rng(5); //5 is the seed here, too.
a = R1.random();
b = R1.random();
d = R2.random(); //a == d
s1 = R2.get_state(); //save the state of R2
e = R2.random(); //b == e
R2.set_state(s1); //restore the state of R2
f = R2.random(); //b == f
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?有时RNG会分叉到不同的线程中,我也需要在创建新线程时复制RNG的状态.

c unix random prng

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

我可以使用 CSS 设置 onChange 事件吗?

我想让页面上的所有输入元素在发生变化时触发一个函数。我可以通过 CSS 来实现吗?

我试过这个:

<STYLE type="text/css">
   input {onChange: function() {alert("foo");};}
</STYLE>
Run Code Online (Sandbox Code Playgroud)

它在谷歌浏览器中不起作用。

javascript css dom-events

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

在Haskell中,为什么我需要在实例声明中指定类型类?

以下内容无法编译:

data Point a b = Point { x :: a
                       , y :: b
                       } deriving (Show)

instance Eq (Point a b) where
  (Point x _) == (Point y _) = x == y
Run Code Online (Sandbox Code Playgroud)

错误是:

No instance for (Eq a)
  arising from a use of `=='
In the expression: x == y
In an equation for `==': (Point x _) == (Point y _) = x == y
In the instance declaration for `Eq (Point a b)'
Run Code Online (Sandbox Code Playgroud)

但是,如果我将类型类添加到实例中,那么它可以工作:

data …
Run Code Online (Sandbox Code Playgroud)

haskell

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

为什么std :: list :: splice不是自由函数?

Splice是一个成员函数,可在恒定时间内将链接列表的一部分放入另一个链接列表。

为什么它需要成为成员函数?我希望我可以在列表本身上有一个句柄,而只将迭代器拼接到列表中。为什么要拼接的列表除了开始和结束迭代器之外还需要作为参数?

为了进行测试,我列出了三个列表,并混合了容器和迭代器。请参见下面的接头,其中的容器(空)与迭代器(test0和test1)不匹配:

list<int> test0;
list<int> test1;
list<int> empty;
test0.push_back(1);
test0.push_back(2);
test0.push_back(3);
test1.push_back(4);
test1.push_back(5);
test1.push_back(6);
empty.splice(test0.end(), empty, test1.begin(), test1.end());
printf("empty size: %ld\n", empty.size());
printf("test0 size: %ld\n", test0.size());
printf("test1 size: %ld\n", test1.size());
for (const auto& i : test0) {
  printf("%d\n", i);
}
Run Code Online (Sandbox Code Playgroud)

出乎意料的是,一切都很好,甚至大小!

empty size: 0
test0 size: 6
test1 size: 0
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)

我可以稍微了解一下迭代的工作原理,因为它一直运行到next为null为止,而与容器的前/后指针无关。但是它如何使尺寸正确呢?也许大小是动态计算的?

编辑:根据对大小的这种解释,大小在线性时间内动态计算列表的。因此,容器实际上只是一个虚拟参数。也许仅在添加新元素时才需要它,因为它具有用于在列表中创建新节点的分配器?

c++ doubly-linked-list

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

链接 C 时出现“多重定义”错误,但仅在 MinGW 上

我的代码在 Linux 上编译时工作正常,但在 Windows 上的 MinGW 上失败。

\n

我正在将这四个文件编译在一起。 a.h是头文件,b.cc.cmain.c. 以下是内容。

\n
\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80> cat a.h\nenum {\n  BLACK,\n  WHITE\n} Colors;\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80> cat b.c\n#include "a.h"\n#include <stdio.h>\n\nvoid foo() {\n  printf("%d\\n", BLACK);\n}\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80> cat c.c\n#include "a.h"\n#include <stdio.h>\n\nvoid bar() {\n  printf("%d\\n", WHITE);\n}\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80> cat main.c\nvoid foo();\nvoid bar();\n\nint main() {\n  foo();\n  bar();\n  return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我用这个命令编译它们:

\n
gcc -c b.c; gcc -c c.c; gcc -c main.c; gcc -o colors b.o c.o main.o\n
Run Code Online (Sandbox Code Playgroud)\n

它在我的 Linux 桌面上运行良好,但在MinGW VM上失败。错误是:

\n
# gcc -c b.c; …
Run Code Online (Sandbox Code Playgroud)

c linker mingw

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