科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网› java 相关文章
  • 至顶网java相关文章
Java理论与实践:JDK 5.0中更灵活、更具可伸缩性的锁定机制

本文介绍了多线程和并发性并不是什么新内容,但是Java语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个Thread类,可以用它来构建、启动和操纵线程,Java语言包括了跨线程传达并发性约束的构造--synchronized和volatile。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是使它变得更容易了。本文还简单介绍和比较了ReentrantLock和synchronized,以及在什么时候选择用ReentrantLock代替synchronized。...详细

javaJava理论与实践JDK 5.0

Java理论与实践: 一个有缺陷的微基准的剖析

本文介绍了开发人员在以编写高性能代码为目标的时候,常常会编写小的基准程序来度量一种方法相对于另一种方法的性能。与其他静态编译的语言相比,评论用Java语言编写的给定惯用法或结构体的性能要困难得多。并指出,应把注意力放在“微”基准上--编写一些实际的程序,用两种方法编写代码,开发一种逼真的负载生成策略,并在逼真的负载条件下和逼真的部署配置中使用这两种方法来度量应用程序的性能。这样做工作量会很大,但惟有如此才能更接近您想要的答案。...详细

javaJava理论与实践

简析JAVA中的XML编程

XML作为全球通用的结构化语言,越来越受人们青睐 。在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试。在XML应用中,最常用也最实用的莫过于XML文件的读写。本文简单介绍了,JAVA中的XML编程方法。作者通过一个简单的XML文件读写来作简要分析。...详细

XMLjava

Java理论与实践:伪typedef反模式

本文介绍了新方法内置了更多类型信息,减少了编程错误,提高了程序的可读性,但是确实带来了更多声明变量和方法签名方面的前期工作。类型参数在声明和初始化中的重复看起来尤其没有必要;Socket和Future需要输入两次,这迫使我们违犯了“DRY” 原则。伪类型反模式的进一步问题是,它会丧失使用接口定义变量类型和方法参数的好处。但多数伪typedef反模式的用户通常达不到这种水平。其结果是,API的用处减少了并变得更脆弱,因为它们使用ArrayList这样的具体类型,而不是List这样的抽象类型。 ...详细

Java理论与实践java

Java理论与实践:消除bug

本文介绍了编写线程安全的类很难,而分析现有类的线程安全性更难,增强类使其仍然保持线程安全也很难。随着FindBugs的引入,在自动代码检测和审核工具方面已经取得重大进步。FindBugs利用字节码分析和很多内置的bug模式检测器来查找代码中的常见bug。它可以帮助找出代码的哪些位置有意或者无意地偏离了良好的设计原理。FindBugs几乎可以在任何时间找出实际的bug,它的每个检测器都已经在测试、产品、专业的开发代码中发现了bug。...详细

Java理论与实践java

Java理论与实践:关于性能管理您有规划吗?

本文介绍了对于任何给定的性能问题,通过使用高速缓存来减少冗余计算或者只是添加更多的硬件,解决方案可能会与用更有效的算法进行替换一样简单。但是,要清楚地确定性能问题的根源会很困难,而设计复杂程序甚至更加困难,所以首先要使它们没有性能问题。大多数性能问题还有一个更深的起因:无法首先将性能管理、目标和测量集成到开发过程中。性能管理不仅包括优化,还包含许多其它东西。它有一个用于决定何时优化何时不优化的框架。应该根据明确的性能目标、测量和规划来做这些决策,而不是直觉。...详细

java性能管理Java理论与实践

Java理论与实践:修复Java内存模型1

本文介绍了Java平台把线程和多处理技术集成到了语言中,这种集成程度比以前的大多数编程语言都要强很多。关于同步和线程安全的许多底层混淆是Java内存模型的一些难以直觉到的细微差别。本文还介绍了JMM有一些严重的缺点,如果正确地编写并发的类太困难的话,那么许多并发的类不能按预期工作,并且这是平台中的一个缺点。在不破坏在旧的内存模型下正确同步的任何代码的同时,我们可以创建一个与大多数开发者的直觉更加一致的内存模型,并且这一切已经由JSR 133 process完成。...详细

Java理论与实践java

Java理论与实践:修复Java内存模型2

本文介绍了Java平台从一开始就包括了对线程的支持,包括一个计划为正确同步的程序提供“一次编写,到处运行”保证的、跨平台的内存模型,但是原来的内存模型有一些漏洞。虽然许多Java平台提供了比JMM所要求的更强的保证,但是JMM中的漏洞使得无法容易地编写可以在任何平台上运行的并发Java程序。JSR 133显著增强了volatile的语义,这样就可以可靠地使用volatile标志表明程序状态被另一个线程改变了。JSR 133还显著地增强了final的语义。极大地加强了并发程序中不变对象的效用,不变对象最终成为固有的线程安全,有效的堵住了漏洞。...详细

javaJava理论与实践

Java理论与实践:hashCode()和equals()方法

本文介绍了Java语言不直接支持关联数组,可以使用任何对象作为一个索引的数组,但在根Object类中使用 hashCode()方法明确表示期望广泛使用HashMap。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式中支持散列可以促进基于散列的容器的开发和使用。本文还介绍了定义对象的相等性、实施equals()和hashCode()的需求、编写自己的equals()和hashCode()方法。通过统一定义equals()和hashCode(),可以提升类作为基于散列的集合中的关键字的使用性。...详细

Java理论与实践java

Java理论与实践:垃圾收集简史

本文介绍了垃圾收集的好处是无可争辩的--可靠性提高、使内存管理与类接口设计分离,并使开发者减少了跟踪内存管理错误的时间。不过,垃圾收集不是没有代价的--其中包括对性能的影响、暂停、配置复杂性和不确定的结束。一个理想的垃圾收集实现应该是完全不可见的 ―― 没有垃圾收集暂停、没有因为垃圾收集而产生的 CPU 时间损失、垃圾收集器不会与虚拟内存或者缓存有负面的互动,并且堆不需要大于应用程序的 驻留空间。当然,没有十全十美的垃圾收集器,但是垃圾收集器在过去十年中已经有了很大改进。...详细

Java理论与实践java

Java理论与实践:良好的内务处理实践

本文介绍了对于有些资源来说,一直等到终结释放它们是不可取的。对于重要的资源,Lock或Semaphore直到很晚都可能不会被垃圾收集掉。多数资源都不会持续整个应用程序的生命周期,相反,它们只被用于一个活动的生命周期。当应用程序打开一个文件句柄读取文件以处理文档时,它通常读取文件后就不再需要文件句柄了。垃圾收集为我们做了大量可怕的资源清除工作,但是有些资源仍然需要显式的释放,当资源的生命周期被绑定到特定调用帧的生命周期时,通常使用finally块来释放该资源,但是长期存活的资源需要一种策略来确保它们最终被释放。 ...详细

Java理论与实践java

Java理论与实践:流行的原子

本文介绍了要使用多处理器系统的功能,通常需要使用多线程构造应用程序。但是正如任何编写并发应用程序的人可以告诉你的那样,要获得好的硬件利用率,只是简单地在多个线程中分割工作是不够的,还必须确保线程确实大部分时间都在工作,而不是在等待更多的工作,或等待锁定共享数据结构。通过内部公开新的低级协调原语,和提供一组公共原子变量类,现在用Java语言开发无等待、无锁定算法首次变为可行。然后,java.util.concurrent中的类基于这些低级原子变量工具构建,为它们提供比以前执行相似功能的类更显著的可伸缩性优点。...详细

Java理论与实践java

Java理论与实践:描绘线程安全性

本文定义了线程安全性,类要成为线程安全的,首先必须在单线程环境中有正确的行为。并在被多个线程访问时,不管运行时环境执行这些线程有什么样的时序安排,它必须有如上所述的正确行为,并且在调用的代码中没有任何额外的同步。其效果就是,在所有线程看来,对于线程安全对象的操作是以固定的、全局一致的顺序发生的。本文还介绍了线程的安全程度。描述线程安全性的分类方法:不可变、线程安全、有条件线程安全、线程兼容和线程对立。一个类的线程安全行为是其规格说明中的固有部分,应该成为其文档的一部分。...详细

Java理论与实践java

Java理论与实践:您的小数点到哪里去了?

本文叙述了除了科学计算和偶尔的计时测试或基准测试程序,其它情况下几乎都用不着它。同样,大多数开发人员也容易忽略java.math.BigDecimal所提供的任意精度的小数-大多数应用程序不使用它们。然而,在以整数为主的程序中有时确实会出人意料地需要表示非整型数据。在Java程序中使用浮点数和小数充满着陷阱。浮点数和小数不象整数一样“循规蹈矩”,不能假定浮点计算一定产生整型或精确的结果,虽然它们的确“应该”那样做。最好将浮点运算保留用作计算本来就不精确的数值。如果需要表示定点数,则使用 BigDecimal。...详细

Java理论与实践java

Java理论与实践:再谈Urban性能传言

本文介绍了现代JVM中的分配比执行得最好的malloc实现还要快得多。HotSpot 1.4.2之后虚拟机中的new Object()常见代码路径最多10条机器指令,而用C语言实现的执行得最好的malloc实现,每个调用平均要求的指令在60到100条之间。而且分配性能在整体性能中不是一个微不足道的部分。JVM擅长发现我们一直以为只有开发人员才能知道的事情,这令人震惊。让JVM根据具体情况在堆栈分配和堆分配之间进行选择,我们就能得到堆栈分配的性能好处,却不必让程序员在进行堆栈分配还是进行堆分配上费脑筋。...详细

UrbanjavaJava理论与实践

Java理论与实践:Mustang中的同步优化

本文描述的是Sun的HotSpot JVM实现未来版本的特性。每当易变的变量在线程间共享时,都必须使用同步来确保一个线程所做的更新,能够及时地被其他线程看到。同步的主要方式就是使用synchronized块,它既提供了互斥又提供了可见性保证。当两个线程都想访问共享的易变变量时,这两个线程不仅必须使用同步,而且如果它们正在使用synchronized块,那么这些synchronized 块还必须使用同一个锁对象。本文还介绍了JVM对于竞争锁请求和非竞争锁请求有不同的代码路径,分别是“慢路径”和“快路径”。...详细

MustangjavaJava理论与实践

Java数据库编程中查询结果的表格式输出

利用Java开发数据库应用系统时,经常需要在用户界面上显示查询结果。由于SUN公司提供的JDK1.x开发工具包不是可视化的集成开发环境 (IDE),不能象Delphi、VB那样方便地把查询结果在DBGrid等表格中显示出来。因此,只能靠自己编写代码来实现。本文介绍了可以利用Vector、JTable、AbstractTableModel等三个类较好地解决这一问题,文中详细介绍了实现的方法。...详细

java

为什么在Java编程中的继承多数是有害的

对于实现继承,一个更加关键的问题是耦合---令人烦躁的依赖,就是那种程序的一部 分对于另一部分的依赖。全局变量提供经典的例子,证明为什么强耦合会引起麻烦。例如,如果你改变全局变量的类型,那么所有用到这个变量的函数也许都被影响,所以所有这些代码都要被检查,变更和重新测试。而且,所有用到这个变量的函数通过这个变量相互耦合。也就是,如果一个变量值在难以使用的时候被改变,一个函数也许就不正确的影响了另一个函数的行为。这个问题显著的隐藏于多线程的程序。...详细

java

关于Java编程的中文问题的几条分析原则

Java处理中文时所产生的问题都是由于用户的Java应用所采用的缺省编码格式与目标或者应用所要读入字符的编码格式不同而造成的,而引起这些不同的一个主要原因就是用户的Java应用与其它应用进行了编码格式不匹配的数据交换(包括直接或间接的数据输入、输出)。所以,为了及时发现问题,我们可以由这一点入手,根据以下的原则对应用进行分析:注意字符变量情况、注意任何形式的字符读入与输出、小心使用第三方的组件和应用等。...详细

java

JAVA对象序列化保存为XML文件的工具类

在java.beans包中,有两个好东西,XMLEncoder和XMLDecoder。从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。本文介绍了这两个可以把JAVA对象序列化保存为XML文件的工具类。...详细

XMLjava

邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

热门下载
最新专题
最新白皮书
厂商导航
IBMH3CVMwareSAPAMDEMCRSASAPIBMSalesforce