小编And*_*per的帖子

编译器 - 前端后端

我理解前端和后端编译器的结构.但是,我不确定为什么编译器通常分为前端和后端.我相信你能给我一些原因有很多吗?因为,大多数书籍/网站告诉你它们是什么,但没有告诉你为什么!

谢谢.

architecture compiler-construction

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

PHP filesize报告旧的大小

以下代码是我编写的PHP Web服务的一部分.它需要一些上传的Base64数据,对其进行解码,然后将其附加到文件中.一切正常.

问题是,当我在追加操作后读取文件大小时,我得到文件在追加操作之前的大小.

$fileOut = fopen($filepath.$filename, "ab")
fwrite($fileOut, base64_decode($data));
fflush($fileOut);
fclose($fileOut);

$newSize = filesize($filepath.$filename);   // gives old file size
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

系统是:

  • PHP 5.2.14
  • Apache 2.2.16
  • Linux内核2.6.18

php filesize

21
推荐指数
2
解决办法
4679
查看次数

是否有更快的方法来清空HTML选择框?

我有一个HTML选择框,有大约1800多个选项.在我的javascript中,我有以下行清空选择框,以便我可以重新填充它.

box.options.length = 0; 
Run Code Online (Sandbox Code Playgroud)

在Firefox中运行相当快,但IE需要几秒钟.在IE中有更快的方法吗?

html javascript select internet-explorer

9
推荐指数
3
解决办法
3592
查看次数

无数据类型的开销是多少?

我不想在微优化上开始一场火焰战争,但我对某些东西感到好奇.

在创建没有内部数据的类型的实例的内存和性能方面有什么开销?

例如,实现的简单类IComparer<T>可能只包含一个Compare方法,而不包含任何属性或字段.

class FooComprarer : IComparer<Foo>
{
    public int Compare (Foo x, Foo y) 
    {
        // blah, blah
    }
}
Run Code Online (Sandbox Code Playgroud)

我见过的典型示例代码只是调用new FooComparer(),只要需要其中一个.

我无法想象这里的实例化成本是非常多的,但我很想知道它实际上是什么.那么它将如何比较一个静态工厂类来维护比较器的类型字典,以便可以在任何需要的地方使用一个比较器实例.

.net c# class overhead

9
推荐指数
1
解决办法
249
查看次数

MVC/Unity - 如何将依赖项注入自定义FilterAttributes?

我有一个HandleErrorAttribute延伸的习惯FilterAttribute.

如何在注入控制器的依赖项本身的同时将Unity注入依赖项注入此属性?

asp.net-mvc unity-container filterattribute

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

通用二进制读取器

我正在编写二进制序列化器/ deserialser来将许多对象类型转换为字节流.对象表示通过蓝牙或USB连接的设备的API命令及其相关响应.我正在使用BinaryWriter&BinaryReader来写入/读取流.

序列化器很简单.要序列化的特性标记有一个属性,该属性指定将它们写入字节流的顺序.我使用反射和重载分辨率句柄迭代属性,选择正确的Write(...)方法BinaryWriter.

解串器并不那么简单.我再次可以遍历特定响应类中的特性,我期望确定需要从流中读取的类型.棘手的一点就是选择正确的方法调用BinaryReader来读取我需要的值.我想到了两种方法.

  1. 一个大的switch语句,它ReadXXXX()根据要读取的类型调用正确的方法.
  2. 使用我需要的类型的名称来在字符串中构建我需要的方法的名称,然后使用relection调用该方法.

我有没有想到更简单的方法?根据您想要的返回类型,您无法进行重载解析,这简直太遗憾了.

.net c# binary deserialization

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

如何检查NTAccount对象代表组还是用户?

使用由返回的访问规则时

GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
Run Code Online (Sandbox Code Playgroud)

如何判断每个规则中引用的NTAccount对象是用户帐户还是组?

更新:

我能够解决以下问题。请注意,此代码的目的是True如果s NTAccount是一个组,False否则返回,或者在检查过程中发生错误时返回。

有一个更好的方法吗?

Public Function IsGroup(ByVal account As NTAccount) as Boolean  
    Dim samAccountName as string = account.Value  
    Dim accountNameParts() As String = samAccountName.Split("\")  
    If accountNameParts.Count() = 2 Then  
        Dim principalContext As PrincipalContext  
        Try  
            principalContext = New PrincipalContext(ContextType.Domain, accountNameParts(0))  
        Catch  
            Try  
                principalContext = New PrincipalContext(ContextType.Machine, accountNameParts(0))  
            Catch  
                principalContext = Nothing  
            End Try  
        End Try  
        If Not principalContext Is Nothing Then  
            Dim principal As Principal  
            principal = principal.FindByIdentity(principalContext, _samAccountName)  
            If Not …
Run Code Online (Sandbox Code Playgroud)

.net security pinvoke winapi

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

自定义成员资格提供程

我有ASP.NET MVC3项目,我想使用自定义成员资格提供程序.另外,我想使用Unity来解决我的依赖注入问题.

这是Global.asax的代码:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        var container = new UnityContainer();
        container.RegisterType<IAuthentification, Authentification>();
        container.RegisterType<IRepository, Repository>();

        DependencyResolver.SetResolver(new UnityDependencyResolver(container));

    }
Run Code Online (Sandbox Code Playgroud)

这是我的会员提供者的代码:

public class CustomMembershipProvider : MembershipProvider
{
   [Dependency]
   private IProveaRepository Repository { get; set; }

   public override bool ValidateUser(string username, string password)
    {
       .....
    }
Run Code Online (Sandbox Code Playgroud)

问题是当我将断点放到ValidateUser方法时,我看到Repository属性没有初始化.但这种结构:

   [Dependency]
   private IProveaRepository Repository { get; set; }
Run Code Online (Sandbox Code Playgroud)

例如,在控制器中工作正常.

有人知道为什么会这样,该怎么办?

membership dependency-injection unity-container asp.net-mvc-3

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

C#有没有办法列出时间范围?配置

有没有办法列出时间范围?例如:包含以下内容的列表:12:00到1:00 pm 1:00到2:00 pm等...其中分隔部分是配置.我认为你必须使用datetime并将其除以一定数量(在这种情况下为一小时)

有人可以指出我正确的方向或给我一个例子吗?

提前致谢!

.net c# visual-studio-2010

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

X509Certificate2构造函数中的“指定的网络密码不正确”异常

我有一个控制台应用程序,它从字节数组中加载X509证书,如下所示:

var cert = new X509Certificate2(certificateContent,      // byte[]
                                password,                // string
                                X509KeyStorageFlags.PersistKeySet);
Run Code Online (Sandbox Code Playgroud)

certificateContentbyte[]表示pfx文件的内容。该代码对我测试过的许多证书都适用。但是,我正在测试一个证书,该证书导致此行抛出一条CryptographicException错误消息“指定的网络密码不正确。”,即使提供的密码正确无误。

奇怪的是,我可以在LinqPad中使用相同的代码从具有相同密码的相同pfx文件创建证书,并且可以正常工作。

我已经在调试器的控制台应用程序中检查了呼叫站点,并验证了是否传递了正确的值。

是什么导致该构造函数在控制台应用程序中抛出此异常,但在使用相同数据的LinqPad中却未抛出此异常,并且对于其他证书在两个地方均能正常工作?

更多细节

证书存储在Base64的数据库中。Console应用程序从数据库读取证书,将其从Base64转换为byte [],然后尝试X509Certificate2如上所述创建对象。

我一直在测试三个证书:

  1. 我的雇主CA提供的我的个人客户身份验证证书。
  2. 同事使用自己的自签名CA创建的测试证书。
  3. 我自己使用自我签署的CA创建的测试证书。

证书1和2在控制台应用程序和LinqPad中均按预期工作。

证书3在LinqPad中可以很好地加载,但是如果我尝试在控制台应用程序中使用它,则会生成上面的错误。

证书2和3之间有两个重要区别。

  1. Cert2将于2016年到期,Cert3将于2039年到期
  2. 与cert2关联的私钥是2048位。Cert3是1024位。

这些差异之一是否会导致“指定的网络密码不正确”错误?为何所有3个证书在LinqPad中都能正常工作,而在Console应用程序中只有1个抛出错误?

c# exception certificate

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

如何阻止ASP.Net发送默认字符集?

我正在构建一些用于测试各种漏洞场景的网页,但ASP.Net或IIS在保护我自己方面做得非常好.

我正在尝试做的事情之一是使用各种Content-Type标头返回响应,包含和不包含charset声明.问题我,如果我遗漏了charset,那么ASP.Net似乎默认添加utf-8.

在我的ASPX.cs代码隐藏中,如果我有Response.AddHeader("Content-Type", "text/html")或者Page.ContentType = "test/html",我希望看到页面返回以下标题:

Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

Content-Type: text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

如果我使用Response.AddHeader("Content-Type", "text/html; charset=iso-8859-1")然后我得到预期的标题:

Content-Type: text/html; charset=iso-8859-1
Run Code Online (Sandbox Code Playgroud)

charset=utf-8当我不想要它时,有没有办法阻止ASP.Net(IIS?)附加到标题?

我正在使用ASP.Net 4.0和IIS 7.5.

asp.net webforms content-type iis-7.5

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

如何在C#中浏览对象层次结构

我最近去了一个面试,在那里他们问我以下问题:

编写一个组件,根据传入的数据路径遍历对象层次结构,并返回实现以下方法的属性值:

公共对象getValueFromPath(对象parentObj,字符串dataPath);

对象层次结构将是这样的事情:

Object1
  objectRef2
    property1
    property2
Run Code Online (Sandbox Code Playgroud)

parentObj将是Object1

dataPath将是objectRef2.property2

有人可以告诉我如何做到这一点.

.net c#

0
推荐指数
1
解决办法
146
查看次数