Questions tagged «java»

Java是最初由Sun Microsystems开发的高级,独立于平台的,面向对象的编程语言。Java目前归甲骨文所有,甲骨文于2010年收购了Sun。

2
这类列表/地图有数据结构吗?
也许有一个我想要的名字,但是我没有意识到。我需要与LinkedHashMapJava中类似的东西,但是如果指定的键没有值,它会返回“上一个”值。 也就是说,我有一个由整数键存储的对象列表(在我的情况下以时间为单位): ; key->value 10->A 15->B 20->C 因此,如果我要查询键0-9的值,它将返回null。特殊的部分是,如果我查询10 <= i <= 14,它将返回A。或者,对于i> = 20,它将返回C。 是否有数据结构?


7
工作流工具的价值是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我是Workflow开发的新手,我认为我并没有真正了解“大局”。或者换句话说,这些工具目前并没有在我的脑海中“点击”。 因此,似乎公司喜欢创建用于描述流程的业务图纸,并且在某个时刻有人决定可以使用像状态机这样的程序来实际控制线和方框(如图表)中的流程。十年后,这些工具非常庞大,极其复杂(我的公司目前正在使用WebSphere,并且我参加了一些培训,这是一个怪兽,甚至像Activiti这样的工作流工具的所谓“极简主义”版本也是如此。庞大而复杂,尽管不如WebSphere afaict的野兽那么复杂)。 用这种方法最大的好处是什么?我可以理解简单的折线图和箱形图很有用,但是据我所知,这些东西目前是可视化的编程语言,带有条件和循环。在这里,程序员似乎在行和框层中进行了大量工作,在我看来,这就像是一种非常糟糕的,非常基础的可视化编程语言。 如果要走的那么远,为什么不只使用某种脚本语言呢?人们有没有为此把婴儿和洗澡水一起扔出去?线条和盒子的事物是否被带到了荒谬的水平,或者我只是不理解所有这些的价值? 我真的很想看到使用此技术的人们对此进行辩护并理解其用途的理由。我看不到其中的价值,但我认识到我对此也很陌生,可能还不太了解。
22 java  workflows  soa  bpm 

11
在没有API文档的情况下进行编程真的是一项必备技能吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我今天勉强通过了Java编程考试。我不得不回答一些关于线程的一般问题,这些问题做得很好,并且编写了一个更糟糕的线程程序。我必须将笔记本电脑连接到投影仪屏幕并立即编写程序。我的第一次尝试是使用匿名类,但我忘记了确切的语法。也许是因为有些激动,或者是因为最近两周我主要使用php进行编码。然后我问是否可以使用API​​文档。答案是“否”。所以我决定走另一条路,实现了Runnable。该程序正在执行最后要求的操作。当然,考官注意到我的第一次失败,这极大地影响了我的分数。令我惊讶的是它不允许使用API​​文档。 因此,我的问题是:没有API文档就可以完美地进行编码真的重要吗?我应该发展这项技能吗?在现实世界和工作环境中真的重要吗?在编程课程中,我专注于学习模式,开发编写良好的设计应用程序的技能,使用API​​的技能并快速找到必要的信息。我并不是想学习如何在没有API文档的情况下进行编程。在工作面试中必须具备(没有API文档的编码)吗?

10
如何避免“开发人员的不良优化直觉”?
我在一篇发表以下声明的文章上看到: 开发人员喜欢合理地优化代码。它是如此令人满意和有趣。但是,知道何时进行优化更为重要。不幸的是,开发人员通常对应用程序中的性能问题的实际位置有着可怕的直觉。 开发人员如何避免这种直觉?是否有好的工具来查找您的代码的哪些部分真正需要优化(对于Java)?您是否知道有关该主题的一些文章,技巧或精彩读物?
22 java  performance 


5
非平凡的条件语句是否应移至循环的初始化部分?
我从stackoverflow.com上的这个问题中得到了这个主意 以下是常见的模式: final x = 10;//whatever constant value for(int i = 0; i < Math.floor(Math.sqrt(x)) + 1; i++) { //...do something } 我要说明的一点是条件语句有些复杂,不会改变。 这样,是否最好在循环的初始化部分中声明它? final x = 10;//whatever constant value for(int i = 0, j = Math.floor(Math.sqrt(x)) + 1; i < j; i++) { //...do something } 这更清楚吗? 如果条件表达式很简单怎么办 final …

6
方法是否应该原谅传入的参数?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 假设我们有一个foo(String bar)仅对满足特定条件的字符串进行操作的方法;例如,它必须为小写字母,不能为空或只有空格,并且必须与pattern匹配[a-z0-9-_./@]+。该方法的文档说明了这些条件。 该方法应该拒绝任何和所有与该标准的偏差,还是该方法对某些标准更为宽容?例如,如果初始方法是 public void foo(String bar) { if (bar == null) { throw new IllegalArgumentException("bar must not be null"); } if (!bar.matches(BAR_PATTERN_STRING)) { throw new IllegalArgumentException("bar must match pattern: " + BAR_PATTERN_STRING); } this.bar = bar; } 第二种宽容方法是 public void foo(String bar) { if (bar == …
21 java  parameters 

3
“加号”和“减号”是否合适?
的Java SE 8自带的日期,引入了新的机制LocalDate,LocalTime以及LocalDateTime类来表示的时刻。为了操纵这些瞬间,给出了一组方法:LocalDate.plusDays(...),LocalDate.minusDays(...)依此类推。 我一直认为,好的做法是在动词后描述方法的目的来命名方法,因为方法实际上是要执行的操作,它们会执行某种动作。刚才说了,如果你考虑类,比如StringBuilder,例如,方法的名字是append,insert,delete... 这就是为什么我不健全的权利命名的方法plusDays来代替sumDays,minusDays而不是subtractDays。只是我觉得很烦吗?你怎么看? 我能想到的唯一原因是日期是不可变的对象,因此通过调用plusDays您不是在原始对象上添加日期,而是创建具有新属性的新对象,但这非常微妙。

2
具有静态main方法的Java类的命名约定?
在阅读gnat的答案后,为什么在Java和C#中使用静态main方法而不是构造函数?我以他的回答来表示带有静态main方法的Java类的目的是to define a program entry point,而不是要成为程序本身。 可能有更好的方法来执行此操作,但是我通常使用带有静态main方法的类来执行以下简单操作: public class MenuLauncher { public static void main(String[] args) { Menu menu = new Menu(); menu.run(); } } 上面的代码是否是OOP的最佳实践,在这种情况下,具有静态main的类所做的仅是启动或启动包含在单独的非静态对象中的程序逻辑;毕竟main是静态的,所以MenuLauncher类本身不会受到很大限制吗?因为main是一个起点,所以除了作为切入点之外,我没有看到任何其他目的。 是否存在Java命名约定,通常用于包含main方法并用作程序入口点的类的类?

4
“过于面向对象”
我具有强大的OO背景,并且我最近开始在一个组织中工作,尽管该代码是用Java编写的,但与过去相比,我对良好的OO设计的重视程度要低得多。有人告诉我,我引入了“太多的抽象”,而我应该以一直采用的方式编写代码,这是Java中的一种过程样式。 TDD在这里也不太常用,但是我想拥有可测试的代码。在大型“神类”(这似乎是该团队的常态)中以静态私有方法掩埋业务逻辑不是很可测试的。 我很难向同事清楚地传达自己的动力。有谁对我如何说服我的同事使用OO和TDD导致更容易维护的代码有任何建议? 这个问题有关技术债务是关系到我的问题。但是,我试图避免首先产生债务,而不是在另一个问题所涵盖的事实之后偿还债务。

1
对象转换的设计模式(java)
除了偶尔的工厂和MVC之外,我不经常使用设计模式,我想更多地使用它们。 我手头有一个具体案例,希望您对在这种情况下使用设计模式有意见。 在我的应用程序中,我不得不经常在不同情况下转换对象。我可能必须将Hibernate POJO转换为DTO,因为我使用GWT,并且Hibernate POJO不能序列化,也不能通过线路发送。 在另一种情况下,我可能需要将Java对象转换为SolrInputDocument的对象,以便由Solr进行索引。 我想知道是否应该为此使用设计模式。看来“对象转换”是一种通用任务,可以通过一种模式以灵活/抽象的方式进行处理,但是我真的不知道如何实现。 如果没有模式,我只会为每种转换类型创建一个单独的类,例如CourseToSolrInputDocument(Course是我的应用程序中的Hibernate实体)。或CourseToCourseDTO。这些转换类中的每一个都可能具有一个称为的静态方法convert(),该方法将源对象作为输入并返回输出对象。 但这不是一个真正的模式,对吗?因此,我从泛型入手,并创建了实现Converter接口的此类。但是以某种方式感到傻傻的创建了一个通用的接口,除了能够祝贺自己使用通用外,我没有真正的优势。 public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument> { @Override public void convert(Course source, SolrInputDocument destination) { //To change body of implemented methods use File | Settings | File Templates. } } 因此,这里的真正问题是:是否存在适用于通用对象转换的模式?您的方法是什么?与仅使用每个转换类的类型方法相比,优点是什么?

6
使用嵌套的公共类组织常量
我正在处理具有许多常量的应用程序。在最后的代码审查中,发现常量过于分散,应该将它们全部组织到一个“主”常量文件中。分歧在于如何组织它们。大多数人认为使用常量名称应该足够好,但这将导致代码如下所示: public static final String CREDITCARD_ACTION_SUBMITDATA = "6767"; public static final String CREDITCARD_UIFIELDID_CARDHOLDER_NAME = "3959854"; public static final String CREDITCARD_UIFIELDID_EXPIRY_MONTH = "3524"; public static final String CREDITCARD_UIFIELDID_ACCOUNT_ID = "3524"; ... public static final String BANKPAYMENT_UIFIELDID_ACCOUNT_ID = "9987"; 我发现这种命名约定很麻烦。我认为使用公共嵌套类可能会更容易,并且具有以下内容: public class IntegrationSystemConstants { public class CreditCard { public static final String …

11
低延迟代码有时是否必须“丑陋”?
(这主要是针对那些对低延迟系统有特定知识的人,以避免人们只是用没有根据的意见来回答)。 您是否觉得在编写“好的”面向对象的代码与编写非常快速的低延迟代码之间需要权衡?例如,避免在C ++中使用虚函数/多态性的开销等-重写看上去很讨厌但很快的代码等? 这是有道理的-谁在乎它是否看起来丑陋(只要它可以维护)-如果您需要速度,就需要速度吗? 我很想听听在这些领域工作过的人的来信。
21 java  c++  c  performance  latency 

4
REST与RESTful与“普通” Web服务-是否相同?
我已经阅读了关于REST和/或RESTful应用程序的一些定义和讨论,但是我仍然不了解它的真正含义。 我通常使用的应用程序要么通过GET获取数据,要么通过POST发送数据到某个Web服务(通常是PHP脚本),然后从数据库获取数据或将数据写入数据库。 现在,这是RESTful应用程序吗?如果没有,那么什么是RESTful应用程序?RESTful概念和我到目前为止合作过的概念有什么区别?请举例说明。 另外,有人在谈论REST,有人在谈论RESTful应用程序。我发现REST术语是指理论概念,而当我们谈论特定的应用程序时则使用RESTful。这是正确的做法还是REST和RESTful应用之间存在真正的区别?

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.