小编jlu*_*rad的帖子

多线程Java应用程序中的SQLite

我编写了一个java应用程序,它偶尔会将事件从多个线程记录到SQLite数据库中.我注意到我可以通过同时生成少量事件来相对容易地触发SQLite的"数据库锁定"错误.这促使我编写了一个模拟最坏情况行为的测试程序,我很惊讶SQLite在这个用例中的表现有多糟糕.下面发布的代码只是将五条记录添加到数据库中,首先按顺序获取"控制"值.然后同时添加相同的五个记录.

import java.sql.*;

public class Main {
   public static void main(String[] args) throws Exception {
      Class.forName("org.sqlite.JDBC");
      Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");

      Statement stat = conn.createStatement();
      stat.executeUpdate("drop table if exists people");
      stat.executeUpdate("create table people (name, occupation)");
      conn.close();

      SqlTask tasks[] = {
         new SqlTask("Gandhi", "politics"),
         new SqlTask("Turing", "computers"),
         new SqlTask("Picaso", "artist"),
         new SqlTask("shakespeare", "writer"),
         new SqlTask("tesla", "inventor"),
      };

      System.out.println("Sequential DB access:");

      Thread threads[] = new Thread[tasks.length];
      for(int i = 0; i < tasks.length; i++)
         threads[i] = new Thread(tasks[i]);

      for(int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

java sqlite jdbc locked

20
推荐指数
2
解决办法
2万
查看次数

Postgresql批量插入或忽略

我有责任将代码从sqlite切换到postgres.我遇到问题的其中一个查询将在下面复制.

INSERT INTO group_phones(group_id, phone_name)
SELECT g.id, p.name 
FROM phones AS p, groups as g
WHERE g.id IN ($add_groups) AND p.name IN ($phones);
Run Code Online (Sandbox Code Playgroud)

当存在重复记录时会出现问题.在此表中,两个值的组合必须是唯一的.我在其他地方使用了一些plpgsql函数来执行更新或插入操作,但在这种情况下,我可以一次执行多个插入操作.我不知道如何为此编写存储例程.感谢所有sql大师的帮助!

sql postgresql plpgsql duplicate-removal postgresql-9.1

5
推荐指数
1
解决办法
2423
查看次数

返回值优化和私有拷贝构造函数

我写了一个简单的链接列表,因为最近的一次访谈编程挑战向我展示了我的C++有多么生疏.在我的列表中,我声明了一个私有拷贝构造函数,因为我想明确避免制作任何副本(当然还有懒惰).当我想通过拥有我的一个列表的值返回一个对象时,我遇到了一些麻烦.

class Foo
{
   MyList<int> list;  // MyList has private copy constructor

   public:
      Foo() {};
};

class Bar
{
   public:
      Bar() {};

      Foo getFoo()
      {
         return Foo();
      }
};
Run Code Online (Sandbox Code Playgroud)

当我尝试按值返回Foo对象时,我收到编译器错误,指出MyList有一个私有拷贝构造函数.Return-Value-Optimization是否应该否定任何复制的需要?我需要写一个复制构造函数吗?在我开始寻找这个问题的解决方案之前,我从未听说过移动构造器,这是最好的解决方案吗?如果是这样,我将不得不阅读它们.如果没有,解决这个问题的首选方法是什么?

c++

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