小编Dmi*_*ets的帖子

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

克隆可观察量的最佳方法?

在Knockout中克隆Observable对象以制作某种事务机制的最佳方法是什么?

例如,编辑此模型:

var Action = function (name, ownerType, condition, expression, args) {
    var self = this;
    this.name = ko.observable(name);
    this.ownerType = ko.observable(ownerType);
    this.condition = ko.observable(condition);
    this.expression = ko.observable(expression);
    this.args = ko.observable(args);
};
Run Code Online (Sandbox Code Playgroud)

我想在用户编辑之前保存该对象的状态.如果用户将取消编辑 - 回滚对象状态.

最简单的方法就是创建另一个项目,如:

self.tempAction = new Action(action.name(), action.ownerType(), action.condition(), action.expression(), action.args());
Run Code Online (Sandbox Code Playgroud)

但我不确定这是优雅的解决方案..

那么,有什么想法吗?

javascript knockout.js

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

如何在C#中以线程安全的方式读取/生成+读取文件

我正在使用.NET Framework v4.5.

我正在使用MagickImage库创建一种图像缩放器.


使用案例:

用户上传大图像(4k*4k像素)并在不同大小(200*200像素,1200*1200像素)的不同位置使用它.

所以我通过调整大尺寸并将它们存储在磁盘上来按需生成这样的图像.

并发案例:用户上传图像,然后几个用户请求此图像的缩略图.在那一刻,每个用户请求开始创建已调整大小的缩略图,因为它尚不存在.完成调整大小的第一个线程将其保存到磁盘.由于文件已在使用中,所有其他线程都将获得异常.


在此之前,它使用单线程,并且不需要线程安全.

但现在它将用于基于Web的项目,并且并发请求也是可能的.

目前的实施如下:

if (!FileExists(cachedImageFilepath))
{
    byte[] resizedImage = _imageResizer.ResizeImage(originalImageFilepath, width, height);

    _physicalFileManager.WriteToFile(cachedImageFilepath, resizedImage);
}

return cachedImageFilepath;
Run Code Online (Sandbox Code Playgroud)

简单的方法是简单地使用锁定此操作,但在这种情况下,Resizer将在单个时间段内仅调整一个图像的大小.

我看到的另一个变体是创建类似锁定机制的东西,它将通过字符串键锁定.

但无论如何,我发现在释放锁之后文件是否存在时双重检查有问题:

if (!FileExists(cachedImageFilepath)){
  lock(lockObjects[lockKey]){
    if (!FileExists(cachedImageFilepath)){

    }
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有一种好方法甚至.NET机制可以在没有开销的情况下做这样的事情?

.net c# multithreading thread-safety

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

具有高性能的Javascript Graph可视化工具包(500-1000个节点)

我需要显示大约1000个节点和边缘的图形.节点应该是可拖动的,并且所有节点都应该在不等待屏幕的情况下实时工作.

所以,我已经检查了很多js图形可视化框架,但仍然无法找到解决方案.

例如,我从以下问题中获取了"JavaScript InfoVis Toolkit": 什么是最快,最纯粹的Javascript,Graph可视化工具包?它挂起250个节点.

所有框架都运行得非常快,但只有100-200个节点.在500个节点和边缘上,它们会抛出异常或完全挂起.

所以,问题是:是否有一个js框架可以使用500-1k节点/边缘,或者我应该使用canvas/WebGL自己实现一些东西.

javascript svg canvas webgl graph-visualization

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

asp.net mvc 4代码优先:如何使用模型列表自动保存复杂模型?

我正在创建一个测验创建者模块.有5个科目.每个科目都有2000个问题.

比如,它被称为"创建完整模型测试",它将包含100个问题,来自5个科目的20个问题.所以,20*5 = 100

在UI中,创建者将首先从下拉列表中选择"创建完整模型测试".假设他选择了"完整模型测试".他将不得不在5个科目中选择一个科目,然后他将不得不为每个科目选择20个问题.然后必须将它们保存到"完整模型测试"部分.

如果他选择英语,他将不得不选择20个问题,然后他将不得不选择另一个主题,例如物理,并且将不得不为物理选择另外20个问题,然后他将不得不选择数学,然后必须选择另外20个问题,依此类推数学.最后,表格将提交100个问题.

现在,我的问题是,如何将选定的问题自动保存到"完整模型测试"部分,以便他可以在提交表单之前继续保存5个主题的问题.

这是我的部门模型:

namespace MvcBCS.Models
{
public class Department
{
    [Key]
    public int DepartmentId { get; set; }
    public string DepartmentName { get; set; }
    public string DepartmentCode { get; set; }

    public virtual ICollection<Subject> Subject { get; set; }
    public virtual ICollection<Section> Section { get; set; }
    public virtual ICollection<Subsection> Subsection { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)

这是我的主题模型:

namespace MvcBCS.Models
{
public class Subject
{
    [Key]
    public int SubjectId { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# ajax razor asp.net-mvc-4 knockout.js

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

jquery不是从sails.js中的layout.ejs中的cdn加载的

我正在尝试sails.js但很困惑.我需要使用jquery并将它作为CDN放在layout.ejs中,但是在视图中无法识别它.

我没有使用链接器(它是必须的吗?)

谢谢

cdn sails.js

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