小编cit*_*kid的帖子

为什么List.foldBack与List.fold一样快

"F#中的列表实现为单链表,这意味着只访问列表头部的操作是O(1),元素访问是O(n)." - http://msdn.microsoft.com/en-us/library/dd233224.aspx

考虑到这一点,访问从最后一个元素到第一个元素的元素的List.foldBack应该比List.fold慢得多.但是,我无法通过测试证实这一点:

let f acc x = acc + x
List.fold f 100 [1 .. 5000000] ;;
List.foldBack f [1 .. 5000000] 100;;

#time

> List.fold f 100 [1 .. 5000000] ;;
Real: 00:00:01.379, CPU: 00:00:01.468, GC gen0: 29, gen1: 26, gen2: 2
val it : int = 1647668740
> List.foldBack f [1 .. 5000000] 100;;
Real: 00:00:01.417, CPU: 00:00:01.500, GC gen0: 28, gen1: 25, gen2: 2
val it : int = 1647668740
> 
Run Code Online (Sandbox Code Playgroud)

为什么List.foldBack对List.fold执行相同的操作?

performance f# list

7
推荐指数
1
解决办法
504
查看次数

我如何为node.js设计和实现非阻塞内存映射模块

node.js存在mmap模块:https://github.com/bnoordhuis/node-mmap/

正如作者Ben Noordhuis指出的那样,访问映射内存可能会阻塞,这就是为什么他不再推荐它并停止使用它.

所以我想知道如何为node.js设计一个非阻塞内存映射模块?线程,纤维,?

显然,如果node.js中的线程只发生在其他地方而不是请求处理程序,那么这附近会引发一个问题.

mmap memory-mapped-files memory-mapping node.js

7
推荐指数
1
解决办法
4156
查看次数

在 F# 中用另一种记录类型扩展记录类型

我有两种记录类型:

type Employee = {
        Id:          string
        Name:        string
        Phone:       string
}
    
type AuditLog = {
    PerformedBy: string
    PerformedOn: string
}
Run Code Online (Sandbox Code Playgroud)

以下是记录类型的实例:

let emp = {
    Id = "123"
    Name = "Abc"
    Phone = "999"
}

let log = {
    PerformedBy = "234"
    PerformedOn = "1/1/1"
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以组合这两个实例的字段来创建新的记录/匿名记录类型,如下所示?

let combined = {
    Id = "123"
    Name = "Abc"
    Phone = "999"
    PerformedBy = "234"
    PerformedOn = "1/1/1"
}
Run Code Online (Sandbox Code Playgroud)

f# record

7
推荐指数
1
解决办法
693
查看次数

是否可以使用 dotnet build/restore 在命令行上设置 TargetFramework?

我想从项目文件中删除 TargetFramework 说明符并通过命令行传递它。听起来很容易:

dotnet build -f net5
Run Code Online (Sandbox Code Playgroud)

但最大的问题是 NuGet 方面。因为

dotnet restore
Run Code Online (Sandbox Code Playgroud)

抱怨缺少框架:

dotnet 恢复 common\common.csproj 确定要恢复的项目... C:\Program Files\dotnet\sdk\5.0.400\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(92,5) :错误 NETSDK1013:无法识别 TargetFramework 值“”。它可能拼写错误。如果不是,则必须显式指定 TargetFrameworkIdentifier 和/或 TargetFrameworkVersion 属性。

问题是dotnet restore不接受 TargetFamework 参数。因此,我被迫将 TargetFramework 写入配置文件:更糟糕的是,目录中始终存在单个 NuGet 恢复obj,因此每次在目标框架之间切换时,我都需要修改配置文件并进行全新恢复。这是非常麻烦的,我想知道如何避免这种情况。

如果这个问题无法解决,我会踢出 NuGet 并直接引用包程序集。

.net msbuild nuget

7
推荐指数
1
解决办法
6875
查看次数

Chrome开发者工具中是否有键盘快捷键来切换源文件?

检查清单

https://developers.google.com/chrome-developer-tools/docs/shortcuts?csw=1#sources-panel

我找不到任何方法来浏览Chrome Dev Tools中的源文件.任何人都知道如何在不使用鼠标的情况下切换源文件?

google-chrome-devtools

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

如何防止 Windows 操作系统进入睡眠模式 - .Net

使用 C#,如何防止 Windows 操作系统进入睡眠模式?

我知道,我可以关闭睡眠模式,这就是我现在所做的。这个问题是关于防止操作系统在程序长时间运行时休眠。之后,应再次重新启用进入睡眠模式。

c# windows sleep-mode

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

如何停止自托管的Kestrel应用程序?

我有一个规范代码,可以在任务中自行托管一个asp.net mvc应用程序:

            Task hostingtask = Task.Factory.StartNew(() =>
            {
                Console.WriteLine("hosting ffoqsi");
                IWebHost host = new WebHostBuilder()
                    .UseKestrel()
                    .UseContentRoot(Directory.GetCurrentDirectory())
                    .UseIISIntegration()
                    .UseStartup<Startup>()
                    .UseApplicationInsights()
                    .Build();

                host.Run();
            }, canceltoken);
Run Code Online (Sandbox Code Playgroud)

当我取消此任务时,将抛出ObjectDisposedException.我怎样才能优雅地关闭主人?

asp.net-core-mvc kestrel-http-server asp.net-core

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

s.Count有什么问题(Char.IsLetter)

F#

let s = "bugs 42 bunny"
s.Count(fun c -> Char.IsLetter(c))
s.Where(fun c -> Char.IsLetter(c)).ToArray()
s.Where(Char.IsLetter).ToArray()
s.Count(Char.IsLetter) // error
Run Code Online (Sandbox Code Playgroud)

为什么只有最后一行无法编译:

错误FS0002:此函数需要太多参数,或者在不期望函数的上下文中使用

f# compiler-errors

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

如何在按 Ctrl+W 且未打开编辑器时防止 Visual Studio Code 退出

Ctrl+W关闭活动编辑器窗口。当没有更多的编辑器打开时,Ctrl+W终止 VSCode。找不到相关设置。

对我来说,这是出乎意料的。防止这种情况容易吗?

刚刚意识到Ctrl+W是“关闭窗口”,而Ctrl+F4是“关闭编辑器”。也许我应该只使用关闭编辑器命令。

visual-studio-code

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

如何防止汇总将导入语句保留到包中的外部库?

我有这样的网络应用程序:

  • 打字稿代码
  • rollup 作为捆绑器
  • mapboxgl 作为外部库
  • 使用es6模块
  • 生成一个包含所有打字稿文件但不包含使用单独的脚本标记引用的mapboxgl代码的bundle.js

一切都很好,唯一的问题是bundle.js包含一个错误的

import { Map } from 'mapbox-gl';
// why is this import here, although rollup.config declares mapbox-gl external?

... bundle code follows as expected
Run Code Online (Sandbox Code Playgroud)

在它的头上。

rollup.config.js:

export default {
    input: './js/app.tsx',
    output: [
        {
            file: 'dist/bundle.js',
            format: 'es'
        },
    ],
    external: ['mapbox-gl'], // this should prevent imports from mapbox-gl in the bundle
    plugins: [
        typescript()
    ],
}
Run Code Online (Sandbox Code Playgroud)

我搜索了所有 stackoverflow 和无尽的 github 存储库,但没有揭示为什么留下这个 import 语句。我在 rollup 中打开了一个功能请求,以允许创建纯 js 包,因为我相信 rollup 是正确的,因为它假设该包用作模块 - 格式最终设置为“es”。 …

rollupjs

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