小编Fes*_*ale的帖子

在没有Deprecated'Escape'调用的情况下,在JavaScript中转换为Base64

我的名字是非斯都.

我需要通过JavaScript在浏览器中将字符串转换为Base64.这个主题在本网站和Mozilla上都有很好的介绍,建议的解决方案似乎是这样的:

function toBase64(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
}

function fromBase64(str) {
    return decodeURIComponent(escape(window.atob(str)));
}
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,发现escape()并且unescape()已弃用,不应再使用了.考虑到这一点,我尝试删除对已弃用函数的调用,这些函数产生:

function toBase64(str) {
    return window.btoa(encodeURIComponent(str));
}

function fromBase64(str) {
    return decodeURIComponent(window.atob(str));
}
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但它引出了以下问题:

(1)为什么最初提出的解决方案包括调用escape()unescape()?该解决方案是在弃用之前提出的,但可能这些功能在当时增加了某种价值.

(2)是否存在某些边缘情况,我删除这些已弃用的调用会导致我的包装函数失败?

注意:StackOverflow上还有其他更详细和复杂的解决方案来解决string => Base64转换的问题.我确信它们的工作正常,但我的问题与这个特别受欢迎的解决方案有关.

谢谢,

费斯图斯

javascript base64 encoding

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

Visual Studio 编译器 (VBCSCompiler.exe) 在开始工作之前冻结并固定 CPU 四十五秒

环境

我在 Windows 10 虚拟机上使用 Visual Studio 2019 版本 16.7.2,该虚拟机由 Parallels 在全新 MacBook Pro 上托管。该 VM 有 8 个虚拟处理器和 16 GB RAM。

VM 上仅安装 Visual Studio 之外的任何其他内容。

我正在尝试做什么

我正在尝试编译一个由 17 个项目组成的 Visual Studio 解决方案。这些项目相对较小。它们都是面向 .NET Core 3.1 的 C# 控制台应用程序或 DLL 库。

问题

通常,在清洁解决方案发生后大约十秒内执行重建解决方案。我全天执行的典型构建解决方案 (Ctl-Shft-B) 几乎是即时发生的。

但有时,在五次构建中,构建解决方案/项目会导致 VBCSCompiler.exe 消耗 99% 的 CPU 使用率,并在执行构建之前冻结大约三十到四十五秒。一旦开始执行构建,一切都会正常完成。这种一次又一次发生的长时间延迟让我的开发周期非常令人沮丧。我想找到一种方法来消除这种延迟

发生了什么变化

该构建在我的 Amazon Web Server Windows 2016 m4.xlarge VM 上执行良好。为了省钱,我最近改用了 Parallels VM。那就是问题开始的时候。

我想再次重申,Parallels VM 是干净的。那里除了 Visual Studio 之外没有安装其他任何东西。

我尝试过的

采用了以下策略,但没有效果。

(1) 我关闭了Defender实时病毒检查器。

(2)根据这篇文章中的信息,我去了工具| …

compilation build freeze visual-studio-2019

6
推荐指数
0
解决办法
1845
查看次数

将 KeyValuePair 枚举传递给 FormUrlEncodedContent 构造函数时,为什么 Visual Studio 会生成警告 CS620?

考虑以下代码:

using System;
using System.Collections.Generic;
using System.Net.Http;

namespace dla.test2{
    internal class Test{
        public static void Main(){
            var map=new Dictionary<string,string>(){
                ["hello"]="world"
            };
            using var foo=new FormUrlEncodedContent(map);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

调用 的构造函数会FormUrlEncodedContent在构建时产生以下编译器警告:

警告 CS8620类型为“Dictionary<string, string>”的参数不能用于“FormUrlEncodedContent.FormUrlEncodedContent(IEnumerable<KeyValuePair<string?, string”中的“IEnumerable<KeyValuePair<string?, string?>>”类型的参数“nameValueCollection” ?>> nameValueCollection)' 由于引用类型可空性的差异。

FormUrlEncodedContent 的文档表明构造函数应该接受IEnumerable<KeyValuePair<string,string>>?. 我的map变量是 a Dictionary<string,string>,大概会实现该接口IEnumerable<KeyValuePair<string,string>>,所以我希望这里不会有问题。那么为什么会出现警告呢?

我正在使用针对 NETCore5 的 Visual Studio 16.8.0。

c# syntax compiler-warnings .net-5

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

我可以通过物理访问从管理用户隐藏.NET内存变量吗?

假设有一条敏感信息存储在内存中,其定义如下:

private readonly String Key;
Run Code Online (Sandbox Code Playgroud)

Key变量被分配使用传递给所属的类的构造函数的自变量的值.该值是Console.ReadLine()通过辅助应用程序进行的调用获得的.然后在将值传播到应该传播的位置后关闭该控制台应用程序.永远不会将值写入或读取到文件或注册表.这纯粹是一种记忆中的交易.

非常重要的是,任何人都不能知道此密钥,包括可能在域上具有管理员访问权限的各种顾问,更不用说物理访问计算机了.

我一直试图想出一些防弹方法来保护这个Key价值,但我无法想出任何东西.我是否正确假设任何具有管理访问权限的人都可以简单地启动Visual Studio,附加到进程,然后追踪值Key

再次,只是要清楚.我们可以容忍物理机器的破坏或盗取该机器上的任何数据.我们唯一不能容忍的是Key在应用程序运行时丢失或被盗在内存中.

(此应用程序在.NET 4.5,Windows 2008 Server上运行)

有任何想法吗?

.net c# memory security

3
推荐指数
1
解决办法
267
查看次数

为什么Visual Studio在C#Text Editor中调暗"String"这个词

从VS2013升级到VS2017时,我导入了以前的环境设置,但我遇到了奇怪的编辑器行为,其中"String"一词不断变暗:

在此输入图像描述

当使用小写字母时,关键字"string"正确着色.

要清楚,它使用的是正确的颜色,也就是输入类名而不是关键字时所期望的颜色.但由于某种原因,它的调暗方式与调暗不需要的"使用"语句或无法访问的代码的方式相同.

据推测,修复是在选项>文本编辑器> C#某处,但我似乎无法找到它.

c# editor visual-studio-2017

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