小编Mih*_*kov的帖子

在不使用锁的情况下以原子方式更改两个数字

我正在创建驻留在内存中的仅追加数据结构,并将序列化为字节数组的记录追加到该内存。我需要它是线程安全的并且非常快,所以我想出了以下到目前为止运行良好的代码(这是一个伪代码,实际版本更复杂,并且做了其他一些工作,但这只是为了理解这一点)

public sealed class MemoryList : IDisposable
{
    private int nextOffset = 0;
    private readonly MemoryMappedFile file;
    private readonly MemoryMappedViewAccessor va;

    public MemoryList(uint capacity)
    {
        // Some checks on capacity here
        var mapName = Guid.NewGuid().ToString("N");
        this.file = MemoryMappedFile.CreateNew(mapName, capacity);
        this.va = file.CreateViewAccessor(0, capacity);
    }

    public void AppendMessage(byte[] messagePayload)
    {
        if (messagePayload == null) 
            throw new ArgumentNullException(nameof(messagePayload));
        if (messagePayload.Length == 0)
            throw new ArgumentOutOfRangeException(nameof(messagePayload));

        if (TryReserveCapacity(messagePayload.Length, out var offsetToWriteTo))
        {
            this.va.Write(offsetToWriteTo, messagePayload.Length);
            this.va.WriteArray(offsetToWriteTo + sizeof(int), messagePayload, 0, messagePayload.Length);
        }
    }

    private …
Run Code Online (Sandbox Code Playgroud)

c# multithreading thread-safety

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

在 Rider 和 ReSharper 之间共享代码样式设置

是否有一种简单的方法可以导出/共享我的 Rider 代码样式设置并在 ReSharper (VS) 中使用这些设置,反之亦然?

resharper rider

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

正则表达式描述信用卡到期(有效期)日期

我需要一个正则表达式来验证信用卡到期日期.请注意,"日期"的格式为MM/YY,其中YY是没有世纪的年份,MM是月份(从01到12).我不需要YY在某个有限的范围内,但只需要MM.先感谢您.

regex

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

为了避免SQL Server中的SQL注入攻击,应该从字符串中转义的所有字符是什么?

我正在编写一个小帮助程序库,它正在构建一些SQL并针对SQL Server数据库执行它.

我知道最好的方法是使用参数化查询而不是连接字符串,但这不是一个选项,因为我需要以一种简单的人类可读方式记录对数据库执行的所有查询,以便在查看时管理员可以自由查看用于搜索的实际值是什么where.

在将该字符串放入查询并执行之前,我必须转义的所有字符是什么?

我知道单引号'是必须的但是我必须关心别的吗?

以下是一些示例代码:

var condition = new Condition();
var table = new PersonTable();
condition.Add(table.Name.IsEqualTo("John's"));
Run Code Online (Sandbox Code Playgroud)

这将转换为

WHERE [dbo].[Person].[Name] = N'John''s'
Run Code Online (Sandbox Code Playgroud)

你怎么攻击,如果我只接受stringIsEqualTo方法和逃逸单'''

据我所知,SQL Server仅接受'字符串分隔符.

c# sql sql-server sql-server-2008 sql-server-2012

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