小编Luc*_*ano的帖子

ConcurrentDictionary陷阱 - 来自GetOrAdd和AddOrUpdate的委托工厂是否同步?

文档ConcurrentDictionary没有明确的状态,所以我想我们不能指望委托valueFactoryupdateValueFactory让它们的执行同步(分别来自GetOrAdd()和AddOrUpdate()操作).

因此,我认为我们无法在其中实现需要并发控制的资源,而无需手动实现我们自己的并发控制,可能只是使用[MethodImpl(MethodImplOptions.Synchronized)]代理.

我对吗?或者ConcurrentDictionary是线程安全的事实,我们可以预期对这些代理的调用会自动同步(线程安全)?

.net c# concurrency multithreading thread-safety

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

如何在视图上下文之外获取ModelMetadata?

我需要导出某种数据(构建文件),因此View不会生成(渲染)数据,而是使用纯C#代码生成(渲染)视图.但我需要一些ModelMetadata信息.

我还问如何在单元测试中构建ModelMetadata,以及在视图之外?

asp.net-mvc asp.net-mvc-3

12
推荐指数
1
解决办法
7891
查看次数

检查 Gitlab 管道中的变量是否为 null

当使用另一个 null 变量的内容声明它时,如何检查 Gitlab 管道中的 null 变量?VAR_NULL就像下面的变量当NO_VAR为 null 时:

variables:
  VAR_EMPTY: ""
  VAR_NULL: "${NO_VAR}"
Run Code Online (Sandbox Code Playgroud)

检查管道结果,其中仅VAR_EMPTY == ""评估NO_VAR == nulltrue,所有其他均为false

管道结果为了方便起见,截图,完整结果:https://gitlab.com/labaz/test-gitlab-pipeline-null-var/-/p ​​ipelines/ 493036820): 管道结果

完整的管道脚本https://gitlab.com/labaz/test-gitlab-pipeline-null-var/-/blob/main/.gitlab-ci.yml):

variables:
  VAR_EMPTY: ""
  VAR_NULL: "${NO_VAR}"

jobTest-Var_Empty-IsNull:       # This job runs in the build stage, which runs first.
  rules:
    - if: '$VAR_EMPTY == null'
  script:
    - 'echo "VAR_EMPTY IS null"'

jobTest-Var_Empty-IsEmpty:       # This job runs in the build stage, which …
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci

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

工作区中每个项目具有自定义 settings.xml Maven 文件的 Vscode

我有一个包含一堆 Maven 项目的 Vscode 工作区,其中一个有自己的Maven settings.xml文件。

由于每个项目都有自己的同名设置文件,但在其自己的根文件夹中,我成功地将工作区配置为具有以下选项的每个项目:{"maven.executable.options": "-s my_settings.xml"}

尽管我可以成功运行所有项目的任何 Maven 命令,但 Vscode 会报告文件中pom.xml有关缺少工件的问题,并且当我从侧栏中的“测试”运行测试时也会报告相同的错误。

当我将项目的设置文件之一复制到~/.m2/settings.xml给定项目时工作正常,根本没有错误。

因此,我得出的结论是,Vscode 不尊重IDE 内所有项目操作的“maven.executable.options” ,例如测试和其他操作,但仅适用于直接启动的 Maven 命令。

每次我必须打开一组给定的项目时,我不想将所有这些settings.xml文件合并到本地的一个大文件中。~/.m2/settgins.xml

有没有办法教 Vscode 对settings.xml每个项目使用不同的方法并使其在所有 Vscode 操作(不仅仅是 Maven 命令)中正常工作?

maven visual-studio-code

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

忽略字典键中的大小写

如何忽略字典键中的大小写?我这样做:

var map = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
map.Add("e", "Letter e lower case");

string value = null;
if (!map.TryGetValue("E", out value)) {
    Console.WriteLine("Not found");
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用StringComparer.InvariantIgnoreCase,结果是一样的.它找不到大写字母"E".

编辑: 即使使用OrdinalIgnoreCase,我的环境设置是否会出现某种文化冲突?

.net c# dictionary

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

使用DotNetZip和MemoryStream时,解压缩的数据用'\ 0'填充

我正在尝试在内存中压缩和解压缩数据(因此,我不能使用FileSystem),并且在下面的示例中,当数据被解压缩时,它在我原始数据的末尾有一种填充('\ 0'字符) .

我究竟做错了什么 ?

    [Test]
    public void Zip_and_Unzip_from_memory_buffer() {
        byte[] originalData = Encoding.UTF8.GetBytes("My string");

        byte[] zipped;
        using (MemoryStream stream = new MemoryStream()) {
            using (ZipFile zip = new ZipFile()) {
                //zip.CompressionMethod = CompressionMethod.BZip2;
                //zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestSpeed;
                zip.AddEntry("data", originalData);
                zip.Save(stream);
                zipped = stream.GetBuffer();
            }
        }

        Assert.AreEqual(256, zipped.Length); // Just to show that the zip has 256 bytes which match with the length unzipped below

        byte[] unzippedData;
        using (MemoryStream mem = new MemoryStream(zipped)) {
            using (ZipFile unzip = ZipFile.Read(mem)) {
                //ZipEntry …
Run Code Online (Sandbox Code Playgroud)

c# zip stream dotnetzip

8
推荐指数
1
解决办法
491
查看次数

从ConcurrentDictionary转换为IDictionary

从ConcurrentDictionary到IDictionary的转换是否会切断线程安全的实现,因为IDictionary没有GetOrAdd和AddOrUpdate方法?

.net c# concurrency thread-safety

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

String.Format() - 重新传递参数但添加更多参数

我想做那样的事情:

public string GetMessage(params object otherValues[]) {
    return String.Format(this.Message, this.FirstValue, otherValues);
}
Run Code Online (Sandbox Code Playgroud)

所以,我想修复一系列参数,String.Format()但添加一个新参数.

什么是最好的方法,知道我们可以"重建"一个新的对象数组,这似乎并不好.

.net c# string-formatting params-keyword

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

使用NHibernate缓存多个数据库的SessionFactory和Configuration

StackOverflow中有关NHibernate和多个数据库(动态连接)的一些问题,让我相信最好的解决方案是保持SessionFactory(每个数据库)的缓存和缓存到Configuration,以更快地构建SessionFactory.

我想知道这种方法是否正确,主要是:就每个实例的内存消耗和构建时间而言,SessionFactory的"权重"是什么?

更多关于我的方法:

已知第一级和第二级缓存存在于SessionFactory"领域"中,我们可以假设内存消耗可能与打开的ISession量(包括第一级缓存级别)有关.

对于第二级缓存级别,在我的情况下,数据库共享相同的模式并具有一些commom只读表,我可以使用全局缓存实现仅共享所有SessionFactories中的只读表,这对我的项目来说听起来不错.

我对吗 ?这种方法可以带来什么样的性能和内存问题?考虑一个Web应用程序(ASP.NET MVC,而不是Webforms)访问数百个(或几千个)数据库,在每个HTTP REQUEST上找到用户数据库并解决对它的访问(获取,使用和部署ISession).

连接池:连接池怎么样?管理数百或数千个数据库池应该采取什么样的行为?与NHibernate一起使用的一些当前实现可能会有所帮助,或者我需要构建自己的实现?

.net sql-server nhibernate multiple-databases

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

从源代码构建ncurses时如何为terminfo数据库设置自定义搜索路径

从源代码构建ncurses时,如何为terminfo数据库设置自定义搜索路径?

更具体地说,如何强制在“〜/ .terminfo”中搜索主目录?

search path ncurses terminfo

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