我正在尝试使用Java和MySQL编写代码以与第三方开发的数据库进行互操作.此数据库具有一个字段,该字段将字段中的时间戳存储DATETIME
为UTC日期.运行数据库和客户端的服务器的时区设置为非UTC区域(Europe/London
),因此默认情况下,时间戳的读取不正确,就像它是本地时间一样.我正在尝试编写代码以将其读回UTC.
我在这里已经阅读了几个类似的问题,但是他们都没有一个对我有用的答案:
不幸的是,我无法更改任何服务器设置,所以我尝试使用连接的"time_zone"变量来设置数据库服务器使用UTC和可选Calendar
参数ResultSet.getTimestamp
来检索日期,但这对结果没有影响.这是我的代码:
private static final Calendar UTCCALENDAR = Calendar.getInstance (TimeZone.getTimeZone (ZoneOffset.UTC));
public Date getDate ()
{
try (Connection c = dataSource.getConnection ();
PreparedStatement s = c
.prepareStatement ("select datefield from dbmail_datefield where physmessage_id=?"))
{
fixTimeZone (c);
s.setLong (1, getPhysId ());
try (ResultSet rs = s.executeQuery ())
{
if (!rs.next ()) return null;
return new Date (rs.getTimestamp(1,UTCCALENDAR).getTime ()); // do not use SQL timestamp object, as …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将Jetty 9嵌入到我的项目中,而http://www.eclipse.org/jetty/documentation/current/advanced-embedding.html#jetty-helloworld上的教程建议我需要一个名为"jetty-的文件". all.jar",但我似乎无法在下载分发中找到它.我从哪里得到它?我不是在使用maven.
我正在调查Tomcat/Spring/Hibernate应用程序中的内存泄漏,这会导致在几次重新部署后导致可怕的"out of permgen"错误.我已经下载了plumbr的免费版本,这证实我有一个classloader泄漏,但不幸的是我买不起499美元来获得详细的报告.是否有免费工具可以执行等效分析并告诉我在哪里寻找它?或者我可以调查此类泄漏的其他一些常见原因?
到目前为止我采取的步骤:
还有什么可能导致泄漏?
场景是这样的:Eclipse Juno,ADT 22.这个android项目的创建依赖于另一个Eclipse项目(不是一个简单的Java项目),它导出了对另一个库的依赖.我已经从依赖项列表中删除了Java项目,但导出的库依赖项仍保留在项目构建路径的Android私有库部分中,我无法弄清楚如何删除它.
有任何想法吗?
(供参考,这是构建路径的样子:
我想要摆脱的lib是"simple-xml-2.6.2.jar",因为我已经转而使用JSON而不是XML而不再需要它.项目"bincomodel"不再是该项目的依赖项; 我在"项目"选项卡上删除了它.)
试图编写我的第一个Android-by-TDD应用程序(我已经编写了一些没有TDD的小型Android应用程序,因此熟悉环境),但我似乎无法理解如何编写我的第一个测试.
场景:
我有一个活动,TasksActivity和一个服务,TasksService.我需要测试TasksActivity在其onStart()方法中启动TasksService.
我写的测试是这样的:
public class ServiceControlTest extends ActivityUnitTestCase<TasksActivity>{
public ServiceControlTest() {
super(TasksActivity.class);
}
public void testStartServiceOnInit () {
final AtomicBoolean serviceStarted = new AtomicBoolean(false);
setActivityContext(new MockContext() {
@Override
public ComponentName startService(Intent service) {
Log.v("mockcontext", "Start service: " + service.toUri(0));
if (service.getComponent().getClassName().equals (TasksService.class.getName()))
serviceStarted.set(true);
return service.getComponent();
}
});
startActivity(new Intent(), null, null);
assertTrue ("Service should have been started", serviceStarted.get());
}
}
Run Code Online (Sandbox Code Playgroud)
在TasksActivity中的onCreate()方法中,我有:
startService(new Intent(this, TasksService.class));
Run Code Online (Sandbox Code Playgroud)
我也试过了
getBaseContext().startService(new Intent(this, TasksService.class));
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下都不会调用我的MockContext的startService方法.有没有办法设置拦截这种方法?我真的不必开始包装基本的Android API以执行这样的基本测试......
我在Android项目中有一个JUnit测试用例,其中包含如下所示的代码:
private static final URI TEST_RESOURCE_URL = TasksService.TASKLIST_RESOURCELIST_URL.resolve("task/test.task");
public void setUp () {
Log.i("Test", "TEST_RESOURCE_URL=" + TEST_RESOURCE_URL);
}
Run Code Online (Sandbox Code Playgroud)
此测试类具有多个测试方法,其中一些参考(但不尝试修改)此常量的值.但是,当我运行这些测试(Android 2.2.2)时,所有这些测试但第一个测试失败了,logcat向我展示了这个:
03-03 18:56:41.791: I/Test(12008): TEST_RESOURCE_URL=http://apate.meridiandigital.net/tasks/task/test.task
03-03 18:56:42.101: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.131: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.151: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.281: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.311: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.341: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.361: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.391: I/Test(12008): TEST_RESOURCE_URL=null
03-03 18:56:42.391: I/Test(12008): TEST_RESOURCE_URL=null
Run Code Online (Sandbox Code Playgroud)
静态最终字段如何改变这样的值?我该如何防止这种情况发生?还有其他可能发生的情况吗?
---编辑1
我现在已经将代码修改为一个可以包含在其中的较小示例.见下文:
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
public …
Run Code Online (Sandbox Code Playgroud) 正如在这个问题中所讨论的那样,distinct()
当运行它的流被运行时知道时,实现能够使用更有效的算法.如果我们知道流是排序的(例如,因为它来自外部预先排序的数据源,例如带有order by
子句的SQL查询)但是没有标记为这样,我们如何才能获得类似的结果?有一个unordered()
操作可以删除排序标志,但据我所知,没有办法告诉系统数据是在外部排序的.
我正在努力理解sun.misc.Unsafe的文档 - 我想因为它不适合一般用途,没有人真的为让它可读而烦恼 - 但实际上我真的需要一种方法来找到一个元素的地址一个数组(以便我可以将指针传递给本机代码).有没有人有任何工作代码这样做?它可靠吗?
我尝试从运行Linux的PC上交叉编译boost 1.52.0 for freescale ARM处理器板.
基于交叉编译boost的(相当简单的)文档,我已经设置了一个user-config.jam文件,其内容如下:
using gcc : arm : /mnt/lv1/src/ROM1210/cross_compiler/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-g++ ;
Run Code Online (Sandbox Code Playgroud)
然后我跑了
bootstrap.sh --prefix=`realpath ../tools`
./b2 toolset=gcc-arm
Run Code Online (Sandbox Code Playgroud)
结果是:
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/tools/gcc.jam:107: in gcc.init from module gcc
error: toolset gcc initialization:
error: version 'arm' requested but 'g++-arm' not found and version '4.3.2' of default 'g++' does not match
error: initialized from
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/build/toolset.jam:39: in toolset.using from module toolset
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/build-system.jam:481: in process-explicit-toolset-requests from module build-system
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/build-system.jam:562: in load from module build-system
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/kernel/modules.jam:283: in import from module modules
/mnt/lv1/src/ROM1210/extras/boost_1_52_0/tools/build/v2/kernel/bootstrap.jam:142: in boost-build from …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个对象,并在一个操作中填充该对象持有的外部集合的成员.我已经尝试了我能想到的每一个操作顺序,而且似乎无法让它工作.
我的课程是(跳过不相关的字段和注释):
@DatabaseTable
public class ScheduledJob
{
@DatabaseField(id=true)
private String id = UUID.randomUUID ().toString ();
@ForeignCollectionField(eager=true)
private Collection<ScheduledJobTask> tasks;
/* other stuff here ... */
}
@DatabaseTable
public class ScheduledJobTask
{
@DatabaseField(id=true)
private String id = UUID.randomUUID ().toString ();
@DatabaseField(foreign=true)
private ScheduledJob job;
/* more other stuff ... */
public ScheduledJobTask(Task t) {
/* initialise scheduled task from template task by copying relevant fields...*/
}
}
Run Code Online (Sandbox Code Playgroud)
我这样创建我的对象:
ScheduledJob job = new ScheduledJob ();
// fill in other fields of job …
Run Code Online (Sandbox Code Playgroud)