我希望能够在Java中更改1970年到2008年的基本毫秒参考,这样我就可以节省数据库中的空间和唯一的ID.
最好是Joda-Time.
所谓的Java 7版本中即将推出的jsr-310实现了它.
在此链接的"离散时间轴"部分中,它指出毫秒的计数已从1970年改为2008年
http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html
我能看到的唯一其他选项是每次需要查找记录时以数学方式实现它.
例如
DateTime dt = new DateTime();
long now = dt.getMillis();
DateTime dt2 = new DateTime(2008, 1, 1, 0, 0, 0, 0);
long then = dt2.getMillis();
long smallerDate = now - then;
Run Code Online (Sandbox Code Playgroud)
较小的日期将存储在DB中
- 编辑 -
所以我误读了JSR-310,这是不可能的.
有更好的方法来节省空间,然后处理成千上万的请求计算多头的头痛.
我想将长记录为日期,因为我永远不会知道将数据库移动到哪里,也许MySQL => Oracle.
所以我不想要时间戳,我只想要BigInts.
我正在尝试使用maven(mvn)构建一个项目.您可能知道(对于以前使用过mvn的人),如果项目缺少任何构建依赖项,mvn首先从某个地方下载这些依赖项(我猜中央存储库).我的问题是,在Windows 7上,mvn在此下载阶段非确定性且经常挂起.昨天,我已经等了10个小时才能下载一个小到300-400 kbs的依赖项.有人知道如何解决这个问题或原因是什么?
谢谢,
我有以下代码来获取当前系统日期的不同部分(本案例为10-11-2011).
Calendar now = Calendar.getInstance();
String dt = ""+now.get(now.DATE)+"-"+now.get(now.MONTH)+"-"+now.get(now.YEAR);
Run Code Online (Sandbox Code Playgroud)
在这里,DATE与YEAR预期字段给值,但MONTH现场是给意想不到的效果,首先我没有知道MONTH现场始于零,所以有当月的11给我10.现在,如果我使用now.get(now.MONTH+1)它比它返回46.而使用简单now.MONTH而不是使用get方法给出2.
那么,我在这里做错了什么?它不应该是Calendar类中的错误.
请注意,我正在使用JDK 7.
我在最后几天问了很多问题,因为我在我的android项目中没有包含.jar-File(使用ant).
今天,我将这个Common-Project的Java版本切换为1.6并创建了一个新的.jar-File.
不,它有效!
有人能告诉我,为什么Android(2.2)不支持Java 1.7?
谢谢!
作为实习的一部分,我被要求调查一个错误.一段代码正在抛出
java.lang.IllegalArgumentException:比较方法违反了它的一般合同!
自定义Comparator是通过查看long所述自定义类的成员变量来比较两个自定义类:
return v1 > v2 ? -1 : v1 < v2 ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)
equals此自定义类的方法查看此自定义类的String成员变量.我们有一段时间重现这种行为.我下意识的反应是代替return语句在自定义Comparator与return v2.compareTo(v1);范围,但我们是持怀疑态度,这将解决这个问题.有人可以提供任何见解吗?
Arrays.sort(anArray, new Comparator<ACustomClass>() {
@Override
public int compare(ACustomClass o1, ACustomClass o2) {
long v1 = o1.getALong();
long v2 = o2.getALong();
return v1 > v2 ? -1 : v1 < v2 ? 1 : 0;
}});
Run Code Online (Sandbox Code Playgroud) Java泛型是否有办法告诉编译器类型T必须是类型U?例如
public class Whatever<T, U> {
T specific;
U moreGeneral;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想确保T是其子类U.有没有办法指定这个?
try-with-resources语句 以下是来自Java Docs的示例
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
Run Code Online (Sandbox Code Playgroud)
按照文档,
try-with-resources语句确保在语句结束时关闭每个资源.
我的问题是,为什么我需要在try关键字后立即在括号内声明资源.(比如上面的BuffereReader)
BuffereReader实现 java.lang.AutoCloseable
那么为什么不支持这样的事情,
static String readFirstLineFromFile(String path) throws IOException {
try{
BufferedReader br =
new BufferedReader(new FileReader(path))
return br.readLine();
}
}
Run Code Online (Sandbox Code Playgroud)
并且只是在尝试之后隐式关闭资源对象.(因为它实现了AutoCloseable)
我只是想了一下,为什么要改变语法.
请正确阅读问题,仅关于语法.
我最近遇到了问题,在单节点机器上安装hadoop.
命令的错误日志
bin/hadoop namenode -format
STARTUP_MSG: java = 1.7.0_80
************************************************************/
17/08/22 21:03:56 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
17/08/22 21:03:56 INFO namenode.NameNode: createNameNode [-format]
17/08/22 21:03:58 ERROR namenode.NameNode: Failed to start namenode.
java.lang.UnsupportedClassVersionError: org/apache/hadoop/mapreduce/lib/output/SequenceFileAsBinaryOutputFormat : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.hadoop.mapreduce.util.ConfigUtil.addDeprecatedKeys(ConfigUtil.java:54)
at org.apache.hadoop.mapreduce.util.ConfigUtil.loadResources(ConfigUtil.java:42)
at org.apache.hadoop.mapred.JobConf.<clinit>(JobConf.java:119)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:278) …Run Code Online (Sandbox Code Playgroud) 使用与Java 7 编译器的streamsupportjavac我遇到以下编译错误:
接口java8.util.stream.Stream <T>中的[ERROR]方法映射不能应用于给定类型; 需要[ERROR]:java8.util.function.Function <?超级java.lang.Object,?扩展R>
[ERROR]发现:<anonymous java8.util.function.Function <java.lang.Integer,java.lang.String >> [ERROR]原因:没有类型变量的实例R存在以便参数类型<anonymous java8.util.function.Function <java.lang.Integer,java.lang.String >>符合形式参数类型java8.util.function.Function <?超级java.lang.Object,?扩展R>
我的代码是
List<Object> listSum = RefStreams.iterate(0, new UnaryOperator<Integer>() {
@Override
public Integer apply(Integer n) {
return n+1;
}
}).limit(10000).map(new Function<Integer,String>() {
@Override
public String apply(Integer n) {
return String.format("%04d", n);
}
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我想知道该怎么做以及为什么会出现这个错误?谢谢
有一个应用程序可在Oracle JRE 7上运行,并使用标准Microsoft jdbc驱动程序与Microsoft SQL Server交换数据。
在部署此应用程序的公司决定将数据库更新到SQL Server 2017并禁用所有低于TLSv1.2的TLS协议之前,它一直运行良好。现在,应用程序在尝试连接到SQL Server时出现以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.
Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:5892fb2f-67c4-45f5-a01d-cc7c1db8f69e".
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1668)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1323)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:131)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:156)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:145)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648)
Caused by: java.io.IOException: SQL Server did not …Run Code Online (Sandbox Code Playgroud) java-7 ×10
java ×7
android ×1
comparator ×1
date ×1
datetime ×1
exception ×1
generics ×1
hadoop ×1
jar ×1
java-8 ×1
java-stream ×1
jodatime ×1
jsr310 ×1
maven ×1
mssql-jdbc ×1
sql-server ×1
tls1.2 ×1
version ×1
windows ×1