Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。

8
用Java登录怎么办?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 为什么一个将使用以下软件包之一而不是另一个? Java记录 共用记录 Log4j SLF4j 退回
117 java  logging  log4j  logback  slf4j 

2
春季4与泽西(REST Web Services)
我们计划用spring 4.0.6版本制作一个新应用程序。我们使用可以返回“ XML”或“ JSON”的控制器。在上一个项目中,我们已经使用JAX-RS API成功地将Jersey与Spring实现了REST支持,但是在阅读了前辈的几篇文章和建议后,他们说Spring提供了很好的REST支持。 如果我不使用JAX-RS和Jersey而不使用Spring REST支持,则使我真正感到困惑的一些点是: 在Spring MVC中如何进行封送和拆封? 封送是否需要使用jax-rs进行封送? 如果在春季之前自动处理了编组和拆组,那么它将如何知道xmlRootElements。 如果Spring证明对REST很好的支持,我仍然感到困惑,那为什么人们仍然选择Jersey来支持REST?真正希望了解更多详细信息。 如果我说错了,请忽略它。举例说明确实很有帮助。 提前致谢!!


15
Java或C#中异常管理的最佳实践
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 我一直在决定如何处理应用程序中的异常。 如果我的异常问题很大程度上来自于1)通过远程服务访问数据或2)反序列化JSON对象。不幸的是,我不能保证其中任何一项都能成功(切断网络连接,无法控制的畸形JSON对象)。 结果,如果确实遇到异常,我将在函数中捕获该异常并将FALSE返回给调用方。我的逻辑是,调用者真正关心的只是任务是否成功,而不是为什么任务没有成功。 这是典型方法的一些示例代码(在JAVA中) public boolean doSomething(Object p_somthingToDoOn) { boolean result = false; try{ // if dirty object then clean doactualStuffOnObject(p_jsonObject); //assume success (no exception thrown) result = true; } catch(Exception Ex) { //don't care about exceptions Ex.printStackTrace(); } return result; } 我认为这种方法很好,但是我真的很想知道管理异常的最佳实践是什么(我真的应该一直在调用堆栈中冒泡一个异常吗?)。 关键问题总结: 可以只捕获异常但不将其冒泡或正式通知系统(通过日志或向用户的通知)可以吗? 有什么最佳实践可以解决并非导致所有内容都需要try …

5
Java 8是否提供了一种重复值或函数的好方法?
在许多其他语言中,例如。Haskell,很容易多次重复一个值或函数,例如。获取值的8个副本的列表1: take 8 (repeat 1) 但是我还没有在Java 8中找到它。Java 8的JDK中是否有这样的功能? 或替代等效范围 [1..8] 似乎可以明显替代Java中的冗长语句 for (int i = 1; i <= 8; i++) { System.out.println(i); } 有类似的东西 Range.from(1, 8).forEach(i -> System.out.println(i)) 尽管这个特定示例实际上看起来不那么简洁...但是希望它更具可读性。
117 java  java-8 

10
尝试/捕获与引发异常
这些代码语句是否等效?它们之间有什么区别吗? private void calculateArea() throws Exception { ....do something } private void calculateArea() { try { ....do something } catch (Exception e) { showException(e); } }
117 java  exception 

1
Java中的静态分配-堆,堆栈和永久生成
最近,我一直在阅读有关Java中的内存分配方案的大量文章,并且由于我从各种来源中进行了阅读,所以存在很多疑问。我已经收集了我的概念,并要求仔细阅读所有要点并对其进行评论。我知道内存分配是特定于JVM的,因此我必须事先说一下,我的问题是特定于Sun的。 类(由类加载器加载)放在堆上的特殊区域中:永久生成 与类有关的所有信息,例如类的名称,与该类关联的对象数组,JVM使用的内部对象(例如java / lang / Object)以及优化信息,都进入“永久生成”区域。 所有静态成员变量将再次保留在永久生成区域中。 对象放在不同的堆上:年轻的一代 每个类每个方法只有一个副本,该副本是静态的还是非静态的。该副本将放置在“永久生成”区域中。对于非静态方法,所有参数和局部变量都进入堆栈-每当对该方法进行具体调用时,我们都会获得一个与之关联的新堆栈框架。我不确定静态方法的局部变量存储在哪里。他们在永久一代的堆上吗?或者只是它们的引用存储在“永久生成”区域中,而实际副本位于其他位置(在哪里?) 我也不确定方法的返回类型存储在哪里。 如果对象(年轻一代)需要使用静态成员(永久一代),则为它们提供对静态成员的引用&&为它们提供足够的存储空间以存储方法的返回类型等。 谢谢你的经历!

12
您将哪些代码分析工具用于Java项目?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 您在Java项目上使用哪些代码分析工具? 我对各种感兴趣 静态代码分析工具(FindBugs,PMD和其他任何工具) 代码覆盖率工具(Cobertura,Emma等) 任何其他基于仪器的工具 还有什么,如果我想念什么 如果适用,还请说明您使用的构建工具以及这些工具与IDE和构建工具的集成程度。 如果仅以特定方式(例如,IDE插件或构建工具插件)提供工具,则该信息也值得注意。

5
Java,Classpath,Classloading =>同一jar /项目的多个版本
我知道对于经验丰富的编码人员来说,这可能是一个愚蠢的问题。但是我有一个库(http客户端),我的项目中使用的其他一些框架/罐也需要。但它们都需要不同的主要版本,例如: httpclient-v1.jar => Required by cralwer.jar httpclient-v2.jar => Required by restapi.jar httpclient-v3.jar => required by foobar.jar 类加载器是否足够智能以某种方式将它们分开?很有可能不是吗?万一所有三个jar中的Class都相同,Classloader如何处理这个问题。加载哪一个,为什么? Classloader是仅拾取一个jar还是将其任意混合?因此,例如,如果从Version-1.jar中加载了一个类,那么从同一类加载器中加载的所有其他类都将都放入同一个jar中吗? 您如何处理这个问题? 是否有某种技巧可以以某种方式将罐子“合并”到“ required.jar”中,从而使罐子被Classloader或以某种方式链接为“一个单元/包装” ?

8
如何断言比使用JUnit声明更大?
我有这些值来自测试 previousTokenValues[1] = "1378994409108" currentTokenValues[1] = "1378994416509" 我尝试 // current timestamp is greater assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1])); 我得到了java.lang.AssertionError,detailMessage关于调试是null。 我如何在使用中断言比条件更大 JUnit
117 java  junit 


6
休眠,@ SequenceGenerator和allocationSize
我们都知道使用Hibernate时的默认行为@SequenceGenerator-它使实际数据库序列增加一,将该值乘以50(默认allocationSize值)-然后将该值用作实体ID。 这是错误的行为,并与说明以下内容的规范冲突: distributionSize-(可选)从序列中分配序列号时要增加的数量。 需要说明的是:我不关心生成的ID之间的差距。 我关心与基础数据库序列不一致的 ID 。例如:任何其他应用程序(例如,使用纯JDBC)可能要在从序列获得的ID下插入新行-但是所有这些值可能已被Hibernate使用!疯狂。 有人知道任何解决此问题的方法(没有设置allocationSize=1,从而降低性能)吗? 编辑: 弄清楚。如果最后插入的记录的ID = 1,则HB同时51, 52, 53...在其新实体BUT中使用值:数据库中序列的值将设置为2。当其他应用程序使用该序列时,很容易导致错误。 另一方面:规范说(据我所知)应该将数据库序列设置为51,同时HB应该使用范围内的值 2, 3 ... 50 更新: 正如下面的史蒂夫·埃伯索尔(Steve Ebersole)所述:我所描述的行为(也是许多人中最直观的行为)可以通过设置启用hibernate.id.new_generator_mappings=true。 感谢大家。 更新2: 对于将来的读者,您可以在下面找到一个有效的示例。 @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ") @SequenceGenerator(name = "USERS_SEQ", sequenceName = "SEQUENCE_USERS") private Long id; } …
117 java  hibernate  jpa  hilo 

6
URL的InputStream
如何从URL获取InputStream? 例如,我想在url上获取文件,wwww.somewebsite.com/a.txt并通过servlet将其作为Java中的InputStream读取。 我试过了 InputStream is = new FileInputStream("wwww.somewebsite.com/a.txt"); 但是我得到的是一个错误: java.io.FileNotFoundException
117 java  url  inputstream 

7
scheduleAtFixedRate与scheduleWithFixedDelay
ScheduledExecutorServicescheduleAtFixedRate和scheduleWithFixedDelay方法之间的主要区别是什么? scheduler.scheduleAtFixedRate(new Runnable() { @Override public void run() { System.out.println("scheduleAtFixedRate: " + new Date()); } }, 1, 3L , SECONDS); scheduler.scheduleWithFixedDelay(new Runnable() { @Override public void run() { System.out.println("scheduleWithFixedDelay: " + new Date()); } }, 1, 3L , SECONDS); 它们打印的时间完全相同,似乎它们以完全相同的时间间隔执行。

6
单行获取Stream / List的最后一个元素
如何在以下代码中获取流或列表的最后一个元素? 哪里data.careas是List<CArea>: CArea first = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).findFirst().get(); CArea last = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .collect(Collectors.toList()).; //how to? 如您所见,获得第一个元素一定filter并不困难。 但是,获得单线的最后一个要素确实是一个痛苦: 看来我无法直接从Stream。(仅对有限的流有意义) 这似乎也不能得到像first()和last()从List接口,这实在是一种痛苦。 我看不到在接口中不提供first()and last()方法的任何参数List,因为其中的元素是有序的,而且大小是已知的。 但是按照原始答案:如何获得有限的最后一个元素Stream? 就个人而言,这是我能得到的最接近的结果: int lastIndex = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .mapToInt(c -> data.careas.indexOf(c)).max().getAsInt(); CArea last = data.careas.get(lastIndex); 但是,它确实涉及indexOf在每个元素上使用on,这通常是您通常不希望的,因为它会影响性能。
117 java  list  java-8  java-stream 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.