从数据库加载后,Java Date toString以不同的格式

如何在Java持久化之前和之后以可靠的方式比较日期? 我面临的问题是:当我创建java.util.Date的新实例时,它的toString()方法返回一个值,包括星期几和时区: Fri Feb 03 10:15:31 CET 2017 当我在数据库表中保留此日期(EDIT:Date对象)并将其加载回实体时,toString方法返回不同的格式,具体取决于数据库类型: In case of MySQL date: 2017-02-03 In case of MySQL datetime: 2017-02-03 10:24:34.0 我并不总是有权访问格式化程序,因为toString方法可能会被我的应用程序中的另一个toString方法隐式调用。 这些问题对我而言: 使用toString时,Date对象如何知道要选择哪种格式? 如何控制新的Date对象,它应该首先代表一个日期(即没有时间分数的一天)? 在对象从数据库加载之前和之后的unit testing中比较持久对象的日期的最佳做法是什么?

工作线程在Netty被阻止

我知道netty使用Reactor模式来避免为每个连接创建一个线程,关于这个模式的核心概念是Linux中的“选择器”或epoll系统调用。 但是我也听说过如果一个处理程序从不关闭它的通道,它将占用一个工作线程并阻塞它:这并不意味着每个连接将使用(阻塞)一个线程,所以对于每个接受的套接字我们仍然需要创建一个线程? 例如,如果我编写一个具有10,000个持久连接的服务器,该服务器是否需要10,000个工作线程? 上面这两件事之间的矛盾使我感到困惑,任何人都能解释我,如果我理解错了吗? 谢谢〜 ======================================== 一个示例(只有一个工作线程),它可以始终在同一时间处理一个客户端的事件。 import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.*; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; public class Netty_test { public static void main(String[] args) { ChannelFactory factory =new NioServerSocketChannelFactory(Executors.newCachedThreadPool(),Executors.newFixedThreadPool(1)); ServerBootstrap bootstrap = new ServerBootstrap(factory); ChannelPipelineFactory cpf=new ChannelPipelineFactory(){ public ChannelPipeline getPipeline() { return Channels.pipeline(new testHandler()); } }; bootstrap.setPipelineFactory(cpf); bootstrap.setOption(“child.tcpNoDelay”, true); bootstrap.bind(new InetSocketAddress(100)); […]

连接丢弃的Java应用程序处理

我的应用程序似乎一夜之间挂起,因为连接被丢弃(我认为这是问题。)我如何构建我的应用程序,以便它可以尝试卷起一个新的连接? 自从事件发生后我更新了我的应用程序使用的getConnection()方法: private Connection getConnection() { boolean failed = false; try{ failed = !connection.isValid(1000); }catch(SQLException ex){ System.out.println(“WARNING: Connection not valid!”); } try{ failed = connection.isClosed(); }catch(SQLException ex){ System.out.println(“WARNING: Connection is closed!”); } if(failed){ System.out.println(“Renewing connection”); this.initializeConnection(); } return connection; } 这是输出: ** BEGIN NESTED EXCEPTION ** com.mysql.jdbc.exceptions.jdbc4.CommunicationsException MESSAGE: The last packet successfully received from the […]

J2ME:platformRequest问题

我想使用platformRequest以下面的格式调用一个数字: platformRequest(“tel:*123*33584744#”); 但它给了我错误电话号码无效 。 但如果我通过在手机上键入手动拨打此号码,那么它可以正常工作。 即使下面工作正常: platformRequest(“tel:33584744”); 所以当我在数字中加上*或#chars时,我怀疑问题就在于此。 正如我所说的那样,当我手动输入数字中的这些字符并按下移动设备上的呼叫按钮时它工作正常,但不适用于platformrequest。 我在做什么错了? platformrequest方法的替代方案? 如何拨打以下格式的号码: * 123 * 33584744# 详细信息:CLDC 1.0,MIDP 2.0 谢谢

Android服务不更新位置

我需要每1分钟和每5米位移更新融合位置(我知道它的不良做法,但为了测试和显示在日志中)我开始服务按钮按下按钮按下我在logcat中获得位置但是只有一次。 根据服务类 , onLocationChanged应该每隔1分钟调用一次,但它几乎不会再次调用,即使我的GPS几乎每分钟都开启,然后在关闭之后关闭,但Logcat中仍然没有位置更新。我需要服务类来保持更新位置而不影响UI或主线程 这是logcat,它只显示一次位置更新 09-16 03:13:37.125 10419-10419/com.example.com.pro_working1 D/===Location Service===: Service onConnected Calling 09-16 03:13:37.125 10419-10419/com.example.com.pro_working1 D/===Location Service===: Start Location Update is Calling 09-16 03:13:38.315 10419-10419/com.example.com.pro_working1 D/===Location Service===: Service OnLocationChanged Calling 09-16 03:13:38.315 10419-10419/com.example.com.pro_working1 D/===Location Service===: Here is Updated Locations: Latitude 28.5XXXXX Longitude 77.2XXXXX 09-16 03:13:38.315 10419-10419/com.example.com.pro_working1 D/===Location Service===: Sending Location Starting Accuracy is: 37.5 […]

带有Statement.RETURN_GENERATED_KEYS的MySQL批处理stmt

我试图批量执行2个SQL语句。 第一个语句是一个插件,它为其ID使用自动生成的值。 第二个语句是对另一个表的插入,但它需要使用上面的自动生成值作为插入值的一部分 类似的东西(其中id只是为了显示自动生成的字段,它没有在sql中定义) stmt.addbatch(insert into table1(“id_auto_generated”, “foo”)); stmt.addbatch(insert into table2(“table1_id”, “boo”)); 我现在这样做的方法是在我的第二个sql中使用它 insert into table2(LAST_INSERT_ID(), “boo”); 问题是即使在批处理语句中它也很慢,因为我的批处理可以是50,000个插入。 我想切换到预准备语句,但不知道如何将Statement.RETURN_GENERATED_KEYS或LAST_INSERT_ID()与预准备语句一起使用。

AudioInputStream.read方法究竟返回什么?

我发现了一些问题,我实际上是用AudioInputStream read的。 下面的程序只打印我得到的字节数组,但我实际上甚至不知道,如果字节实际上是样本,那么字节数组就是音频波形 。 File fileIn; AudioInputStream audio_in; byte[] audioBytes; int numBytesRead; int numFramesRead; int numBytes; int totalFramesRead; int bytesPerFrame; try { audio_in = AudioSystem.getAudioInputStream(fileIn); bytesPerFrame = audio_in.getFormat().getFrameSize(); if (bytesPerFrame == AudioSystem.NOT_SPECIFIED) { bytesPerFrame = 1; } numBytes = 1024 * bytesPerFrame; audioBytes = new byte[numBytes]; try { numBytesRead = 0; numFramesRead = 0; } […]

WebSphere App Server未编译JSP /标记库

这是仅在应用程序更新时发生的问题(仅通过管理控制台而不是CLI进行测试)。 此外,这只发生在我们的开发环境中,这与我们的产品环境相同。 在卸载/安装时,一切都正确编译。 但是,这是一个大型应用程序,需要很长时间才能进行更新 – 我们不希望每次都卸载/安装(特别是在开发版本中)。 正在生成JSP .java和.smap文件,但不生成.class。 在prod上,没有.smap – 只有.java和.class。 如果JSP会编译,我们相信标签库也会被编译。 有没有人遇到过这个问题,或者知道我们可能会忽视什么? WAS版本:6.1.0.17 非常感谢! 编辑:这只发生在一个JSP及其使用的标记库中。 我们正试图解决这个问题。 让我们知道我们是否有任何想法。 我们认为根据此修复程序 ,.SMAP文件可能存在问题 解

TransactionEventHandler在Node.setProperty()上给出javax.transaction.SystemException

我正在尝试实现一个类似于neo4j-versioning中使用的TransactionEventHandler ,以便创建一个时间机器样式,版本化的Neo4j数据库,现在使用Neo4j 2.x. 它失败并带有以下无限堆栈跟踪: javax.transaction.SystemException: TM has encountered some problem, please perform necessary action (tx recovery/restart) at org.neo4j.kernel.impl.transaction.TxManager.assertTmOk(TxManager.java:349) at org.neo4j.kernel.impl.transaction.TxManager.setRollbackOnly(TxManager.java:758) at org.neo4j.kernel.TransactionEventHandlers.beforeCompletion(TransactionEventHandlers.java:120) at org.neo4j.kernel.impl.core.TransactionEventsSyncHook.beforeCompletion(TransactionEventsSyncHook.java:68) at org.neo4j.kernel.impl.transaction.TransactionImpl.doBeforeCompletion(TransactionImpl.java:368) at org.neo4j.kernel.impl.transaction.TxManager.commit(TxManager.java:398) at org.neo4j.kernel.impl.core.IsolatedTransactionTokenCreator.getOrCreate(IsolatedTransactionTokenCreator.java:61) at org.neo4j.kernel.impl.core.TokenHolder.createToken(TokenHolder.java:114) at org.neo4j.kernel.impl.core.TokenHolder.getOrCreateId(TokenHolder.java:102) at org.neo4j.kernel.impl.api.store.DiskLayer.propertyKeyGetOrCreateForName(DiskLayer.java:367) at org.neo4j.kernel.impl.api.store.CacheLayer.propertyKeyGetOrCreateForName(CacheLayer.java:370) at org.neo4j.kernel.impl.api.StateHandlingStatementOperations.propertyKeyGetOrCreateForName(StateHandlingStatementOperations.java:939) at org.neo4j.kernel.impl.api.DataIntegrityValidatingStatementOperations.propertyKeyGetOrCreateForName(DataIntegrityValidatingStatementOperations.java:67) at org.neo4j.kernel.impl.api.OperationsFacade.propertyKeyGetOrCreateForName(OperationsFacade.java:397) at org.neo4j.kernel.impl.core.NodeProxy.setProperty(NodeProxy.java:205) … 这是我的测试: @Test public void test() { GraphDatabaseService graphDb […]

分层许多JPanel并动态添加它们

我正在开发一款基于主题医院的SIM游戏,这是一款相当古老的游戏。 我已经在底层工作方面取得了很多进展,但是现在我要进入GUI元素,我以前没有做过很多。 我还是java的新手。 我试图创建的效果如下所示…… http://www.tubechop.com/watch/18438 单击按钮,打开一个带有选项卡的面板,以从不同的选择中进行选择,然后单击按钮以构建房间。 我相信“标签”我可以使用卡片布局? 对于房间的实际建设,我几乎排序。 我现在面临的主要问题是,只需点击一下按钮即可打开面板。 目前,我有1个JFrame和2个JPanels,主游戏面板和带有几个按钮的控制面板。 谁能告诉我一些如何做这样事情的简单例子? 我知道它可能非常简单,我敢打赌你们中的一些人甚至可以把代码写到头脑中,但我是java的新手,并且到目前为止已经更多地了解了编程的逻辑元素而不是如何构建游戏中需要的更复杂的多层GUI。 我知道这是一个雄心勃勃的项目,但我已经走了很长的路,甚至使用A *实现了自定义路径查找,我很高兴(感谢StackOverflow的人们!) 预先感谢您的帮助。