小编maa*_*nus的帖子

JSONObject文本必须以"{"开头

我有这个JSONObject:

{
  "gutter_url" : "",
  "sort_order" : "popularity",
  "result" : [
    {
      "afs" : "Y",
      "release_year" : 1979,
      "album_sort" : "Wall, The"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

并希望将数组放在"结果"的位置,所以我写了这段代码:

JSONObject allCDs = new JSONObject(objectString);
JSONArray CD_List = allCDs.getJSONArray("result");
Run Code Online (Sandbox Code Playgroud)

但后来我得到了这个例外:

Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at character 1
 at org.json.JSONTokener.syntaxError(JSONTokener.java:410)
 at org.json.JSONObject.<init>(JSONObject.java:179)
 at org.json.JSONObject.<init>(JSONObject.java:402)
 at de.htwberlin.gim.Aufgabe8_5.getCoversFor(Aufgabe8_5.java:55)
 at de.htwberlin.gim.Aufgabe8_5.main(Aufgabe8_5.java:77)
Run Code Online (Sandbox Code Playgroud)

java json

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

使用HttpOnly cookie注销

我可以看到HttpOnlycookie 对安全性有好处,但是它们无法在没有服务器交互的情况下进行注销,对吧?1因此,当网络出现故障时,您无法注销并离开.我可以想象一个解决方法,但我想先问一下

  • 处理这种情况是否有意义
  • 这有什么标准的解决方案吗?

1假设你实际上正在使用它们.

cookies session web-services httponly cookie-httponly

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

将标准转换为分离标准

这个问题的标题是类似于这一个,但它是没有重复的为其他OP其实是想别的东西(反正没有回答我的问题在那里).我想要的是回收我已经建成CriteriaSubqueries.exists(DetachedCriteria).

我知道这Criteria基本上DetachedCriteria是附加的Session,所以我希望Criteria#toDetached()在另一边有类似的东西或工厂方法,但我找不到任何东西.

java hibernate criteria

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

跟踪地图中队列之间的进度

我目前有两个队列和物品在他们之间旅行.最初,一个项目被放入firstQueue,然后三个专用线程中的一个移动它secondQueue,最后另一个专用线程删除它.这些举措显然包括一些处理.我需要能够得到任何项目的状态(IN_FIRST,AFTER_FIRST,IN_SECOND,AFTER_SECOND,或ABSENT),我手动实现它做的更新statusMap,其中队列被修改的像

while (true) {
    Item i = firstQueue.take();
    statusMap.put(i, AFTER_FIRST);
    process(i);
    secondQueue.add(i);
    statusMap.put(i, IN_SECOND);
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,但它很丑陋并且留下了状态不一致的时间窗口.这种不一致并不是什么大不了的事情,它可以通过同步来解决,但这可能适得其反,因为队列的容量有限,可能会阻塞.丑陋使我​​更加困扰.

效率几乎不重要,因为处理需要几秒钟.专用线程用于控制并发.任何项目都不应该处于多个状态(但这不是非常重要,并且不能通过我目前的流行方法保证).会有更多的队列(和状态),它们会有不同的种类(DelayQueue,ArrayBlockingQueue也许PriorityQueue).

我想知道是否有一个很好的解决方案可以推广到多个队列?

java queue concurrency concurrenthashmap

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

Git子模块替代?

我有一些工作树有一些依赖.AFAIK,git子模块将强制执行以下操作:

  • 使用它(主)在每个工作树的子目录中拥有每个工作树(slave)的副本
  • 主存储库复制来自从属的所有信息

我不介意回购更大,但拥有副本对我来说是非常不可接受的.它会迫使我重新组织所有项目,以便将副本链接起来.此外,编辑错误的文件很容易发生,从而导致混淆.

我有另一个想法:

  • 每个主服务器都存储其所有从服务器的列表.
  • 主人不需要其他信息.
  • 每次在master中提交时,都会创建slave中的" snapshot-commit ".
  • "snapshot-commit"是工作树当前状态的快照,它忽略了索引的当前状态(我在丢弃一些未经修改的更改之前已经使用了"snapshot-commits").
  • "snapshot-commits"收集在一个分支中,该分支的名称来自主人的名字.提交消息包含主提交的哈希.(恕我直言,这比成千上万的标签泛滥更好.)
  • 结帐工作照常,除非需要递归奴隶.

我能看到的唯一问题如下:

  • 从属设备中的提交将累积,即使主设备不再存在也不会被删除.
  • 主服务器中的提交不是自包含的,您可以删除主服务器中引用的提交.但我认为不可能偶然发生,所以我可以忍受它.
  • 我无法想象,其他git命令如何支持这一点.但同样,我可以忍受它.

我问是否有人已经实施了(或者这是一个坏主意).

git git-submodules

11
推荐指数
2
解决办法
6326
查看次数

Java中有ImmutableBitSet吗?

是否有任何Java库提供ImmutableBitSet?我没有找到任何,也没有发现Guava也没有使用谷歌.

java collections guava

11
推荐指数
2
解决办法
2298
查看次数

使用Gson反序列化ImmutableList

我正在使用相当多的不可变集合,我很好奇如何使用Gson对它们进行反序列化.由于没有人回答我自己找到了解决方案,我正在简化问题并提出自己的答案.

我有两个问题:

  • 如何Deserializer为所有人写一个单一的工作ImmutableList<XXX>
  • 如何为所有人注册ImmutableList<XXX>

java immutability adapter gson

11
推荐指数
2
解决办法
5789
查看次数

使用编译器的关联性有什么问题?

有时可以使用关联性来消除数据依赖性,我很好奇它可以提供多少帮助.我很惊讶地发现,通过手动展开一个简单的循环,我几乎可以获得4的加速因子,无论是在Java(build 1.7.0_51-b13)还是在C(gcc 4.4.3)中.

所以要么我做了一些非常愚蠢的事情,要么编译器忽略了一个强大的工具.我开始了

int a = 0;
for (int i=0; i<N; ++i) a = M1 * a + t[i];
Run Code Online (Sandbox Code Playgroud)

它计算接近String.hashCode()(设置M1=31和使用a char[])的东西.计算非常简单,t.length=1000我的i5-2400 @ 3.10GHz(Java和C)都需要大约1.2微秒.

观察每两个步骤a乘以M2 = M1*M1并添加一些东西.这导致了这段代码

int a = 0;
for (int i=0; i<N; i+=2) {
    a = M2 * a + (M1 * t[i] + t[i+1]); // <-- note the parentheses!
}
if (i < len) a = M1 * a + t[i]; …
Run Code Online (Sandbox Code Playgroud)

c java optimization performance gcc

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

基于价值的课程混乱

我正在寻求对基于价值的类定义的一些澄清.我无法想象,最后一个要点(6)应该如何与第一个一起工作

  • (1)它们是final和immutable(尽管可能包含对可变对象的引用)
  • (6)它们在相等时可自由替换,这意味着在任何计算或方法调用中根据equals()交换任意两个x和y实例应该不会产生明显的行为变化.

Optional 就是这样一堂课.

Optional a = Optional.of(new ArrayList<String>());
Optional b = Optional.of(new ArrayList<String>());
assertEquals(a, b); // passes as `equals` delegated to the lists

b.get().add("a");

// now bite the last bullet
assertTrue(a.get().isEmpty()); // passes
assertTrue(b.get().isEmpty()); // throws
Run Code Online (Sandbox Code Playgroud)

我读错了,还是需要更准确?

更新

伊兰的答案是有道理的(他们不再平等),但让我移动目标:

...
assertEquals(a, b); // now, they are still equal
assertEquals(m(a, b), m(a, a)); // this will throw
assertEquals(a, b); // now, they are equal, too
Run Code Online (Sandbox Code Playgroud)

让我们定义一个有趣的方法m,它会做一些变异并再次撤消它:

int …
Run Code Online (Sandbox Code Playgroud)

java immutability java-8 value-class

11
推荐指数
3
解决办法
877
查看次数

缓存动态内容的反向代理

我正在考虑询问软件建议,但后来我发现它可能是一个太奇怪的请求,它需要先澄清一些.

我的观点是:

  • 每个回复包含一个 etag
    • 这是内容的哈希
    • 哪个是全球唯一的(有足够的概率)
  • 内容是(大部分)的动态,并可以随时更改(expiresmax-age头是没用这里).
  • 内容部分依赖于用户,由权限(有时本身会改变)给出.

基本上,代理应该包含映射etag到响应内容的缓存.该etag会从服务器,并在最常见的情况下获得,服务器不响应内容涉及.

它应该如下所示:代理总是向服务器发送请求然后

  • 1服务器只返回etag,代理根据它进行查找
    • 1.1关于缓存命中,
      • 它从缓存中读取响应数据
      • 并向客户发送回复
    • 1.2关于缓存未命中,
      • 它再次询问服务器
      • 服务器返回包含内容的响应etag,
      • 代理将其存储在缓存中
      • 并向客户发送回复
  • 2或服务器返回包含内容的响应etag,
    • 代理将数据存储在其缓存中
    • 并向客户发送回复

为简单起见,我省略了if-none-match标题的处理,这是相当明显的.

我的理由是,最常见的情况1.1可以在服务器中非常有效地实现(使用其缓存映射请求etags;内容不缓存在服务器中),这样大多数请求都可以在没有服务器处理的情况下处理响应内容.这应该比首先从侧缓存获取内容然后提供它更好.

在案例1.2中,有两个对服务器的请求,这听起来很糟糕,但并不比服务器要求侧缓存和错过更糟糕.

Q1:我想知道,如何将第一个请求映射到HTTP.在案例1中,它就像一个HEAD请求.在案例2中,它就像GET.两者之间的决定取决于服务器:如果它可以在etag不计算内容的情况下服务,那么它就是情况1,否则就是情况2.

Q2:是否有反向代理做这样的事情?我读过有关nginx,HAProxy和Varnish的内容,但似乎并非如此.这让我想到Q3:这是个坏主意吗?为什么?

问题4:如果没有,那么哪个现有代理最容易适应?

一个例子

/catalog/123/item/456来自用户的GET请求U1提供了一些内容C1etag: 777777.代理存储C1在密钥下777777.

现在同样的请求来自用户U2.代理转发它,服务器只返回 …

caching reverse-proxy http

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