小编Era*_*dan的帖子

使用Java中的分隔符(与split相反)连接数组元素的快速简便方法

请参阅相关的.NET问题

我正在寻找一种快速简便的方法来完成与分裂完全相反的方式,以便它 ["a","b","c"]能够成为"a,b,c"

迭代数组需要添加条件(如果这不是最后一个元素,添加分隔符)或使用子字符串删除最后一个分隔符.

我确信有一种经过认证的有效方法(Apache Commons?)

您更喜欢在项目中做到这一点?

java arrays string

432
推荐指数
13
解决办法
47万
查看次数

如何部分更新MongoDB中的对象,以便新对象与现有对象重叠/合并

鉴于此文档保存在MongoDB中

{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2",
        param3 : "val3"
   }
}
Run Code Online (Sandbox Code Playgroud)

对新信息的对象param2,并param3从外面的世界需要保存

var new_info = {
    param2 : "val2_new",
    param3 : "val3_new"
};
Run Code Online (Sandbox Code Playgroud)

我想在对象的现有状态上合并/覆盖新字段,以便不会删除param1

这样做

db.collection.update(  { _id:...} , { $set: { some_key : new_info  } } 
Run Code Online (Sandbox Code Playgroud)

将导致MongoDB完全按照要求执行,并将some_key设置为该值.取代旧的.

{
   _id : ...,
   some_key: { 
      param2 : "val2_new",
      param3 : "val3_new"
   }
}
Run Code Online (Sandbox Code Playgroud)

MongoDB只更新新字段的方法是什么(没有明确说明它们)?得到这个:

{
   _id : ...,
   some_key: { 
        param1 : "val1",
        param2 : "val2_new",
        param3 : "val3_new"
   } …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java

157
推荐指数
9
解决办法
16万
查看次数

"软件导致连接中止的正式原因:套接字写入错误"

鉴于此堆栈跟踪代码段

引起:java.net.SocketException:软件导致连接中止:
 java.net.SocketOutputStream.socketWrite0(本机方法)中的套接字写入错误

我试着回答以下问题:

  1. 什么代码抛出此异常?(JVM?/ Tomcat?/我的代码?)
  2. 是什么导致抛出此异常?

关于#1:

Sun的JVM源代码不包含这个确切的消息,但我认为文本软件导致连接中止:套接字写入错误来自本机实现SocketOutputStream:

private native void socketWrite0(FileDescriptor fd, byte[] b, int off,
                 int len) throws IOException;
Run Code Online (Sandbox Code Playgroud)

关于#2

我的猜测是,它是在客户端终止连接之前,在获得完整响应之前引起的(例如,发送请求,但在获得完整响应之前,它已关闭/终止/脱机)

问题:

  1. 以上假设是否正确(#1和#2)?
  2. 这可能与情况有所区别:"由于服务器端的网络错误,"无法写入客户端"?或者会呈现相同的错误消息?
  3. 最重要的:是否有正式文件(例如来自Sun)说明上述内容?

我需要证明这个堆栈跟踪是套接字客户端的"错误",并且服务器没有做任何事情来避免它.(除了捕获异常,或使用非Sun JVM SocketOutputStream,但两者都没有真正避免客户端终止的事实)

java sockets tomcat exception stack-trace

147
推荐指数
3
解决办法
30万
查看次数

将一个原始long数组转换为Longs列表

这可能是一个简单的问题,但是我的第一次尝试完全失败了.我想取一个原始long的数组并将其转换为一个列表,我尝试这样做:

long[] input = someAPI.getSomeLongs();
List<Long> inputAsList = Arrays.asList(input); //Total failure to even compile!
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

java arrays collections boxing

132
推荐指数
11
解决办法
8万
查看次数

在javascript中双重否定(!!) - 目的是什么?

可能重复:
什么是!! (不是)JavaScript中的运算符?

我遇到过这段代码

function printStackTrace(options) {
    options = options || {guess: true};
    var ex = options.e || null, guess = !!options.guess;
    var p = new printStackTrace.implementation(), result = p.run(ex);
    return (guess) ? p.guessAnonymousFunctions(result) : result;
}
Run Code Online (Sandbox Code Playgroud)

并不禁想知道为什么双重否定?是否有另一种方法可以达到同样的效果?

(代码来自https://github.com/eriwen/javascript-stacktrace/blob/master/stacktrace.js)

javascript

116
推荐指数
3
解决办法
5万
查看次数

MongoDB在索引列上选择count(distinct x) - 计算大型数据集的唯一结果

我已经阅读了几篇文章和示例,并且尚未找到在MongoDB中执行此SQL查询的有效方法(其中有数百万个 文件)

第一次尝试

(例如,从这个几乎重复的问题 - Mongo相当于SQL的SELECT DISTINCT?)

db.myCollection.distinct("myIndexedNonUniqueField").length
Run Code Online (Sandbox Code Playgroud)

显然我得到了这个错误,因为我的数据集非常庞大

Thu Aug 02 12:55:24 uncaught exception: distinct failed: {
        "errmsg" : "exception: distinct too big, 16mb cap",
        "code" : 10044,
        "ok" : 0
}
Run Code Online (Sandbox Code Playgroud)

第二次尝试

我决定尝试做一组

db.myCollection.group({key: {myIndexedNonUniqueField: 1},
                initial: {count: 0}, 
                 reduce: function (obj, prev) { prev.count++;} } );
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息:

exception: group() can't handle more than 20000 unique keys
Run Code Online (Sandbox Code Playgroud)

第三次尝试

我还没有尝试,但有几个涉及的建议 mapReduce

例如

mongodb

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

如何仅使用注释设置JAX-RS应用程序(没有web.xml)?

是否可以仅使用注释设置JAX-RS应用程序?(使用Servlet 3.0和JAX-RS Jersey 1.1.0)

我试过,没有运气.web.xml似乎需要使用一些.


配置A(工作,但具有web.xml配置)

web.xml中

   ...
   <servlet>
      <servlet-name>org.foo.rest.MyApplication</servlet-name>
   </servlet>
   <servlet-mapping>
       <servlet-name>org.foo.rest.MyApplication</servlet-name>
       <url-pattern>/*</url-pattern>
   </servlet-mapping>
   ...
Run Code Online (Sandbox Code Playgroud)

Java的

@ApplicationPath("/")
public class MyApplication extends Application {
    ...
}
Run Code Online (Sandbox Code Playgroud)

配置B(不工作,抛出异常)

@ApplicationPath("/")
@WebServlet("/*") // <-- 
public class MyApplication extends Application {
    ...
}
Run Code Online (Sandbox Code Playgroud)

后者似乎坚持认为Application将是Servlet的子类(例外不会留下任何猜测)

java.lang.ClassCastException: org.foo.rest.MyApplication cannot be cast to javax.servlet.Servlet
Run Code Online (Sandbox Code Playgroud)

问题

  1. 为什么web.xml定义有效,但注释没有?有什么不同?

  2. 有没有办法使它工作,例如有一个没有web.xml的JAX-RS应用程序?

java jax-rs java-ee servlet-3.0

76
推荐指数
4
解决办法
11万
查看次数

JQuery,Spring MVC @RequestBody和JSON - 让它协同工作

我想有一个双向JSON到Java序列化

我正在成功使用Java到JSON到JQuery路径......(@ResponseBody)例如

@RequestMapping(value={"/fooBar/{id}"}, method=RequestMethod.GET)
     public @ResponseBody FooBar getFooBar(
            @PathVariable String id,
            HttpServletResponse response , ModelMap model) {
        response.setContentType("application/json");
...
}
Run Code Online (Sandbox Code Playgroud)

在我使用的JQuery中

$.getJSON('fooBar/1', function(data) {
    //do something
});
Run Code Online (Sandbox Code Playgroud)

很有效(例如注释工作已经完成,感谢所有的回答者)

但是,如何执行反向路径:使用RequestBody将JSON序列化为Java对象?

无论我尝试什么,我都无法得到这样的东西:

@RequestMapping(value={"/fooBar/save"}, method=RequestMethod.POST)
public String saveFooBar(@RequestBody FooBar fooBar,
        HttpServletResponse response , ModelMap model) {

  //This method is never called. (it does when I remove the RequestBody...)
}
Run Code Online (Sandbox Code Playgroud)

我已经正确配置了Jackson(它在出路时序列化)并且当然我将MVC设置为注释驱动

我如何使其工作?它有可能吗?或者Spring/JSON/JQuery是单向的(out)?


更新:

我改变了杰克逊的设定

<bean id="jsonHttpMessageConverter"
    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />

<!-- Bind the return value of the Rest …
Run Code Online (Sandbox Code Playgroud)

java jquery spring json spring-mvc

70
推荐指数
4
解决办法
17万
查看次数

TypeScript的Eclipse插件?

新的Microsoft TypeScript语言(JavaScript的类型超集)似乎非常有趣,是否有任何alpha/incubator项目试图在Eclipse中支持它?或者甚至想要它还为时过早

eclipse typescript

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

如何以编程方式从服务器重新加载/刷新模型数据?

背景

我有最基本的"新手"AngularJS问题,请原谅我的无知:如何通过代码刷新模型?我确定它已在某个地方多次回答,但我根本找不到它.我在这里看了一些很棒的视频http://egghead.io并快速浏览了教程,但我仍然觉得我错过了一些非常基本的东西.

我在这里找到了一个相关的例子($route.reload()),但我不确定我是否理解如何在下面的例子中使用它

这是设置

controllers.js

function PersonListCtrl($scope, $http) {
  $http.get('/persons').success(function(data) {
    $scope.persons = data;
  });
}
Run Code Online (Sandbox Code Playgroud)

的index.html

...
<div>
    <ul ng-controller="PersonListCtrl">
        <li ng-repeat="person in persons">
            Name: {{person.name}}, Age {{person.age}}
        </li>
    </ul>
</div>
...
Run Code Online (Sandbox Code Playgroud)

这一切都运行得非常好,每次重新加载页面时,我都会按预期看到人员列表

问题

  1. 假设我想实现一个刷新按钮,如何告诉模型以编程方式重新加载?
  2. 我该如何访问该模型?似乎Angular神奇地实例化了我的控制器的一个实例,但是我如何得到它呢?
  3. 编辑添加了第三个问题,与#1相同但是如何才能完全通过JavaScript完成?

我确定我错过了一些基本的东西,但是花了一个小时试图解决它之后,我认为它值得一个问题.如果它重复,请告诉我,我会关闭+链接到它.

angularjs

63
推荐指数
1
解决办法
15万
查看次数