小编Swa*_*rma的帖子

计算非常大的表中的确切行数的最快方法?

我遇到的文章表明,SELECT COUNT(*) FROM TABLE_NAME当表有很多行和很多列时会很慢.

我有一个表可能包含数十亿行[它有大约15列].有没有更好的方法来获得表的行数的精确计数?

请在回答之前考虑以下事项:

  • 我正在寻找独立于数据库供应商的解决方案.如果它涵盖MySQL,Oracle,MS SQL Server,那就没关系.但如果确实没有数据库供应商独立解决方案,那么我将为不同的数据库供应商寻求不同的解决方案.

  • 我不能使用任何其他外部工具来做到这一点.我主要是在寻找基于SQL的解决方案.

  • 我无法进一步规范我的数据库设计.它已经在3NF,而且已经编写了很多代码.

sql database

221
推荐指数
11
解决办法
47万
查看次数

有效Java中的生成器模式

我最近开始阅读Joshua Bloch撰写的Effective Java.我发现Builder模式的概念[书中的第2项]非常有趣.我试图在我的项目中实现它,但有编译错误.以下是我试图做的事情:

具有多个属性及其构建器类的类:

public class NutritionalFacts {
    private int sodium;
    private int fat;
    private int carbo;

    public class Builder {
        private int sodium;
        private int fat;
        private int carbo;

        public Builder(int s) {
            this.sodium = s;
        }

        public Builder fat(int f) {
            this.fat = f;
            return this;
        }

        public Builder carbo(int c) {
            this.carbo = c;
            return this;
        }

        public NutritionalFacts build() {
            return new NutritionalFacts(this);
        }
    }

    private NutritionalFacts(Builder b) {
        this.sodium = b.sodium;
        this.fat = b.fat;
        this.carbo …
Run Code Online (Sandbox Code Playgroud)

java design-patterns builder-pattern

136
推荐指数
6
解决办法
11万
查看次数

在接口中受保护

为什么interface定义中的所有方法都是隐含的public?为什么它不允许protected方法?

java interface

101
推荐指数
8
解决办法
4万
查看次数

Java 7中的闭包

什么是关闭?它应该包含在Java 7中.(已经讨论了封装包含在Java 7中,但最终没有包括在内.-ed)任何人都可以向我提供一些可靠的参考资料,我可以从中学习有关闭包的内容吗?

java closures

99
推荐指数
5
解决办法
12万
查看次数

防止API中的System.exit()

System.exit()如果遇到异常,我正在使用第三方库.我正在使用jar中的API.无论如何,我可以阻止System.exit()调用,因为它导致我的应用程序关闭?System.exit()由于许多其他许可问题,我无法在删除之后反编译并重新编译jar .我曾经在stackoverflow中遇到过[我不记得的其他问题]的答案,我们可以使用SecurityManagerJava来做这样的事情.

java securitymanager

35
推荐指数
3
解决办法
1万
查看次数

为什么java.util.List不能实现Serializable?

那为什么java.util.List没有实现Serializable,而像子类LinkedList,Arraylist怎么办?它似乎不是违反继承原则吗?例如,如果我们想通过网络发送Linkedlist,我们必须写:

new ObjectOutputStream(some inputStream).writeObject(some LinkedList);
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都那么好,但在阅读另一方面的对象时,我们必须明确地说LinkedList l = (LinkedList)objectInputStream.readObject();而不是List l = (List)objectInputStream.readObject();.如果我们曾经更改编辑功能,从LinkedList地说ArrayList,我们也将不得不改变阅读部分.拥有List工具Serializable可以解决问题.

java collections inheritance serialization list

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

是否必须使用hibernate.cfg.xml文件进行配置

我不想拥有hibernate.cfg.xml文件.相反,我想通过我的代码进行所有配置,如下所示.

private static final SessionFactory factory;
private static final Properties properties;

static
{
    properties = new Properties();
    properties.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
    properties.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/books");
    properties.setProperty("hibernate.connection.username", "jhtp7");
    properties.setProperty("hibernate.connection.password", "password");
    properties.setProperty("hibernate.show_sql", "com.mysql.jdbc.Driver");
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");

    factory = new Configuration().setProperties(properties).configure().
                            buildSessionFactory();
}
Run Code Online (Sandbox Code Playgroud)

我尝试过上述方法.但我面临的问题是,hibernate抛出一个异常说" ./hibernate.cfg.xml file missing".

保留hibernate.cfg.xml文件真的是强制性的吗?

提前致谢

configuration hibernate

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

使用JDBC将CSV复制到具有自定义类型数组的Postgres

我在我的数据库中定义了一个自定义类型

CREATE TYPE address AS (ip inet, port int);
Run Code Online (Sandbox Code Playgroud)

以及在数组中使用此类型的表:

CREATE TABLE my_table (
  addresses  address[] NULL
)
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下内容的示例CSV文件

{(10.10.10.1,80),(10.10.10.2,443)}
{(10.10.10.3,8080),(10.10.10.4,4040)}
Run Code Online (Sandbox Code Playgroud)

我使用以下代码片段来执行我的COPY:

    Class.forName("org.postgresql.Driver");

    String input = loadCsvFromFile();

    Reader reader = new StringReader(input);

    Connection connection = DriverManager.getConnection(
            "jdbc:postgresql://db_host:5432/db_name", "user",
            "password");

    CopyManager copyManager = connection.unwrap(PGConnection.class).getCopyAPI();

    String copyCommand = "COPY my_table (addresses) " + 
                         "FROM STDIN WITH (" + 
                           "DELIMITER '\t', " + 
                           "FORMAT csv, " + 
                           "NULL '\\N', " + 
                           "ESCAPE '\"', " +
                           "QUOTE '\"')";

    copyManager.copyIn(copyCommand, reader);
Run Code Online (Sandbox Code Playgroud)

执行此程序会产生以下异常:

Exception in thread …
Run Code Online (Sandbox Code Playgroud)

java database postgresql jdbc postgresql-9.5

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

为什么Map不扩展Collection接口

为什么java.util.Map接口不扩展java.util.Collection接口?不是java.util.MapKey-Value对的集合吗?

java collections map

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

Java ThreadPoolExecutor:动态更新核心池大小会间歇性地拒绝传入的任务

我遇到了一个问题,如果我ThreadPoolExecutor在创建池后尝试将 a的核心池大小调整为不同的数字,然后间歇性地,RejectedExecutionException即使我从未提交超过queueSize + maxPoolSize数量的任务,某些任务也会被拒绝。

我试图解决的问题是扩展ThreadPoolExecutor它,根据线程池队列中的挂起执行来调整其核心线程的大小。我需要这个,因为默认情况下,只有当队列已满时,aThreadPoolExecutor才会创建一个新的Thread

这是一个小型的自包含 Pure Java 8 程序,用于演示该问题。

import static java.lang.Math.max;
import static java.lang.Math.min;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadPoolResizeTest {

    public static void main(String[] args) throws Exception {
        // increase the number of iterations if unable to reproduce
        // for me 100 iterations have been enough
        int numberOfExecutions = 100;

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

java multithreading

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