我有一个Sqlite数据库,我想在其中选择TIMESTAMP列中的值在某个特定日期之前的行.我认为这很简单,但我无法完成.我试过这个:
SELECT * FROM logged_event WHERE logged_event.CREATED_AT < '2010-05-28 16:20:55'
Run Code Online (Sandbox Code Playgroud)
和日期函数一样,它有各种变化.我已经阅读了http://sqlite.org/lang_datefunc.html和http://www.sqlite.org/datatypes.html,我希望该列是一个数字类型,并且比较将在unix时间戳值.显然不是.有谁可以提供帮助?如果重要的话,我在Sqlite Expert Personal中尝试这个.
编辑:
这是类型表描述:
CREATE TABLE [logged_event]
(
[id] INTEGER NOT NULL PRIMARY KEY,
[created_at] TIMESTAMP,
[name] VARCHAR(64),
[data] VARCHAR(512)
);
Run Code Online (Sandbox Code Playgroud)
并且测试数据:
INSERT INTO table VALUES(1,'2010-05-28T15:36:56+0200','test','test');
INSERT INTO table VALUES(2,'2010-05-28T16:20:49+0200','test','test');
INSERT INTO table VALUES(3,'2010-05-28T16:20:51+0200','test','test');
INSERT INTO table VALUES(4,'2010-05-28T16:20:52+0200','test','test');
INSERT INTO table VALUES(5,'2010-05-28T16:20:53+0200','test','test');
INSERT INTO table VALUES(6,'2010-05-28T16:20:55+0200','test','test');
INSERT INTO table VALUES(7,'2010-05-28T16:20:57+0200','test','test');
Run Code Online (Sandbox Code Playgroud) 考虑以下简化示例和所需输出:
class A
{
class combined_iterator
{
????
}
typedef ??? t_combined_it;
t_combined_it begin();
t_combined_it end();
std::vector<int> m_Vec1, m_Vect2;
}
A a;
a.m_Vec1.push_back(1);
a.m_Vec2.push_back(2);
for (A::t_combined_it it = a.begin() ; it != a.end() ; it++) {
std::cout << *it << " ";
}
Run Code Online (Sandbox Code Playgroud)
输出:
1 2
Run Code Online (Sandbox Code Playgroud)
我认为问题很清楚:我如何编写一个迭代器,使它看起来好像两个或多个其他迭代器实际上只是一个序列.因此,在示例中,我可以使用迭代器,而不是迭代m_Vec1和m_Vec2,迭代器首先迭代m_Vec1和m_Vec2的元素.
我发现以下问题我认为是相同的:创建一个遍历2个容器的c ++迭代器.这个问题没有好的答案; 原始提问者提出的解决方案似乎很复杂,而且(相对)内存密集型.
我通过将std :: vector :: iterator保持为我的自定义迭代器的成员,并将其与迭代的每个序列的.end()迭代器进行比较,尝试了一种天真的方法; 然而,似乎比较来自不同容器的迭代器是非法的(我希望它们只是为了返回'不相等' - 也许这是找到这个问题的解决方案的方向?我想不出如何但是要实现它.
在可能的情况下,如果相关,我想使用boost :: iterators,因为我在别处使用它们,我喜欢它为我的迭代器实现提供的同质性; 但是当然如果有人在不使用它们的情况下有想法,我可以自己动手,所以在这个意义上它们不是必需的.
现在shared_ptr
是在tr1中,您认为应该如何使用std::auto_ptr
?它们都有不同的用例,但所有用例auto_ptr
都可以解决shared_ptr
.auto_ptr
如果您想明确表达只有一个类在任何给定点拥有所有权,您会放弃或继续使用它吗?
我的看法是使用auto_ptr
可以增加代码的清晰度,正是通过添加细微差别和代码设计的指示,但另一方面,它在培训新程序员时又增加了另一个微妙的问题:他们需要理解智能指针和他们如何工作的细节.当你在任何地方只使用一个智能指针时,你可以放下一个规则"将所有指针包裹起来shared_ptr
"并完成它.
你对此有何看法?
在Visual Studio 2003中,您可以使用Ctrl+ K,Ctrl+ 跳转到下一个书签N; 它保留在同一个文件中,当文件中没有更多的书签时,它会被包裹到文件的顶部.现在在VS 2008中,这似乎已经改变了,Ctrl+ K,Ctrl+ N跳转到带有书签的其他文件.我怎样才能将其改回原来的行为?
我有一个节点的无线网状网络,每个节点都能够向其邻居报告它的"距离",以(简化的)信号强度测量它们.节点在地理上位于3d空间中,但由于无线电干扰,节点之间的距离不需要三角(三角)?一致.即,给定节点A,B和C,A和B之间的距离可以是10,A和C之间的距离也是10,但是在B和C 100之间.
我想要做的是根据节点的连接性来可视化逻辑网络布局,即包括视觉中节点之间的逻辑距离.
到目前为止,我的研究表明,多维缩放(MDS)就是针对这种事情而设计的.鉴于我的数据可以直接表示为2d距离矩阵,它甚至是更通用的MDS的更简单形式.
现在,似乎有许多MDS算法,例如http://homepage.tudelft.nl/19j49/Matlab_Toolbox_for_Dimensionality_Reduction.html和http://tapkee.lisitsyn.me/.我需要在C++中这样做,我希望我可以使用现成的组件,即不必从纸上重新实现算法.所以,我认为这是:https://sites.google.com/site/simpmatrix/将成为故障单.它有效,但是:
布局不稳定,即每次重新运行算法时,节点的位置都会发生变化(请参阅下面的图像1和2之间的差异 - 这是因为已经运行两次,没有任何进一步的更改).这是由于初始化矩阵(包含每个节点的初始位置,算法然后迭代地校正)传递给该算法 - 我传递一个空的矩阵,然后实现派生一个随机的.通常,布局确实接近我从给定输入数据预期的布局.此外,在不同的运行之间,节点的方向(顺时针或逆时针)可以改变.见下面的图3.
我认为很明显的"解决方案"是传递一个稳定的默认初始化矩阵.但是当我把所有节点放在同一个地方时,它们根本就没有被移动; 当我把它们放在一个轴上时(节点0在0,0;节点1在1.0;节点2在2.0等),它们只沿那个轴移动.(见下图4).但是它们之间的相对距离是可以的.
因此,似乎此算法仅更改节点之间的距离,但不会更改其位置.
感谢您阅读这一点 - 我的问题是(我很高兴只得到一个或几个回答,因为他们每个人都可能会给我一个关于继续前进方向的线索):
如果所有其他方法都失败了,我的下一个选择就是使用我上面提到的算法,增加迭代次数以保持运行之间的差异在几个像素左右(我必须试验需要多少次迭代)然后,"旋转"节点0周围的每个节点,例如,从左到右对齐水平线上的节点0和1; 这样,在通过MDS算法确定它们的相对距离之后,我将"校正"点的位置.我还必须纠正每个节点周围的连接节点(顺时针或逆时针)的顺序.这可能会很快变得毛茸茸.
显然我更喜欢稳定的算法解决方案 - 增加迭代以平滑随机性并不是非常可靠.
谢谢.
编辑:我被提到cs.stackexchange.com并在那里做了一些评论; 有关算法建议,请参阅https://cs.stackexchange.com/questions/18439/stable-multi-dimensional-scaling-algorithm.
图1 - 随机初始化矩阵:
图2 - 运行相同的输入数据后,与1相比旋转:
图3 - 与之前的2相同,但节点1-3在另一个方向:
图4 - 在一条线上的节点的初始布局,它们在y轴上的位置不会改变:
我需要从桌面应用程序向服务器上传可能较大的(如10英寸到100英镑的兆字节)文件.服务器代码是用PHP编写的,桌面应用程序是用C++/MFC编写的.我希望能够在上传失败一半时恢复文件上传,因为该软件将用于不可靠的连接.我有什么选择?我发现了许多用于C++的HTTP上传组件,例如http://www.chilkatsoft.com/refdoc/vcCkUploadRef.html看起来很棒,但它似乎没有处理半完成上传的'恢复'(我认为这是因为HTTP 1.1不支持它).我也看了BITS服务但是对于上传它需要一个IIS服务器.到目前为止,我唯一的选择似乎是将我想要上传的文件切换成较小的部分(比如每个1兆),将它们全部上传到服务器,用PHP重新组装它们并运行校验和以查看是否一切正常.要恢复,我需要在上传开始时进行某种形式的"握手",以找出服务器上已有的部分.我是否需要手动编写代码或者是否有人知道为我做这一切的库,或者甚至是完全不同的解决方案?一世'
我正在使用TinyXML来解析/构建XML文件.现在,根据文档,该库通过UTF-8支持多字节字符集.到目前为止,我认为这么好.但是,库提供的唯一API(用于获取/设置元素名称,属性名称和值,...使用字符串的所有内容)是通过std::string
或const char*
.这让我怀疑自己对多字节字符集支持的理解.如何只支持8位字符的字符串包含16位字符(除非它使用代码页,这将否定'支持Unicode'声明)?我理解你理论上可以采用一个16位的代码点并将其分成2个字符std::string
,但这不会改变std::string
对于'Unicode'字符串,它会使其在大多数情况下无效,并且在写入文件并由另一个程序读入时可能会意外地工作.
那么,有人可以向我解释一个库如何提供一个'8位接口'(std::string
或const char*
)并仍然支持'Unicode'字符串?
(我可能在这里混淆了一些Unicode术语;对于任何来自此的混淆感到抱歉).
我正在寻找一种必须编写和维护某种算法(实际上是我的代码的图形渲染子模块)的方法.我需要C++,PHP和Javascript中的算法.从理论上讲,我可以用C++编写它并将其包装到PHP扩展中; 但这本身有很多问题,并没有解决Javascript链接.
我认为,我正在寻找的是一种工具,它可以将语言(无论哪一种)转换为三种(或两种,如果源语言是三种语言之一)输出语言.我发现MetaL(http://www.meta-language.net/)似乎做了我想做的事情,但看起来也死了(自2007年以来没有更新),只针对我需要的三种语言中的一种.它需要非常灵活,并允许我更新结果 - 例如,我在我的C++和PHP渲染中使用Cairo,在Javascript端使用HTML Canvas.所以我需要为API定制某些特效.
或者,我会选择一个PHP解析器和词法分析器,它会给我一个AST,它有足够的信息让我为C++和Javascript编写生成器作为替代后端.
有任何想法吗?谢谢.
我一直在他们的Stream 2.0测试版中使用ATI OpenCL实现.目前测试版中的OpenCL仅使用CPU,下一版本应该支持GPU内核.我下载了Stream,因为我的工作机器上有一个ATI GPU.
我编写的软件可以通过使用GPU从收益中获益匪浅.然而,这个软件在客户机器上运行,我没有奢侈品(正如许多科学计算环境所拥有的那样)选择要开发的精确硬件,并为此进行优化.所以我的问题是,如果我用我的应用程序分发ATI OpenCL实现,这是否意味着它永远无法使用例如NVidia视频卡?如果我使用NVidia OpenCL SDK,它将无法在AMD芯片上运行最佳(考虑到ATI/AMD链接)?
换句话说,谁最终负责提供OpenCL实现?用户是否能够为他们的NVidia视频卡安装OpenCL'驱动程序',以及能够在AMD CPU上获得最佳性能的"驱动程序"?
顺便说一句,除了Khronos留言板之外,OpenCL还有什么好的/积极的支持论坛,还是去的地方?我已经看到ATI有一个主板,NVidia可能有自己的主板,OpenCL用户/开发者社区在哪里闲逛?它已经合并到一个地方了吗?
有没有一种简单的方法可以将数字1,2,3,...转换为"第一","第二","第三",......,并且这样我可以给函数一个语言并且有它会返回我正在定位的语言的正确形式吗?标准C++(stl或boost OK),MFC或ATL,win32 api或者我可以从某个地方下载的小型,单用且免费的库.谢谢.