MySQL在一次循环中最大命中率

阿希姆萨·阿夫里扎(Ahimsa Afrizal)

我有一个名为“句子”的类ArrayList。每个句子包含值“单词”。我必须检查进入MySQL数据库的每个单词是否是停用词。假设我有200个“句子”,每个句子都有不同数量的“单词”。

我已经将“单词”一个接一个地检查到数据库中,当它达到2500个“单词”数量时(有时直到连接失败之前,它一直命中直到第3500个单词),它变成了错误。但是,如果“单词”的数量低于2500,就可以了。

这是我的查询代码

public Query() throws SQLException, ClassNotFoundException{
    try{
        cd = new Connect();
        connect = cd.getConnection();
        statement = (Statement) connect.createStatement();

    }catch(SQLException e){
        System.err.println("Database connecting failed");
    }
}

public boolean isStopWords(String word) throws SQLException{

    String query = "SELECT stopwords FROM stopword WHERE stopwords = '"+word+"'";

    rs = statement.executeQuery(query);

    if(!rs.next()) return false;
    else return true;
}

这是我的连接代码

public Connect() throws SQLException{
    try{
        Class forName = Class.forName ("com.mysql.jdbc.Driver");
    }catch(ClassNotFoundException ex){

    }
    connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/mydatabase", "root", null);
}

public Connection getConnection(){
    return connect;
}

这是我从Sentence类中检索Word的方法。String [] tempWords是一个对象Sentence中Word的值。句子本身将根据ArrayList句子的大小循环播放

protected ArrayList<String> eraseStopWord (String[] tempWords) throws SQLException, ClassNotFoundException{
    result = new ArrayList<String>();
    db = new Query();
    for(int i=0;i<tempWords.length;i++){

         if(!db.isStopWords(tempWords[i])){
             result.add(tempWords[i]);
         }   
    }

    return result;

}

为什么直到被击中大约2500个“单词”才好呢?(有时直到连接失败之前第3500个字都可以,但在第2500个字以下才稳定)

更新:现在我知道连接在哪里停止。它在第153个句子循环处停止。所以它不依赖于文字。仍然照顾错误

  • 我找到了答案。我在循环中打开了连接,所以MySQL占用了太多的连接(152个连接)
阿希姆萨·阿夫里扎(Ahimsa Afrizal)

我的错。在我之前的代码中,每次创建句子时我都会建立连接(db = new Query)

    protected ArrayList<String> eraseStopWord (String[] tempWords) throws SQLException, ClassNotFoundException{
    result = new ArrayList<String>();
    db = new Query();
    for(int i=0;i<tempWords.length;i++){

         if(!db.isStopWords(tempWords[i])){
             result.add(tempWords[i]);
         }   
    }

    return result;

}

因此,当到达第153个句子时,它将由于连接过多而停止。解决方法是在Sentence循环之前编写打开的连接代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在FOR循环中仅运行一次IF

来自分类Dev

JProfiler,检查Hibernate缓存命中率

来自分类Dev

如何提高nscd的缓存命中率?

来自分类Dev

JProfiler,检查Hibernate缓存命中率

来自分类Dev

xslt:在for-each循环中仅循环一次

来自分类Dev

在永久循环或无效循环中执行一次(一次)吗?

来自分类Dev

什么被认为是缓存中的高未命中率/低命中率?

来自分类Dev

在for循环中仅调用一次事件

来自分类常见问题

如何仅从嵌套的for循环中打印结果一次

来自分类Dev

for()循环中的下一次迭代之前的wait()

来自分类Dev

解析一次仅在循环中使用的代码

来自分类Dev

在While循环中使用随机一次

来自分类Dev

在forEach循环中跳过第一次迭代

来自分类Dev

lubridate :: interval()在for循环中一次返回数值

来自分类Dev

属性只能在嵌套的for循环中更新一次

来自分类Dev

在PHP的foreach循环中调整最后一次迭代

来自分类Dev

在While循环中使用随机一次

来自分类Dev

解析一次仅在循环中使用的代码

来自分类Dev

为什么循环中的功能只能运行一次?

来自分类Dev

在 for 循环中只迭代一次参数(Python)

来自分类Dev

为什么 setTimeout 只在循环中打印一次?

来自分类Dev

如何在循环中一次显示值

来自分类Dev

在游戏循环中执行一次函数

来自分类Dev

为什么某些if语句仅在一次循环中触发一次?

来自分类Dev

交换数组中最后一次出现的最小值和最大值

来自分类Dev

MySQL while循环仅循环一次

来自分类Dev

MySQL while循环仅循环一次

来自分类Dev

堆分配如何损害硬件缓存的命中率?

来自分类Dev

缓存未命中率指标之间的差异

Related 相关文章

热门标签

归档