我有一个日期字段,当使用XStream转换为xml 时,以毫秒和区域给出时间.我只需将其转换或格式化为"MMMM dd, yyyy HH:mm:ss".如何使用XStream做到这一点?我不想改变吸气剂和制定者.谢谢.
我的课:
public class Datas {
private String name;
private Calendar dob;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Calendar getDob() {
return dob;
}
public void setDob(Calendar dob) {
this.dob = dob;
}
public static void main(String[] args) {
Datas datas = new Datas();
datas.setName("Ahamed");
datas.setDob(Calendar.getInstance());
XStream stream = new XStream();
System.out.println(stream.toXML(datas));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
<Datas>
<name>Ahamed</name>
<dob>
<time>1329081818801</time>
<timezone>Asia/Calcutta</timezone>
</dob> …Run Code Online (Sandbox Code Playgroud) 我并不精通多线程.我试图通过一个生产者线程重复截取屏幕截图,该线程将BufferedImage对象添加到,ConcurrentLinkedQueue并且消费者线程将为对象poll排队BufferedImage以将它们保存在文件中.我可以通过重复轮询(while循环)来消耗它们,但我不知道如何使用notify()和消耗它们wait().我曾尝试使用wait(),并notify在较小的项目,但不能在这里实现它.
我有以下代码:
class StartPeriodicTask implements Runnable {
public synchronized void run() {
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e1) {
e1.printStackTrace();
}
Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit()
.getScreenSize());
BufferedImage image = robot.createScreenCapture(screenRect);
if(null!=queue.peek()){
try {
System.out.println("Empty queue, so waiting....");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
queue.add(image);
notify();
}
}
}
public class ImageConsumer implements …Run Code Online (Sandbox Code Playgroud) In Swing有没有办法让单一选项有两种颜色?我的意思是,如果我有一个option,说Show only cities [Alt+C]的JComboBox,我想Show only cities在一个颜色和文字[Alt+C]的另一种颜色(热键).同样,我有JList,其中包含一个字符串项列表.我希望通过颜色区分彼此.
简而言之,
JComboBox选项.JList用颜色区分对象.谢谢.
当我使用PeriodFormatter如下
PeriodFormatter formatter = new PeriodFormatterBuilder().appendHours()
.appendLiteral(":").appendMinutes().appendLiteral(":")
.appendSeconds().toFormatter();
Run Code Online (Sandbox Code Playgroud)
我得到了输出,4:39:9这意味着4小时39分钟和9秒.
如何修改格式化程序来生成04:39:09?谢谢
Collections是一个公共类,然后我们可以调用它的隐式默认构造函数.它没有私有构造函数,它会阻止对象创建或强制使用静态工厂方法.当我实例化为new Collections(),我得到错误为"构造函数不可见".总之为什么我们不能有java.util.Collections班级的实例?谢谢.
我想实现会话超时类的东西JFrame.我的Swing应用程序具有登录身份验证,但在一段时间不活动后没有失效.我有一种方法(想法)这样做,比如检查最后两个连续事件(键或鼠标)的时间戳.我认为必须有一种优雅的方式来实现这一目标.
有没有其他方法这样做?
我正在尝试使用以下代码复制文件:
1:
int data=0;
byte[] buffer = new byte[4096];
while((data = bufferedInputStream.read())!=-1){
bufferedOutputStream.write(data);
}
Run Code Online (Sandbox Code Playgroud)
2:
byte[] buffer = new byte[4096];
while(bufferedInputStream.read(buffer)!=-1){
bufferedOutputStream.write(buffer);
}
Run Code Online (Sandbox Code Playgroud)
文件的实际大小为3892028字节(在Windows上).该文件将由用户thro struts2 fileupload上传.上传的文件大小与Windows完全相同.当我尝试从临时文件夹复制上传的文件时,复制的文件大小不一,所用时间也各不相同(可忽略不计).请查看以下读物.
Without using buffer(Code 1)
Time taken 77
3892028
3891200
Buffer size 1024(Code 2)
Time taken 17
3892028
3891200
Buffer size 4096(Code 2)
Time taken 18
3892028
3891200
Buffer size 10240(Code 2)
Time taken 14
3892028
3901440
Buffer size 102400(Code 2)
Time taken 9
3892028
3993600
Run Code Online (Sandbox Code Playgroud)
如果我进一步增加缓冲区大小,则所花费的时间会增加,也可以忽略不计.所以我的问题是,
我不知道下面会发生什么?谢谢你的任何建议. 编辑:我有flush()和close()方法调用. 注意:我修剪了我的代码以使其更简单.
可能重复:
.NET上的双精度问题
Double计算产生奇数结果
我知道双重价值的内部代表0.2是类似的0.199999.但是下面的代码仍然让我感到困惑.
码:
public static void main(String[] args) {
double d= 0.3d;
double f= 0.1d;
System.out.println(d+f);
System.out.println(d*f);
System.out.println(d);
System.out.println(f);
System.out.println(d-f);
System.out.println(d/f);
System.out.println((d-f)*(d-f));
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
0.4
0.03
0.3
0.1
0.19999999999999998
2.9999999999999996
0.039999999999999994
Run Code Online (Sandbox Code Playgroud)
实际上发生了什么?加法,乘法顺利,但减法,除法不是.任何人都可以详细说明为什么加法与减法不同?
如何使用按位运算符更改int的符号?显然我们可以使用x*=-1或x/=-1.有没有最快的方法呢?
我做了一个小测试,如下所示.只是为了好奇......
public class ChangeSign {
public static void main(String[] args) {
int x = 198347;
int LOOP = 1000000;
int y;
long start = System.nanoTime();
for (int i = 0; i < LOOP; i++) {
y = (~x) + 1;
}
long mid1 = System.nanoTime();
for (int i = 0; i < LOOP; i++) {
y = -x;
}
long mid2 = System.nanoTime();
for (int i = 0; i < LOOP; i++) {
y = …Run Code Online (Sandbox Code Playgroud)