我的名字是非斯都.
我需要通过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转换的问题.我确信它们的工作正常,但我的问题与这个特别受欢迎的解决方案有关.
谢谢,
费斯图斯
环境
我在 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)根据这篇文章中的信息,我去了工具| …
考虑以下代码:
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。
假设有一条敏感信息存储在内存中,其定义如下:
private readonly String Key;
Run Code Online (Sandbox Code Playgroud)
该Key变量被分配使用传递给所属的类的构造函数的自变量的值.该值是Console.ReadLine()通过辅助应用程序进行的调用获得的.然后在将值传播到应该传播的位置后关闭该控制台应用程序.永远不会将值写入或读取到文件或注册表.这纯粹是一种记忆中的交易.
非常重要的是,任何人都不能知道此密钥,包括可能在域上具有管理员访问权限的各种顾问,更不用说物理访问计算机了.
我一直试图想出一些防弹方法来保护这个Key价值,但我无法想出任何东西.我是否正确假设任何具有管理访问权限的人都可以简单地启动Visual Studio,附加到进程,然后追踪值Key?
再次,只是要清楚.我们可以容忍物理机器的破坏或盗取该机器上的任何数据.我们唯一不能容忍的是Key在应用程序运行时丢失或被盗在内存中.
(此应用程序在.NET 4.5,Windows 2008 Server上运行)
有任何想法吗?
从VS2013升级到VS2017时,我导入了以前的环境设置,但我遇到了奇怪的编辑器行为,其中"String"一词不断变暗:
当使用小写字母时,关键字"string"正确着色.
要清楚,它使用的是正确的颜色,也就是输入类名而不是关键字时所期望的颜色.但由于某种原因,它的调暗方式与调暗不需要的"使用"语句或无法访问的代码的方式相同.
据推测,修复是在选项>文本编辑器> C#某处,但我似乎无法找到它.