昨天我在考虑是否可以使用C++ 0x lambda函数的便利来为Windows API函数编写回调.
例如,如果我想将lambda用作EnumChildProcwith ,该EnumChildWindows怎么办?就像是:
EnumChildWindows(hTrayWnd, CALLBACK [](HWND hWnd, LPARAM lParam) {
// ...
return static_cast<BOOL>(TRUE); // continue enumerating
}, reinterpret_cast<LPARAM>(&myData));
Run Code Online (Sandbox Code Playgroud)
另一个用途是extern "C"为C例程编写回调.例如:
my_class *pRes = static_cast<my_class*>(bsearch(&key, myClassObjectsArr, myClassObjectsArr_size, sizeof(my_class), extern "C" [](const void *pV1, const void *pV2) {
const my_class& o1 = *static_cast<const my_class*>(pV1);
const my_class& o2 = *static_cast<const my_class*>(pV2);
int res;
// ...
return res;
}));
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我可以理解捕获变量的lambdas永远不会与C兼容,但至少对我来说似乎可以捕获 - 没有任何 lambda可以兼容.
在我正在处理的Web应用程序中,我尝试了iOS 7.1的新minimal-ui功能(请参阅带有minimal-ui元标记的iOS 7.1中的safari全屏),但我发现了一个问题,即出现了84px高的灰色区域我从画像切换到风景时的底部.此外,document.body.scrollTop切换到横向后更改为64.
您可以使用此"Hello World"Web应用程序查看该问题:http://www.creativepulse.gr/media/blog/2014/20140123-hello-world/example.html
当我在iOS 7.1 iPhone Retina Simulator上的Mobile Safari中加载应用程序时,在纵向模式下一切都很好.但是,切换到横向时,会立即出现灰色区域.
解决此问题的好方法是什么?
有什么技术可以调试Windows Metro风格应用程序中的数据绑定问题?是否有类似于WPF和Silverlight应用程序的技术,如下所述:
编辑:我最初询问WinRT数据绑定调试技术,以便我可以解决Metro中描述的问题:为什么从XAML绑定到代码隐藏中定义的属性不起作用?.我最终找到了解决这个问题的方法,但是在尝试使用工作解决方案时,我没有在Visual Studio 11输出窗口中看到任何消息,因为我故意拼写错误的属性名称,以便找不到它.它似乎也不PresentationTraceSources适用于WinRT应用程序.
我有一个基于Web的数据服务的MySQL连接池.当它开始为请求提供服务时,它需要从池中连接才能使用.问题是如果自从使用该特定连接以来已经存在显着的暂停,则服务器可能已经将其计时并且关闭其结束.我希望能够在池管理代码中检测到这一点.
诀窍是:我编码的环境只给我一个非常抽象的API连接.我基本上只能执行SQL语句.我无权访问实际的套接字或直接访问MySQL客户端API.
所以,问题是:我可以在连接上执行哪个最便宜的MySQL语句,以确定它是否正常工作.比如SELECT 1;应该工作,但我想知道是否有更便宜的东西?也许某些东西甚至没有通过网络,但在MySQL客户端库中处理并有效地回答相同的问题?
澄清:我不关心检查MySQL服务器是否正在运行,或者它的数据库配置是否足以回答查询.如果这些事情发生故障,那么服务执行的后续SQL将获取并处理相应的错误.我真的只关心TCP连接是否打开...因为如果服务器关闭它,那么Web服务的SQL将收到一个错误,意味着"只需重新连接并再试一次",这样就不方便了.服务代码的渣土.
关闭:该/* ping */黑客正是那种我一直在寻找的东西,但可惜只能通过JDBC.通过文档阅读该hack,很明显它被放在那里的原因与我想要的完全相同.对于好奇,我在Haskel工作,使用HDBC和HDBC-mysql.我将要求HDBC-mysql的作者添加一种mysql_ping()直接或通过类似黑客调用的方法.
Vlad's DO 1也是我追求的那种东西,而且由于另一个hack在JDBC之外是不可用的,我将使用它.
感谢所有精彩的讨论,特别是@Vlad!
Serializable Isolation Level上的PostgreSQL手册页指出:
[Like]可重复读取级别,使用此级别的应用程序必须准备好因序列化失败而重试事务.
在可重复读取或可序列化级别遇到序列化失败的条件是什么?
我尝试使用两个psql运行实例来引发序列化失败,但即使事务是由一个实例提交的,另一个实例在可序列化级别的事务中,而另一个实例在提交其更改时成功.两者都只是将记录插入表中,所以也许我需要尝试更复杂的东西.
基本上我试图了解在序列化失败的情况下会发生什么以及如何出现序列化失败.
我有两个打开的文件对象,dest和src.dest打开文件对象进行写入,将搜索位置放在文件中的某个偏移处,src打开文件对象进行读取.我需要做的只是从当前位置读取src到EOF并dest尽可能快地传输内容.
如果我使用Java编程,我可以利用该FileChannel#transferTo()方法执行零拷贝文件I/O.
Python也支持零拷贝吗?
假设我有以下(PostgreSQL)表定义:
CREATE TABLE books (
id serial NOT NULL,
title character varying NOT NULL,
PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
以下记录定义:
data Book =
{ id :: Int
, title :: String
}
Run Code Online (Sandbox Code Playgroud)
查询数据库中所有书籍的"取消映射"功能的基本示例是什么allBooks :: Database -> IO [Book]?
我是一名学习Haskell的Java程序员.
我在一个小型网络应用程序上工作,该应用程序使用Happstack并通过HDBC与数据库进行通信.
我编写了select和exec函数,我就像这样使用它们:
module Main where
import Control.Exception (throw)
import Database.HDBC
import Database.HDBC.Sqlite3 -- just for this example, I use MySQL in production
main = do
exec "CREATE TABLE IF NOT EXISTS users (name VARCHAR(80) NOT NULL)" []
exec "INSERT INTO users VALUES ('John')" []
exec "INSERT INTO users VALUES ('Rick')" []
rows <- select "SELECT name FROM users" []
let toS x = (fromSql x)::String
let names = map (toS . head) rows
print names …Run Code Online (Sandbox Code Playgroud) 是否有一个等同于RtlSecureZeroMemory/ 的Mac OS X SecureZeroMemory,一个将一块内存归零的函数,但编译器不会优化调用?