我的申请表如下:
到目前为止,该应用程序是一个非常标准的应用程序,具有移动设备客户端和Web门户客
但是,由于每个设备客户端的要求不受我的控制(设备客户端需要在脱机模式下运行,减少网络延迟等),每个设备客户端不会使用服务器数据库作为其直接记录源.每个设备客户端都有自己的本地数据库(SQLite),该数据库与其所在位置的所有数据保持同步.例如:当我在设备客户端A上进行数据更改时,该更改需要传播到设备客户端B和Web门户客户端C.
正如您所看到的,这里的问题是我们现在需要一种方法来使所有设备客户端数据库实时保持同步.预计两个设备客户端之间的数据短暂延迟并且认为是正常的.
我提出的解决方案如下:
下图说明了此解决方案:
您也欢迎并赞赏您对此解决方案的一般意见和建议.
我正在使用Moq与方法接口配对.我需要测试这个接口中的方法是按照一定的顺序执行的,也是每个方法执行一定次数的.
public interface IInterface
{
void MethodOne(string foo);
void MethodTwo(string foo);
}
Run Code Online (Sandbox Code Playgroud)
// MyClass stuff ...
public async Task Run()
{
MethodOne("foo");
MethodTwo("foo");
}
// ...
Run Code Online (Sandbox Code Playgroud)
我写了这个测试来验证方法只执行了一定次数(一次):
[TestMethod]
public async Task Test()
{
var mock = new Mock<IInterface>();
var mockSequence = new MockSequence();
var obj = new MyClass();
await obj.Run();
mock.Verify(i=> i.MethodOne("foo"), Times.Once());
mock.Verify(i=> i.MethodTwo("foo"), Times.Once());
}
Run Code Online (Sandbox Code Playgroud)
这很好......
我已经尝试过这些测试来确定某个序列是否得到了适当的满足,但测试似乎总是通过.
[TestMethod]
public async Task Test()
{
var mock = new Mock<IInterface>();
var mockSequence = new MockSequence();
var obj …
Run Code Online (Sandbox Code Playgroud) 在Azure的事件概述枢纽条规定如下:
分区数在事件中心创建时指定,并且必须介于8和32之间.分区是一种数据组织机制,与使用应用程序所需的下游并行度相关,而不是与事件中心吞吐量相关.这使得Event Hub中分区数量的选择与您期望拥有的并发读取器数量直接相关.创建事件中心后,分区计数不可更改; 您应该根据长期预期规模来考虑这个数字.您可以通过联系Azure Service Bus团队来增加32分区限制.
由于在初始创建后无法更改事件中心上的分区数,为什么不总是将其配置为最大分区数,32?这样做我没有看到任何定价影响.有一些表现权衡吗?
另外,作为另一方面,我似乎能够创建一个少于8个分区的事件中心.文章说它必须在8-32之间.不知道为什么会这么说......
我有一个非常简单的角度应用程序项目,只需要提供静态文件wwwroot
.这是我的Startup.cs
:
public class Startup
{
public void ConfigureServices(IServiceCollection services) { }
public void Configure(IApplicationBuilder app)
{
app.UseIISPlatformHandler();
app.UseStaticFiles();
}
// Entry point for the application.
public static void Main(string[] args) => WebApplication.Run<Startup>(args);
}
Run Code Online (Sandbox Code Playgroud)
每当我使用IIS Express或Web启动项目时,我总是必须导航到/index.html
.我怎么做到这一点,我可以访问root(/
)仍然得到index.html
?
我正在评估WebCrypto性能与第三方加密库SJCL和Forge的比较.我希望WebCrypto 更快,因为它是本机浏览器实现.这也已经过基准测试并且已经显示出来.
我使用Benchmark.js实现了以下测试来测试密钥派生(PBKDF2-SHA256),加密(AES-CBC)和解密(AES-CBC).这些测试显示web加密速度明显慢于SJCL和Forge加密/解密.
请看这里的小提琴:https://jsfiddle.net/kspearrin/1Lzvpzkz/
var iterations = 5000;
var keySize = 256;
sjcl.beware['CBC mode is dangerous because it doesn\'t protect message integrity.']();
// =========================================================
// Precomputed enc values for decrypt benchmarks
// =========================================================
var encIv = 'FX7Y3pYmcLIQt6WrKc62jA==';
var encCt = 'EDlxtzpEOfGIAIa8PkCQmA==';
// =========================================================
// Precomputed keys for benchmarks
// =========================================================
function sjclMakeKey() {
return sjcl.misc.pbkdf2('mypassword', 'a salt', iterations, keySize, null);
}
var sjclKey = sjclMakeKey();
function forgeMakeKey() …
Run Code Online (Sandbox Code Playgroud) 根据此处的文档,我应该能够Rfc2898DeriveBytes
使用自定义哈希算法(在我的例子中为 SHA256)创建:
public Rfc2898DeriveBytes (byte[] password, byte[] salt, int iterations, System.Security.Cryptography.HashAlgorithmName hashAlgorithm);
Run Code Online (Sandbox Code Playgroud)
我创建了一个 .NET Standard 2.0 类库,其中包含以下内容:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我的课
private static byte[] Pbkdf2(string data)
{
// ...
using(var pbkdf2 = new Rfc2898DeriveBytes(null, null, 50000, HashAlgorithmName.SHA256))
{
return pbkdf2.GetBytes(32);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
“Rfc2898DeriveBytes”不包含带有 4 个参数的构造函数
为什么我不能将哈希算法添加到 的构造函数中Rfc2898DeriveBytes
?
使用普通的视图模型,我可以在它的上下文之外的初始化之后调用一个函数,如下所示:
var ViewModel = function () {
this.Foo = function () {
alert("bar");
};
};
var vm = new ViewModel();
ko.applyBindings(vm);
vm.Foo();
Run Code Online (Sandbox Code Playgroud)
如何使用组件的视图模型执行此类操作?我想打电话FooComponentViewModel
的Foo
功能,首先加载foo的组件时.
ko.components.register("foo", {
viewModel: FooComponentViewModel,
template: {
element: "component-foo"
}
});
function FooComponentViewModel(params) {
this.Foo = function () {
alert("bar");
};
}
var ViewModel = function () {
// empty
};
var vm = ViewModel();
ko.applyBindings();
Run Code Online (Sandbox Code Playgroud)
如何从VARCHAR(MAX)
JSON 数组中删除对象?
DECLARE @Json VARCHAR(MAX) =
JSON_QUERY('[{"u":"user1","i":"item1"},{"u":"user2","i":"item2"}]')
SELECT @Json
DECLARE @NewJson VARCHAR(MAX) =
JSON_QUERY('{"u":"user3","i":"item3"}')
SELECT @NewJson
Run Code Online (Sandbox Code Playgroud)
结果
[{"u":"user1","i":"item1"},{"u":"user2","i":"item2"}]
{"u":"user3","i":"item3"}
Run Code Online (Sandbox Code Playgroud)
@NewJson
到@Json
SELECT JSON_MODIFY(@Json, 'append $', JSON_QUERY(@NewJson))
Run Code Online (Sandbox Code Playgroud)
结果
[{"u":"user1","i":"item1"},{"u":"user2","i":"item2"},{"u":"user3","i":"item3"}]
Run Code Online (Sandbox Code Playgroud)
都好。
0
从中删除索引@Json
SELECT JSON_MODIFY(@Json, '$[0]', NULL)
Run Code Online (Sandbox Code Playgroud)
结果
[null,{"u":"user2","i":"item2"}]
Run Code Online (Sandbox Code Playgroud)
我不希望索引0
为空。我想把它去掉。
我在文档中找不到任何说明如何从数组中删除对象的内容。
我正在使用VS 15.4预览2来测试Android 8.0的一些东西.我试图将我的应用程序启动(调试)到AVD模拟器中,但是在打开后我在模拟器窗口中得到一个空白的黑屏.
我注意到从VS输出打开模拟器的命令是:
2>Starting emulator AVD_Nexus_5_L26 ...
2>C:\PROGRA~2\Android\ANDROI~1\tools\emulator.EXE -partition-size 512 -no-boot-anim -avd AVD_Nexus_5_L26 -prop monodroid.avdname=AVD_Nexus_5_L26
2>Hax is enabled
2>Hax ram_size 0x80000000
2>HAX is working and emulator runs in fast virt mode.
2>emulator: Listening for console connections on port: 5554
2>emulator: Serial number of this emulator (for ADB): emulator-5554
Run Code Online (Sandbox Code Playgroud)
我尝试emulator.EXE
在CMD提示符中运行命令,我遇到了同样的问题.
将命令更改为(删除-no-boot-anim
标志)后
C:\PROGRA~2\Android\ANDROI~1\tools\emulator.EXE -partition-size 512 -avd AVD_Nexus_5_L26 -prop monodroid.avdname=AVD_Nexus_5_L26
Run Code Online (Sandbox Code Playgroud)
模拟器从CMD提示符启动正常.
在尝试从VS中调试应用程序时,我是否知道如何从模拟器启动中删除此标志?即使我尝试在调试之前手动打开模拟器VS仍然关闭它并打开带有-no-boot-anim
标志的新实例.
我有一个 ASP.NET Core 2.1 项目,我正在通过 Razor HTML 页面呈现一些货币数字。
查看模型
class MyModel
{
public decimal Money { get; set; } = 1.23
}
Run Code Online (Sandbox Code Playgroud)
剃刀页
@model MyModel
<p>@Model.Money.ToString("C")</p>
Run Code Online (Sandbox Code Playgroud)
此项目部署到 Azure 应用服务。
在 Windows 应用服务计划(和我的本地 Windows 10 机器)上,这会按预期产生“1.23 美元”。但是,如果我将同一个项目部署到 Linux 应用服务计划,它会呈现“¤1.23”。
根据谷歌的说法:
货币符号 (¤) 是用于表示未指定货币的字符。
知道这两个操作系统之间有什么区别吗?我是否需要在 Linux 上明确设置文化或其他内容?
c# ×3
.net-core ×2
asp.net ×2
asp.net-core ×2
javascript ×2
.net ×1
architecture ×1
azure ×1
benchmark.js ×1
encryption ×1
knockout.js ×1
moq ×1
razor ×1
scalability ×1
signalr ×1
sjcl ×1
sql ×1
sql-server ×1
t-sql ×1
xamarin ×1