小编Mer*_*ham的帖子

全局变量是如何存储的?

AFAIK,有两种类型的全局变量,初始化初始化.它们是如何存储的?它们都存储在可执行文件中吗?我可以想到初始化的全局变量的初始值存储在可执行文件中.但是对于未初始化的人需要存储什么?

我目前的理解是这样的:

可执行文件被组织为多个部分,例如.text,.data和.bss.代码存储在.text部分中,初始化的全局或静态数据存储在.data部分中,未初始化的全局或静态数据存储在.bss部分中.

感谢您抽出宝贵时间查看我的问题.

更新1 - 9:56 AM 11/3/2010

我在这里找到一个很好的参考:

汇编语言源中的段 - 使用.text,.data和.bss指令构建文本和数据段

更新2 - 2010年11月10日上午10:09

@迈克尔

  1. 我在汇编代码中定义了一个100字节的未初始化数据区域,这个100字节没有存储在我的可执行文件中,因为它未初始化.

  2. 谁将在RAM中分配100字节的未初始化内存空间?该程序加载器

假设我得到以下代码:

int global[100];

void main(void)
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

全局[100]未初始化.如何在我的可执行文件中重新编码全局[100]?谁会在什么时候分配它?如果它被初始化怎么办?

c c++ assembly

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

查询之间不保留对IEnumerable的更改

IEnumerable是一个懒惰评估的查询.但显然我的理解有点瑕疵.我希望以下工作:

        // e.Result is JSON from a server
        JObject data = JObject.Parse(e.Result);
        JsonSerializer serializer = new JsonSerializer();

        // LINQ query to transform the JSON into Story objects
        var stories = data["nodes"].Select(
                   obj => obj["node"]).Select(
                        storyData => storyOfJson(serializer, storyData));

        // set a value on each story returned by the query
        foreach (Story story in stories)
        {
            story.Vid = vid;
        }

        // run through the query again, making sure the value was actually set
        foreach (Story story in stories)
        {
            // …
Run Code Online (Sandbox Code Playgroud)

.net c# linq ienumerable

6
推荐指数
1
解决办法
454
查看次数

如何平衡BK树,是否有必要?

我正在研究使用编辑距离算法在名称数据库中实现模糊搜索.

我发现了一个数据结构,据说可以通过分而治之的方法来帮助加快速度--Burkhard-Keller Trees.问题是我找不到关于这种特定类型树的非常多的信息.

如果我用任意节点填充我的BK树,我有多大可能有平衡问题?

如果我可能或可能与BK-Trees有平衡问题,有没有办法在构建之后平衡这样一棵树?

算法在适当平衡BK树时会是什么样子?

到目前为止我的想法:

似乎子节点在距离上是不同的,所以我不能简单地旋转树中的给定节点而不重新校准其下的整个树.但是,如果我能找到一个最佳的新根节点,这可能正是我应该做的.我不知道如何找到最佳的新根节点.

我还将尝试一些方法来查看是否可以通过从空树开始并插入预分配数据来获得相当平衡的树.

  • 从按字母顺序排序的列表开始,然后从中间排队.(我不确定这是一个好主意,因为按字母顺序排序与编辑距离的排序不同).
  • 完全洗牌的数据.(这很大程度上依赖于运气来挑选一个"不那么糟糕"的根源.它可能会严重失败并且可能在概率上保证不是最佳的).
  • 从列表中的任意单词开始,按照与该项目的编辑距离对其余项目进行排序.然后从中间排队.(我觉得这将是昂贵的,并且仍然做得很差,因为它不会计算所有单词之间的度量空间连接 - 只是每个单词和单个参考单词).
  • 使用任何方法构建初始树,将其展平(基本上类似于预订遍历),并从中间排队以获得新树.(这也将是昂贵的,我认为它可能仍然很差,因为它不会提前计算所有单词之间的度量空间连接,并且将简单地获得不同且仍然不均匀的分布).
  • 按名称频率排序,插入最受欢迎的第一个,并抛弃平衡树的概念.(这可能是最有意义的,因为我的数据不是均匀分布的,我不会有纯粹的随机单词进来).

仅供参考,我目前还不担心名称 - 同义词问题(Bill vs William).我将单独处理,我认为完全不同的策略将适用.

algorithm edit-distance data-structures levenshtein-distance bk-tree

6
推荐指数
1
解决办法
1604
查看次数

理解'&'运算符

根据我对'&'运算符的了解,它返回内存中操作数的基址.

让我们想象下面的场景(就像在我的机器上一样):

  • sizeof(int)= 4个字节
  • sizeof(float)= 4个字节
  • sizeof(char)= 1个字节

现在,如果我写这样的东西:

void main() {
 int i = 5411;
 int *ip = &i;
 char *c = &i;

 printf("%d",*ip);
 printf("%c",*c);
}
Run Code Online (Sandbox Code Playgroud)

第一个printf()应该给我5411.谈到第二个printf(),i的基地址包含10101001(高阶8位= 1字节用于char类型指针).因此*c应该给我169,转换为%c时是无效字符.

但是编译器给了我'#'或其他一些有效的输出.为什么会这样?有什么投入?

编辑(取自作者对其中一个答案的评论):

那只是一个虚拟案例,因为我离开了实际的机器.
实际情况是i = 5411

c c++

5
推荐指数
2
解决办法
517
查看次数

如何在同名的本地和静态变量之间进行辩护

举例说明:

public class Something
{
    private static int number;

    static Something()
    {
        int number = 10;

        // Syntax to distingish between local variable and static variable ?
    }
}
Run Code Online (Sandbox Code Playgroud)

在静态构造函数中,是否有一种语法可用于区分名为"number"的局部变量和同名的静态变量?

c# static scope

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

Visual Studio版本无关的项目/解决方案:有可能吗?

我记得在去年看到一个开源项目,我可以在VS 2008和VS 2010中打开而没有升级向导弹出.我认为...

是否可以创建一个项目/解决方案,在任何版本的Visual Studio中打开而不提示我运行升级向导?如果是这样,我该怎么做?

C++和C#项目的信息将是最有帮助的.

c# c++ versioning projects-and-solutions visual-studio

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

在编写BDD功能时,我应该将之前的用户交互放入Given步骤还是When步骤?

我正在尝试编写多步骤业务流程的需求(通过向导).我有许多场景,无论您是否被允许在另一个屏幕上选择选项,用户与一个屏幕的交互都会发生变化.

例如(我掩盖了实际的业务,但步骤的过程和形式几乎完全相同):

Feature: Personal Diagnostic Search Filter
  In order to select a Technician who offers Personal Diagnostics,
    when I've asked for a Personal Diagnostic
  As a Business Customer
  I want to limit my search to Technicians who offer Personal Diagnostics

  Background:
    Given a Business named "Big Al's Auto Supply"
      And a Customer named "Bob Test" at the "Big Al's Auto Supply" Business
      And an Account named "bobtest@testbusiness.com" owned by "Bob Test"
      And the "bobtest@testbusiness.com" Account has the "Repair Order Creator" …
Run Code Online (Sandbox Code Playgroud)

bdd gherkin

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

使用c#将项目从xml填充到Datagridview的任何方法

我正在研究datagridview.其中我必须显示从xml到网格视图列的列的值.我有这样的xml: - 我还有一个网格视图,其中有两列"ID"和"NAME",我想填充从xml到网格视图的值.任何人都可以帮忙吗?

<employee>
    <empdetails id="1" name="sam"/>
    <empdetails id="2" name="robin"/>
    <empdetails id="3" name="victor"/>
</employee>
Run Code Online (Sandbox Code Playgroud)

c# xml gridview winforms

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

如何使用Ninject Conventions库绑定到非接口的基本类型?

我正在尝试扫描一组组件,这些组件在与我的应用程序相同的目录中的程序集中实现特定的基类.我需要将此作为一种插件式架构,因为我的应用程序使用这些类型来填充其他组件.

Ninject.Extensions.Conventions支持在本地目录中扫描程序集,所以我决定试一试.

问题是库提供的绑定生成器(DefaultBindingGeneratorRegexBindingGenerator)只会将组件绑定到它们实现的接口.它们不会绑定到非接口基类型.

如何使用此库按约定绑定到基类,而不是接口?

我正在使用当前在NuGet上的版本 - 2.2.0.5

我当前基于约定的绑定代码如下所示:

Kernel.Scan(x =>
{
    x.FromAssembliesMatching("*.dll");
    x.WhereTypeInheritsFrom<BaseType>();

    // I've tried both DefaultBindingGenerator and RegexBindingGenerator
    x.BindWith<DefaultBindingGenerator>();

    x.InTransientScope();
});
Run Code Online (Sandbox Code Playgroud)

当我尝试解析组件时,不会返回任何内容:

var myTypes = Kernel.GetAll<BaseType>();
int count = myTypes.Count(); // Always returns zero
Run Code Online (Sandbox Code Playgroud)

.net dependency-injection ninject

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

Firebase电子邮件和密码身份验证是否具有任何安全配置选项?

在嗅探Firebase流量时,我已经看到代码被传递给auth服务器,因此它总是返回200状态代码.这表明在身份验证协议中某些级别存在某种级别的可选安全性.

当用户输入不存在的电子邮件地址时,如果输入错误的密码,是否有办法导致Firebase身份验证失败并显示相同的错误消息?

INVALID_USER状态代码给了我关于一个潜在的关注用户枚举攻击,在我的应用程序已经成为通过脚本注入受损的情况.

有关如何更安全地锁定Firebase身份验证协议的信息,和/或某些关于智能速率限制(某种程度上是分布式攻击免疫?)的声明可能会对我保证Firebase的内置电子邮件和密码有很长的路要走auth确实是安全的(假设Firebase规则设置正确,证书不会在客户端上受到损害等).

security authentication firebase firebase-security

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