GOF —— 单例模式 置顶! 有更新!

  |   0 评论   |   0 浏览

单例模式(SIngleton)的目的是为了保证一个进程中,某个类有且仅有一个实例。

因为这个类只有一个实例,因此,该类不能允许 new 的方式创建实例。

  • 单例的构造方法必须是 private,这样就防止了调用方自己创建实例。
  • 既然不能通过new 创建实例,只能通过访问静态成员变量的方式了,而且成员变量不能定义成public(调用者可以直接通过Singleton.instance 的方式更改 ),所以需要提供一个 获取静态成员变量的 静态方法。

HDFS 分布式文件系统

  |   0 评论   |   0 浏览

Hadoop 是一个由 Apache 基金会开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,轻松实现大规模数据的分布式存储分布式程序的快速开发,充分利用集群的威力进行大数据的高速存储和运算。其中 Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS)起着非常重要的作用,它以文件的形式为上层应用提供海量数据存储服务,并实现了高可靠性高容错性高可扩展性等特点。

垃圾收集器与内存分配策略 有更新!

  |   0 评论   |   0 浏览

垃圾收集的历史远远比 Java 久远,在 1960 年诞生于麻省理工学院的 Lisp 是第一门开始使用内存动态分配垃圾收集技术的语言。其作者 John McCarthy 就思考过垃圾收集需要完成的三件事情:

  • 哪些内存需要回收?
  • 什么时候开始回收?
  • 如何回收?

学习了解垃圾收集和内存分配的意义

当需要排查各种内存溢出、内存泄漏的问题时,当垃圾收集成为系统达到更高并发量瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节。

垃圾回收比较侧重的内存区域

  • 程序计数器、虚拟机栈、本地方法栈 3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,就不需要过多考虑如何回收的问题了
  • Java 堆方法区 这两个区域则有着很显著的不确定性:一个接口的多个实现类需要的内存可能回不一样,一个方法所执行的不同条件分支所需要的内存也可能不一样,只有处于运行期间,我们才能够知道程序究竟会创建哪些对象,创建多少个对象,这部分内存的分配和回收是动态的。垃圾回收器所关注的正是这部分内存该如何管理