小编Rae*_*ald的帖子

在SimpleDateFormat模式字符串中使用字母字符

是否可以在SimpleDateFormat模式字符串中包含字母字符?

我正在尝试创建一个格式字符串,其中字母"T"包含在时间之前,例如:

2003-11-15 T 09:30:47-05:00

我目前正在使用yyyy-MM-ddhh:mm:ssZ模式字符串.

如果我将其更改为yyyy-MM-ddThh:mm:ssZ它将抛出一个例外,'A'为'Z','a'为'z'保留.

是否有任何解决方案不涉及使用两个DateFormats?

java formatting datetime simpledateformat

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

时间依赖单元测试

我需要测试一个函数,其结果将取决于当前时间(使用Joda时间isBeforeNow()).

    public boolean isAvailable() {
    return (this.someDate.isBeforeNow());
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用Mockito存根/模拟系统时间,以便我可以可靠地测试功能?

java junit

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

用于迭代2D数组的嵌套循环的哪种排序更有效

在时间(缓存性能)方面,嵌套循环在迭代2D阵列中的哪一个排序更有效?为什么?

int a[100][100];

for(i=0; i<100; i++)
{
   for(j=0; j<100; j++)
   {
       a[i][j] = 10;    
   }
}
Run Code Online (Sandbox Code Playgroud)

要么

for(i=0; i<100; i++)
{
   for(j=0; j<100; j++)
   {
      a[j][i] = 10;    
   }
}
Run Code Online (Sandbox Code Playgroud)

c performance for-loop cpu-cache

72
推荐指数
5
解决办法
7078
查看次数

什么是调试器,它如何帮助我诊断问题?

这是一个通用的问题,以帮助有程序问题的新程序员,但不知道如何使用调试器来诊断问题的原因.

这个问题涉及两类更具体的问题:

  • 当我运行我的程序时,它不会产生我期望的输出我给它的输出.
  • 当我运行我的程序时,它会崩溃并给我一个堆栈跟踪.我已经检查了堆栈跟踪,但我仍然不知道问题的原因,因为堆栈跟踪不能为我提供足够的信息.
  • 当我运行程序时,由于分段错误(SEGV)而崩溃.

[What is a debugger and how can it help me diagnose problems?](https://stackoverflow.com/q/25385173)

language-agnostic debugging

72
推荐指数
2
解决办法
7433
查看次数

如何追踪"双重免费或损坏"错误

当我运行我的(C++)程序时,它会因此错误而崩溃.

*glibc检测到* ./load:双重免费或损坏(!prev):0x0000000000c6ed50***

如何追踪错误?

我尝试使用print(std::cout)语句,没有成功.可以gdb让这更容易吗?

c c++ debugging free

71
推荐指数
7
解决办法
18万
查看次数

为什么许多Unix程序使用像USR1这样的信号?

许多Unix程序接受像USR1和的信号USR2.例如,要动态升级Nginx的可执行文件,请发送kill -USR2.

我知道这USR1是一个"用户定义"信号,这意味着创建程序的人可以用它来表示"关闭"或"转储你的日志"或"打印foo一千次"或其他什么.但我不明白为什么他们必须使用这个任意名称.为什么不kill -UPGRADE,或kill -GRACEFUL_SHUTDOWN?Unix只允许特定信号吗?

当我们参与其中时,Nginx还使用以下信号(参见文档):

  • TERM,INT:快速关机
  • 退出:正常关机
  • HUP:
    • 配置重新加载
    • 使用新配置启动新的工作进程
    • 优雅地关闭旧的工作进程
  • USR1:重新打开日志文件
  • USR2:即时升级可执行文件
  • WINCH:正常关闭工作进程

HUP?绞车?这些名字的原因是什么?我在哪里可以了解更多相关信息?

unix signals

70
推荐指数
6
解决办法
5万
查看次数

为什么在双重检查锁定中使用volatile

Head First设计模式书中,具有双重检查锁定的单例模式已实现如下:

public class Singleton {
    private volatile static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么volatile被使用.volatile使用不会 破坏使用双重检查锁定的目的,即性能?

java singleton design-patterns locking double-checked-locking

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

在使用ConcurrentMap的putIfAbsent之前,你应该检查地图是否包含Key

我一直在使用Java的ConcurrentMap作为可以从多个线程使用的地图.putIfAbsent是一个很好的方法,比使用标准的map操作更容易读/写.我有一些看起来像这样的代码:

ConcurrentMap<String, Set<X>> map = new ConcurrentHashMap<String, Set<X>>();

// ...

map.putIfAbsent(name, new HashSet<X>());
map.get(name).add(Y);
Run Code Online (Sandbox Code Playgroud)

可读性明智这很好,但它确实需要每次创建一个新的HashSet,即使它已经在地图中.我可以这样写:

if (!map.containsKey(name)) {
    map.putIfAbsent(name, new HashSet<X>());
}
map.get(name).add(Y);
Run Code Online (Sandbox Code Playgroud)

通过此更改,它会失去一点可读性,但不需要每次都创建HashSet.在这种情况下哪个更好?我倾向于支持第一个,因为它更具可读性.第二个会表现得更好,也可能更正确.也许有比这两种方法更好的方法.

以这种方式使用putIfAbsent的最佳做法是什么?

java concurrency performance concurrenthashmap

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

log4j没有打印异常的stacktrace

我正在使用log4j和tomcat.当我在JSP中记录异常时,servlet:

private Logger _log = Logger.getLogger(this.getClass());
...
try{...} catch (Exception e) {
    _log.error("Error refreshing all prices", e);
}
Run Code Online (Sandbox Code Playgroud)

我只得到异常的第一行,没有堆栈跟踪.

17-Feb 17:37:45 ERROR AutoContrib:175 - 发布csv文件时出现异常:java.lang.ArrayIndexOutOfBoundsException

根本没有帮助!

我的log4j.properties文件(/tomcat/common/classes/log4j.properties)如下所示:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{dd-MMM HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.stdout.threshold=info

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=5000KB
log4j.appender.file.maxBackupIndex=10
log4j.appender.file.File=${catalina.home}/logs/web.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd-MMM HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.file.threshold=info

log4j.rootLogger=debug, stdout, file
Run Code Online (Sandbox Code Playgroud)

java logging tomcat log4j

67
推荐指数
4
解决办法
6万
查看次数

System.out.println的多线程输出是否是交错的

如果多个线程在没有同步的情况下调用System.out.println(String),输出是否可以交错?或者每行写入原子?该API只字不提同步的,所以这似乎是可能的,或者是由缓冲和/或虚拟机存储器模型等防止交织输出?

编辑:

例如,如果每个线程包含:

System.out.println("ABC");
Run Code Online (Sandbox Code Playgroud)

输出保证是:

ABC
ABC
Run Code Online (Sandbox Code Playgroud)

或者它可能是:

AABC
BC
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization printstream

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