`
文章列表
活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议。原始 JMM 中有几个严重缺陷,这导致了一些难度高得惊人的概念语义,这些概念原来被认为很简单,如 volatile、final 以及 synchronized。在这一期的 Java 理论与实践 中,Brian Goetz 展示了如何加强 volatile 和 final 的语义,以修复 JMM。这些更改有些已经集成在 JDK 1.4 中;而另一些将会包含在 JDK 1.5 中。您可以在本文对应的论坛里与作者及其他读者分享您对本文的看法(您也可以点击文章底部或顶 ...
所有的编程语言都有一些共用的习语。了解和使用一些习语很有用,程序员们花费宝贵的时间来创建、学习和实现这些习语。问题是,稍 后经过证明,一些习语并不完全如其所声称的那样,或者仅仅是与描述的功能不符。在 Java 编程语言中,双重检查锁定就是这样的一个绝不应该使用的习语。在本文中,Peter Haggar 介绍了双重检查锁定习语的渊源,开发它的原因和它失效的原因。   编辑注 :本文在针对 Java 5.0 修订前参考了 Java 内存模型;关于内存排序的描述也许不再正确。尽管如此,在新的内存模型中,双重检查锁定习语仍旧是无效的。   单 ...
我们分析了引用计数、复制、标记-清除和标记-整理这些经典的垃圾收集技术。其中每一种方法在特定条件下都有其优点和缺点。例如,当有很多对象成为 垃圾时,复制可以做得很好,但是有许多长寿对象时它就变得很糟(要反 ...
垃圾收集的好处是无可争辩的 ―― 可靠性提高、使内存管理与类接口设计分离,并使开发者减少了跟踪内存管理错误的时间。著名的悬空指针和内存泄漏问题在 Java 程序中再也不会发生了(Java 程序可能会出现某种形式的内存泄漏,更精确地说是非故意的对象保留,但是这是一个不同的问题)。不过,垃圾收集不是没有代价的 ―― 其中包括对性能的影响、暂停、配置复杂性和不确定的结束 (nondeterministic finalization)。   一个理想的垃圾收集实现应该是完全不可见的 ―― 没有垃圾收集暂停、没有因为垃圾收集而产生的 CPU 时间损失、垃圾收集器不会与虚拟内存或者缓存有负面的互 ...
虽然Java语言不直接支持关联数组 -- 可以使用任何对象作为一个索引的数组 -- 但在根 Object 类中使用 hashCode() 方法明确表示期望广泛使用 HashMap (及其前辈 Hashtable )。理想情况下基于散列的容器 ...
进来,出去 事务划分的第一条规则是“尽量短小”。事务提供并发控制;这通常意味着资源管理器将代表您获得您在事务期间访问的数据项的锁,并且它必须一直持有这些锁,直到事务结束。(请回忆一下本系列第 1 部分所讨论的 ACID 特 性,其中“ACID”的“I”代表“隔离”(Isolation)。也就是说,一个事务的结果影响不到与该事务并发执行的其它事务。)当您拥有锁时,任何 需要访问您锁定的数据项的其它事务将不得不一直等待,直到您释放锁。如果您的事务很长,那些其它的所有事务都将被锁定,您的应用程序吞吐量将大幅度下降。   规则 ...
java中每个对象都有一个隐式的锁,如果一个方法由synchronized关键字声明,那些对象的锁将保护整个方法。 也就是说,要调用这个方法,线程必须先获得对象的锁。 隐式对象锁只有一个关联条件。wait方法把线程加到等待集中,notify/notifyAll方法解除等待线程的阻塞状态。 也两个方法等价于Condition(条件变量)的await,signal/signalAll方法。 隐式的锁和条件存在一些缺点。如下: 1.不能中断一个正在试图获得锁的线程。 2.试图获得锁时不能设定超时。 3.每个锁只有一个条件有时候显得不够用。 4.虚拟机的加锁原语不能很好地映射 ...
      一个线程进入临界区,却发现它必须等待某个条件满足后才能执行,则要使用一个条件变量来管理那些已获得锁却不能开始执行有用的工作的线程。         看个示例,假定有一个绑定的缓冲区,它支持 put 和 take 方 ...
以太网和IEEE 802封装 最常使用的封装格式是RFC 894定义的格式。图2 - 1显示了两种不同形式的封装格式。图中每个方框下面的数字是它们的字节长度。 两种帧格式都采用48 bit(6字节)的目的地址和源地址(8 0 2 . 3允许使用16 bit的地址,但一般是48 bit地址) 。这就是我们在本书中所称的硬件地址。A R P和R A R P协议(第4章和第5章)对32 bit的I P地址和48 bit的硬件地址进行映射。接下来的2个字节在两种帧格式中互不相同。在 8 0 2标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括 C R C检验码 ...
                       总结      TCP/IP协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。 在TCP/IP中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务, 而运输层(TCP和UDP)提供端到端的服务。      一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在 I P层把网络连在一 起。第一个字母大写的I n t e r n e t是指分布在世界各地的大型互联网,其中包括 1万多个网络和超 过1 0 0万台主机。      ...
1995年,Philippe Kruchten在《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注,并最终被RUP采纳。如图1所示。 图1  Philippe Kruchten提出的4+1视图方法     该方法的不同架构视图承载不同的架构设计决策,支持不同的目标和用途: l        逻辑视图:当采用面向对象的设计方法时,逻辑视图即对象模型。 l        开发视图:描述软件在开发环境下的静态组织。 l
本文是转载于http://baike.baidu.com/view/160611.htm   MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。   MIME的英文全称是"Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段 ...
刚刚一个不知名电话打来,接来原来是快递来送书,一阵兴趣,图灵书籍一直很看好,当然主要那些翻译的外文书籍,大多都已经有了电子版本,本人英文水平平平,只能怪大学不够重视英文功力,只过4级,可怜。。。虽然说英文书籍基本上技术方面的都差不多有30%是代码的,加一些专业术语差不多就占了50%以上,阅读速度实在太慢,说真的,除非网上几乎没有中文资料,否则坚决放到后面再看。。。 第一本《Oracle 9i&10g 编程艺术:深入数据库体系结构》,选择它的原因在于oracle方面水平一般,这本应该可以作为oracle体系结构的大全来查查,放着作为技术储备。 第二本《JavaScript设计模式》,感 ...
Global site tag (gtag.js) - Google Analytics