TAG: java

关于 Java 对象序列化您不知道的 5 件事

数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处。

最后更新时间: 共 10 次浏览 Tags: java

探索 ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。

最后更新时间: 共 39 次浏览 Tags: java

JVM 性能监控工具

在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。

最后更新时间: 共 7 次浏览 Tags: java

谈谈 Hash Table

所以在理想状态,如果一个数组足够长,且存在一个函数可以将每一个key映射到唯一的一个数组下标,那么我们就可以很完美的解决问题。但往往资源都是有限的,我们没有那么大的空间,也不能设计一个无比负责的映射算法保证每一个key对应到一个唯一的数组下标。所以我们会选择一些折中的方案。 hash table便是为解决这类问题而存在的

最后更新时间: 共 57 次浏览 Tags: java

Java HashMap 核心源码解读

本篇对HashMap实现的源码进行简单的分析。 所使用的HashMap源码的版本信息如下

最后更新时间: 共 52 次浏览 Tags: java

清理ThreadLocal

在我很多的课程里(master、concurrency、xj-conc-j8),我经常提起ThreadLocal。它经常受到我严厉的指责要尽可能的避免使用。ThreadLocal是为了那些使用完就销毁的线程设计的。线程生成之前,线程内的局部变量都会被清除掉。实际上,如果你读过 Why 0x61c88647?,这篇文章中解释了实际的值是存在一个内部的map中,这个map是伴随着线程的产生而产生的。存在于线程池的线程不会只存活于单个用户请求,这很容易导致内存溢出。通常我在讨论这个的时候,至少有一位学生有过因为在一个线程局部变量持有某个类而导致整个生产系统奔溃。因此,预防实体类加载后不被卸载,是一个非常普遍的问题。

最后更新时间: 共 19 次浏览 Tags: java

Java继承

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。 多个类可以称为子类,单独这个类称为父类、超类或者基类。

最后更新时间: 共 28 次浏览 Tags: java

100个高质量Java开发者博客

本文的主要目的是收集全球范围内100个高质量Java开发者博客。其中会有一些博客并不是由纯粹的Java开发者撰写的,但是Java开发者们能够从中发现一些有用的或者有趣的东西。阅读这些博客将会非常有趣,有时会给你带来一些新鲜的想法。

最后更新时间: 共 41 次浏览 Tags: java

HashMap的工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入让这道题变得更加复杂。让我们开始探索的旅程吧!

最后更新时间: 共 7 次浏览 Tags: java

Comparable 與 Comparator

在收集物件之後,對物件進行排序是常用的動作,你不用親自實作排序演算法,java.util.Collections提供有sort()方法,由於必須有索引才能進行排序,因此Collections的sort()方法接受List實作物件。

最后更新时间: 共 30 次浏览 Tags: java

JUnit 4 与 TestNG 对比

这两天在看一本书《Java测试新技术TestNG和高级概念》,作者是 TestNG 的创始人,了解了不少关于 TestNG 的知识,看了一篇文章基本把这本书的几个观点都体现了,那我就直接翻译原文就好,省得自己总结。

最后更新时间: 共 19 次浏览 Tags: java

简阅MongoDB JVM开发库

当存储基于文档的 JSON 数据的时候,MongoDB 是我最喜欢的数据库。基于 JVM 的语言在与 MongoDB 交互上有很多种选择。我觉得拿四个最流行的解决方案并且都实现一个用例,对我来说不失为一个好的练习。用例:创建一个可以获取一个城市和距其最近的城市的列表的 REST 服务。

最后更新时间: 共 20 次浏览 Tags: java

Java EE 7与Angular JS(1)

今天这篇文章将会向你介绍如何使用Java EE 7和Angular JS来构建一个非常简单的应用。在此之前,先给大家讲一个故事。

最后更新时间: 共 51 次浏览 Tags: java angularjs

Java 8中如何使用ASM和JiteScript“烘焙”你自己的lambda

现在Java中广泛使用字节码库,尤其Java EE中普遍用到运行时的动态代理生成。字节码转换也是常见用例,比如支持AOP运行时织入切面,或JRebel等工具提供的可扩展类重载技术。在代码质量领域,常使用库解析和分析字节码。

最后更新时间: 共 50 次浏览 Tags: java

如何摆脱工具类

无论是进行代码review还是紧急编码调整,你总会发现:你又搞出了一个帮助类(helper class)。代码运行一切正常,进度又必须跟上,发布任务一个接一个,因此那个帮助类逐渐变成了一个提供了很多静态(static)方法的“怪兽类”(monster class),在它的utils包内不受控制地增长。utils包长久以来就是一个技术争议的荒蛮之地,面向对象设计理念连半步都不敢踏入。

最后更新时间: 共 24 次浏览 Tags: java

类加载器不喜欢我,想我慢下来

自从二十世纪九十年代Java首次创建的时候,Java资源和类的加载就已经是一个问题了。通过增加启动和初始化的次数,Java应用程序服务器放大了这个问题。为了缓解这个这个问题,程序员们做了很多的努力,其中包括exploded deployment到应用程序服务器的方法,但它只是在非常小的程序中才会起作用,还有2001年创建的Java HotSwap。HotSwap启用时,可以让你已有的方法中立马让你的更改生效。

最后更新时间: 共 19 次浏览 Tags: java

Java缓存新标准(javax.cache)

这个标准由JSR107所提出,它的作者同样也是标准制定的领导者。JSR107由JSR342提出,已经被包含在Java EE 7中。Java EE7将会在2012年底定稿。但现在在Java SE6或更新的版本和Java EE 6环境中,甚至Spring和另外一些流行的开发环境中,javax.cache都可以正常使用。

最后更新时间: 共 14 次浏览 Tags: java

Eclipse中的高效代码覆盖

有句谚语说:使用工具的笨蛋仍然是个笨蛋。但是,我对如何有效的使用工具并不十分敏感。由于这个原因通常我会花一些时间学习新的技术[1],以保证在不影响质量的前提下提高工作速度。在这个过程中我发现了EclEmma。它是一个适用于Eclipse IDE的代码覆盖工具,对于实现全面的测试用例非常有用。

最后更新时间: 共 38 次浏览 Tags: java