我正在努力处理具有动态数据更新的WPF应用程序的最佳方法.我应该使用WPF提供的丰富数据绑定吗?
我将在下面的讨论中尽可能简化我的问题域,并简要提一些解决方案.我对这个社区可以提供的任何评论都很感兴趣.
简化的问题域:假设你有1000项,每一个独特的"系统名称 "和动态的" 速度 "和" 位置 ".这些项目的数据每秒更新60次.您希望这些数据显示在各种UI的用户-一切从图形化的拨号/平方米/仪表/ ETC"显示数字标签".WPF的完美工作 - 将视觉效果与应用程序的其余部分分开.你会如何设计这个系统?
我的第一个解决方案:我的第一个解决方案是定义一个名为" DataItem "的具有速度和位置属性(双精度)的对象,定义一个带有name属性(string)的接口.显示数据的控件必须实现名称接口,创建了一个"DataManager",用于扫描实现接口的FrameworkElements,在初始化时为列表构建名称/ FrameworkElements对.然后,每秒60次,更新1,000个DataItem的列表,并将每个匹配的FrameworkElement的DataContext设置为DataItem对象.这是有效的,性能是可以接受的(特别是如果数据并不总是在变化).
我的第二个解决方案解决了第一个解决方案中的UI控件都必须实现某些接口的问题 - yuk.我想使用开箱即用的未经修改的WPF控件(在某些情况下).所以,第二个解决方案是定义一个"附加属性"(我把它放在DataManager对象上),所以你可以 - 在xaml中 - 做类似的东西
<Label DataManager.Name = "objectname" Content="{Binding}" />
Run Code Online (Sandbox Code Playgroud)
不知何故,这个解决方案似乎仍然不对.我的第三个解决方案是研究实现自定义DataSourceProvider.我没有成功.我无法理解数据源提供程序模型,以及在这种情况下如何使用它.
现在,我正在研究Microsoft Research发布的CodePlex"动态数据显示"项目.该项目完全是关于绘制/绘制动态数据的,但可能会有一些想法.所以我在StackOverflow上 - 通常是一个简短问题和快速答案的地方.:-)
我是WPF的新手,非常感谢任何人对这些问题的看法.请记住,此处指定的问题域已经简化,因此我需要一个强大的解决方案.实际上有许多不同类型的数据对象,每个对象具有不同的属性; 并且每个对象的数据更新速率不同,UI控件显示单个项目和项目组,数据来自多个来源,等等.
我想知道InnoDB是否是格式化表格的最佳方式?该表包含一个字段,主键,该表每天将获得816k行(est.).这将变得非常快!我正在研究文件存储方式(这会更快)吗?该表将存储已经处理过的Twitter ID的ID号?
还有,SELECT min('id')
声明中估计的内存使用量是多少?非常感谢任何其他想法!
如何使用画布html5元素从底部中心角度旋转图像?
<html>
<head>
<title>test</title>
<script type="text/javascript">
function startup() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'player.gif';
img.onload = function() {
ctx.translate(185, 185);
ctx.rotate(90 * Math.PI / 180);
ctx.drawImage(img, 0, 0, 64, 120);
}
}
</script>
</head>
<body onload='startup();'>
<canvas id="canvas" style="position: absolute; left: 300px; top: 300px;" width="800" height="800"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎是从图像的左上角旋转它.任何的想法?
编辑:最后,对象(太空飞船)必须像时钟指针一样旋转,就像它向右/向左转.
你什么时候知道重构/审查一些代码的时候了?更好的是,你什么时候做的?
可能和其他人一样,我发现自己知道某些事情需要重构/审查,但截止日期和管理层都没有时间.我还想听听您如何在一般开发过程中包含代码审查.
最近我发现自己在处理新功能/代码之前就已经这样做了.例如,如果我必须在应用程序的模块X中开发新内容或更改某些内容,我会对该模块进行代码审查.我发现它也有助于我更好地理解模块,因此我可以更轻松地进行更改.
所以你什么时候知道它的时间和时间呢?最重要的是,您如何将其纳入项目规划中?
只是一个简单的问题,如果我有一个矩阵有n行和m列,我怎么能切断矩阵的4个边并返回一个新的矩阵?(新矩阵将具有n-2行m-2列).
提前致谢
我在C中编写了一个Apache模块.在某些情况下,我可以将它转换为段错误,但我不知道为什么.此时,它可能是我的代码,它可能是我编译程序的方式,或者它可能是OS库中的错误(在调用dlopen()期间发生了段错误).
我尝试过运行GDB和Valgrind但没有成功.GDB让我对dlopen()系统调用进行了回溯,看起来毫无意义.在Valgrind中,这个bug实际上似乎消失了,或者至少变得不可重复.另一方面,对于这些工具,我完全是新手.
我对生产质量的C编程有点新兴(我多年前从C开始,但从未专业地使用它.)对于我学习调试程序的最佳方法是什么?我应该调查哪些其他工具?总之,您如何弄清楚如何应对新的bug挑战?
编辑:只是为了澄清,我想感谢Sydius和dmckee的输入.我看了一下Apache的指南,并且对dlopen(以及dlsym和dlclose)非常熟悉.我的模块大部分都工作(大约有3k行代码,只要我没有激活这一段,事情就好了.)
我想这是我原来的问题所在 - 我不知道接下来该做什么.我知道我没有充分发挥GDB和Valgrind的潜力.我知道我可能没有用正确的标志进行编译.但是我很难搞清楚.我可以找到初学者的指南,告诉我我已经知道的东西,以及告诉我超过我需要了解但没有指导的人工页面.
有没有办法在运行时识别可执行文件正在valgrind中运行?我有一组C++单元测试,其中一个期望std::vector::reserve
抛出std::bad_alloc
.当我在valgrind下运行它时,它完全挽救,阻止我测试内存泄漏(使用valgrind)和行为(期望抛出异常).
这是一个重现它的最小例子:
#include <vector>
int main()
{
size_t uint_max = static_cast<size_t>(-1);
std::vector<char> v;
v.reserve(uint_max);
}
Run Code Online (Sandbox Code Playgroud)
运行valgrind,我得到这个输出:
Warning: silly arg (-1) to __builtin_new()
new/new[] failed and should throw an exception, but Valgrind
cannot throw exceptions and so is aborting instead. Sorry.
at 0x40192BC: VALGRIND_PRINTF_BACKTRACE (valgrind.h:319)
by 0x401C823: operator new(unsigned) (vg_replace_malloc.c:164)
by 0x80487BF: std::vector<char, std::allocator<char> >::reserve(unsigned) new_allocator.h:92)
by 0x804874D: main (vg.cxx:6)
Run Code Online (Sandbox Code Playgroud)
我想修改我的单元测试,以便在从valgrind中运行时简单地跳过有问题的代码.这可能吗?
每当我尝试使用ActionLink时,我都会收到上述错误?我刚开始玩MVC并且不太了解代码的问题(下面):
<%= Html.ActionLink("Lists", "Index", "Lists"); %>
Run Code Online (Sandbox Code Playgroud)
这似乎只是一个解析问题,但只有在我运行页面时才会发生.应用程序构建完美,所以我真的不明白,因为错误是编译错误?如果我采取第25行,它将发生在下一行而不是......
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS1026: ) expected
Source Error:
Line 23: </div>
Line 24:
Line 25: <%= Html.ActionLink("Lists", "Index", "Lists"); %>
Line 26: <a href="<%= Url.Action("/", "Lists"); %>">Click here to view your lists</a>
Line 27:
Source File: d:\Coding\Playground\HowDidYouKnowMVCSoln\HowDidYouKnowMVC\Views\Home\Index.aspx Line: 25
Run Code Online (Sandbox Code Playgroud) 这很奇怪.这是一个微不足道的问题:
一个std :: string,其长度为8的倍数,前8位为:"10011100".
//Convert each 8 bits of encoded string to bytes
unsigned char c = 0;
for(size_t i = 0; i < encoded.size(); i += 8)
{
for(size_t k = 0; k < 8; k++)
{
c <<= k;
if(encoded.at(i + k) == '1') c += 1;
//Debug for first 8 bits
if(i == 0) cout << "at k = " << k << ", c = " << (int)c << endl;
}
outFile.write(reinterpret_cast<char*>(&c), sizeof(char));
}
Run Code Online (Sandbox Code Playgroud)
产量输出:
at …
Run Code Online (Sandbox Code Playgroud) c++ ×2
valgrind ×2
.net ×1
apache ×1
asp.net ×1
asp.net-mvc ×1
c ×1
c# ×1
canvas ×1
collections ×1
data-binding ×1
debugging ×1
gdb ×1
html5 ×1
indexing ×1
javascript ×1
mysql ×1
numpy ×1
python ×1
refactoring ×1
rotation ×1
twitter ×1
unit-testing ×1
vb.net ×1
wpf ×1