我遇到MySQL的SELECT问题.. FOR UPDATE,这是我试图运行的查询:
SELECT * FROM tableName WHERE HostName='UnknownHost'
ORDER BY UpdateTimestamp asc limit 1 FOR UPDATE
Run Code Online (Sandbox Code Playgroud)
在此之后,相关的线程将执行UPDATE并更改HostName,然后它应该解锁该行.
我正在运行一个多线程java应用程序,所以3个线程正在运行这个SQL语句,但是当线程1运行它时,它不会从线程2和3锁定其结果.因此线程2和3得到相同的结果,他们可以更新同一行.
每个线程也都有自己的mysql连接.
我正在使用Innodb,事务隔离= READ-COMMITTED,并且在执行select for update之前自动提交已关闭
我可能会错过什么吗?或许还有更好的解决方案?非常感谢.
代码:
public BasicJDBCDemo()
{
Le_Thread newThread1=new Le_Thread();
Le_Thread newThread2=new Le_Thread();
newThread1.start();
newThread2.start();
}
Run Code Online (Sandbox Code Playgroud)
线程:
class Le_Thread extends Thread
{
public void run()
{
tring name = Thread.currentThread().getName();
System.out.println( name+": Debut.");
long oid=Util.doSelectLockTest(name);
Util.doUpdateTest(oid,name);
}
}
Run Code Online (Sandbox Code Playgroud)
选择 :
public static long doSelectLockTest(String threadName)
{
System.out.println("[OUTPUT FROM SELECT Lock ]...threadName="+threadName);
PreparedStatement pst = null;
ResultSet rs=null;
Connection …Run Code Online (Sandbox Code Playgroud) 今天早些时候我问了一个关于从代码配置log4net的问题,并且很快得到了答案,这使我可以将其配置为输出到文本文件.从那以后我的需求发生了变化,我需要使用SqLite作为追加器.所以我创建了以下类来允许这个:
public static class SqLiteAppender
{
public static IAppender GetSqliteAppender(string dbFilename)
{
var dbFile = new FileInfo(dbFilename);
if (!dbFile.Exists)
{
CreateLogDb(dbFile);
}
var appender = new AdoNetAppender
{
ConnectionType = "System.Data.SQLite.SQLiteConnection, System.Data.SQLite",
ConnectionString = String.Format("Data Source={0};Version=3;", dbFilename),
CommandText = "INSERT INTO Log (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)"
};
appender.AddParameter(new AdoNetAppenderParameter
{
ParameterName = "@Date",
DbType = DbType.DateTime,
Layout = new log4net.Layout.RawTimeStampLayout()
});
appender.AddParameter(new AdoNetAppenderParameter
{
ParameterName = "@Level",
DbType = DbType.String,
Layout = new log4net.Layout.RawPropertyLayout { …Run Code Online (Sandbox Code Playgroud) 就在今天,我遇到了我们正在使用的第三方软件,在他们的示例代码中,有以下几点:
// Defined in somewhere.h
static const double BAR = 3.14;
// Code elsewhere.cpp
void foo(double d)
{
if (d == BAR)
...
}
Run Code Online (Sandbox Code Playgroud)
我知道浮点数及其表示的问题,但它让我想知道是否有float == float可能会好的情况?我不是在问它什么时候可行,而是在它有意义和有效的时候.
还有,电话foo(BAR)怎么样?它总是比较相同,因为它们都使用相同的static const BAR吗?
我创建了一个XML文件,我希望它可以在我创建的HTML页面中显示.有人能告诉我怎么做.
<?xml version="1.0"?>
<Family>
<Mom>Alison</Mom>
<age>44</age>
<son>Ian</son>
<age>8</age>
<son>Seth</son>
</Family>
Run Code Online (Sandbox Code Playgroud)
我想从我的html页面中读到这个
想象一下,我有以下表格可供我使用:
A: { x: int, y: int, z: int, ...99 other columns... }
Run Code Online (Sandbox Code Playgroud)
我现在想要对此进行转换,将z其设置为NULLwhere x > y,将结果数据集存储为B.
我想这样做而不必明确提及所有其他列,因为这成为维护的噩梦.
有简单的解决方案吗?
我正在尝试构建一个由逗号分隔的列表,它应该是这样的(绿色、橙色、红色)。
$i=0;
$taxonomy = $form_state[values][taxonomy][5];
foreach ($taxonomy as $key => $value){
$result = db_query("SQL CODE goes here");
if (mysql_num_rows($result)){
while ($i<mysql_num_rows($result)){
$resultset = db_fetch_array($result);
$comma_separated = implode(",", $resultset);
$i++;
}
form_set_error("Date", t("$comma_separated. cannot be booked more than once "));
}
Run Code Online (Sandbox Code Playgroud) 我需要一种简单的方法来设置菜单项的快捷方式.
但这不适用于快捷方式,只需点击:
<MenuItem Header="Editar">
<MenuItem Header="Procurar" Name="MenuProcurar"
InputGestureText="Ctrl+F"
Click="MenuProcurar_Click">
<MenuItem.ToolTip>
<ToolTip>
Procurar
</ToolTip>
</MenuItem.ToolTip>
</MenuItem>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
我正在使用WPF 4.0
我最初认为他们都是一样的,但事实证明是错的.那么有人可以简单地解释这三者之间的差异吗?例如:
std::bind (最新一代,下一代C++)std::tr1::bind (旧的,C++ std的扩展)boost::bind (完全独立的图书馆)或者std::shared_ptr,std::tr1::shared_ptr和boost::shared_ptr,...等
更新
bind,shared_ptr是有助于澄清我的问题的例子.我的目的是了解这三个命名空间之间的一般差异.所有三个名称空间中都有几个库,显然bind是一个例子,以及shared_ptr.
我应该坚持哪些名称空间?我个人更喜欢库,std::因为它将成为C++的下一个标准(C++ 0x).
我有一个逐行读取大文件的脚本.$/我想要使用的记录分隔符()是(\n).唯一的问题是每行上的数据都包含CRLF字符(\r\n),该程序不应被视为一行的结尾.
例如,这是一个示例数据文件(写出换行符和CRLF):
line1contents\n
line2contents\n
line3\r\ncontents\n
line4contents\n
Run Code Online (Sandbox Code Playgroud)
如果我设置$/ = "\n",那么它将第三行分成两行.理想情况下,我可以只设置$/到相匹配的正则表达式\n,而不是\r\n,但我不认为这是可能的.另一种可能性是读入整个文件,然后使用split函数拆分所述正则表达式.唯一的问题是文件太大而无法加载到内存中.
有什么建议?
我在各个地方检查了一个存储库.我有一个文件夹X,它是另一个存储库的外部.我希望X是本地的.还有其他问题,但它们似乎没有遇到我的困难.
我做的是编辑了svn:externals并删除了该行.然后我提交了回购.然后我拿了文件夹,删除了.svn它中的所有条目(使其成为常规文件夹),svn add编辑它,然后提交.这很好.
但是,当我更新回购的另一个结账时,我遇到了问题.第一个错误是这样的:
UUID mismatch: existing directory XXX was checked out from a different repository.
Run Code Online (Sandbox Code Playgroud)
好的,已经svn up失败了,但我尝试删除文件夹并重新更新.现在它管理重新获取所有内容,但现在我收到一个新错误:
Can't remove file XXX: Access is denied
Run Code Online (Sandbox Code Playgroud)
我再次尝试更新,没有任何反应.我删除该文件夹中的文件并从根目录再次更新,没有任何反应.我删除了文件夹X,没有任何反应 - 所以它似乎忘了它!我唯一的办法就是删除X的根目录并svn up从一个级别下来(因为所有这些也发生在一个也是外部的子文件夹中).
不好......我不想在签出此存储库的所有站点上执行某些手动rigamarole.该怎么办?