小编Gab*_*ros的帖子

如何在不重新加载的情况下更新jstree节点值

我有一个用以下代码创建的jstree:

$('#mytree').jstree({"core": { "data" : value
                             , "themes" : { "dots": false
                                          , "icons": false }
                             }
                    }
                   );
Run Code Online (Sandbox Code Playgroud)

我可以通过以下代码使用新数据重建它:

$('#mytree').jstree(true).settings.core.data = new_data;
$('#mytree').jstree(true).refresh();
Run Code Online (Sandbox Code Playgroud)

但是当你拥有大量节点时它会很昂贵.我想要实现的是,我想更新元素的值(即node.text部分)而不重建整个树.我通过一个消息中的websocket获取新值(完整的JSON字符串,new_data但结构不会改变).我怎样才能做到这一点?谢谢!

jstree

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

为什么要在C++中避免使用输入操作符(operator >>)?

这个问题中,接受答案的作者不建议使用输入操作符,因为:

operator>>iomanip流操纵者和其他"有趣"的东西影响,所以你永远无法确定它是否做了广告.

但是这是什么意思?当我们用C++编程时,为什么要避免使用C++的输入操作符?

我从The Definitive C++ Book Guide and List中读到的书没有提到这一点,他们介绍并使用了输入操作符.我也没有在互联网上找到这个主题有用的东西.

谢谢!

ps:很抱歉,但我没有足够的声誉在这个话题中提出我的问题.

c++ input operators

12
推荐指数
1
解决办法
337
查看次数

C++纯虚函数调用的性能可变性

我必须设计和开发一个将在实时环境中使用的C++模块(它将在现代多核PC上运行).当我设计它时,我创建了C++接口(只有纯虚拟成员函数的类),我使用依赖注入,以便能够使用Google Mock Framework进行测试.我知道这种方法的运行时性能开销与静态绑定有关,但可测试性是一个重要因素.

我认为我们可以在开发期间测量执行时间,并在集成阶段运行测试以确定性能开销是否可接受.

在过去的几天里,我收到批评者称这种方法不起作用,因为后期绑定具有不确定性.这种非确定性本质意味着即使我测试它并且我测量执行时间,之后,在生产环境中,执行时间可能更多只是因为后期绑定(因为我使用了纯虚函数).

据我所知,这是不可能的(除了缓存未命中和类似的东西).如果使用接口,则意味着您将有一些额外的间接层,并且编译器在某些情况下无法优化(例如内联函数),但就是这样.

所以我的问题不是性能开销,而是性能的可变性.它可以在两次执行之间变化吗?

我找不到关于这个主题的任何文章或基准.找到的文章对静态和动态绑定之间的恒定性能差异进行了基准测试,但现在又不是问题.

如果您知道任何可公开访问的文章,网页,书籍,来源或任何可以提供帮助的内容,请与我分享.

谢谢!

更新: 我想把链接和文件放在我找到答案的地方:

  1. 虚函数调用的工作原理:Parashift C++ FAQ
  2. 有关C++性能的技术报告,第87页:"如果可以在编译时确定对象的静态类型,则调用虚函数可能不比调用非虚成员函数更昂贵.如果必须动态确定类型在运行时,每次呼叫的开销通常都是固定数量的机器指令(§5.3.3)."
  3. Agnes Fog的C++优化软件:适用于Windows,Linux和Mac平台的优化指南,第53页:"调用虚拟成员函数所需的时间比调用非虚拟成员函数要多几个时钟周期,只要函数调用语句总是调用相同版本的虚函数."

c++ polymorphism performance virtual-functions

9
推荐指数
1
解决办法
3472
查看次数

如何将重点放在WPF桌面应用程序上?

我想创建一个可供我女儿使用的Windows桌面应用程序.用例是我给她一个键盘,我启动这个应用程序,这样她就可以按任何她想要的键.应用程序可以显示某些内容(例如,大字或图片中按下的字母等)并阻止我的女儿从我/我的计算机上删除/修改内容.

我对特殊键处理有些困难.我可以使用以下技术禁用ALT + F4但我无法通过这种方式控制ALT + TAB和Win键.

public MainWindow()
{
    InitializeComponent();
    this.KeyDown += new KeyEventHandler(OnButtonKeyDown);
}

protected override void OnPreviewKeyDown(KeyEventArgs e)
{
    if (Keyboard.Modifiers == ModifierKeys.Alt && e.SystemKey == Key.F4)
    {
        e.Handled = true;
    }
    else
    {
        base.OnPreviewKeyDown(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现一篇文章在应用程序处于活动状态时禁用了这些功能,但我认为对于非预期的应用程序退出来说它非常脆弱.

我最终做的是一种有效的解决方法,但感觉不太专业.

public MainWindow()
{
    InitializeComponent();
    System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
    dispatcherTimer.Tick += OnTimerTick;
    dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 100);
    dispatcherTimer.Start();
}

private void OnTimerTick(object sender, EventArgs e)
{
    this.Activate();
    this.Focus();
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我创建了一个定时器,可以不时地调整焦点.这样,如果按下Win键或ALT + TAB,它将带回应用程序.

如何以更专业的方式关注我的应用程序?我正在考虑一种解决方案,它可以检测应用程序何时失去焦点(出于任何原因)并将焦点设置回来.

.net c# wpf

9
推荐指数
1
解决办法
1988
查看次数

谷歌测试/模拟框架中对数组参数的引用

我有一个引用数组输出参数的成员函数,我想在 google mock 中使用它,但它不起作用。

班上:

class Class
{
  // returns: number of the rewritten elements in the array
  int foo(Struct (&bar)[ArraySize]) const;
};
Run Code Online (Sandbox Code Playgroud)

模拟类:

class MockClass : public Class
{
  MOCK_CONST_METHOD1(foo, int(Struct (&)[ArraySize]));
};
Run Code Online (Sandbox Code Playgroud)

当我想使用它时,我写了以下内容:

ON_CALL(mMockClass, foo(_))
  .WillByDefault( DoAll( SetArgReferee<0>(mBar)
                       , Return(5)
                       )
                );
Run Code Online (Sandbox Code Playgroud)

mBar 是一个合适的 Struct ( Struct mBar[ArraySize];)数组。当我编译它时,我收到以下错误消息:

../../../../vendor/gmock-1.7.0/include/gmock/gmock-more-actions.h: In member
function ‘typename testing::internal::Function<F>::Result
testing::SetArgRefereeActionP<k,
value_type>::gmock_Impl<F>::gmock_PerformImpl(const typename
testing::internal::Function<F>::ArgumentTuple&, arg0_type, arg1_type,
arg2_type, arg3_type, arg4_type, arg5_type, arg6_type, arg7_type, arg8_type,
arg9_type) const [with arg0_type = Struct (&)[32], arg1_type =
testing::internal::ExcessiveArg, …
Run Code Online (Sandbox Code Playgroud)

c++ arrays reference googletest googlemock

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

为什么Jekyll的Liquid“包含”返回字符串?

我尝试根据一个字符串是否包含另一个字符串来为变量a truefalse值赋值。我使用以下代码:

{% assign external_link = link.href contains '://' %}
Run Code Online (Sandbox Code Playgroud)

在此代码段中,external_link的值将与的值相同link.href(我external_link通过命令检查了的值{{ external_link }})。

即使将括号放在右侧,我也会得到相同的结果:

{% assign external_link = (link.href contains '://') %}
Run Code Online (Sandbox Code Playgroud)

有什么问题,如何获得表达式的true/ false结果contains

contains liquid jekyll

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

是否有来自Microsoft的.NET文本差异库?

我想对文本文件使用C#.NET差异/比较库(C++更精确,但它无关紧要).

我在主题中发现了很多库,但我需要的是.NET库中的一部分,或者它来自Microsoft.这种限制的原因是我不必审查我们公司的长期开源工具审批流程.

C#.NET有这样的功能吗?

用法示例:我有两个略有不同的.cpp文件.我必须根据两个文件的不同创建一个.cpp文件,#ifdef我们可以在前一个定义控制的两个地方使用一个文件.

.net c# comparison diff

0
推荐指数
1
解决办法
760
查看次数