小编Sch*_*999的帖子

是否可以在运行时验证ASHX语法错误?

基本上ASHX文件中存在简单的错误(比如缺少逗号或类似的东西).Visual Studio可以很好地完成所有操作,但是一旦访问该文件(由IIS托管),就会弹出一个错误.

有没有办法在MSBuild或Visual Studio中识别出这样的错误?

.net c# msbuild visual-studio

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

是否可以使用TransactionScope回滚已提交的数据?

目标很简单 - 通过单元测试插入回滚数据.这是怎么回事.在单元测试中,调用一个方法来创建新连接并插入一些数据.之后,单元测试会创建一个新连接,并尝试查找插入的内容并断言.我希望用这两个东西包装TransactionScope,而不是调用Complete并看到插入的数据回滚.那没有发生.我做错了什么还是我错过了这一点?

using (new TransactionScope())
{
    // call a method that inserts data
    var target = new ....
    target.DoStuffAndEndupWithDataInDb();

    // Now assert what has been added.
    using (var conn = new SqlConnection(connectionString))
    using (var cmd = conn.CreateCommand())
    {
        // Just read the data from DB
        cmd.CommandText = "SELECT...";
        conn.Open();
        int count = 0;
        using (var rdr = cmd.ExecuteReader())
        {
            // Read records here
            ...
            count++;
        }

        // Expecting, say, 3 records here
        Assert.AreEqual(3, count);
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# sql transactionscope

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

C#:如何有效地复制大型结构数组?

可能的重复:
C#:复制数组的任何更快的方法?

我有一个像这样的结构数组:

struct S
{
    public long A;
    public long B;
}

...
S[] s1 = new S[1000000];
...
S[] = new S[s1.Length];
// Need to create a copy here.
Run Code Online (Sandbox Code Playgroud)

我可以使用不安全模式并将结构的源数组复制到字节数组,然后从字节数组复制到结构的目标数组。但这意味着我将不得不分配一个巨大的中间字节数组。有没有办法避免这种情况?是否有可能以某种方式将目标数组表示为字节数组并直接复制到那里?

unsafe
{
    int size = Marshal.SizeOf(s0[0]) * s0.Length;
    byte[] tmp = new byte[size];
    fixed (var tmpSrc = &s0[0])
    {
        IntPtr src = (IntPtr)tmpSrc;
        Marchal.Copy(tmpSrc, 0, tmp, 0, size);
    }

    // The same way copy to destination s1 array...
}
Run Code Online (Sandbox Code Playgroud)

.net c#

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

PLINQ或TPL可以窒息.net线程池和IIS请求处理队列吗?

这是一个场景.由IIS托管的网关.请求可能需要向另一个服务发出多个独立的其他请求,每个服务可能需要几秒钟.当然我认为它是并行化的一个很好的候选者.但是,如果我应该这样做,我会有内部斗争,如果我这样做,那么我应该使用什么样的并行度.我担心的是app中的所有线程通常都是由.net线程池管理的,所以如果我最终分配太多线程(甚至等待),我最终可能会扼杀其他网关功能和API吗?

.net c# multithreading plinq

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

如何使用在不同时间到达的用户数据处理多个推送通知?

我的应用程序正在接收从服务器发送到Apple后端的APN.当通知到达用户的设备时,用户自然可能无法打开应用程序.与此同时,我的服务器可能会推送更多通知.它们都包含一些在处理通知时很重要的用户数据.那怎么处理呢?iOS不会捆绑并给我一批,是吗?

以下是我将要解决的方法,其中没有一个是简单的.

  1. 服务器跟踪未看到的数据,并在到达时,新请求始终发送一批所有新通知,将计数反映为徽章计数.
  2. 通过点击通知弹出窗口打开客户端.在这种情况下,它具有所有需要的数据didReceiveRemoteNotification. 要么
  3. 客户端忽略通知弹出窗口并通过点击应用程序图标打开应用程序(可能稍后).在这种情况下didReceiveRemoteNotification不会被调用,因此app必须从服务器获取所有需要的数据. 要么
  4. 服务器从不发送任何用户数据,客户端每次启动或获取数据时都会检查新内容didReceiveRemoteNotification.

还要别的吗?我想念的更简单吗?

iphone objective-c apple-push-notifications ios

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

如何在Google Cloud Console的Concent屏幕上更改电子邮件帐户?

我被卡住了.我已经创建了这个应用程序已有一段时间了.那时我刚刚使用了我的账户.现在,我想向用户提供与系统支持电子邮件相对应的其他电子邮件.有没有办法改变它?

在此输入图像描述

更新:请看我的评论.这一切都是关于当前登录的用户,没有别的.

java google-app-engine google-plus google-cloud-console

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

ConcurrentDictionary 在删除元素时似乎没有为 GC 标记元素

我惊讶地发现我的应用程序内存占用不断增长 - 运行时间越长,消耗的内存就越多。因此,windbg我用一些魔法指出了我基于ConcurrentDictionary. CD 有很多对我来说非常酷的好处(其中之一是它的数据永远不会在 LOH 中结束)。TryAddTryRemove是用于添加和驱逐项目的两种方法。!gcroot一些较旧的元素引导我回到我的缓存。ILSpy 的一些调查使我得出了这个结论:

TryRemove没有真正删除一个元素。它所做的只是更改链表指针以跳过从不将数组元素的值分配给null. 这可以防止 GC 收集旧的驱逐对象。

真的吗?这是一个已知的问题吗?如果是这样,我唯一的选择是TryUpdate(key, null)然后TryRemove(key)?如果是这样,那么我必须锁定ConcurrentDictionary访问权限,这是矛盾的。

这是 ILSpy 转储:

// System.Collections.Concurrent.ConcurrentDictionary<TKey, TValue>
private bool TryRemoveInternal(TKey key, out TValue value, bool matchValue, TValue oldValue)
{
    while (true)
    {
        ConcurrentDictionary<TKey, TValue>.Tables tables = this.m_tables;
        int num;
        int num2;
        this.GetBucketAndLockNo(this.m_comparer.GetHashCode(key), out num, out num2, tables.m_buckets.Length, tables.m_locks.Length);
        lock (tables.m_locks[num2])
        {
            if (tables != this.m_tables)
            { …
Run Code Online (Sandbox Code Playgroud)

c# collections concurrency garbage-collection .net-4.0

5
推荐指数
0
解决办法
846
查看次数

当用作字典中的键时,重写结构的 GetHashCode 是否会导致装箱?

通常,如果结构实现接口,则将此类结构分配给接口变量会导致装箱,例如:

interface IFoo {}

struct S : IFoo {}

S s = ...
IFoo f = s; // boxing here
Run Code Online (Sandbox Code Playgroud)

但也有例外。看来IEquatable<T>在字典中实现和使用这样的结构作为键不会导致装箱。那么问题来了,如果我只是重写GetHashCode而不实现IEquatable<T>呢?会不会陷入某种特殊情况?

.net c#

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

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

jOOQ Gradle 插件不更新生成的文件

出于某种原因,我必须手动删除生成的文件夹并运行 gradle 任务以获取更新的 POJO。这是我的设置、预期行为还是错误?我的设置如下:

jooq {
  library(sourceSets.main) {
    jdbc {
      driver = 'com.mysql.jdbc.Driver'
      url = 'jdbc:mysql://localhost:3306/library'
      user = 'library'
      password = '123'
      schema = 'library'
    }
    generator {
      name = 'org.jooq.util.DefaultGenerator'
      strategy {
        name = 'org.jooq.util.DefaultGeneratorStrategy'
      }
      database {
        name = 'org.jooq.util.mysql.MySQLDatabase'
        inputSchema = 'library'
      }
      generate {
        daos = true
      }
      target {
        packageName = 'com.example.library.db'
        directory = 'src/main/java'
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

java gradle jooq

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