小编Jac*_*Kim的帖子

skype main.db - 聊天和对话之间的区别

我已经解析了Skype数据库main.db几天了,这是我还没想到的.当然,这个问题将特别针对Skype main.db结构.(免责声明)

似乎我需要的所有必要信息都在表格ConversationsMessages,Participants.

Message表包含已经说过的实际日志,收件人,时间戳和convo_id外键(尽管未强制执行)以连接到Conversation邮件所属的邮件.

Conversation存在以保存参与的聚合Message和联系人.

Participantstable适用于Conversations表和Contacts表之间的多对多连接器表.

是什么让我 ChatsChatmembers桌子.Chatmembers作品以Chats什么Participants表工程Conversations表; 连接联系人和对话 - 或"聊天".

是什么在Chats类似Conversations,只是它没有任何骨料Message表.消息日志(表行)所属的Messages表与Chats表之间的映射是不可能的Messages.

ChatsConversations共享一个外键,Conversations表有一个名为chat_dbidjoin的Chats表.但是Conversations表中的行有一个空chat_dbid字段,而不是所有的行Chats都有id对应chat_dbidChats表中字段的字段.

Chats表仍在更新中,我认识到最近我根据时间戳和其中的成员进行的一些聊天或对话.

有谁知道究竟是什么 …

database sqlite skype

7
推荐指数
1
解决办法
6768
查看次数

返回赋值表达式

当我在C#中处理一些较旧的代码时,我遇到了一个令我烦恼的代码.

没有太多的麻烦,它是这样的:

private string foo(string _text)
{
   /* some manipulation on _text */
   return _text = Server.HtmlDecode(_text);
}
Run Code Online (Sandbox Code Playgroud)

这是让我烦恼的最后一句话; 我来自C背景,我可以理解代码实际上是试图返回一个已解码的_text变量.赋值运算符的值也是左操作数,所以我可以看到它.

然而,我仍然觉得它很令人厌烦.

它是C#中的纵向练习,我需要习惯吗?

对我来说,最后一行应该是

return Server.HtmlDecode(_text);
Run Code Online (Sandbox Code Playgroud)

而不是作业表达.是否有更深入的C#功能,我不知道?

c# string return variable-assignment operator-keyword

7
推荐指数
1
解决办法
3668
查看次数

有趣的strcmp实现失败.(C)

我正在开发一个小项目,我无法访问任何C标准库.(从头开始构建一个ARM结构的微内核.甚至必须实现printf)

在这种情况下,我使用Duff的机器方法实现了strcmp.

以下是整个代码.

int
strcmp ( const char *str1, const char *str2 )
{
   while ( *str1 || *str2 )
       if ( *(str1++) != *(str2++) ) return *str1 - *str2;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是有道理的; 有些时候它似乎适用于测试用例,直到最终系统发生故障.我追查到了这个strcmp.

起初我以为它首先递增str1然后比较str2 BEFORE str2递增.事实证明不是,但有人可以确认在某些情况下会发生这种情况吗?

然后我发现问题出现在*str1 - *str2中,所以将其更改为返回1.即,结果代码如下:

   while ( *str1 || *str2 )
       if ( *(str1++) != *(str2++) ) return 1;
   return 0;
Run Code Online (Sandbox Code Playgroud)

虽然我想要的只是一个'等于'检查,所以改成'1'没有问题,但我仍然想知道为什么原始代码失败了.2.有人可以提出关于它如何失败的建议吗?我宁愿希望strcmp遵循标准的C接口,它返回一个非零值,告诉更多关于str1和str2的信息.

测试用例是:

code_t // a function pointer type
program_find ( char *program )
{
if (strcmp( program, "exit" ) == …
Run Code Online (Sandbox Code Playgroud)

c pointers character c-strings strcmp

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