得到一个字符串以这种格式进入:YYYY-MM-DD-HH.MM.SS.NNNNNN时间戳来自DB2数据库.我需要将其解析为java.sql.Timestamp并且不会丢失任何精度.到目前为止,我一直无法找到现有的代码来解析那么远的微秒.SimpleDateFormat返回Date并仅解析为毫秒.简短地看着JodaTime,并没有看到那也行.
我想知道一些API,我可以用它来检索Android中的天气信息.我发现了使用Google Weather API的样本并且工作正常.但是由于Google Weather API尚未正式公开并且对公众开放,因此存在随时停用的风险.
还有一些博客称,Google Weather API返回的数据不准确,并且使用它时要小心.
因此我正在寻找一些我可以在Android中使用的API.如果有人已经在使用某些API,请告诉我.
在我的项目中,我有一个shapes包含我为我的图形程序设计的形状的包,例如Rectangle,Circle.我还有一两个与java.awt类名相同的包.
现在,因为我不想重命名我的代码库中的每个类,为了向我的源文件显示我所说的类,当我声明一个新的Rectangle时,我需要:
1-显式导入矩形类,即导入shapes.Rectangle
要么
2-只导入我需要的java.awt类而不导入java.awt.*,它自动包含awt.Rectangle
现在问题是两种方式导致大量导入,我目前在每个源文件中平均有15-25个导入,这严重地使我的代码混乱和混乱.
代码中的导入太多是件坏事吗?有没有办法解决?
@Transactional(propagation = Propagation.REQUIRED)
public void exe() {
try {
Reserve reserveInfo = newTransactionTemplate.execute(new TransactionCallback<Reserve>() {
@Override
public Reserve doInTransaction(TransactionStatus status) {
return reserveService.callReserve(reserveDetails);
}
});
if(reserveInfo != null && reserveInfo.getStatus()=="DONE") {
someOtherService.doSomething();
}
} finally {
if(reserveInfo!= null && reserveInfo.getStatus().equals("DONE")){
final String id = reserveInfo.getId();
Release releaseInfo = newTransactionTemplate.execute(new TransactionCallback<Release>() {
@Override
public Release doInTransaction(TransactionStatus status) {
return reserveService.callRelease(id);
}
});
if (releaseInfo.getStatus() != "RELEASED") {
throw new RuntimeException("Problem in releaseing");
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想测试的示例代码.我在网上测试匿名课时找不到多少.我想测试exe()方法,通过newTransactionTemplate.execute方法并模拟对reserveService.callReserve(reserveDetails)的调用.
任何人都可以建议我如何测试这种情况?
这是我试图测试的示例:
private SomeService …Run Code Online (Sandbox Code Playgroud) 标题几乎解释了这个问题.我有一个接口方法:
Set<Field> getFieldSet()
Run Code Online (Sandbox Code Playgroud)
我有一个类,User看起来像这样
class User {
enum Fields implements Field {
USERNAME, PASSWORD;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在我想实现User的getFieldSet()方法.天真的方式似乎只是return EnumSet.allOf(Fields.class)但我得到以下错误:
> Type mismatch: cannot convert from Set<User.Fields> to Set<Field>
Run Code Online (Sandbox Code Playgroud)
除了手动复制EnumSet之外Set<Field>,还有一个很好的方法吗?
我有:
char message1[100];
char message2[100];
Run Code Online (Sandbox Code Playgroud)
当我尝试做的时候message1 = message2,我得到错误:
‘char[100]’从类型分配类型时不兼容的类型‘char *’
我有类似的功能
if(send(clntSocket, echoBuffer, recvMsgSize, 0) != recvMsgSize){
DieWithError("send() failed")
}
Run Code Online (Sandbox Code Playgroud)
插图中.这些可能会以某种方式弄乱吗?:(
我有一种感觉,也许你不能=对字符数组或其他东西做,但我环顾四周,找不到任何东西.
在线程安全方面,HashTable和Dictionary之间有什么区别吗?我没有看到任何......根据msdn,两者的定义如下: -
Hashtable是线程安全的,可供多个读取器线程和单个写入线程使用.当只有一个线程执行写(更新)操作时,它对多线程使用是线程安全的,如果编写器被序列化为Hashtable,则允许无锁读取.
只要未修改集合,Dictionary就可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.
来自C背景我有一个非常基本的问题:传递一个像String数组这样的更大数据类型的值会调用java中的复制构造函数.
因此,此代码会导致通过复制list2中的列表在内存中创建重复列表.因此双内存和CPU利用率.
String[] getList() {
String[] list = new String...
...
return list;
}
String [] list2 = getList();
Run Code Online (Sandbox Code Playgroud)
我的假设是否正确?如果是,是否有像C中传递指针的替代方法.
PS:如果我们让垃圾收集器完成清理额外内存的工作,那么这不是另一组清理内存的CPU利用率,而这些内存本来就不应该创建.
我正在考虑构建一些通用扩展,它们将采用所有这些null,抛出检查和断言,而是使用流畅的API来处理这个问题.
所以我想做这样的事情.
Shall() - Not quite sure about this one yet
.Test(...) - Determines whether the contained logic executed without any errors
.Guard(...) - Guards the contained logic from throwing any exception
.Assert(...) - Asserts before the execution of the code
.Throw(...) - Throws an exception based on a certain condition
.Assume(...) - Similar to assert but calls to Contract.Assume
Run Code Online (Sandbox Code Playgroud)
用法:father.Shall().Guard(f => f.Shop())
问题是我在运行时不想要这些额外的调用,我知道AOP可以为我解决这个问题,我想直接将这些调用内联到调用者,如果你有更好的方法,请告诉我.
现在,在我研究或做任何事情之前,我想知道某人是否已经这样做或知道正在做的工具?
我真的想构建类似的东西并将其发布给公众,因为我认为它可以节省大量时间和头痛.
一些例子.
DbSet<TEntity> set = Set<TEntity>();
if (set != null)
{
if (Contains(entity))
{
set.Remove(entity); …Run Code Online (Sandbox Code Playgroud) 我有这个问题,更多的是一个查询,因为我实际上让它工作,但我不明白为什么,我目前正在学习java和阅读cengage第7版,这是练习之一.
所以我有这个方法:
public static void calculatePrice(){
Scanner userInput = new Scanner(System.in);
int orderNumber;
double totalBill = 0;
orderNumber = userInput.nextInt();
switch(orderNumber){
case 1:
totalBill = totalBill + American;
displayMenu();
calculatePrice();
break;
case 2:
totalBill = totalBill + Espresso;
displayMenu();
calculatePrice();
break;
case 3:
totalBill = totalBill + Latte;
displayMenu();
calculatePrice();
break;
case 0:
System.out.println("Your total bill will be $"+ totalBill);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
本章教我决定,我决定在这种情况下使用开关.我有另一种方法询问用户问题.
这个方法的问题是字段:
double totalBill = 0;
Run Code Online (Sandbox Code Playgroud)
这不起作用,我不知道为什么,程序编译但它始终返回设定价格0,无论我在案例场景中的逻辑.
但是,当我从方法中删除该字段并将其放在顶部时,使其成为类宽:
private static double totalBill = 0;
Run Code Online (Sandbox Code Playgroud)
它工作正常,这是为什么?在方法中使用它似乎更聪明,因为没有其他方法需要使用它.