小编alp*_*pav的帖子

如何在Go中使用XPath从XML获取值

看看去xml包我找不到这种可能性. Go只允许定义结构树,将它们映射到XML树并使用反序列化xml.NewDecoder(myXmlString).Decode(myStruct).

即使我定义了需要的Go结构树,我仍然无法使用XPath查询该树.

C#具有方便的函数SelectSingleNode,它允许通过指定XPath从XML树中选择值,而无需在C#类中复制整个树结构.

Go有类似的可能吗?如果没有,那么实现它的最简单方法是什么(可能重用xml包)?

xml xpath go

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

如何在SQL Server中组织无限循环?

我想WHILE在SQL Server 2005中使用无限循环,并BREAK在某些条件下使用关键字退出.

while true不起作用,所以我必须使用while 1=1.有没有更好的方法来组织无限循环?

我知道我可以使用goto,但在while 1=1 begin ... end结构上看起来更好.

sql sql-server loops boolean sql-server-2005

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

如何获取IQueryable.Count的ToTraceString

((ObjectQuery)IQueryable).ToTraceString()用来获取和调整将由LINQ执行的SQL代码.

我的问题是,与大多数IQueryable方法不同,IQueryable.Count定义如下:

    public static int Count(this IQueryable source) {
        return (int)source.Provider.Execute(
            Expression.Call(
                typeof(Queryable), "Count",
                new Type[] { source.ElementType }, source.Expression));
    }
Run Code Online (Sandbox Code Playgroud)

执行查询而不编译并返回IQueryable.我想通过这样的方式来做这个伎俩:

public static IQueryable CountCompile(this IQueryable source) {
    return source.Provider.CreateQuery(
        Expression.Call(
            typeof(Queryable), "Count",
            new Type[] { source.ElementType }, source.Expression));
}
Run Code Online (Sandbox Code Playgroud)

但是然后CreateQuery给了我以下异常:

LINQ to Entities query expressions can only be constructed from instances that implement the IQueryable interface.

c# linq lambda linq-to-entities expression-trees

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

如何正确命名记录创建(插入)日期时间字段?

如果我创建一个包含datetime default getdate()字段的表,该字段旨在保留记录插入的日期和时间,哪个名称最适合用于该字段?

我喜欢用Created,我见过人们使用DateCreatedCreateDate.

我能想到的其他可能的候选人是:CreatedDate,CreateTime,TimeCreated,CreateDateTime,DateTimeCreated,RecordCreated,Inserted,InsertedDate,...

从我的观点来看,任何带有Date内部名称的东西看起来很糟糕,因为如果我有2个字段CreateDate,它可能会与日期部分混淆:CreateTime,所以我想知道该区域是否有任何特定的建议/标准基于实际原因,而不是只是风格,情绪或一致性.

当然,如果有100个现有表,这是表101,那么为了保持一致性,我将使用与这100个表中使用的相同的命名约定,但是这个问题是关于第一个应用程序中第一个服务器中第一个数据库中的第一个表.

sql sql-server database-design naming naming-conventions

10
推荐指数
2
解决办法
3218
查看次数

如何在不使用太多RAM的情况下正确地从MVC3流式传输大数据?

我想和我HttpResponse.OutputStream一起使用,ContentResult以便我可以Flush不时地避免使用.Net过多的RAM.

但是MVC的所有示例都FileStreamResult, EmptyResult, FileResult, ActionResult, ContentResult显示了将所有数据存入内存并传递给其中一个的代码.另外一篇文章表明,EmptyResult与使用一起回归HttpResponse.OutputStream是个坏主意.我怎么能在MVC中做到这一点?

从MVC服务器组织大数据(html或二进制)的可刷新输出的正确方法是什么?

为什么回国EmptyResult或者ContentResult还是FileStreamResult一个坏主意?

model-view-controller asp.net-mvc ram stream asp.net-mvc-3

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

如何在Go中计算sha256文件校验和

我需要Windows的实用程序来计算sha256文件校验和,这样当我下载fedora时,我可以从这里验证校验和:https://fedoraproject.org/static/checksums/Fedora-18-i386-CHECKSUM

http://support.microsoft.com/kb/889768上的Microsoft实用程序仅执行md5和sha1.

我不想使用其他可下载的工具,这些工具没有签名,也没有从https或我不了解的来源获得,因为通过未加密的连接下载未签名的代码或从不受信任的源下载验证没有任何意义信任它的另一个代码的签名.

幸运的是谷歌提供了使用https进行所有下载的可能性,因此我可以通过安全连接下载Go并从那里开始.

这是一个简单的代码,可以为一个小文件执行此操作,但它对大文件不是很好,因为它不是流式传输.

package main

import (
    "io/ioutil"
    "crypto/sha256"
    "os"
    "log"
    "encoding/hex"
)

func main() {
    hasher := sha256.New()
    s, err := ioutil.ReadFile(os.Args[1])    
    hasher.Write(s)
    if err != nil {
        log.Fatal(err)
    }

    os.Stdout.WriteString(hex.EncodeToString(hasher.Sum(nil)))
}
Run Code Online (Sandbox Code Playgroud)

如何使它使用流,以便它适用于任何文件大小.

io cryptography file sha256 go

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

Web浏览器是否允许以编程方式清除(过期)缓存?

目前浏览器具有不完整的缓存实现.它只允许设置到期或保持即时到期.缺少以编程方式使缓存过期的重要第三个选项.如果没有第三个选项,开发人员就无法高效可靠地部署新版本的代码.

如果他们使用第二个选项,如果他们有许多小文件的框架,效率很低.将许多小文件合并为一个文件效率不高,因为任何小的更改都将导致部署整个框架而不是单个文件.

如果他们使用第一个选项,则在缓存过期之前不会获得用户,这会在服务器端代码和客户端代码之间以及可能在客户端代码的不同部分之间产生兼容性问题.设置到期需要预测未来部署,这是不方便的,并且将禁止快速修复错误.

当人们询问这个问题时,一些人建议使用版本号或其他临时ID来通过加载唯一的URL来欺骗浏览器缓存.它的问题在于它为网络和本地文件系统带来了不必要的开销,以加载和存储不必要的旧版本和大量独特的URL.它几乎违背了通过URL缓存的目的.正确的解决方案是允许网站的程序员清理仅来自该网站的文件的缓存.这样可以请求更新文件列表,并清理新文件的缓存以允许浏览器加载新版本.

正确的缓存机制是简单而强大的模式,可以将所有Web客户端开发提升到新的水平,我只想知道为什么浏览器生产者还没有实现它.

javascript browser deployment caching

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

无视速度和兼容性,为什么不只使用类,从不在HTML/CSS中使用ID?

我只使用类,从不使用ID.许多人喜欢使用ID,原因各不相同.

我在stackoverflow上看到了很多关于ID和类的问题,但没有人解决纯代码组织的观点,无论兼容性和运行时性能如何.

从代码组织的角度来看,我认为使用ID就像在Visual Basic代码中使用全局变量一样糟糕.

一个原因是ID必须是唯一的,这会在代码的不同独立部分之间引入不必要的和不良的依赖关系(控制HTML DOM树的不同部分).

另一个原因是,创建新的类名实际上比ID名称更容易,因为使用ID您必须担心全局范围和类名,您只需要担心局部范围内的唯一性,与局部变量相同的好处.

大多数人会争辩说,ID的解决方式比同类更好,我同意这一点.但随着浏览器变得越来越先进,javascript和计算机的CSS寻址的本机实现变得越来越快,性能变得越来越不重要.因此,让我们忽视它,只关注当前问题背景下的代码组织.

这个讨论从这里开始,但是我可能错误的建议会产生负面影响并且变得太大而无法保留评论,因此我在这里尝试将其转换为积极且易于管理的东西.

支持ID的一个可见点是将它们用作规则优先级的工具,因为#name的优先级高于.name的优先级.我的回答是:用ID来提高优先级是坏的黑客攻击,它的清洁,有更多的自由,如果你使用的身体和树的其他级别之间插入额外的根元素,例如优先级body div div span.class1{}高于body div span.class1{}高于body span.class1{}高于span.class1{}.另一个用于此目的的工具是!important.有些人可能会争辩说,当页面结构发生变化时,使用更多的根元素意味着更多的困难,但我不认为是这种情况,因为你永远不必在body之间放置任何东西并指定优先级div.这些div总是可以保持在身体之下,而不是其他所有内容.

另一个有趣的关联带来了指针,ID也不错,因为指针也不错.我的回答:如果你在代码中对绝对内存地址进行硬编码,指针会很糟糕.使用相对指针总是更好(例如:在8086 CPU中使用段(CS,DS,SS,ES);由编译器生成的相对变量和方法地址).如果我们将DOM树视为内存并使用ID与使用类进行比较,则#name表示绝对内存地址,但div.tab1 .name表示相对地址(相对于div.tab1).

我在ID中看到的另一个支持点是,具有ID的元素在javascript中更容易成为全局属性.我的回答:再次,这就像说Visual Basic中的全局变量更方便.问题是你不能保持足够大的全局(或任何其他)命名空间,而不引入像level1_level2_name这样的命名层次结构,这只是将一个命名空间机制替换为另一个命名空间机制.DOM树很方便组织命名空间,为什么要忽视呢?

使用下划线在ID内部进行命名空间模拟是不好的,因为您无法建立命名上下文,并且必须复制代码中的所有路径.这实际上意味着您将无法使用CSS 预处理器来修复CSS无法使用上下文.

html javascript css

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

外键列上的聚簇索引是否会增加连接性能与非群集?

在许多地方,建议在使用BETWEEN语句选择行范围时更好地利用聚簇索引.当我选择通过外键字段连接以使用此聚簇索引时,我想,该聚类应该也有帮助,因为即使它们都具有相同的聚簇键值并且未使用BETWEEN,也会选择行范围.

考虑到我只关心那个选择加入而没有别的,我猜错了吗?

sql performance join foreign-keys clustered-index

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

实体框架是否将赋值与原始值进行比较以确定IsModified标志?

如果我加载实体对象,然后将其中一个属性分配给之前的相同值,框架是否检测到更改,或者它会将IsModified标志设置为true?

这是字段名称的生成代码如下所示:

OnNameChanging(value);
ReportPropertyChanging("Name");
_Name = StructuralObject.SetValidValue(value);
ReportPropertyChanged("Name");
OnNameChanged();
Run Code Online (Sandbox Code Playgroud)

我不知道哪些事件为该字段和整个实体设置了IsModified标志.

entity-framework updates entity-framework-4

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