小编kha*_*hik的帖子

如何在java中获得整数的0填充二进制表示?

例如,1, 2, 128, 256输出可以是(16位):

0000000000000001
0000000000000010
0000000010000000
0000000100000000
Run Code Online (Sandbox Code Playgroud)

我试过了

String.format("%16s", Integer.toBinaryString(1));
Run Code Online (Sandbox Code Playgroud)

它为左边填充放置空格:

`               1'
Run Code Online (Sandbox Code Playgroud)

如何将0s用于填充.我在Formatter中找不到它.还有另一种方法吗?

提前致谢.

PS 这篇文章描述了如何使用左0填充格式化整数,但它不适用于二进制表示.

java binary string-formatting

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

Java条件编译:如何防止代码块被编译?

我的项目需要Java 1.6进行编译和运行.现在我需要使用Java 1.5(来自营销方面).我想替换方法体(返回类型和参数保持不变),以使其使用Java 1.5进行编译而不会出现错误.

详细信息:我有一个实用程序类OS,它封装了所有特定于操作系统的东西.它有一种方法

public static void openFile(java.io.File file) throws java.io.IOException {
  // open the file using java.awt.Desktop
  ...
}
Run Code Online (Sandbox Code Playgroud)

打开文件,如双击(startWindows命令或openMac OS X命令等效).由于无法使用Java 1.5进行编译,因此我希望在编译期间将其排除,并替换为另一种调用run32dllWindows或openMac OS X的方法Runtime.exec.

问题:我该怎么办?注释可以帮到这里吗?

注意:我使用ant,我可以制作两个java文件OS4J5.java,OS4J6.java它们将包含OS带有Java 1.5和1.6所需代码的类,并OS.java在编译之前复制其中一个(或者一种丑陋的方式 - OS.java根据java有条件地替换内容如果有另一种方式,我不想这样做.

详细说明:在CI中可以使用ifdef, ifndef,在Python中没有编译,我可以hasattr在Common Lisp中使用或其他东西检查功能,我可以使用#+feature.Java有类似的东西吗?

发现这篇文章,但它似乎没有帮助.

任何帮助是极大的赞赏.KH.

java conditional-compilation

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

java:带有getter和setter的`volatile`私有字段

我们应该声明私有字段,就像volatile在多个线程中使用instanced一样吗?

Effective Java中,有一个例子,代码在没有volatile的情况下不起作用:

import java.util.concurrent.TimeUnit;

// Broken! - How long would you expect this program to run?
public class StopThread {
    private static boolean stopRequested; // works, if volatile is here

    public static void main(String[] args) throws InterruptedException {
        Thread backgroundThread = new Thread(new Runnable() {
            public void run() {
                int i = 0;
                while (!stopRequested)
                    i++;
            }
        });
        backgroundThread.start();
        TimeUnit.SECONDS.sleep(1);
        stopRequested = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

解释说

while(!stopRequested)
    i++;
Run Code Online (Sandbox Code Playgroud)

优化到这样的事情:

if(!stopRequested)
    while(true)
        i++;
Run Code Online (Sandbox Code Playgroud)

所以stopRequested后台线程看不到进一步的修改,所以它永远循环.(顺便说一句,该代码在没有 …

java volatile memory-model java-memory-model

14
推荐指数
2
解决办法
2341
查看次数

Spring - 捕获bean创建异常

我想在我的代码中捕获bean实例化异常.我有什么选择?一种方法是使用基于Java的容器配置:

@Configuration
public class AppConfig {
  @Bean
  public SomeBean someBean() {
    try {
      return new SomeBean(); // throws SomeException
    } catch(SomeException se) {
      return new SomeBeanStub();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用基于XML或基于注释的配置使用Spring为bean实例化定义异常处理程序?

java configuration spring exception

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

了解java.util.Calendar WEEK_OF_YEAR

我试图理解java.util.Calendar.get(java.util.Calendar.WEEK_OF_YEAR)它是如何工作的,但似乎我错过了一些观点.

String time = "1998-12-31"; // year month day
java.util.Calendar date = java.util.Calendar.getInstance();
date.setTime((new java.text.SimpleDateFormat("yyyy-MM-dd")).parse(time));
System.err.println("Week of year = " + date.get(java.util.Calendar.WEEK_OF_YEAR));
// Week of year = 1 Why ???
Run Code Online (Sandbox Code Playgroud)

为什么date.get(java.util.Calendar.WEEK_OF_YEAR)在一年的最后一周返回1?

而且,WEEK_OF_YEAR因为"1998-01-01"是1而且"1998-12-23"它是52.
有没有人对这种行为有解释?

java datetime calendar

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

"实践中的Java并发" - 缓存的线程安全数字因子(清单2.8)

在下面的代码中(从Java Concurrency in Practice第2章,第2.5节,清单2.8中复制):

@ThreadSafe
public class CachedFactorizer implements Servlet {
    @GuardedBy("this") private BigInteger lastNumber;
    @GuardedBy("this") private BigInteger[] lastFactors;
    @GuardedBy("this") private long hits;
    @GuardedBy("this") private long cacheHits;

    public synchronized long getHits() { return hits; }

    public synchronized double getCacheHitRatio() {
        return (double) cacheHits / (double) hits;
    }

    public void service(ServletRequest req, ServletResponse resp) {
        BigInteger i = extractFromRequest(req);
        BigInteger[] factors = null;
        synchronized (this) {
            ++hits;
            if (i.equals(lastNumber)) {
                ++cacheHits;
                factors = lastFactors.clone(); // questionable line here
            } …
Run Code Online (Sandbox Code Playgroud)

java clone local-variables thread-safety

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

重用java.util.Random实例与每次创建一个新实例

标题几乎是对它的总结-我们可以创建java.util.Random(或SecureRandom)的一个实例,并在每次需要一个随机值时使用它,也可以在每次需要时创建一个新的实例。想知道哪种方法是首选,为什么?

让我们对上下文有一些了解:随机值是在HTTP请求处理程序内部生成的,每个请求一个,并且我正在考虑多线程的问题,寻求安全性和性能的最佳组合。

java random performance multithreading secure-random

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

.NET中的`MessageBox`,`SaveFileDialog`:我应该使用哪个版本?

我应该使用哪一个,有什么区别:

System.Windows.MessageBox

System.Windows.Forms.MessageBox

关于System.Windows.Forms.SaveFileDialog和的相同问题Microsoft.Win32.SaveFileDialog.

我只需要显示一个消息框并保存文件对话框(也在Windows XP上工作).

正确的重新标记是值得赞赏的.

先谢谢,kh.

.net c# namespaces

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

如何向同事证明用例很重要?

...... 以及如何向管理层证明用例可以是非正式的还是有用的?

嗨伙计,

我进入项目的中间,发现没有用例,用户故事,要求,也没有任何类似于规范的东西.由于截止日期很短,目前的开发团队不想花时间在这些事情上.我想加入这个项目,但通过挖掘更多,我发现当前的开发只是通过考虑它们的"惊叹效应"来增加功能,并通过使用底层技术提供的简单性来选择添加的内容.我很惊讶他们如何设法到目前为止(超过4个月)没有要求,但这就是我们现在拥有的.我相信他们所选择的方式是最有把握的产品,具有良好的营销价值.

我是对的,在类似情况下你会做些什么来证明开发团队/管理层在前进之前制定用例/要求?先谢谢,kh.

PS两本Cockburn的书都在书架上......

project-management requirements use-case

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

F#泛型和铸造

在阅读了所有相关的问题之后,我找不到我的问题的答案.写信给你,希望你很快就会回答,并且会毫不犹豫地判断我在这个领域缺乏知识.

我有一个体现函数定义的类型:

type FunctionDefinition<'a>(exec:int->(Data.Reader->'a)) =
    member x.Exec = exec
    member x.ReturnType = typeof<'a>
Run Code Online (Sandbox Code Playgroud)

正如你在这里看到的,exec应该是一个函数,它接受一个int参数并返回另一个函数,它接受一个Data.Reader参数并返回一个类型的值'a(这样一个令人筋疲力尽的短语!).这里的定义Data.Reader无关紧要.

另外,我有一个字典来保持string->FunctionDefinition对,如下:

let FUNCTIONS = new Generic.Dictionary<string, FunctionDefinition<obj>>()
Run Code Online (Sandbox Code Playgroud)

FunctionDefinition实例FUNCTIONS将持有几种类型的功能,这就是为什么它FunctionDefinition<obj>(我相信这是邪恶的根源,但我无法避免这种情况,所以我在这里).

然后我有一些函数要包装FunctionDefinition并放入FUNCTIONS:

/// Function definitions
let unchanged (id:int) = 
    let mutable last = null
    fun (reader:Data.Reader) -> 
        if last = null then
            false
        else
            let cur = reader.GetValue(id)
            let ret = last.Equals(cur)
            last <- cur
            ret

let changed …
Run Code Online (Sandbox Code Playgroud)

generics f# casting

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