请您对以下代码表示意见.
我需要计算2个Date对象之间的差异.确保两个Date对象都在同一个TimeZone中.
public class DateUtils {
public final static long DAY_TIME_IN_MILLIS = 24 * 60 * 60 * 1000;
/**
* Compare between 2 dates in day resolution.
*
* @return positive integer if date1 > date2, negative if date1 < date2. 0 if they are equal.
*/
public static int datesDiffInDays(final Date date1, final Date date2){
long date1DaysMS = date1.getTime() - (date1.getTime() % DAY_TIME_IN_MILLIS);
long date2DaysMS = date2.getTime() - (date2.getTime() % DAY_TIME_IN_MILLIS);
long timeInMillisDiff = (date1DaysMS - date2DaysMS);
int …Run Code Online (Sandbox Code Playgroud) 我正在开发Ubuntu 9.10
我正在编写一个C程序,在我的测试和调试期间,我正在调用malloc并且总是记得调用free() - 这显然只是在调试期间.
我很好奇:我是否正在吃掉每个调试会话系统所具有的空闲内存?或者,在我从IDE关闭应用程序后,内核是否清理了进程内存?逻辑推理我非常确定内核知道整个进程被杀死,因此知道它分配了什么内存,因此即使应用程序没有自由调用,内存仍然被释放.
我很感激解释.
谢谢你,马克西姆.
我在Windows(64位)和Linux(32位)上尝试过以下代码.
我确信没有BufferedOutputStream,代码绑定会抛出OutOfMemoryException,但它没有.
这是为什么?谁在那里做{caching/buffer/steaming}到磁盘?
如果与答案相关,您能否描述完整的流程(Java API - >系统调用)?
这段代码是否使用NIO?
/我困惑.
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteHugeFileToDisk {
private static int BYTE = 1;
private static int KILBYTE = BYTE * 1024;
private static int MEGABYTE = KILBYTE * 1024;
private static int GIGABYTE = MEGABYTE * 1024;
private static long TERABYTE = GIGABYTE * 1024L;
public static void main(String[] args) throws IOException {
FileOutputStream fileOutputStream = new FileOutputStream(args[0]);
DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
byte[] buffer = new byte[MEGABYTE]; …Run Code Online (Sandbox Code Playgroud) 我有输入,34600毫秒我想以格式00:00:34(HH:MM:SS)输出.
我应该在JDK/Joda时间看哪些课程?我需要这个是有效的,最好是线程安全的,以避免每次解析时的对象创建.
谢谢.
- 编辑 -
使用此代码生成时区敏感结果,如何确保格式化是"自然的",即使用绝对值.
import java.util.Locale;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class Test {
public static void main(String[] args) {
DateTimeFormatter fmt = DateTimeFormat.forPattern("kk:mm:ss").withLocale(new Locale("UTC"));
System.out.println(fmt.print(34600));
}
}
Run Code Online (Sandbox Code Playgroud)
结果在02:00:34 - + 2h是因为我的时区是GMT + 2.而预期的输出是00:00:34.
为我的应用程序支持Facebook登录的最佳做法是什么?
我正在看现有的集成应用程序与Facebook.以Pinterest为例,该应用程序即使没有在设备上安装Facebook应用程序也使用iOS本机登录.我也想实现这样的逻辑流程.
看着
如果我的应用程序被授权使用Facebook [iOS 6,FB SDK 3.2]
https://developers.facebook.com/docs/ios/
我不清楚如何实现回退过程,应用程序执行以下操作:
如果可以登录设备,请使用它.如果没有,回退到Facebook应用登录,如果不回退到Facebook Safari登录.
我正在使用json.org JSONObject.我试图将它序列化为memcache并且不那么酷java.io.NotSerializableException: org.json.JSONObject.看看JSONObject 代码,它似乎只不过是一个由JSON逻辑包装的Map.为什么不让它可串行呢?
我希望能够在简单的界面中将对象存储到memcache中.是否有类似的JSONObject API实现,也是可序列化的.或者,您使用什么memcache友好的序列化/反序列化技术?
谢谢你,马克西姆.
运行时附加的C代码会给出错误
summary: malloc.c:3074: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Run Code Online (Sandbox Code Playgroud)
每次对malloc的每次调用(21); (见下文).有人可以解释为什么?我已经尝试了所有我能想到的事情,但它仍然失败了.
文件:summary.c
/*
* File: summary.c
* Author: Maxim Veksler
*
* Created on December 4, 2009, 3:09 AM
*/
#include <stdio.h>
#include …Run Code Online (Sandbox Code Playgroud) 我有一个2枚举值表示对象的映射,我(当前)使用HashMap建模,其中2个枚举值用作键,对象是值.
这是低效的,因为我正在做的是为Enum1.values()x Enum2.values()的每个组合创建一个新的CompositeKey(Enum1 enum1,Enum2 enum2).
我想跳过新的CompositeKey()问题.
我目前想到的解决方法是计算了多次交涉从2个枚举,像int numericKey = enum1.ordinal() * 0xFFFF + enum2.ordinal();后来的时候我会尽map.get(numricKey)我仍然会自动拳击整数-因此创建新实例.
一个完美的解决方案(IMO)将Map实现(不必是通用的...),但我不认为这样的现有的Java.
另一种选择可能mapping = new Object[Enum1.values().length][Enum2.values().length]是我会用它查找,Object = mapping[enum1.ordinal()][enum2.ordinal()]但这似乎有点太"C'ish".
无论如何,运行时性能是这里最重要的方面.
欢迎评论.
谢谢,马克西姆.
import java.util.*;
public class ABC {
public static void main(String[] args) {
List<Integer> values = null;
values = new ArrayList<Integer>();
values.add(5);
values.add(9);
values.add(3);
values.add(55);
values.add(4);
Collections.sort(values);
System.out.println(values);
values = new ArrayList<Integer>();
values.add(5);
values.add(9);
values.add(3);
values.add(55);
values.add(4);
Comparator<Integer> cmp = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int o1i = o1;
int o2i = o2;
return o1i - o1i;
}
};
Collections.sort(values, cmp);
System.out.println(values);
}
}
Run Code Online (Sandbox Code Playgroud)
这打印:
[3, 4, 5, 9, 55]
[5, 9, 3, 55, 4] …Run Code Online (Sandbox Code Playgroud) 为什么在Swift 中有asvs as!vs. as?类型转换?
java ×6
c ×2
datetime ×2
buffer ×1
collections ×1
comparator ×1
facebook ×1
formatting ×1
hashmap ×1
io ×1
ios ×1
jodatime ×1
json ×1
lookup ×1
memcached ×1
memory-leaks ×1
oauth ×1
performance ×1
sorting ×1
swift ×1
types ×1