科技行者

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

知识库

知识库 安全导航

至顶网› Java理论与实践 相关文章
  • 至顶网Java理论与实践相关文章
Java理论与实践:用JMX检测应用程序

本文结合平台内的JMX支持和jconsole JMX客户机可以提供一种向应用程序添加管理和监视功能的轻松方式。即使是没有具体管理需求的应用程序,为它们构建这些功能也会让您对程序的运行及其所处理的数据的性质获得深入了解,而且不需太多的工作和努力。如果应用程序导出管理接口,此接口可以查看它操作的内容,那么就会更加了解它的运行状态——对它是否按预期的方式工作也会更有信心--而不必求助于额外的工具。...详细

Java理论与实践JMXjava

Java理论与实践:让J2EE脱离容器

本文介绍了在大多数情况下,Java应用程序要么是J2EE应用程序、要么是J2SE应用程序,并且在这一点上是泾渭分明的。J2EE 应用程序需要J2EE容器的服务,容器要实现一长串的J2EE API。J2EE API 设计为协同工作。虽然J2EE和J2SE是用于不同工作的不同工具,但是许多开发人员发现自己必须决定各种框架服务的“轻量级”和“重量级”实现。通过使用J2EE接口的较轻量级的实现,开发人员可以在短期内得到性能和易于使用的好处,同时又具有在将来需要时,可以容易地迁移到更重量级的解决方案的灵活性。...详细

javaJ2EEJava理论与实践

Java理论与实践:用XQuery进行屏幕搜集

本文介绍了目前所有智能手机都苦恼的问题--有限的屏幕实际使用区。有些Web站点支持基于手机的浏览器,而且嵌入式浏览器也试图在小小的屏幕上有效地渲染页面,但是,在电话屏幕上查看典型的Web页面,就像要把一头大象强行塞进车后座一样。鉴于此,本文介绍了采用把XQuery当作屏幕搜集工具,又把它当作样式表工具。只要少量基础设施和一些非常简单的XQuery表达式,就可以从大量数据源提取出相关数据Web站点上对数据进行屏幕搜集,然后把数据重新格式化,在小屏幕上显示。 ...详细

XQueryjavaJava理论与实践

Java理论与实践:用动态代理进行修饰

本文介绍了动态代理为实现许多常见设计模式提供了替代的动态机制。虽然这些模式不使用动态代理,只用普通的类就能够实现,但是在许多情况下,动态代理方式更方便、更紧凑,可以清除许多手写或生成的类。动态代理是强大而未充分利用的工具,可以用于实现许多设计模式。这些模式基于代理的实现容易编写,更难出错,并且具备更好的通用性;在许多情况下,一个动态代理类可以充当所有接口的Decorator或Proxy,这样就不用每个接口都编写一个静态类。除了最关注性能的应用程序之外,动态代理方式可能比手写或机器生成stub的方式更可取。...详细

javaJava理论与实践

Java理论与实践:用弱引用堵住内存泄漏

本文介绍了弱引用是对一个对象的引用的持有者。使用弱引用后,可以维持对referent的引用,而不会阻止它被垃圾收集。当垃圾收集器跟踪堆的时候,如果对一个对象的引用只有弱引用,那么这个referent就会成为垃圾收集的候选对象,就像没有任何剩余的引用一样,而且所有剩余的弱引用都被清除。弱引用对于构造弱集合最有用。弱引用和弱集合是对堆进行管理的强大工具,使得应用程序可以使用更复杂的可及性方案,而不只是由普通(强)引用所提供的“要么全部要么没有”可及性。...详细

内存泄漏javaJava理论与实践

Java理论与实践:非阻塞算法简介

本文介绍了在Java理论与实践中,几种比较简单的非阻塞算法的工作方式。在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情。Java语言中主要的同步手段就是synchronized关键字,它强制实行互斥,确保执行synchronized块的线程的动作,能够被后来执行受相同锁保护的synchronized块的其他线程看到。在使用得当的时候,内在锁可以让程序做到线程安全,但是在使用锁定保护短的代码路径,而且线程频繁地争用锁的时候,锁定可能成为相当繁重的操作。并把原子变量用作不使用锁的并发算法的基础。 ...详细

javaJava理论与实践非阻塞算法

Java理论与实践:JDK 5.0中更灵活、更具可伸缩性的锁定机制

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

javaJava理论与实践JDK 5.0

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

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

javaJava理论与实践

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理论与实践

邮件订阅

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

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