Questions tagged «java»

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

4
列表接口是泄漏抽象吗?
如果我有一个包含的变量,List则它可能包含许多不同类型的对象,例如ArrayList或LinkedList。a LinkedList和an 之间的差异ArrayList非常大。这些方法的大O行为差异很大。例如,对进行排序List,然后使用它进行二进制搜索是完全可以的,ArrayList但对则没有任何意义LinkedList。

4
跟踪类的所有对象
我是面向对象编程的新手,并且一直遇到这个问题。(我正在用Java编程)我一直不太愿意问这个问题,因为它看起来像是一个基本问题,但是我找不到关于它的任何信息,也没有关于它的问题,而且都没有我读过的教科书(在相当基本的水平上)已经涉及到这个问题: 我经常需要跟踪已创建的类的所有对象,以出于各种目的遍历它们。我目前编写程序的方式是这样的,许多对象仅从其他对象中引用,这意味着我没有数组或集合来引用它们。 我认为,由于这似乎是OOP中非常基本的必要,因此应该有一种相当制度化且简单的方法来解决此问题吗?保留一个类的所有对象的单独列表是通常的做法吗? 我想到了一个静态数组或集合,通过其构造函数,将添加创建的每个新对象。但是,这将不适用于子类,因为构造函数没有继承吗? 我意识到这个问题可能没有一个简单的答案。我只是希望有人能启发我一些关于这个问题的知识。我感觉好像我在这里缺乏核心知识。

4
春季-对配置感到困惑吗?
我读过Spring的某个地方为配置提供了便利。但是Spring人员在配置方面带来了很多变化,以至于我现在真的很困惑使用xml配置或注释。 我希望有人建议使用xml和批注的surefire方法或经验法则。 SO上的示例表明,像我这样的许多初学者对配置感到困惑。 链接1 我似乎并没有掌握<context:annotation-config>and 背后的功能<context:component-scan>。 从我阅读的内容来看,它们似乎处理不同的注释(@ Required,@ Autowired等与@ Component,@ Repository,@ Service等),但从我阅读的内容来看,它们注册了相同的bean后处理器类。 更让我感到困惑的是annotation-config,<context:component-scan>... 连结2 我仍然有组件扫描标签: <context:component-scan base-package="com.mycompany.maventestwebapp" /> 但是我还有另一个标签(看起来有类似的任务),这个标签是: <annotation-driven /> 这两个标签有什么区别?另一个“奇怪”的事情是,前面的示例(不使用注释驱动的标签)与使用Spring MVC Template项目的STS创建的项目非常相似,但是如果我从其配置中删除了注释驱动的标签,文件项目无法运行,并给我以下错误:HTTP状态404 -... Spring 3.2不再需要cglib进行代理,但是较低版本使用cglib。引用springsource博客 为了生成此类代理,Spring使用了名为cglib的第三方库。不幸的是,该项目不再活跃。在Spring 3.2中,默认情况下很有可能Spring将使用Javassist代替。 这些足以表明Spring是对配置的困惑吗?
9 java  spring 

4
Perl中的编程风格
我使用Java工作,因此基本上我在编码过程中使用OOP范例。我即将开始在Perl中工作,我想知道Perl开发人员遵循的范式是什么。在Wiki中,它提到它支持许多范例,但是由于它是一种脚本语言,因此我不确定我是否理解这一点。 所以我的问题是:是Perl中Java惯用语言中我熟悉的面向对象模式,还是我需要对设计风格进行重大更改才能编写有效的Perl? 注意:这不是批评Perl的问题。我实际上必须在Perl中工作,并且想了解我编程的当前方式将如何改变。

8
过去的If语句数组,循环…现在呢?
一年前,当我不断碰壁时,我放弃了编程。我正在重新研究该主题,因为我想创建基本的Android应用程序。但是我觉得我有限的知识是不够的。 这是我的问题。 我已经阅读了几本书,并观看了有关C#/ Java的视频教程,并跟随了示例,然后完成了这本书。最后,他们似乎总是让我对下一步该怎么做感到震惊。 这是什么意思,他们从基本的“ hello world”应用程序一直教您到if和array,然后看似希望您知道如何进入编码世界并创建任何东西。 我在这里想念什么吗?我知道这些是所有程序的基础,但我读过的书从未真正向我展示下一步该怎么做。 我想简单的答案是“开始编码”,但是在哪里?例如,我读过“ Head First Java”。直到他们告诉你把学到的一切都用来制作狗赛车游戏为止。 “不要欺骗并查看提供的源代码,您现在应该可以做到这一点。” _这不是确切的引用,但基本上就是我被告知的…… 半个小时前,他们只是在解释如何做数组,然后我毫无理论地打算创建一个工作游戏? 我之所以这样问,是因为我担心这至少是我应该知道的,至少开始编码了,但是感觉就像是给了我一个小工具箱,并被告知要建造一座摩天大楼。 谢谢你的建议

5
“编程错误”例外-我的方法是否正确?
我目前正在尝试改善对异常的使用,发现了在表示编程错误的异常(例如,有人将null作为参数传递,或在对象被处置后调用方法)与在编程中指示失败的异常之间的重要区别。不是调用者的错误的操作(例如,I / O异常)。 这两种例外应如何区别对待?您是否认为需要明确记录错误异常,还是足以记录相关的前提条件?并且您是否可以忽略前提条件或错误异常的文档(如果它很明显)(例如,ObjectDisposedException在处置对象上调用方法时)
9 java  c#  c++  exceptions 

1
“通用系统”对Java SE Embedded意味着什么?
Oracle网站说了有关Java SE Embedded 许可证的内容: 开发是免费的,但在除通用系统以外的任何其他产品上部署时都需要版税 “通用系统”在这里是什么意思? 我们在全国都有传感器网络。在我们安装的每个盒子上,都有一块基于微控制器的板,可以从环境中获取数据,并通过串行端口将数据发送到基于ARM的嵌入式板。在此主板系统上,有一个Java进程,该进程使用JMS读取数据并将数据提交到我们的中央服务器。这被归类为通用系统吗? 抱歉,我在这里问这个。我们在伊朗,这里没有甲骨文办公室要问。

1
为什么在Java中分配对象/数组时会产生开销?
Java中数组占用多少字节?假设这是一台64位计算机,并且还假设一个数组中有N个元素,那么对于不同类型的数组,所有这些元素将占用2 * N,4 * N或8 * N个字节。 在Coursera的一次演讲中说,对于一个N元素数组,它将占用2 * N + 24、4 * N + 24或8 * N + 24个字节,而这24个字节称为开销,但没有说明为什么开销是需要。 对象也有开销,为16个字节。 这些间接费用到底是什么?这些24/16字节由什么组成? 另外,这些开销仅存在于Java中吗?C,C ++和Python呢?
9 java  memory 

4
如果从头开始设计易于使用TDD的新语言,会怎么样?
在使用某些最常见的语言(Java,C#,Java等)时,当您想要完全TDD代码时,有时似乎与该语言存在分歧。 例如,在Java和C#中,您将要模拟类的任何依赖关系,大多数模拟框架将建议您模拟接口而不是类。这通常意味着您有多个接口且只有一个实现(这种效果更加明显,因为TDD会迫使您编写大量较小的类)。让您正确模拟具体类的解决方案可以做一些事情,例如更改编译器或覆盖类加载器等,这很讨厌。 那么,如果从头开始设计一种对TDD来说很棒的语言,它将是什么样?可能是某种语言级别的方式来描述依赖项(而不是将接口传递给构造函数),并且能够不明确地分离类的接口?

4
分析内存使用情况:Java与C ++可以忽略不计?
用Java编写的整数对象的内存使用情况与用C ++编写的整数对象的内存使用情况如何比较\对比?差异可忽略不计吗?没有不同?有很大的不同吗?我猜是一样的,因为int是int而不管语言(?) 我之所以这样问,是因为我正在阅读了解何时知道程序的内存需求将阻止程序员解决给定问题的重要性。 让我着迷的是创建单个Java对象所需的内存量。以一个整数对象为例。如果我错了,请纠正我,但是Java整数对象需要24个字节的内存: 4个字节的int实例变量 16字节的开销(引用对象的类,垃圾收集信息和同步信息) 4字节的填充 再举一个例子,Java数组(作为对象实现)需要48个字节以上: 标头信息的24个字节 16个字节的对象开销 4个字节的长度 4个字节用于填充 加上存储值所需的内存 与使用C ++编写的相同代码相比,这些内存使用情况如何? 我过去对编写的C ++和Java程序的内存使用情况一无所知,但是现在,我开始学习算法,对计算机的资源有了更大的了解。

2
CDN如何保护故障转移站点免受DDoS攻击?
我正在设计Java Web应用程序,最终可能会将该应用程序部署到Google App Engine(GAE)。关于GAE的好处是,我真的不必担心要从可怕的DDoS攻击中强化我的应用程序-我只需指定一个“计费上限”,并且如果我的流量达到此上限(DDoS或其他),只会关闭我的应用程序。换句话说,GAE本质上可以扩展到任何数量,直到您根本负担不起让应用程序继续运行。 因此,我正在尝试制定一个应急方案,如果我确实超出了计费上限,并且GAE关闭了我的应用程序,则我的Web应用程序域DNS设置会“故障转移”到另一个非GAE IP地址。一些初步研究表明,某些CDN(例如CloudFlare)可为这种确切情况提供服务。基本上,我只是保留我的DNS设置,并且它们提供了一个API,我可以点击它以自动执行故障转移过程。因此,如果我检测到我的GAE应用程序的帐单上限为99%,则可以点击CloudFlare API,然后CloudFlare将动态更改DNS设置,使其从GAE服务器指向其他IP地址。 我最初的偶然性是将故障转移到托管在其他地方(例如由GoDaddy或Rackspace托管)的Web应用程序的“只读”(仅静态内容)版本。 但是,突然间我突然意识到:如果DDoS攻击针对的是域名,那么如果我从GAE IP地址过渡到我的GoDaddy IP地址会产生什么区别?从本质上讲,故障转移除了允许DDoS攻击者关闭我的备份/ GoDaddy站点外不会做任何其他事情! 换句话说,DDoS攻击者协调了由GAE托管的我的Web应用程序上的攻击,该攻击www.blah-whatever.com确实是IP地址100.2.3.4。它们使我的流量激增到我的帐单上限的98%,并且我的自定义监视器触发了CloudFlare从100.2.3.4到105.2.3.4的故障转移。DDoS攻击者不在乎!他们仍在发动攻击www.blah-whatever.com!DDoS攻击仍在继续! 因此,我想问:像CloudFlare这样的CDN可以提供什么保护,以便当您需要故障转移到另一个DNS时,您不会受到相同的,持续的DDoS攻击的威胁吗?如果存在这样的保护,故障转移站点上是否存在任何技术限制(例如,只读等)?如果没有,那它们有什么好处?提前致谢!

9
什么时候使用伪代码代替流程图?
我是一名学习各种编程技术的学生,并且遇到过伪代码和流程图。我知道这两个都是为了在实际编程之前仔细考虑问题,但是我对此有一些疑问。 什么时候使用伪代码计划,什么时候使用流程图?还是在实际编程之前同时做这两项更好 特别是对于JAVA中的小型街机游戏,因为这是我的下一个项目。 我注意到伪代码与实际代码非常相似,而不是流程图。这是否会使伪编码更好,因为您本质上是将伪代码复制/粘贴到程序中(当然,您必须更改伪代码以适合语言。我了解这一部分)。 在编程时同时使用这两种方法是否可行?特别是前面提到的相同游戏。谢谢。

2
为什么JavaBean规范中的访问器方法成为Java开发的标准?
的JavaBeans技术规范描述了一种JavaBean作为 Java Bean是可重用的软件组件,可以在构建器工具中直观地对其进行操作。 由于编写的大多数代码行似乎与在构建器工具中进行可视化处理无关,因此,为什么JavaBean规范成为编写面向对象代码的“方式”? 我想在整个代码中放弃使用传统的getter / setter,而在整个代码中都支持Fluent接口,不仅在生成器中,而且还要担心这样做,因为这样做传统上不是用Java编写面向对象代码的方式。
9 java  history 

3
如何以适当的方式监视JVM内存?
我正在考虑如何在生产环境中以繁忙的时间以低开销的方式进行JVM内存监视。 假设我有两个生产中的tomcat应用服务器,并在它们后面设置了负载平衡。如果可以看到jvm内存统计信息,则可以告诉负载平衡停止将请求发送到服务器,这将遇到OOM问题。这有意义吗?Jconsole或VisualVM占用更多性能资源不是我的选择。

1
IntelliJ与Maven编译
我有一个需要Hibernate jar的项目。 我将它们作为依赖项添加到pom.xml中,并且Maven可以很好地编译我的项目。 但是,在IDE中,所有对Hibernate API的注释和调用都标记为未解析(红色)。 我怎样才能使IntelliJ能够解决它们? 当我单击“生成项目”时,是否可以使用Maven?(Ctrl + F9) 另外,我对IntelliJ中的构面概念感到困惑。我是否需要它们,比如说JPA方面来启用Persistence Assistant等...,或者有一个选项可以让Maven照顾一下?

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.