小编kam*_*ilk的帖子

不在例外中嵌入std :: string的规则是否仍然使用移动构造函数?

我前段时间听说我不应该创建具有std::string类型字段的异常类.这就是Boost网站所说的.基本原理是,std::string如果内存分配失败,复制构造函数可以抛出异常,如果在捕获当前处理的异常之前抛出异常,程序将终止.

但是,它仍然存在于移动构造函数的世界中吗?抛出异常时,不会使用移动构造函数而不是复制构造函数吗?我是否理解正确使用C++ 11不会发生内存分配,不存在异常的可能性,std::string现在在异常类中绝对正常?

c++ exception move-constructor c++11

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

为什么从DATETIME到DATETIME2的转换似乎会改变值?

我有一个比较两个日期的存储过程.从我的应用程序的逻辑,我期望它们是平等的.但是,比较失败了.这样做的原因是,一个值被存储为一个事实DATETIME,不得不CONVERT-ed到DATETIME2正在相比其他前DATETIME2.显然,这改变了它的价值.我做了这个小测试:

DECLARE @DateTime DATETIME='2018-01-18 16:12:25.113'
DECLARE @DateTime2 DATETIME2='2018-01-18 16:12:25.1130000'
SELECT @DateTime, @DateTime2, DATEDIFF(NANOSECOND, @DateTime, @DateTime2)
Run Code Online (Sandbox Code Playgroud)

这给了我以下结果: -333333ns的区别

为什么这些值之间存在333333ns的差异?我认为a DATETIME2,作为一种更精确的类型,应该能够准确地表示可以存储在一个中的所有值DATETIMEDATETIME2的文档只说:

转换来自datetime时,将复制日期和时间.分数精度扩展到7位数.

没有关于转换在值中添加或减去333333ns的警告!那么为什么会这样呢?

我正在使用SQL Server 2016.

编辑:奇怪的是,在不同的服务器上,我得到零差异.两者都是SQL Server 2016,但我遇到问题的那个兼容级别设置为130,我没有将它设置为120.在它们之间切换会改变这种行为.

edit2: DavidG在评论中建议我使用的值可以表示为DATETIME2但不是a DATETIME.所以我修改了我的测试以确保我分配的值@DateTime2是一个有效值DATETIME:

DECLARE @DateTime DATETIME='2018-01-18 16:12:25.113'
DECLARE @DateTime2 DATETIME2=CONVERT(DATETIME2, @DateTime)
SELECT @DateTime, @DateTime2, DATEDIFF(NANOSECOND, @DateTime, @DateTime2)
Run Code Online (Sandbox Code Playgroud)

这有点帮助,因为差异较小但仍不为零: -33ns的区别

sql t-sql sql-server datetime

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

以编程方式在TFS中的两个版本的文件之间获得差异

我正在尝试编写一个代码,在给定TFS存储库中的项目路径和两个修订版本的情况下,将计算内容文件在这两个时刻之间的差异.现在代码可能如下所示:

using (var projectCollection = new TfsTeamProjectCollection(new Uri(repositoryUrl)))
{
    projectCollection.EnsureAuthenticated();
    var versionControlServer = (VersionControlServer)projectCollection.GetService(typeof(VersionControlServer));

    string path = "$/MyProject/path/to/file.xml"

    var before = new DiffItemVersionedFile(versionControlServer, path, VersionSpec.ParseSingleSpec(minRevision.ToString(), null));
    var after = new DiffItemVersionedFile(versionControlServer, path, VersionSpec.ParseSingleSpec(maxRevision.ToString(), null));

    using (var stream = new MemoryStream())
    using (var writer = new StreamWriter(stream))
    {
        var options = new DiffOptions();
        options.Flags = DiffOptionFlags.EnablePreambleHandling;
        options.OutputType = DiffOutputType.Unified;
        options.TargetEncoding = Encoding.UTF8;
        options.SourceEncoding = Encoding.UTF8;
        options.StreamWriter = writer;
        Difference.DiffFiles(versionControlServer, before, after, options, path, true);
        writer.Flush();

        var reader = new StreamReader(stream);
        var …
Run Code Online (Sandbox Code Playgroud)

c# tfs tfs-sdk tfs2010

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

如何查看'docker stack ps'中的完整错误消息?

在遵循docker教程时,我在使用该docker stack deploy命令部署堆栈时遇到了问题.我设法获取的错误的最多信息来自运行docker stack ps命令,该命令显示一个带有Error列的表: docker stack ps输出

这不是很多信息,即使消息被截断以适应表格.我已经解决了原来的问题但是对于将来我想知道:如何查看完整的错误消息?我怎么去阅读日志?

docker

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

使用dummy-project-with-refrences技巧无法在VS2012中使用社区构建扩展打开TFS构建过程模板

我正在尝试打开一个TFS Build Process Template(DefaultTemplate.11.1.xaml)文件,其中包含来自Community TFS Build Extensions的活动.我正在关注这里的 instractions ,部分将自定义活动放入Visual Studio中.我在Visual Studio 2012的RC版本中没有遇到任何问题,但是现在,在升级到发行版之后,尝试打开文件最终会出错:

System.Xaml.XamlException:'属性'BuildSettings'的类型'InArgument(mtbwa:BuildSettings)'无法解析.

基于此模板运行构建时,TFS本身似乎没有任何问题.

我可以在没有技巧的情况下打开文件,但当然自定义活动没有正确显示.

tfs xaml tfsbuild visual-studio visual-studio-2012

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

在这个批处理文件中,°,±和²如何产生░,▒&??

这段代码:

   @echo off
   set /p a=Installing [<nul
   set b=1
   :loop
   if %b% leq 2 set /p a=°<nul
   if %b% gtr 4 if %b% leq 6 set /p a=±<nul
   if %b% gtr 6 if %b% leq 8 set /p a=²<nul
   if %b% gtr 8 if %b% leq 10 set /p a=±<nul
   if %b% gtr 10 set /p a=°<nul
   choice /t 1 /c y /d y>nul
   set /a b=%b%+1
   if %b%==13 (echo ]&goto :eof)
   goto :loop
Run Code Online (Sandbox Code Playgroud)

...来自http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/MS_DOS/A_1237-DOS-ECHO-text-to-previous-line-by-P​​aul-Tomasi.html#c18182并生成以下内容cmd窗口中的输出:

    Installing [??????????]
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法通过谷歌找到解释这是如何工作的解释.将其他扩展的ascii字符替换为它们的位置似乎产生"命令的语法不正确",因此只能设法猜测这是一个黑客,通过无意的方式将这些字符交换到扩展的ascii集中的较低字符由设计师的技巧. …

encoding ascii cmd batch-file

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

Visual Studio在调试结束时清除输出文件

我在Visual Studio 2013中遇到了一个奇怪的行为.我有一个C#程序写入标准输出,让我们说

using System;
using System.Threading;

namespace CsSandbox
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello world!");
            Thread.Sleep(10000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在项目属性的Debug选项卡中,我已将输出重定向到文件,如下所示: 命令行选项

如果我在应用程序仍在运行时在这些10s内打开文件,则该文件确实包含"Hello world!".但是,一旦程序退出,文件就会被清除.从命令行运行程序时不会发生这种情况.

有没有理由为什么Visual Studio会这样做?有没有办法绕过这种行为?

c# visual-studio visual-studio-2013

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

Angular 2:聚焦输入导致'表达式在更改后出现'更改'错误

在我的Angular 2应用程序中,我想要一个输入列表.在其中一个内部按Enter将添加一个新输入并立即关注它.这是一个已在本网站上提出过的问题,Eric Martinez提供了一个简洁的答案,通过自定义指令实现了这一点.

他的解决方案基于一个整数的虚拟列表.我在努力使其适应更现实的情况时遇到了困难.我已经分叉了Eric的插件,所以你可以在这里运行代码,但最重要的文件就是这个:

//our root app component
import {Component, Directive, Renderer, ElementRef} from 'angular2/core'

class Person { name: string }

@Directive({
  selector : 'input'
})
class MyInput {
  constructor(public renderer: Renderer, public elementRef: ElementRef) {}

  // It won't work at construction time
  ngOnInit() {
    this.renderer.invokeElementMethod(
      this.elementRef.nativeElement, 'focus', []);
  }
}

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div *ngFor="#input of inputs">
      <input
        (keydown.enter)="add()" 
        [(ngModel)]="input.name"
        type="text"/>
    </div>
  `,
  directives: [MyInput]
})
export class App {
  inputs: …
Run Code Online (Sandbox Code Playgroud)

typescript angular2-directives angular

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

XACT_ABORT 并不总是在出错时回滚事务。具体什么时候做呢?

问题

文档SET XACT_ABORT仅说明了启用此选项的效果。

当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句引发运行时错误,则整个事务将终止并回滚。

我不相信这就是全部真相。读完本文后,我担心如果在外部进程创建的事务中执行启用此选项的存储过程,则最终可能会回滚外部事务。幸运的是,我的担心被证明是没有根据的。然而,这意味着我现在并不真正理解如何XACT_ABORT运作。SQL Server 检查事务是否应该回滚的条件是什么?

事前调查

我进行了以下实验:(此代码的摘要如下,因为代码块之前有一个编号列表会破坏 StackOverflow 的格式,呃)

CREATE TABLE Dummy
(
    ID INT NOT NULL IDENTITY CONSTRAINT PK_Dummy PRIMARY KEY,
    Text NVARCHAR(128) NOT NULL
)

CREATE UNIQUE NONCLUSTERED INDEX IX_Dummy_Text ON dbo.Dummy(Text)

GO 

CREATE OR ALTER PROCEDURE InsertDummy
    @Text NVARCHAR(128)
AS
BEGIN
    SET NOCOUNT OFF
    SET XACT_ABORT ON

    INSERT dbo.Dummy (Text) VALUES (@Text)
END

GO

SET XACT_ABORT ON

BEGIN TRANSACTION
BEGIN TRY
    EXEC dbo.InsertDummy …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures transactions

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

Ajax.BeginForm用部分视图替换整个页面

我在使用Ajax.BeginForm()简单的ASP.NET MVC应用程序时遇到问题.我搜索过SO以寻求解决方案,但我发现的任何内容似乎都没有帮助.

我使用默认的Visual Studio 2015模板创建了一个新项目.我已将Index.cshtml文件更改为:

@{
    ViewBag.Title = "Home Page";
}

<div class="jumbotron">
    <h1>ASP.NET</h1>
    <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
    <p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p>
</div>

<div class="row">
    <div id="ajax-test"></div>

    @using (Ajax.BeginForm("Test", new AjaxOptions()
    {
        UpdateTargetId = "ajax-test",
        InsertionMode = InsertionMode.Replace
    }))
    {
        <input type="submit" />
    }
</div>
Run Code Online (Sandbox Code Playgroud)

我添加了一个新动作HomeController:

    public ActionResult Test()
    {
        return PartialView("Test");
    }
Run Code Online (Sandbox Code Playgroud)

一个新观点Home\Test.cshtml …

ajax asp.net-mvc razor

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

platform-b​​rowser-dynamic.umd.js - 在更新Angular2教程中的包之后的404

我刚开始关注Angular2教程.现在我回到它并进入路由章节,似乎教程已经稍微更新,我不得不返回并更新package.json当前版本app.routes.ts文件无法编译.现在它编译得很好但是当我运行应用程序时,脚本在运行时崩溃,显然在Zone.js包内:

在此输入图像描述

我已经检查过,platform-browser-dynamic.umd.js文件确实不存在于磁盘上.

这是新package.json文件:

{
  "name": "angular2-quickstart",
  "version": "1.0.0",
  "scripts": {
    "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",
    "lite": "lite-server",
    "postinstall": "typings install",
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "typings": "typings"
  },
  "license": "ISC",
  "dependencies": {
    "@angular/common": "2.0.0-rc.4",
    "@angular/compiler": "2.0.0-rc.4",
    "@angular/core": "2.0.0-rc.4",
    "@angular/forms": "0.2.0",
    "@angular/http": "2.0.0-rc.4",
    "@angular/platform-browser": "2.0.0-rc.4",
    "@angular/platform-browser-dynamic": "2.0.0-rc.4",
    "@angular/router": "3.0.0-beta.1",
    "@angular/router-deprecated": "2.0.0-rc.2",
    "@angular/upgrade": "2.0.0-rc.4",
    "systemjs": "0.19.27",
    "core-js": "^2.4.0",
    "reflect-metadata": "^0.1.3",
    "rxjs": "5.0.0-beta.6",
    "zone.js": "^0.6.12", …
Run Code Online (Sandbox Code Playgroud)

npm angularjs angular

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

为什么<a>内<a>内的<a>表现得如此奇怪?

在我工作的项目中,我遇到了一个<ul>嵌套在<a>标签内的标签(点击事件由JavaScript处理).我尝试<a>在无编号列表中添加另一个标记,发生了一些非常奇怪的事情.

请考虑以下HTML代码:

<a test="foo">
  <ul>
    <li>
      Before link
      <a>Link</a>
      After link
    </li>
  </ul>
</a>
Run Code Online (Sandbox Code Playgroud)

当您检查浏览器工具时,您会看到这实际上是由浏览器呈现的,如下所示: F12工具截图

<ul>实际上并没有被包裹<a>.<a test="foo">标签有三个副本,一个是空的<ul>,前一个是空的<ul>,另一个是包装<li>元素的内容,直到预期<a>Link</a>.

我在Chrome和Firefox中对此进行了测试,两种浏览器都发生了同样的情况.

这里发生了什么?

html firefox google-chrome

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