小编Pra*_*ram的帖子

一个线程可能会死锁吗?

从技术上讲,Java中的线程是否可以自行解锁?

我在一段时间的采访中被问到这个问题并回答说这是不可能的,但面试官告诉我这是.不幸的是,我无法获得如何实现这种僵局的方法.

这让我思考,我能想到的唯一情况就是你可以实现这一点的地方就是你有一个RMI服务器进程,其中包含一个调用自身的方法.调用该方法的代码行放在synchronized块中.

这甚至可能还是面试官不正确?

我正在考虑的源代码是这些行(其中testDeadlock在RMI服务器进程中运行)

public boolean testDeadlock () throws RemoteException {
    synchronized (this) {
        //Call testDeadlock via RMI loopback            
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading deadlock rmi

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

JDK中使用的设计模式示例

可能重复:
GoF设计模式的示例

在一段时间的采访中,我被要求提供JDK中的设计模式的一些示例.

我能够辨认出自己的头脑

Flyweight - 在String pool Singleton中使用 - 在java.lang.Runtime Iterator中 - 在Collections类上使用

不是很多.

JDK中使用的设计模式的其他好例子是什么?

java design-patterns

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

jar文件的大小是否会影响JVM的性能?

我想知道jar文件的大小是否对Java虚拟机的性能有任何影响?

是否会出现jar文件太大而JVM无法有效运行的程度?

java performance jar

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

使用Spring进行Swing GUI开发

是否有任何体面的教程用于使用Spring构建Swing GUI应用程序(最好是v3)?

java user-interface swing spring

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

在C++中,警告"成员对齐对包装敏感"的含义是什么?

在C++中,"成员对齐对包装敏感"的警告是什么意思?我正在使用Visual Studio 2005.

如何删除这些警告?我不想禁用它们顺便说一句.

c++ visual-studio-2005

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

从Google云端硬盘上传到Dropbox

作为测试案例,我正在尝试使用Google Scripts将文件从Google云端硬盘复制到Dropbox

function pushBuild() {
  // Setup OAuthServiceConfig
  var oAuthConfig = UrlFetchApp.addOAuthService("dropbox");
  oAuthConfig.setAccessTokenUrl("https://api.dropbox.com/1/oauth/access_token");
  oAuthConfig.setRequestTokenUrl("https://api.dropbox.com/1/oauth/request_token");
  oAuthConfig.setAuthorizationUrl("https://www.dropbox.com/1/oauth/authorize");
  oAuthConfig.setConsumerKey(ScriptProperties.getProperty("dropboxKey"));
  oAuthConfig.setConsumerSecret(ScriptProperties.getProperty("dropboxSecret"));

  var fileName = "blah.zip"
  var folderName = "upload_dir"

  var docs = DocsList.getFolder(folderName).find(fileName);
  for(n=0;n<docs.length;++n){
    if(docs[n].getName() == fileName){
      var ID = docs[n].getId();
      var options = {
        "oAuthServiceName" : "dropbox",
        "oAuthUseToken" : "always",
        "method" : "put",
        "payload" : docs[n].getBlob().getBytes(),
        "contentType" : "application/zip"        
    };

  var response = UrlFetchApp.fetch("https://api-content.dropbox.com/1/files_put/sandbox/upload_dir/" + fileName, options);

  Logger.log(response);
  }
 }

}
Run Code Online (Sandbox Code Playgroud)

Dropbox中的应用程序授权请求出现,它告诉我我已成功授权我的应用程序,但当我检查时,该应用程序不在"我的应用程序"列表中,该文件尚未上载且没有日志中的条目.GD和DB上都存在目录"upload_dir".我尝试使用"App Folder"和"Full Dropbox"应用程序类型的相同代码,但得到相同的结果.

此外,再次运行脚本再次触发授权页面,类似于

这个

要显示,单击"允许",然后显示成功屏幕,但应用程序未列在"我的应用程序"中.再次运行脚本会重复该过程.

谁能指出我做错了什么?

更新

所以,我现在尝试使用单独的api调用来实现它,但仍然没有取得任何成功.

function testOAuth() {

  var …
Run Code Online (Sandbox Code Playgroud)

dropbox google-apps-script dropbox-api

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

Maven pom.properties文件中的自定义值

我正在尝试在Maven在该META-INF/maven/${groupId}/${artifactId}位置生成的pom.properties文件中添加自定义值

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
            <archive>
                <manifestEntries>
                    <build>${BUILD_TAG}</build>
                </manifestEntries>
                <addMavenDescriptor>true</addMavenDescriptor>
                <pomPropertiesFile>${project.build.directory}\interface.properties</pomPropertiesFile>
            </archive>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

interface.properties文件的内容是

# Build Properties
buildId=746
Run Code Online (Sandbox Code Playgroud)

使用文档我将pomPropertiesFile元素指向外部属性,但生成的pom.properties文件在运行后仍然具有默认内容mvn install

这个pomPropertiesFile元素的正确用法是什么?

编辑

我相信问题在于org.apache.maven.archiver.PomPropertiesUtil.如果查看中的方法sameContents,如果外部文件中的属性与默认值相同则返回true,如果不同则返回false.如果结果为false,则忽略外部文件的内容.sameContents

果然,这已被记录为一个错误

pom.xml maven-3 maven

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

加快java深层复制操作

我们使用序列化实现了通用深度复制机制.

import java.io.*;

public class CopyUtil {

    public static Object clone(Object source) {
        Object retVal = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(source);
            oos.flush();
            oos.close();

            ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
            retVal = in.readObject();
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }

        return retVal;
    }
}
Run Code Online (Sandbox Code Playgroud)

存在相对大量的对象类,它们一直在不断发展,需要维护 - 这就是我们继续使用通用克隆机制的原因.我们没有保持津津乐道的想法readObject(),并writeObject()在200多个班.

不幸的是,Java中的序列化机制相对较慢,当我们的系统处于峰值负载时,我们遇到了问题.

是否有任何建议的方法可以让我们如何加快速度或者(如果我们错误地执行了这一点)克隆对象的替代方法?

java performance serialization

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

Java中的字符串比较顺序

以下两种字符串比较方法都被认为是相同的

public class TestString {
    public static final String CONSTVAL="foo";

    public boolean testString1(String testVal) {
        return testVal.equalsIgnoreCase(CONSTVAL);
    }

    public boolean testString2(String testVal) {
        return CONSTVAL.equalsIgnoreCase(testVal);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者是否应该优先考虑一种比较?

java string coding-style

5
推荐指数
2
解决办法
546
查看次数

从Java Date对象中删除时间的最有效方法是什么?

从JDK中仅使用Classes从Java日期对象中删除时间部分的最有效方法是什么?

我有以下内容

myObject.getDate()= {java.util.Date}"Wed May 26 23:59:00 BST 2010"

要将时间重置回00:00:00,我正在执行以下操作

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date myDate = sdf.parse(sdf.format(myObject.getDate()));
Run Code Online (Sandbox Code Playgroud)

输出现在

myDate = {java.util.Date}"Wed May 26 00:00:00 BST 2010"

有没有更好的方法来实现相同的结果?

java date

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

用于 Java Swing 应用程序的 Spy++

java swing应用程序的Spy ++是否有等价物?

我使用第三方应用程序,其中包含通过基于反射的机制调用的大量屏幕。

每当出现问题时,定位问题代码的唯一方法是搜索源(我们可以访问源,但由于合同义务无法修复和部署),以查找出现在相关窗口上的特定字符串序列。例如,如果我在有问题的窗口上看到字符串“XYZ”,我必须搜索该字符串的源以找到存在错误的 java 文件。

是否有工具可以让我在运行时指向 Swing 屏幕并返回生成屏幕的类?

java swing spy++

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

初始化 HRESULT 的正确方法是什么?

我在 Visual Studio 2005 中使用 C++,但收到许多警告

potentially uninitialized local variable 'hr' used
Run Code Online (Sandbox Code Playgroud)

其中 hr 定义为

HRESULT hr;
Run Code Online (Sandbox Code Playgroud)

初始化 HRESULT 的正确方法是什么?

c++ visual-studio-2005

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