小编Ada*_*old的帖子

通过新运算符或某个接口进行对象分配

我正在浏览Java代码,我看到已经使用某个接口分配了对象,并且此接口包含一些使用newoperator 分配对象的方法.我无法想到他们为什么使用接口而不是直接使用new运算符分配对象.例如:

Animal animal = new Animal();
Run Code Online (Sandbox Code Playgroud)

要么

Animal animal = interface.allocateAnimal()
Run Code Online (Sandbox Code Playgroud)

interface是一个界面,它有一个allocateAnimal什么都不做 的方法new Animal().

所以最终我们做的是同样的事情,但是以不同的方式,所以在这里获得了什么?

编辑1:实际上接口是在其他地方实现的.所以接口不包含任何实现代码,它只包含方法.

java

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

java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space

每个身体

运行服务器时出现异常,我认为是内存泄漏!

我尝试了参数 JAVA_OPS 的许多值,但仍然出现异常!!!

在控制台中,我得到了这个异常,你可以看到如下!

Nov 18, 2013 2:48:48 PM org.apache.catalina.startup.HostConfig deployDescriptors
SEVERE: Error waiting for multi-thread deployment of context descriptors to complete
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:578)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1401)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:317)
at     
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:347)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1140)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.OutOfMemoryError: PermGen space …
Run Code Online (Sandbox Code Playgroud)

java tomcat memory-leaks out-of-memory

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

崩溃后无法重启eclipse

在某些时候我的eclipse崩溃了,从那一刻起我每次尝试重新启动它都会失败,我在日志中遇到以下异常:

Caused by: org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start() of bundle org.eclipse.core.resources.
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:300)
    at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:478)
    at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:263)
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:109)
    ... 22 more
Caused by: java.lang.StackOverflowError
    at org.eclipse.core.internal.localstore.SafeChunkyInputStream.find(SafeChunkyInputStream.java:86)
    at org.eclipse.core.internal.localstore.SafeChunkyInputStream.find(SafeChunkyInputStream.java:98)
    at org.eclipse.core.internal.localstore.SafeChunkyInputStream.find(SafeChunkyInputStream.java:98)
    at org.eclipse.core.internal.localstore.SafeChunkyInputStream.find(SafeChunkyInputStream.java:98)
    at org.eclipse.core.internal.localstore.SafeChunkyInputStream.find(SafeChunkyInputStream.java:98)
    at org.eclipse.core.internal.localstore.SafeChunkyInputStream.find(SafeChunkyInputStream.java:98)
Run Code Online (Sandbox Code Playgroud)

我能够通过删除文件夹.metadata/.plugins/org.eclipse.core.resources来解决这个问题,但是这样我就失去了所有的运行历史,我想恢复它.是否有更具体的文件我可以删除来​​解决这个问题?

java eclipse stack-overflow

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

有没有办法在Undertow中使用Servlet API?

我刚刚发现了Undertow是如何工作的,我对它的api感到惊讶:

Undertow server = Undertow.builder()
                .addHttpListener(8080, "localhost")
                .setHandler(new HttpHandler() {
                    @Override
                    public void handleRequest(final HttpServerExchange exchange) throws Exception {
                        exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
                        exchange.getResponseSender().send("Hello World");
                    }
                }).build();
        server.start();
Run Code Online (Sandbox Code Playgroud)

有没有办法以某种方式使用更方便的servlet api

Undertow server = Undertow.builder()
                .addHttpListener(8080, "localhost")
                .setHandler(new HttpHandler() {
                    @Override
                    public void handleRequest(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
                        // ...
                    }
                }).build();
        server.start();
Run Code Online (Sandbox Code Playgroud)

我想要实现的是替换当前使用的Undertow使用servlet api的Jetty容器,但是在阅读了文档和源代码后,我似乎找不到这样做的方法.我没有使用.war文件只是一个嵌入式Jetty.有人有指针吗?

java servlets undertow

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

我该怎么办,或者我应该使用被认为是"危险"的php函数?

几天前,我参加了一个研讨会,他们正在讨论"危险"的PHP功能.然而,他们没有说我们应该使用它们.他们命名eval(),preg_match(),exec()以及更多.

虽然我不使用它们,或者有时候我不经常使用它们.使用这些功能被认为是不好的做法吗?即使我知道我在哪里使用它们,用户也无法联系到它?

编辑: 对于preg_match()问题,请查看: preg_match()安全漏洞

php

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

是否有一个简单的项目构建/依赖管理工具用于Java项目?

到目前为止,我一直在使用Maven和ant + ivy,但我认为维护它们的所有配置都相当困难.

我真正喜欢的是像leiningen这样的东西,它不需要任何xml,你可以管理代码中的依赖项(在leiningen的情况下使用clojure代码).它还配有一个方便的cli工具.

我知道leiningen在内部使用maven所以如果你的建议在内部使用maven也不是问题,所以一个简单的抽象,简化事情,不需要与maven/ant/ivy的互动对我来说同样有益.

java ant ivy maven leiningen

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

如何将HashMap <K,V>值类型从Object更改为String?

什么是最简单/最好的转换方式

Map<String, Object>
Run Code Online (Sandbox Code Playgroud)

HashMap<String, String>
Run Code Online (Sandbox Code Playgroud)

我正在使用的API具有返回Map的方法,但如果我不必每次都将Object转换为String,则会更容易.

此外,这甚至值得做吗?HashMap比Map更快/更有效吗?

我假设我必须遍历原始Map并将值复制到新的HashMap.

提前致谢!

java dictionary hashmap type-conversion data-structures

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

什么是更好的浅或深克隆?

我对java中的对象克隆有点困惑.浅层克隆和深度克隆之间的主要区别是什么?

哪个好多了?

java cloning

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

最大单卖利润算法的最优解

输入数组是:

A[0] = 23171 
A[1] = 21015 
A[2] = 21123
A[3] = 21366 
A[4] = 21013 
A[5] = 21367
Run Code Online (Sandbox Code Playgroud)

使命是找到最大的利润.例如A [3] - A [2] = 243,我的代码是:

class Solution {
    int profit = 0;
    public int solution(int[] A) {
         for (int i = 0;i < A.length; i++){
            for (int j = i + 1; j < A.length; j++){
                if(A[j] - A[i] > profit)
                    profit = A[j] - A[i];
            }
         }
         return profit;
   }
}
Run Code Online (Sandbox Code Playgroud)

结果假设是365,但它会在更大的输入上爆炸.该代码的时间复杂度为O(N 2),但可能与O(N)有关.我无法真正看到如何避免在这里筑巢......任何正确方向的指针都会受到赞赏.

java algorithm nested-loops

3
推荐指数
2
解决办法
943
查看次数

Java 比较复杂对象,不包括 JUnit 的某些字段

我尝试了 Unitils 工具,它真的很棒,但没有为您提供排除字段的选项。这样做的唯一方法是将对象设置为 null 并启用标志“IGNORE_DEFAULTS”,但在我的情况下它没有帮助,因为我有一些由系统自动生成的 ID。因此,如果我可以将 id 添加到排除列表中,那就太完美了。

我也尝试过 Mockito ReflectionEquals 但没有帮助,因为我需要一个字段到字段的比较。

还有其他有用的东西吗?我正在寻找数小时但没有成功。

先感谢您!

java comparison junit object

3
推荐指数
2
解决办法
5665
查看次数