关于java中的可克隆接口和object.clone()的困惑

如果我有: class foo implements Cloneable 然后做: bar = new foo(); bar.clone(); 我得到一个浅拷贝而不需要编写任何bar.clone()代码,就像我通常在实现接口时需要做的那样。 我的理解是接口的函数必须由实现它的类填充,并且Object.clone()没有实现(根据文档,“类对象本身不实现接口Cloneable”) 那么我的浅层克隆来自哪里? 如果Object.clone()没有实现,那么实现bar.clone()的代码在哪里? 我很困惑。

使用Hibernate延迟获取单列(类属性)

我有一张我正在使用的旧桌子,看起来像这样: +——————+————–+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +——————+————–+——+—–+———+——-+ | BINARY_DATA_ID | varchar(255) | NO | PRI | | | | BINARY_DATA | longblob | YES | | NULL | | | BINARY_DATA_NAME | varchar(255) | YES | | NULL | | +——————+————–+——+—–+———+——-+ 这个问题的主要问题是BinaryData Java类加载了BINARY_DATA列,即使我只需要BINARY_DATA_NAME 。 我知道构建这个的最好方法是从元数据中分割数据(比如文件名),以便它们存在于不同的表中。 从那里,使数据延迟加载是微不足道的。 […]

从Tomcat 8.0.39升级到8.0.41会导致“无法扫描”错误

我有一个Spring Boot WAR应用程序在AWS上的Tomcat 8.0.39下完美地工作。 发出sudo service tomcat8 stop ,通过sudo yum update升级到Tomcat 8.0.41,并重启实例,应用程序无法启动。 在catalina日志文件中,我看到了大量类型的exception: 19-Feb-2017 10:27:15.326 WARNING [localhost-startStop-1] org.apache.tomcat.util. scan.StandardJarScanner.scan Failed to scan [file:/usr/share/java/tomcat8/javax. annotation-api.jar] from classloader hierarchy java.io.FileNotFoundException: /usr/share/java/tomcat8/javax.annotation-api.jar (No such file or directory) 以下是Tomcat抱怨的文件: javax.annotation-api.jar jsr181-api.jar jaxb-api.jar javax.xml.soap-api.jar FastInfoset.jar mimepull.jar saaj-impl.jar stax2-api.jar woodstox-core-asl.jar jaxb-core-2.2.10-b140802.1033.jar jaxb-api-2.2.12-b140109.1041.jar istack-commons-runtime-2.19.jar txw2-2.2.10-b140802.1033.jar hk2-core.jar class-model.jar config.jar auto-depends.jar javax.inject.jar hk2-api.jar osgi-resource-locator.jar […]

跨不同线程的ThreadLocal值访问

假设ThreadLocal变量为不同的线程保存不同的值,是否可以从另一个线程访问一个ThreadLocal变量的值? 即在下面的示例代码中,是否可以在t1中从t2读取TLocWrapper.tlint的值? public class Example { public static void main (String[] args) { Tex t1 = new Tex(“t1”), t2 = new Tex(“t2”); new Thread(t1).start(); try { Thread.sleep(100); } catch (InterruptedException e) {} new Thread(t2).start(); try { Thread.sleep(1000); } catch (InterruptedException e) {} t1.kill = true; t2.kill = true; } private static class Tex implements Runnable […]

Tomcat 6,JMX和动态端口问题

在阅读并尝试了很多之后,我不得不问是否有人能解决我的问题。 我试图在防火墙后面设置一些Tomcats(V6)。 这没什么大不了的 – 但我想通过JMX监控它们。 我阅读了TC文档并遇到了JMXRemoteLifecycleListener 。 我的测试TC安装完全按照上面的链接进行设置。 因此,我没有从我们网络中的一个主机到另一个主机的连接。 另外,每次启动TC时都会打开第三个随机端口。 在我的server.xml中,监听器被激活 catalina.out说一切都好。 2011-06-14 16:46:48,819 [main] INFO org.apache.catalina.mbeans.JmxRemoteLifecycleListener- The JMX Remote Listener has configured the registry on port 8050 and the server on port 8060 for the Platform server 端口是开放的,我可以通过telnet从任何其他主机连接到它们。 我可以在本地连接到vm( service:jmx:rmi://:8xxx/jndi/rmi://:8xxxx/jmxrmi ) Netstats输出如下: tcp6 0 0 :::8080 :::* LISTEN 11291/java tcp6 0 0 :::8050 :::* […]

从POM.xml获取MavenProject – pom解析器?

是否可以从pom.xml文件中获取org.apache.maven.project.MavenProject的实例或POM的其他对象forms? 提前致谢。

Java Graphics.drawImage()如何工作以及ImageObserver的作用是什么

如何使用Java的drawImage()? 我没有找到JDK文档。 例如,所有drawImage签名都需要一个ImageObserver,但是这个文档对新用户没有多大帮助。

覆盖Spring:带有数据库值的消息标记

我使用Spring来显示属性文件中的消息。 我希望能够覆盖标记,以根据登录用户使用数据库中的值。 如果此值不存在,我希望它现在默认为属性文件中当前的值。 有人可以帮我这个代码吗? 我已经阅读了有关AbstractMessageSource但我不清楚如何实现它。 谢谢

在JAVA中解析RFC 2822的日期

我需要在Java中解析日期的RFC 2822字符串表示。 这里有一个示例字符串: 星期六,2010年3月13日11:29:05 -0800 它看起来很讨厌,所以我想确保我做的一切正确并且会在以后通过AM-PM /军事时间问题,UTC时间问题,我没有预料到的问题等解释错误而遇到奇怪的问题等等… 谢谢!

Log4j – 让多个appender写入同一个文件,并始终记录

我有一个log4j appender定义如下: log4j.logger.com.example = DEBUG, filelog log4j.appender.filelog=org.apache.log4j.DailyRollingFileAppender log4j.appender.filelog.File=c:/app.log log4j.appender.filelog.layout=org.apache.log4j.PatternLayout log4j.appender.filelog.layout.ConversionPattern=%d | %m%n log4j.appender.filelog.DatePattern=.dd-MM-yyyy 在我的class上,我得到了记录器: Log logger = LogFactory.getLog(getClass()); 这工作正常。 我希望有一个记录器,它总是记录某些消息(不是错误,而是事务所花费的时间)。 如果我在DEBUG或INFO中写这些,如果更改了日志级别,我将看不到它们。 我想我可以使用写入同一文件的另一个appender来完成此操作。 这可能有两个appender写入同一个文件? 我如何获得我想在同一个类中使用普通调试appender和事务性appender的logger实例? 这些消息不会都在同一个包中,因此我无法将某个包配置为始终记录。 我是否必须让这些appender写入不同的文件,或者我可以在代码中检索它们并具有以下内容: Log alwaysLogger = LogFactory.getLog(ALWAYS); alwaysLogger.debug(“This message will always be written regardless of the level set on the filelog appender”); 更新我可以根据需要写入两个不同的日志文件,但是如何在我的类中获取记录器实例? 我不希望将一个包/类配置为始终使用一个appender而不是另一个包,因为类必须在正常运行期间记录信息/错误消息和事务性“始终”消息。 有没有办法完成我需要的东西,即使它写入两个不同的日志文件?