小编Abe*_*bel的帖子

在64位土地上堆积碎片

在过去,当我处理长时间运行的C++守护进程时,我不得不处理堆碎片问题.保持我的大量分配池的技巧是必要的,以防止耗尽连续的堆空间.

这仍然是64位地址空间的问题吗?Perf对我来说不是一个问题,所以我宁愿简化我的代码而不再处理像缓冲池这样的事情.有没有人有关于这个问题的经验或故事?我正在使用Linux,但我想很多相同的问题都适用于Windows.

c++ 64-bit heap-fragmentation

14
推荐指数
2
解决办法
2818
查看次数

使用xsd.exe生成的类可以为Nulllable值

我一直在使用xsd.exe生成一个用于反序列化XML的类.我在源xsd中有十进制值,不需要:

<xs:attribute name="Balance" type="xs:decimal" use="optional" />
Run Code Online (Sandbox Code Playgroud)

xsd生成的类生成以下代码:

private decimal balanceField;

[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal Balance {
    get {
        return this.balanceField;
    }
    set {
        this.balanceField = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到它不是可空的.

我如何将字段生成为可为空的字段,如下所示:

private decimal? balanceField;

[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal? Balance {
    get {
        return this.balanceField;
    }
    set {
        this.balanceField = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# code-generation xsd.exe .net-2.0

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

LinkedIn/Twitter/Facebook作为OAuth和OpenId使用

首先,我了解OpenId用于身份验证,而OAuth用于授权,与网站上的其他问题不同,我不会问哪个应该用于哪个,但是否有人可以为我的问题建议解决方案.

我想允许用户通过他们的LinkedIn/Twitter/Facebook帐户登录我的网站,一旦登录通过LinkedIn,他们也可以授权他们的Twitter和Facebook帐户作为可选的登录方法.这将允许用户通过三者中的任何一个进行身份验证,但最终会在我的站点上将其用户帐户作为最终结果.

我还想使用他们提供的授权来获取基本用户详细信息(配置文件图片/名称等)和发布状态更新.

我不想要求用户通过openId使用他们的帐户登录,然后必须通过oauth再次授权同一帐户,以允许我的网站发布到他们的服务提要,并且必须为3个服务中的每一个执行此操作.

对此问题的任何想法或问题?

openid twitter facebook oauth linkedin

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

什么是经常损坏的app_offline.htm hack的建议替代方案?

在某种情况下,放在app_offline.htm根目录中是正确的:您进行了一些更新,更新时会显示消息,就是这样.正如微软所说,这个想法是,在调用任何东西之前,IIS首先检查app_offline.htm是否存在,如果是,它会取消所有内容并显示它.

所以非常好,但在许多情况下它不起作用:

  • 当您在ASPX页面中有编译错误并且用户直接链接到它时
  • 当你有冲突的程序集
  • 当您在web.config中有解析错误时
  • 在删除/上传整个网站的过程中.
  • 仍然会显示指向静态HTML页面的直接链接
  • 在显示消息之前抛出文件未找到,拒绝访问

可能存在更多失败的情景.我的观点是:对于任何严肃的更新工作,app_offline.htm都不合适.我有时会在IIS中创建一个重定向到另一个站点,但是另一个站点可能并不总是可用,并且可能会使用户感到困惑.

理想情况下,我希望将当前位置保留在最终用户的URL位置栏中,显示消息,并让页面每分钟自动刷新以查看该站点是否返回,以便用户继续当网站回来时的左边.虽然在技术上使用静态页面很容易,但是在抛出错误的那一刻,它会因上述原因而失败.

asp.net app-offline.htm

14
推荐指数
2
解决办法
4321
查看次数

内存中.NET值类型的布局

我有以下.NET值类型:

[StructLayout(LayoutKind.Sequential)]
public struct Date
{
    public UInt16 V;
}

[StructLayout(LayoutKind.Sequential)]
public struct StringPair
{
    public String A;
    public String B;
    public String C;
    public Date D;
    public double V;
}
Run Code Online (Sandbox Code Playgroud)

我有代码将指向值类型的指针传递给非托管代码,以及通过调用System.Runtime.InteropServices.Marshal.OffsetOf发现的偏移量.非托管代码填充Date和double值.

为StringPair结构报告的偏移量正是我所期望的:0,8,16,24,32

我在测试函数中有以下代码:

FieldInfo[] fields = typeof(StringPair).GetFields(BindingFlags.Instance|BindingFlags.Public);

for ( int i = 0; i < fields.Length; i++ )
{
    int offset = System.Runtime.InteropServices.Marshal.OffsetOf(typeof(StringPair), fields[i].Name).ToInt32();

    Console.WriteLine(String.Format(" >> field {0} @ offset {1}", fields[i].Name, offset));
}
Run Code Online (Sandbox Code Playgroud)

这打印出这些偏移.

 >> field A @ offset 0
 >> field B @ offset 8
 >> field …
Run Code Online (Sandbox Code Playgroud)

.net c# jit marshalling value-type

13
推荐指数
2
解决办法
3064
查看次数

new()是什么意思?

AuthenticationBaseWCF RIA服务中有一个类.类定义如下:

// assume using System.ServiceModel.DomainServices.Server.ApplicationServices

public abstract class AuthenticationBase<T> 
    : DomainService, IAuthentication<T> 
    where T : IUser, new()
Run Code Online (Sandbox Code Playgroud)

new()这段代码意味着什么?

c# generics new-operator

13
推荐指数
3
解决办法
2061
查看次数

Firefox中的F5和Ctrl-F5与JavaScript事件有什么区别?

当你尝试这个公共页面:http://slim.nl/shop/default.aspx(更新:同时这个网站已经改变,以至于这个问题的行为不再在那里进行测试),你会注意到一个菜单栏.如果你点击F5,那个栏中的菜单就会消失.通过浏览器中的"后退"按钮访问该页面时也是如此.它只发生在Firefox上(见3-7版本).使用Ctrl- F5,菜单栏重新出现.

据我所知,加载页面时触发的所有JavaScript事件(包括任何AJAX周期)也应该F5在通过后退按钮刷新页面时触发.这里发生了什么事?

我想从程序员的角度来看就知道有什么区别之间F5Ctrl- F5,最好的不仅仅是这种情况更普遍.当然,除非它是Firefox中的错误.

在此输入图像描述

javascript ajax firefox page-refresh

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

如何在C#中获得超过100个十进制数字?

是否有可能在C#中获得超过100个十进制数字?

如果是,那么代码的必要部分是什么?

在Java中有一些调用,BigDecimal但它仍然不能达到超过55位数.

.net c# bigdecimal

13
推荐指数
1
解决办法
4048
查看次数

为什么-1L*-9223372036854775808L == -9223372036854775808L

我知道这与处理器处理溢出的方式有关,但我没有看到它.使用不同负数的乘法给出零或-2^63:

在C#Interactive中:

> return unchecked (-1L * -9223372036854775808L);
-9223372036854775808
> return unchecked (-2L * -9223372036854775808L);
0
> return unchecked (-3L * -9223372036854775808L);
-9223372036854775808
> return unchecked (-4L * -9223372036854775808L);
0
> return unchecked (-5L * -9223372036854775808L);
-9223372036854775808
Run Code Online (Sandbox Code Playgroud)

在F#Interactive中:

> -1L * -9223372036854775808L;;
val it : int64 = -9223372036854775808L
> -2L * -9223372036854775808L;;
val it : int64 = 0L
> -3L * -9223372036854775808L;;
val it : int64 = -9223372036854775808L
> -4L * -9223372036854775808L;;
val it : int64 = 0L …
Run Code Online (Sandbox Code Playgroud)

.net c# math binary f#

13
推荐指数
2
解决办法
574
查看次数

检查对象是否为空是否安全并且在同一if语句中比较对象的属性值?

见线程标题.我可以安全地做这样的事情而不用担心a NullReferenceException,或者不保证那些布尔表达式将从左到右进行评估?

// can this throw an NRE?
if (obj == null || obj.property == value)
{
   // do something
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net

12
推荐指数
1
解决办法
1978
查看次数