大家早上好,
我正在为c ++寻找一种非常快速的二进制序列化技术.我只需要序列化对象中包含的数据(没有指针等).我希望它尽可能快.如果它特定于x86硬件是可以接受的.
我熟悉这样做的C方法.作为一项测试,我在板凳上标记了几种技术.我发现C方法比我实现的最好的C++方法快40%.
有关如何改进C++方法(或执行此操作的库)的任何建议?任何可用于内存映射文件的东西?
谢谢
// c style writes
{
#pragma pack(1)
struct item
{
uint64_t off;
uint32_t size;
} data;
#pragma pack
clock_t start = clock();
FILE* fd = fopen( "test.c.dat", "wb" );
for ( long i = 0; i < tests; i++ )
{
data.off = i;
data.size = i & 0xFFFF;
fwrite( (char*) &data, sizeof(data), 1, fd );
}
fclose( fd );
clock_t stop = clock();
double d = ((double)(stop-start))/ CLOCKS_PER_SEC;
printf( "%8.3f seconds\n", d ); …
Run Code Online (Sandbox Code Playgroud) 有没有人对一个好的跨平台输入库有任何建议?我想得到:
* at least keyboard and mouse input
* on at least the big three operating systems
* Small/fast
* C or C++
* permissive licensing gpl2/mit/free/etc.
Run Code Online (Sandbox Code Playgroud)
到目前为止我见过:
* OIS (used in Ogre) http://sourceforge.net/projects/wgois/
* SDL (used everywhere it seems, might be a clue) http://www.libsdl.org/index.php
* Allegro http://www.talula.demon.co.uk/allegro/readme.html
Run Code Online (Sandbox Code Playgroud)
有没有人使用过这些,或者知道其他可能有用的东西?
谢谢
我想在多个级别上从我的xml中获取不同的节点.任何人都可以给我一些提示如何做到这一点?我用Google搜索的方法(Muenchian方法,for-each-groups)用单个分组键和普通层次结构解释.
这是我的xml的一个例子:
<persons>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>x@test.com</mail>
<mail>y@test.com</mail>
</mails>
</person>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>y@test.com</mail>
<mail>z@test.com</mail>
</mails>
</person>
</persons>
Run Code Online (Sandbox Code Playgroud)
我想根据名称和年龄有不同的人员节点,还有一组不同的邮件节点.因此,对于该示例,期望的输出将是:
<persons>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>x@test.com</mail>
<mail>y@test.com</mail>
<mail>z@test.com</mail>
</mails>
</person>
</persons>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?非常感谢提前.
大家下午好,
我有一个BizTalk编排的问题,这真的很奇怪.
我的业务流程的第一个接收形状失败,并显示以下消息:
There was a failure executing the receive pipeline:
"Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines
Source: "XML disassembler"
Receive Port: "ReceiveCanonicalPort"
Reason: Finding the document specification by message type
"http://www.openapplications.org/oagis/9#ProcessInvoice" failed.
Verify the schema deployed properly.
Run Code Online (Sandbox Code Playgroud)
我把测试文档与前几行放在一起,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<ProcessInvoice
xmlns="http://www.openapplications.org/oagis/9"
releaseID="9.0"
targetNamespace="http://www.openapplications.org/oagis/9"
>
Run Code Online (Sandbox Code Playgroud)
我已经检查了什么:
我检查了架构:目标命名空间是'http://www.openapplications.org/oagis/9'根节点是'ProcessInvoice'
架构验证.
我的输入文件验证了架构.
我已经检查过部署了架构.
我查看是否有另一个具有重复命名空间和根节点的模式.
我重新启动了主机实例并重新部署了几次.
我尝试将xml反汇编程序'允许无法识别的消息'属性设置为true.这导致对象未设置为实例异常.这似乎表明它没有反序列化它.
我向伟大的神Boogie祈祷.
还有其他想法吗?
谢谢
使用动态创建的项目时是否可能获得Qt错误消息?
我已经安装了一个消息处理程序来在运行时捕获Qt输出:
qInstallMessageHandler( myMessageOutput );
Run Code Online (Sandbox Code Playgroud)
我将一个基本的qml文件加载到QQuickView中,它工作正常.如果qml源中存在错误,它们将显示在我的日志中.如果我动态创建项目并且它们包含错误,则它会在没有任何消息的情
我创建这样的动态对象:
var component = Qt.createComponent( "config.qml" );
var dlg = component.createObject( parentId, {} );
Run Code Online (Sandbox Code Playgroud)
我收到的唯一错误如下:
'qml\qqmlcomponent.cpp':845 function: 'QObject* QQmlComponentPrivate::beginCreate(QQmlContextData*)'|Qt Warning: QQmlComponent: Component is not ready
Run Code Online (Sandbox Code Playgroud)
此错误是针对它尝试加载的qml中的任何类型的问题编写的.
背景:
我试图使用nHibernate时遇到映射失败.该应用程序由几个程序集组成.其中一个程序集是一个有用的例程库,另一个是使用该库的应用程序代码.库程序集将自身添加到nHibernate配置中,但由于它不了解其他程序集,因此不会添加它们.我的xml映射文件位于应用程序程序集中.我认为它没有找到它,因为它没有查看应用程序集.
问题: 您是否可以映射到任意程序集中的类而不将其添加到配置中?
如果没有,您可以在运行时添加映射吗?
谢谢
ps我确实确保映射文件被标记为嵌入式资源
更新 - 2009年4月3日
我更改了底层库以允许在初始化时添加程序集.这似乎很有效.
我想要实现的目标:
一种可视指示,用于引起对QListView中新添加项目的注意.我想到了背景颜色'悸动'一次(从颜色渐变到背景).
设置
我有一个模型/视图使用QListView显示QStandardItems.Qt版本4.7
我尝试过的:
我创建了一个派生自QStyledItemDelegate的新类.我有自己的绘制方法来渲染项目.那部分有效.我创建了一个QTimeLine对象并将其设置为创建事件以重绘项目.
我无法弄清楚如何触发QListView项目的重绘.
在项委托构造函数中:
timeLine = new QTimeLine( 3000, this );
timeLine->setFrameRange( 100, 0 );
connect( timeLine, SIGNAL( frameChanged( int ) ), this, SLOT( update() ) );
timeLine->start();
Run Code Online (Sandbox Code Playgroud)
我尝试连接到sizehintChanged事件,但这不起作用
void myDelegate::update()
{
const QModelIndex index;
emit QStyledItemDelegate::sizeHintChanged( index );
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?这可以用样式表来完成吗?
下午好,
我正在尝试在发送端口中设置输出文件名,并且可用的文件名宏将无法正常工作.
我需要"file.YYYYMMDD_HHMMSS"形式的东西.有一个日期时间组合宏(格式错误),一个仅限时间的宏,但没有仅限日期的宏.
我没有这个过程的编排.
有什么办法可以在地图或管道中设置文件名吗?
谢谢!