我经常读到BinaryFormatter比XmlSerializer具有更好的性能.出于好奇,我写了一个测试应用程序.
一个wtf时刻......为什么Xml比Bin快得多(特别是反序列化)?
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Xml.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace SerPlayground
{
class Program
{
static void Main(string[] args)
{
var items = new List<TestClass>();
for (int i = 0; i < 1E6; i++)
{
items.Add(new TestClass() { Name = i.ToString(), Id = i });
}
File.Delete("test.bin");
using (var target = new FileStream("test.bin", FileMode.OpenOrCreate))
{
System.Threading.Thread.Sleep(1000);
var bin = new BinaryFormatter();
var start = DateTime.Now;
bin.Serialize(target, items);
Console.WriteLine("Bin: {0}", (DateTime.Now - start).TotalMilliseconds);
target.Position = 0; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用g ++编译器在Windows上编译我的第一个c ++文件...
我的cpp文件如下 -
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在命令提示符下键入此命令以进入该目录
cd C:\Users\Mark
Run Code Online (Sandbox Code Playgroud)
然后编译我的程序
g++ hello.cpp
Run Code Online (Sandbox Code Playgroud)
它创建了一个文件名a.exe(默认)但是当我点击它时,命令提示符会快速闪烁然后它就消失了.
我做错了什么?应该说Hello World!在提示上并留在那里,对吧?
为了清理一个巨大的烂摊子的事,我开始把我的测试代码都在一个普通的Java项目(所有的src/main/JAVA),然后声明,作为一个<scope>test</scope>在另一个项目的依赖,并期待要运行的测试.
没有这样的运气.surefire想要运行它可以在源代码中看到的测试.
我可以看到一个可悲的是显而易见的解决方案在这里涉及构建辅助性插件,并添加测试到测试编译环境为源目录,但我希望避免它.
如果你想知道,这一切的原因是,使用故障安全插件的运行一些集成测试的POM的配置有这么复杂,我想从测试的运行打出了测试类的编译.
我在使用下面的脚本处理文本编辑器时遇到了一些困难.我不确定是什么问题,但selectionStart和selectionEnd返回未定义.
它假设在可编辑的iframe中获得突出显示的文本,然后替换它.
var textarea = document.getElementById('editor').contentWindow.document.body.innerHTML;
if (document.selection)
{
textarea.focus();
var sel = document.selection.createRange();
alert(sel.text);
sel.text = '<b>' + sel.text + '</b>';
} else {
var len = textarea.length;
alert(len);
var start = textarea.selectionStart;
alert(start);
var end = textarea.selectionEnd;
alert(end);
var sel = textarea.substring(start, end);
alert(sel);
var replaced = '<b>' + sel + '<b>';
textarea = textarea.substring(0,start) + replaced + textarea.substring(end,len);
}
Run Code Online (Sandbox Code Playgroud) 对于Web应用程序,我使用Ruby on Rails.现在是时候看看我是否可以使用Ruby编写桌面应用程序.
所以我想知道我应该选择哪一个.
我看到它的方式是MacRuby + IronRuby vs JRuby.
前者让我可以同时使用Mac和Windows的桌面应用程序,而后者可以同时使用,但只能学习一种工具.
使用前者是否有强烈的论据而不是后者?
JRuby桌面应用程序是否与MacRuby + IronRuby桌面应用程序一样本机(或接近本机)?
每种解决方案的优缺点是什么?
我也非常新的桌面开发.分享您的想法和经验!
我正在寻找在我的网站上插入文本编辑器/制作一个简单的编辑器.如果它不太难,我宁愿做一个.
我的想法是我有一个插入数据库的文本区域,我想要查看的文本完全相同,一旦它被拉回来就被用户输入,希望再次信息相同的文本区域编辑.有点像这个问题窗口.
所以我读过它ActualWidth可能等于0,直到满载为止.我添加了它的事件处理程序,以确保它已完全加载:
text.AddHandler(TextBlock.LoadedEvent, new RoutedEventHandler(textBlock_Loaded));
Run Code Online (Sandbox Code Playgroud)
在这种情况textBlock_Loaded下,我有:
TextBlock tb = sender as TextBlock;
textBlockWidth = tb.ActualWidth;
Run Code Online (Sandbox Code Playgroud)
我需要textBlockWidth在main方法中使用变量,但每次我在我的Main方法中写入textBlockWidth的值时,我得到0.
所以这个问题是,ActualWidth在执行我的操作之前,如何确保不是0?由于WPF是事件驱动的,有没有一种方法可以在完成时触发某些方法,而不是之前?否则,它将返回0.
我试图通过JSONP获取一些数据.使用Firebug,我能够正确地看到数据被返回,但我很难想到我必须解析它.数据返回真的是嵌套数组正确吗?someFunction是回调函数的名称.这是数据的外观:
someFunction([
{
"title":"Sample Title",
"link":"http://example.com",
"description":"Sample Description",
"publisher":"Sample Publisher",
"creator":"Sample Author",
"date":"Thu, 19 Aug 2010 12:41:29 GMT",
"num_pages":10,
"num_results":"10"
},
]);
Run Code Online (Sandbox Code Playgroud)
关于如何正确解析和输出有点困惑.
所以这是我拥有的XAML:
<ItemsControl ItemsSource="{Binding Path=Groups}" ItemTemplateSelector="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=ListTemplateSelector}"/>
Run Code Online (Sandbox Code Playgroud)
这是我的ListTemplateSelector类:
public class ListTemplateSelector : DataTemplateSelector {
public DataTemplate GroupTemplate { get; set; }
public DataTemplate ItemTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
GroupList<Person> list = item as GroupList<Person>;
if (list != null && !list.IsLeaf)
return GroupTemplate;
return ItemTemplate;
}
}
Run Code Online (Sandbox Code Playgroud)
GroupTemplate数据模板本身引用了ListTemplateSelector,所以这就是我设置的原因.这是我可以放在一起的唯一递归黑客.但这不是我遇到的问题.
我的问题是,我想在IsLeaf属性更改时从ItemTemplate更改为GroupTemplate.这是第一次读取房产以来的第一次.但是一旦此属性更改,模板选择器就不会重新应用.现在,我可以使用触发器绑定到值并适当地设置项目模板,但我需要能够为每个项目设置不同的模板,因为它们可能处于不同的状态.
例如,假设我有一个像这样的组列表:
第1组:IsLeaf = false,因此template = GroupTemplate
第2组:IsLeaf = true,因此template = ItemTemplate
第3组:IsLeaf = false,因此template = GroupTemplate
一旦组1的IsLeaf属性更改为true,模板就需要自动更改为ItemTemplate.
编辑:
这是我的临时解决方案.有更好的方法吗?
<ItemsControl ItemsSource="{Binding Path=Groups}">
<ItemsControl.ItemTemplate> …Run Code Online (Sandbox Code Playgroud)