小编jul*_*icz的帖子

Javascript数据结构库

我想请求推荐JavaScript库/库,它们提供一些基本数据结构的实现,例如优先级队列,带有任意键的映射,尝试,图形等,以及对它们进行操作的一些算法.

我最感兴趣的是:

  • 涵盖的功能集,
  • 解决方案的灵活性 - 这主要适用于图表.例如,我是否必须使用提供的图形实现,
  • 使用该语言的功能特性 - 有时它提供了更大的灵活性,
  • 执行的表现

我想指出,我知道可以使用JavaScript实现以下数据结构:

  • 一个地图,如果键值是字符串或数字,
  • 一组,(使用地图实现),
  • 一个队列,虽然如下所述,但它在某些浏览器上效率低下,

目前我最感兴趣的是优先级队列(不要与常规队列混淆),图形实现对输入图的格式不是非常干扰.例如,他们可以使用回调来遍历图的结构,而不是访问具有固定名称的一些具体属性.

javascript algorithm data-structures

58
推荐指数
2
解决办法
2万
查看次数

PostgreSQL中的批量/批量更新/ upsert

我正在编写一个Django-ORM增强版,它尝试缓存模型并推迟模型保存直到事务结束.这几乎已经完成,但是我在SQL语法中遇到了意想不到的困难.

我不是一个DBA,但据我所知,数据库并不能真正有效地处理许多小问题.几个更大的查询要好得多.例如,最好使用大批量插入(比如一次100行)而不是100个单行.

现在,从我所看到的,SQL并没有真正提供任何语句来对表执行批量更新.这个词似乎令人困惑,我会解释我的意思.我有一个任意数据数组,每个条目描述一个表中的一行.我想更新表中的某些行,每个行都使用数组中相应条目的数据.这个想法非常类似于批量插入.

例如:我的表可以有两列"id""some_col".现在描述用于在批处理更新的数据阵列由三个条目的(1, 'first updated'),(2, 'second updated')(3, 'third updated').更新前表中包含行:(1, 'first'),(2, 'second'),(3, 'third').

我来到这篇文章:

为什么批量插入/更新更快?批量更新如何工作?

这似乎做我想要的,但我最终无法弄清楚语法.

我还可以删除所有需要更新的行,并使用批量插入重新插入它们,但我发现很难相信这实际上会更好.

我使用PostgreSQL 8.4,因此这里也可以使用一些存储过程.然而,当我计划最终开源项目时,任何更便携的想法或方法在不同的RDBMS上做同样的事情是最受欢迎的.

后续问题:如何批量"插入或更新"/"upsert"语句?

检测结果

我已经执行了100次10次插入操作,分布在4个不同的表中(总共1000个插入).我使用PostgreSQL 8.4后端在Django 1.3上进行了测试.

这些是结果:

  • 通过Django ORM完成的所有操作 - 每次通过~2.45秒,
  • 相同的操作,但没有Django ORM - 每次通过~1.48秒,
  • 只插入操作,而不查询数据库的序列值~0.72秒,
  • 仅插入操作,以10块为单位执行(总共100块)~0.19秒,
  • 只插入操作,一个大的执行块~0.13秒.
  • 只插入操作,每块大约250条语句,~0.12秒.

结论:在单个connection.execute()中执行尽可能多的操作.Django本身带来了巨大的开销.

免责声明:除了默认主键索引之外,我没有引入任何索引,因此插入操作可能会因此而运行得更快.

sql database postgresql insert sql-update

45
推荐指数
4
解决办法
7万
查看次数

如何与外部语境中的类型相关联

让我们考虑以下代码段:

blah :: a -> b -> a
blah x y = ble x where
    ble :: b -> b
    ble x = x
Run Code Online (Sandbox Code Playgroud)

这在GHC下编译得很好,这实际上意味着b第3行b与第一行不同.

我的问题很简单:有没有办法以某种方式将类型声明与ble外部上下文中使用的类型相关联,即类型声明blah

显然,这只是一个示例,而不是类型声明的真实用例.

haskell types functional-programming ghc type-declaration

33
推荐指数
2
解决办法
818
查看次数

Backbone JS查看事件没有被解雇?

我正在尝试使用Backbone JS,到目前为止,一切似乎都很有意义并且工作顺利.

但是,使用下面的代码,我的自定义事件似乎没有被触发.以下代码中的任何内容都可以说明原因可能是什么?我是否需要在视图中"初始化"任何内容?关于代码/结构的任何其他指针也会很酷.下面是我的完整JS/HTML.

JS

var Todo = Backbone.Model.extend({});

var TodoCollection = Backbone.Collection.extend({

    model: Todo,
    url: '/Home/Todos'

});

var AppView = Backbone.View.extend({

    // where it should listen, required?
    el: $(".content"),

    events: {
        "keypress #new-todo": "enter"
    },

    initialize: function () {
        // _.bindAll(this, "render", "createOnEnter");
        // this.collection.bind("all", this.render);
    },

    hi: function () {
        alert('ohai');
    },

    render: function () {
        var lis = '';
        $.each(this.collection.models, function () {
            lis += '<li>' + this.get('Text') + '</li>';
        });
        $('#todo-list').append(lis);
        return this.el;
    },

    enter: function (e) …
Run Code Online (Sandbox Code Playgroud)

jquery backbone.js

28
推荐指数
2
解决办法
2万
查看次数

Haskell详细的存在量化

我对类型的存在量化是什么以及它可以在何处使用有一个大概的概念.然而,根据我迄今为止的经验,为了有效地使用这个概念,需要理解许多警告.

问题:是否有任何好的资源解释如何在GHC中实施存在量化?即

  • 存在主义类型的统一如何运作 - 什么是统一的,什么不是?
  • 按类型执行后续操作的顺序是什么?

我的目标是更好地理解GHC向我抛出的错误信息.消息通常会说些什么"this type using forall and this other type don't match",但是它们并没有解释为什么会如此.

haskell type-systems existential-type ghc

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

use_for_related_fields如何在Django中运行?

我无法从文档中了解到这一点.对我来说完全不清楚,更具体地说:

  • 这是一个全球性的环境吗?因此,如果我在其中一个模型管理器上指定此属性,它是否会被所有模型类全局使用?
  • 如果它不是全局设置,那么哪些关系会受到影响?
  • 是否可以为一个关系设置一个模型管理器,为同一个模型设置另一个关系?

最重要的是,我会感谢任何好的最小示例用法,因为文档缺乏那些afaik.谢谢.

python django django-models foreign-key-relationship django-managers

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

Backbone.js及其API混淆

我最近开始使用Backbone.js.我喜欢这个架构,就功能而言,它几乎就是我需要的......

......但是我发现了以下警告:

  • 因为Collections get意味着与Models 不同的东西.没有set.应以常规方式访问属性.我发现它相当不一致.有时候很容易混淆模型和集合.有什么办法可以解决这个问题吗?
  • 在里面分配初始值Model.extend并不总是有效.例如分配url不会覆盖缺省行为.这只能通过调用set()方法来实现.再次非常容易出错.
  • 我仍然不知道是否需要使用get/ set内部initialize()呼叫.
  • 我不明白为什么我不能只是调用_.bindAll(this)里面initialize(),我必须列出具体的函数名的约束是这样的:_.bindAll(this, firstFunc, secondFunc, ...).这不是很干.

我想知道:关于上述情况的最佳做法是什么?你怎么做才能使框架更加一致 - 任何猴子修补?我做错了什么/违反惯例?

我会感激任何好的现实世界的例子.我确实找到了这个:http://documentcloud.github.com/backbone/docs/todos.htmlhttp://liquidmedia.ca/blog/2011/01/backbone-js-part-1/那些不解决任何上述问题.事实上,他们只提出最简单的想法,绝对没有边界案例,所以更复杂的东西可能是有用的.

编辑:

好的,还有一个基本的想法,我不明白:

  • 我是否曾被允许在扩展名上添加其他属性:var SomeModel = Backbone.Model.extend({ myattribute: myvalue })
    • 如果是这样,那为什么后续的new SomeModel().get("myattribute")工作没有呢?
  • this里面究竟是什么initialize()?是模型类还是模型实例?

EDIT(2):

好吧,我发现了这个:http://maccman.github.com/spine/.看起来像Backbone.js 2.0,也有类似的名字:).没有测试它,但它可能是一个有点显示塞,因为图书馆是非常近.然而,从文档方面来看,它看起来非常有希望.它摆脱了我发现的大多数问题,它简化了API,它甚至摆脱了对underscore.js库是一件好事的依赖.我会在这里发布我的进一步发现.

javascript api rest model-view-controller backbone.js

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

NoSQL和最终的一致性 - 现实世界的例子

我正在寻找NoSQL应用程序的好例子,它们描述了如何处理缺乏事务性,正如我们在关系数据库中所知道的那样.我最感兴趣的是写密集型代码,因为对于大多数只读代码来说,这是一个更容易的任务.我已经阅读了很多关于NoSQL的内容,关于CAP定理,最终的一致性等等.然而,这些事情往往集中在数据库架构上,而不是与它一起使用的设计模式.我确实理解在分布式应用程序中实现完全事务性是不可能的.这就是为什么我想了解为什么要降低要求以使任务可行的原因.

编辑:

并非最终的一致性是我自己的目标.目前我还没有真正看到如何将NoSQL用于某些写密集型的东西.说:我有一个简单的拍卖系统,有优惠.理论上,接受报价的第一个人获胜.在实践中,我希望至少保证只有一个胜利者,并且人们在同一个请求中得到他们的结果.这可能不可行.但是如何在实践中解决它 - 也许一些请求可能需要比平时更长的时间,因为出了问题.也许一些请求应该自动刷新.这只是一个例子.

distributed-system nosql

14
推荐指数
2
解决办法
5043
查看次数

JavaScript Drag&Select功能正确完成

我正在尝试使用HTML和JavaScript编写拖动和选择功能.我的意思是会有一组具有任意绝对位置的物体.我希望能够将光标拖到它们布局的区域上.可以将其视为RTS策略(选择单位)或任何矢量图形编辑器(选择用于移动它们和编辑的对象).

首先,我了解Google和SO的前几页中出现的内容.因此,我绝不会要求为我搜索这些内容并在此处发布一些随机链接.

我能找到的大多数解决方案都存在某些缺陷.主要问题是抑制实际文本选择,这似乎违背了Web浏览器的本质.一些代码片段导致选择闪烁,我发现非常烦人.有些在所有主流浏览器中都表现不佳.

我要求您实际使用或看到成功使用的代码/库的建议.

第二件事是,我想真正理解抑制选择背后的JavaScript内部.如何在理论上做到这一点.是否有任何非hackish方式实现这一目标?

我能找到的最接近的是:http: //view.jquery.com/tags/ui/1.5b2/demos/ui.selectable.html

然而它似乎与jQuery UI紧密结合,后者又需要jQuery 1.3.x而我真的很期待使用jQuery 1.5

javascript jquery jquery-ui selection drag

14
推荐指数
2
解决办法
3万
查看次数

PostgreSQL具有RECURSIVE性能

我有一个简单的问题.不知怎的,我无法找到明确的答案.

有多少是WITH RECURSIVE语法PostgreSQL的优化?我的意思是:它仅仅是一系列非递归查询的语法糖,或者它是一个单一的语句,尽管其复杂的语义已经作为一个整体进行了优化.一个后续问题 - 关于优化这种语法的可能性有多大?当然,非常欢迎有关此事的一些具体数据.

database postgresql recursive-query with-statement

14
推荐指数
2
解决办法
9097
查看次数