小编ago*_*ori的帖子

Mustache.js递归

我正在尝试使用Mustache.js构建一个html树,但它无法抛出"超出最大调用堆栈大小",可能是因为无限递归.

怎么了?

var Mustache = require('mustache');

var root = {
    title: 'Gar1',
    children: [{title: 'gar2'}, {title: 'gar3', children: [{title: 'gar4'}]}]
};

var panelTemplate = '{{title}}<ul>{{#children}}<li>{{>panel}}</li>{{/children}}</ul>';

var partials = {panel: panelTemplate};
var output = Mustache.render(panelTemplate, root, partials);


console.log(output);
Run Code Online (Sandbox Code Playgroud)

javascript node.js mustache

10
推荐指数
2
解决办法
4374
查看次数

持久数据结构如何帮助使Om更快

Om,反应的clojurescript包装,据说非常快,因为它利用了不变性.我无法理解持久性数据结构如何在这里提供帮助.

我所理解的是应用状态是一个原子.此状态传递给返回虚拟DOM节点的函数(om组件),因此创建当前虚拟DOM与其先前状态之间差异的"补丁"比直接在实际DOM上操作要好得多.

但是持久数据结构可以在这里提供帮助吗

(def app-state (atom {:foo {:counter 0}))
(om/root click-counter app-state {:target ...}) 
Run Code Online (Sandbox Code Playgroud)

例如,click-counter渲染一个按钮,单击该按钮会增加计数器.所以过渡函数看起来像这样:

(dom/button #js {:onClick #(om/transact! app [:foo :counter] inc)} 
            (str "clicked " (-> app :foo :counter) " times"))
Run Code Online (Sandbox Code Playgroud)

我没有理解这一点:onClick执行时clojurescript创建一个新的地图(非常有效),如下所示:

{:foo {:counter 1}}
Run Code Online (Sandbox Code Playgroud)

app-state现在指向新的地图.此时Om意识到状态已经改变,因为它只是一个等式检查的问题.

这里的问题是Om应该仍然计算整个旧虚拟DOM和新虚拟DOM之间的差异.它不知道只是计数器被改变了.

我的错误在哪里?

clojure clojurescript om

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

监视Java应用程序上的锁争用

我试图创建一个小的基准(在Groovy中),显示几个同步方法的高线程争用.监控自愿上下文切换时应该出现高争用,而在Linux中,这可以通过"pidstat"来实现.

该计划如下:

class Res {

    private int n;

    synchronized public void inc() {
        n++;
        def foo = []
        for (int i = 0; i < 1000; ++i) foo << "hello"
    }

    synchronized public int getN() {
        return n;
    }

}




while (true) {

    Res res = new Res()

    int N = 100000

    for (int i = 0; i < N; ++i) {
        new Thread({ 
            res.inc() 
            if (res.getN() == N) {
                println "ok" 
            }
        }).start()
    }

    while (res.getN() < N) { …
Run Code Online (Sandbox Code Playgroud)

java multithreading jvm locking

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