我试图使用HashMap将唯一的字符串映射到字符串ArrayList,如下所示:
HashMap<String, ArrayList<String>>
Run Code Online (Sandbox Code Playgroud)
基本上,我希望能够通过编号访问密钥,而不是使用密钥的名称.我希望能够访问所述密钥的值,迭代它.我想象的是这样的:
for(all keys in my hashmap) {
for(int i=0; i < myhashmap.currentKey.getValue.size(); i++) {
// do things with the hashmaps elements
}
}
Run Code Online (Sandbox Code Playgroud)
是否有捷径可寻?
目标:将服务器处理的每个URL映射到0,1,2或3,尽可能均匀地分布.
虽然ruby的String#hash方法的文档说它将"根据字符串的长度和内容返回一个哈希",但这显然不是全部.给定字符串的散列在解释器的调用之间不一致:
$ irb
ruby-1.9.2-p180 :001 > "foo".hash
=> 360517580588231756
ruby-1.9.2-p180 :002 > ^D
$ irb
ruby-1.9.2-p180 :001 > "foo".hash
=> -2716152678666510148
Run Code Online (Sandbox Code Playgroud)
这意味着特定字符串的哈希值可能在服务器之间不同.Rails在String#hash内部使用URL路径映射到四个资产主机之一(如果应用程序的asset_host 配置如此),但由于跨机器的不一致性,此功能的效率低得多; 不同的服务器可能会将相同的URL映射到不同的资产主机,从而降低了缓存的效率,使天空变得模糊,过早地冷却了茶杯,从而破坏了其他优秀程序员的声誉.
你能否建议一个备用哈希函数,它可以有效,快速地在典型应用程序的URL空间中分配哈希值,最好是生成Fixnum的哈希函数,最后,我想将它映射到四个资产主机之一?
我有一个建设者:
class Builder{
private String name;
private String address;
public Builder setName(String name){
this.name = name;
return this;
}
public Builder setAddress(String address){
this.address = address;
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
在mockito中模拟构建器会使每个方法都为null.因此,有一种简单的方法可以让构建器在每次函数调用时返回自己,而不会使用模拟每个函数本身when().thenReturn.
我用这个程序来安装Jenkins:
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+RedHat+distributions
启动并运行后,我发现服务器上的/ var/lib/jenkins分区非常小.我想移动它,但我不想更改它运行的用户.我是Linux新手,我很难过.如何将其移动到我的Home/Public文件夹?"Jenkins"用户似乎没有Home文件夹.它在启动时作为守护进程运行,所以我不知道在哪里配置这些设置.我可以为Jenkins用户创建一个主文件夹吗?怎么样?
我读了这篇文章:
https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins
但不明白如何"设置新的詹金斯家".我已经使用了export命令,并重新启动了服务,但旧的路径仍显示在Manage Jenkins屏幕中.
我已经在stackoverflow上阅读了2-3个类似的问题,但对我来说总是有一个很大的缺失.在哪里找到永久更改路径的文件?
我试图找出初始化发生的顺序,或者说是为什么初始化按此顺序发生的原因.鉴于代码:
public class Main {
{
System.out.printf("NON-STATIC BLOCK\n");
}
static{
System.out.printf("STATIC BLOCK\n");
}
public static Main m = new Main();
public Main(){
System.out.printf("MAIN CONSTRUCTOR\n");
}
public static void main(String... args) {
//Main m = new Main();
System.out.printf("MAIN METHOD\n");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
STATIC BLOCK
NON-STATIC BLOCK
MAIN CONSTRUCTOR
MAIN METHOD
Run Code Online (Sandbox Code Playgroud)
但是,m在初始化块之前移动声明会产生:
NON-STATIC BLOCK
MAIN CONSTRUCTOR
STATIC BLOCK
MAIN METHOD
Run Code Online (Sandbox Code Playgroud)
我完全不知道为什么它会按此顺序发生.此外,如果我static在声明中删除了关键字m,则init块和构造函数都不会触发.任何人都可以帮我解决这个问题吗?
有没有办法配置IntelliJ IDEA(版本8.0.1)存储所有配置文件的目录?
默认情况下,这些文件存储在%home%\.IntelliJIdea80 ...(或.IdeaIC12等)中,但我想定义另一个位置...
谢谢.
我正在做一个解析XML中的一些数据的项目.
例如,XML是
<abc>abcdefghijklmno</abc>
Run Code Online (Sandbox Code Playgroud)
我需要解析"abcdefghijkmnlp".
但是当我测试我的解析时,我发现了一个大问题:
public class parser{
private boolean hasABC = false;
//Constructor HERE
......................
......................
@Override
public void startDocument () throws SAXException{
}
@Override
public void endDocument () throws SAXException{
}
@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException{
if ("abc".equalsIgnoreCase(localName)) {
this.hasABC = true;
}
}
@Override
public void endElement(String namespaceURI, String localName, String qName) throws SAXException{
if ("abc".equalsIgnoreCase(localName)) {
this.hasABC = false;
}
}
@Override
public void characters(char ch[], int start, …Run Code Online (Sandbox Code Playgroud) 从这个链接http://wiki.postgresql.org/wiki/Todo:Collate和http://www.postgresql.org/docs/9.1/static/collation.html.这让我感到困惑.
他们说,utf-8支持取决于操作系统的能力,它的每一个之间输精管LC_COLLATE和LC_CTYPE选项.
当我使用创建数据库时pdAdmin III,有3个选项,C, Posix and English_United States.1252.有什么不同C, Posix and English_United States.1252?
我希望使用所有支持的语言,也就是说unicode utf-8,这似乎不是一个选项.
我必须为选择的值LC_COLLATE,并LC_CTYPE用于创建支持数据库utf-8中PostgreSQL 9?
我刚刚在探查器下测试了我的应用程序,发现sql字符串占用了大约30%的内存!这很奇怪.
应用程序内存中存储了很多像这样的字符串.这是由hibernate生成的SQL查询,请注意不同的数字和尾随下划线:
select avatardata0_.Id as Id4305_0_,...... where avatardata0_.Id=? for update
select avatardata0_.Id as Id4347_0_,...... where avatardata0_.Id=? for update
Run Code Online (Sandbox Code Playgroud)
这是我无法理解的部分.为什么hibernate必须为每个查询生成具有不同标识符的不同sql字符串,如" Id4305_0_ "?为什么不能为所有相同的查询使用一个查询字符串?这是绕过查询缓存的某种技巧吗?
如果有人能形容我为什么会这样,以及如何避免这种资源浪费,我将不胜感激.
UPDATE
好.我找到了.假设内存泄漏我错了,这是我的错.Hibernate按预期工作.
我的应用程序在10个线程中创建了121(!)SessionFactories,它们生成了大约2300个SingleTableEntityPersisters实例.每个SingleTableEntityPersister生成大约15个具有不同标识符的SQL查询.Hibernate被迫生成大约345,000个不同的SQL查询.一切都很好,没什么奇怪的:)
java ×5
amazon-s3 ×1
hash ×1
hashmap ×1
hibernate ×1
iteration ×1
jenkins ×1
memory-leaks ×1
mockito ×1
performance ×1
postgresql ×1
redhat ×1
ruby ×1
sql ×1
unit-testing ×1
xml ×1