Tag: java

PermGen空间错误在tomcat

我在Windows环境中工作。 我每次都得到这个错误,因为我正在使用tomcat- Apr 30, 2012 5:30:37 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet default threw exception java.lang.OutOfMemoryError: PermGen space 2012-04-30 17:30:37.719 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@4ae53a99 2012-04-30 17:30:37.719 INFO net.spy.memcached.MemcachedConnection: Reconnecting due to failure to connect to {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} java.net.ConnectException: Connection refused: no further information Apr […]

何时,为什么JPA实体应该实现Serializable接口?

问题在于标题。 下面我刚刚介绍了一些我的想法和发现。 当我有非常简单的域模型(3表没有任何关系),我所有的实体没有实现Serializable。 但是,当域模型变得更复杂时,我得到了RuntimeException,它说我的一个实体没有实现Serializable。 我使用Hibernate作为JPA实现。 我在想: 它是供应商特定的要求/行为吗? 我的序列化实体会发生什么? 它们应该是可序列化的用于存储还是转移? 在哪一刻,有必要让我的实体可序列化?

从JavaScript调用一个Java servlet

我正在尝试使用MVCdevise模式创build一个Web应用程序。 对于GUI部分,我想使用JavaScript。 并为控制器Java Servlets。 现在我从来没有真正使用JavaScript,所以我很难搞清楚如何从JavaScript调用Java Servlet以及如何获得Servlet的响应。 有人可以帮我吗?

Android HttpPost:如何得到结果

我一直试图发送一个HttpPost请求和检索响应,但即使我能够build立连接,我还没有得到如何获取请求响应返回的string消息 HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.myurl.com/app/page.php"); // Add your data List < NameValuePair > nameValuePairs = new ArrayList < NameValuePair > (5); nameValuePairs.add(new BasicNameValuePair("type", "20")); nameValuePairs.add(new BasicNameValuePair("mob", "919895865899")); nameValuePairs.add(new BasicNameValuePair("pack", "0")); nameValuePairs.add(new BasicNameValuePair("exchk", "1")); try { httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); Log.d("myapp", "works till here. 2"); try { HttpResponse response = httpclient.execute(httppost); Log.d("myapp", […]

java.sql.SQLException:错误的string值:'\ xF0 \ x9F \ x91 \ xBD \ xF0 \ x9F …'

我有以下string值:“沃尔玛奥巴马👽💔” 我正在使用MySQL和Java。 我得到以下exception:`java.sql.SQLException:不正确的string值:'\ xF0 \ x9F \ x91 \ xBD \ xF0 \ x9F …' 这是我想要插入的variables: var1 varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL` 我试图插入“沃尔玛奥巴马👽💔”的Java代码是一个preparedStatement。 所以我使用setString()方法。 看起来问题是值的编码。 我该如何解决这个问题? 以前我使用的是Derby SQL,值刚好是两个sqaure(我认为这是空字符的表示) 所有的帮助非常感谢!

为什么没有显示Level.FINE日志消息?

java.util.logging.Level状态的JavaDocs : 水平按降序排列: SEVERE (最高价值) WARNING INFO CONFIG FINE FINER FINEST (最低值) 资源 import java.util.logging.*; class LoggingLevelsBlunder { public static void main(String[] args) { Logger logger = Logger.getAnonymousLogger(); logger.setLevel(Level.FINER); System.out.println("Logging level is: " + logger.getLevel()); for (int ii=0; ii<3; ii++) { logger.log(Level.FINE, ii + " " + (ii*ii)); logger.log(Level.INFO, ii + " " + (ii*ii)); […]

Gson – 从Json转换为一个types化的ArrayList <T>

使用Gson库,如何将JSONstring转换为自定义类JsonLog的ArrayList ? 基本上, JsonLog是由我的Android应用程序 – 短信日志,通话logging,数据日志 – 所做的各种日志实现的接口,这个ArrayList是所有这些的集合。 我不断收到第6行的错误。 public static void log(File destination, JsonLog log) { Collection<JsonLog> logs = null; if (destination.exists()) { Gson gson = new Gson(); BufferedReader br = new BufferedReader(new FileReader(destination)); logs = gson.fromJson(br, ArrayList<JsonLog>.class); // line 6 // logs.add(log); // serialize "logs" again } } 看来编译器不明白我指的是一个types的ArrayList 。 我该怎么办?

为什么java.lang.Number没有实现Comparable?

有谁知道为什么java.lang.Number不实现Comparable ? 这意味着你不能对Number和Collections.sort进行sorting,这在我看来有点奇怪。 讨论后更新: 感谢所有有用的回应。 我最终做了一些关于这个话题的研究 。 为什么java.lang.Number没有实现Comparable的最简单的解释根源于可变性问题。 对于一些评论, java.lang.Number是AtomicInteger , AtomicLong , BigDecimal , BigInteger , Byte , Double , Float , Integer , Long和Short的抽象超types。 在那个列表中, AtomicInteger和AtomicLong没有实现Comparable 。 四处挖掘,我发现在可变types上实现Comparable并不是一个好习惯,因为在比较的过程中或之后,对象可能会发生变化,从而导致比较结果无用。 AtomicLong和AtomicInteger都是可变的。 APIdevise人员有预期没有Number实现Comparable因为它会限制未来子types的实现。 的确, AtomicLong和AtomicInteger是在java.lang.Number最初实现之后的Java 1.5版本中添加的。 除了可变性之外,这里也可能有其他的考虑。 Number的compareTo实现必须将所有的数值提升为BigDecimal因为它能够容纳所有的Number子types。 这种提升在math和表演方面的含义对我而言有点不清楚,但是我的直觉发现了这个解决scheme。

Java InputStream阻塞读取

根据java api, InputStream.read()被描述为: 如果由于到达stream的末尾而没有字节可用,则返回值-1。 此方法阻塞,直到input数据可用,stream的末尾被检测到,或抛出exception。 我有一个while(true)循环做一个读取,我总是得到-1,当没有什么是通过stream发送。 这是预料之中的。 我的问题是什么时候会读()永远阻止? 因为如果它没有得到任何数据,它将返回-1。 我希望阻塞读取等待,直到收到数据。 如果你已经到达了inputstream的末尾,不应该只读()只是等待数据而不是返回-1? 或者如果有另一个线程访问stream,并且你的read()不能访问这个stream,那么read()只会被阻塞吗? 这导致我的下一个问题。 我曾经有事件监听器(由我的库提供)在数据可用时通知我。 当我被通知时,我会调用while((aByte = read()) > -1)存储字节。 当我在非常接近的时间里得到两个事件时,我感到困惑,并不是所有的数据都被显示出来。 似乎只显示第二个事件数据的尾部,剩下的部分不见了。 我最终改变了我的代码,所以当我得到一个事件时,我会调用if(inputStream.available() > 0) while((aByte = read()) > -1)存储字节。 现在它工作正常,我的所有数据都显示出来了。 有人可以解释这种行为吗? 据说InputStream.available()返回阻塞下一个(stream的)调用者之前可以读取的字节数。 即使我不使用.available()我会期望读取的第一个事件只是阻止读取的第二个事件,但不抹去或消耗太多的stream数据。 为什么这样做会导致不能显示所有的数据?

JVM需要很长时间才能parsinglocalhost的IP地址

升级到macOS Sierra后,我似乎遇到了“sbt test”性能问题。 在以前的OS X版本中,大约需要40-50秒才能完成。 macOS塞拉利昂时间比这更高。 我做的最后一次是大约15分钟。 编译时间与“El Capitan”大致相同。 我是我的团队中唯一一个尝试使用这个新的macOS的人,所以我不知道它是否只发生在我的mac上,或者是一个普遍性的问题。 我的同事在Ubuntu上遇到了类似的问题,它与随机数生成相关,减慢了testing速度 – 服务响应速度慢:Java SecureRandom&dev / random 不幸的是,这并不适合我。 最初,我试图在JDK 8u54,然后尝试更新到JDK 8u102,这并没有帮助。 PS我正在运行Macbook Pro中2015年2.8GHz i7,16GB RAM,1TB SSD。