小编Sea*_*lly的帖子

原因 - List list = new ArrayList();

我见过很多次这样的代码:

List<String> list = new ArrayList<String>();

为什么人们采用ArrayList(和其他类)的父代替生成对象的类型?

这会降低性能吗?或者为什么有人这样做?

java list arraylist

27
推荐指数
4
解决办法
3万
查看次数

Rabin-Karp算法

我有兴趣实现Rabin-Karp算法来搜索维基上所述的子字符串:http://en.wikipedia.org/wiki/Rabin-Karp_string_search_algorithm.不是为了完成家庭作业,而是为了自身利益.我已经实现了Rabin-Karp算法(如下所示)并且它可以工作.但是,性能真的非常糟糕!我知道我的哈希函数是基本的.但是,似乎对strstr()的简单调用总是胜过我的函数rabin_karp().我可以理解为什么 - 哈希函数比简单的char-by-char比较每个循环做更多的工作.我在这里错过了什么?Rabin-Karp算法应该比调用strstr()更快吗?何时最好使用Rabin-Karp算法?因此,我的自身利益.我甚至实现了算法吗?

size_t hash(char* str, size_t i)
{
   size_t h = 0;
   size_t magic_exp = 1;
// if (str != NULL)
   {
      while (i-- != 0)
      {
         magic_exp *= 101;
         h += magic_exp + *str;
         ++str;
      }
   }

   return h;
}

char* rabin_karp(char* s, char* find)
{
   char* p = NULL;

   if (s != NULL && find != NULL)
   {
      size_t n = strlen(s);
      size_t m = strlen(find);

      if (n > m)
      {
         size_t hfind …
Run Code Online (Sandbox Code Playgroud)

c++ string algorithm performance rabin-karp

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

单元测试非阻塞方法(异步测试)

我有一个非常简单的Check类,它具有阻塞waitForCondition()方法。此方法被阻止。我想为此方法创建一些单元测试。首先,该方法应在满足条件时返回。其次,该方法应在被中断时返回。

在内部,Check该类具有ArrayBlockingQueueand调用其take()方法,所以我的测试实际上是关于正确编码条件的逻辑(应该如此)。在应用程序中,Check该类的数据由另一个线程通过InputData方法提供。该InputData方法对传入的数据执行逻辑,并在满足条件时将虚拟对象放置在ArrayBlockingQueue中。这应该导致waitForCondition()返回。

因此,我的第一个想法是我可以InputData通过模拟来测试,并检查是否满足条件时将虚拟对象添加到队列中。这将需要更改类的设计,因为队列是私有数据成员(除非可以模拟私有数据)。InputData满足条件时,与其直接添加到队列中,不如调用可能被嘲笑的东西。

但是waitForCondition(),如果InputData功能正常,则存在检查方法本身的问题。它实际上是简单的代码:

try {
        myArrayBlockingQueue.take();
        return true;
    } catch (InterruptedException ex) {
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否值得想象的麻烦:一个测试创建一个带有的另一个线程Check,调用waitForCondition(),然后在完成后返回结果。也许,使用执行器服务。模糊部分是如何同步assertTrue(...)。我发现这篇关于异步测试的文章似乎可以解决问题。

问题摘要:

  1. 我应该更改设计以测试其中的逻辑InputData()吗?
  2. 我应该保留测试的waitForCondition()时间InputData()吗?
  3. 还是只做需要做的事情(有点复杂的单元测试)并waitForCondition()直接测试更好?

java multithreading unit-testing

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

mongodb表现不佳

我目前正在使用mongodb,我发现查询性能非常差(可能需要几秒钟).方案如下:

我有一个结构文件:

{_id:"xxx", userId:"yyy", a:1 ,b:2,  counter:1}    
Run Code Online (Sandbox Code Playgroud)

在测试中:

"userId" value could be {1..200,000}
"a" values could be {1..30}
"b" values could be {1}
Run Code Online (Sandbox Code Playgroud)

因此,我的最大尺寸集合将为6,000,000.目前,为此集合定义了两个索引: default _id and useId

业务逻辑查询所有用户条目,然后通过递增计数器来更新一个(查询更新由"_id"写入).此外,如果这是一个新实体,则有一个插入查询.

我在ubuntu上使用mongo 1.8.2和8g ram运行

我有一个主辅助复制(所有mongo运行本地磁盘存储和一个子网与tomcat服务器).当然所有读取都会进入辅助节点并写入主节点.我没有测试分片,因为我认为6,000,000不是一个巨大的收藏,不是吗?

另外,我运行jmetter测试,一次使用不同的userIds生成500个线程请求.

当我运行mongostat时,我看到%锁定非常高(大约70%),大约5-10分钟的加载后,我看到qw(写入队列)是500(作为我打开的连接的数量)当我停止服务器需要mongo大约10-20分钟来完成所有排队的任务

我也运行了db.serverStatus()并解释,结果看起来很好.当我运行db.currentOp()时,我看到等待'write'锁的查询我无法将currentOp的输出文件完全分析,因为我从命令行执行了查询,只有窗口缓冲区尺寸.但是从那里我看到了许多等待写锁的更新(通过_id).

我会感激任何想法.

还有一件事:因为每个查询可能会带来30个文档,我认为可能有不同的moddeling如下:

{_id:"xxx", userId:"123", bs: [{b:1, cs[{c:1, cnt:1}, {c:2, cnt:1}}, {{b:2 cs: [{c:1, cnt:1}]}}]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这种建模时,我无法增加计数器,我只是没有找到正确的方法来做到这一点.我可以做插入和推芽无法更新以下查询:

db.coll.update({userId:"123", "bs.b":1, "bs.cs.c":1}, {"bs.cs.cnt" : {$inc : 1})
Run Code Online (Sandbox Code Playgroud)

我在查询中有关于非法"点"的错误

我现在很累.等待一些好主意

非常感谢
Julia

java performance mongodb

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

MongoDB更新多个文档

架构:

{
    name: String,
    available: Boolean,
    for: String
}
Run Code Online (Sandbox Code Playgroud)

有"一个":

{
    name: "a",
    available: true,
    for: ["b", "c"]
}
Run Code Online (Sandbox Code Playgroud)

和"b":

{
    name: "b",
    available: true,
    for: ["a", "b]
}
Run Code Online (Sandbox Code Playgroud)

如果我更新a.available = false,我应该同时更新b.available = false.我怎么能更新两个文件,并确保在更新"a"和"b"之间没有其他进程/线程获得"b".

transactions mongodb

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

有效地对mongodb地理空间查询的结果进行排序

我有一大堆文件,如:

{ loc: [10.32, 24.34], relevance: 0.434 }
Run Code Online (Sandbox Code Playgroud)

并希望能够有效地执行以下查询:

 { "loc": {"$geoWithin":{"$box":[[-103,10.1],[-80.43,30.232]]}} }
Run Code Online (Sandbox Code Playgroud)

随意的盒子.

添加2d索引loc使得这非常快速和有效.但是,我现在也想获得最相关的文件:

.sort({ relevance: -1 })
Run Code Online (Sandbox Code Playgroud)

这导致一切都被抓到了(在任何特定的盒子里都会有大量的结果,而我只需要前10名左右).

任何建议或帮助非常感谢!!

mongodb

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

MongoDB点表示法查询

我有一个BasicDBObject调试时似乎持有:

{ "_id" : { "p_key" : { "$date" : "2012-02-02T00:00:00Z"} , "d_key" : 222} , "t_key" : 10195 , "w_key" : 4 , "f_key" : { "$date" : "2012-02-02T00:00:00Z"}}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试:

dbObject.get("_id.d_key"));
Run Code Online (Sandbox Code Playgroud)

我得到一个空指针异常.

对我在这里做错了什么的想法?

我试图获得d_key内部的价值_id.

mongodb mongodb-java

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

如何在Java中为变量分配2个字节?

如何在Java中为变量分配2个字节?我知道我可以这样做:

byte val = 2; // this is one byte with 0000 0010
Run Code Online (Sandbox Code Playgroud)

但我需要为val分配2个字节.我怎样才能做到这一点?

java

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

在MongoDB中存储DateTime会影响性能

我们正在讨论如何在MongoDB中存储日期.我仍然是Mongo的新手,所以当我在文档中看到以下内容时(http://api.mongodb.org/perl/MongoDB/DataTypes.html#Dates)我想知道:

警告:创建DateTime对象非常慢.考虑将日期保存为数字,并在需要时将数字转换为DateTimes.单个DateTime字段可以使反序列化速度降低10倍.

如果我们只是存储它们并让它们对商店中的对象进行查询,这是一回事,但似乎如果我们对这些字段进行过滤或排序则是另一个.问题是从数字到DateTime来回转换.欢迎任何关于性能考虑的想法.谢谢.

c# datetime mongodb

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

在iOS中将GMT转换为IST

如何在IOS中将GMT转换为IST?我有代码可以给我时间GMT.但我想将其转换为相应的本地时区并在我的应用程序中使用它.我怎样才能做到这一点 ?提前致谢.

iphone xcode objective-c ios

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

为jsoup输入不匹配的Eclipse

我是java新手,想要使用jsoup java库.我下载了jar文件,并将其包含在我的项目中.接下来,我想在他们的页面上运行一个简单的例子

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Run Code Online (Sandbox Code Playgroud)

在第二行我得到错误:

Type mismatch: cannot convert from org.jsoup.nodes.Document to 
 javax.swing.text.Document
Run Code Online (Sandbox Code Playgroud)

并提供:

将'cast'添加到文档或更改类型(org.jsoup.nodes.Document doc = Jsoup.parse(html);)

问题是什么?我忘了做某事吗?

java eclipse

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