Java 常用设计模式之工厂模式

简单工厂模式工厂模式用于实现逻辑的封装,并通过公共的接口提供对象的实例化服务,在添加新的类时只需做少量的修改。 TeaFactory 类中包含 GreenTea、RedTea、GuanYinTea 的实例化方法 createTea(),当客户需要对象时,调用 TeaFactory 的 createTea() 方法,并传所需的对象类型即可。TeaFactory 实例化相应的对象(如 GreenTea ...

Java基础之IO流详解

流在 Java API 中,可以从中读取一个字节序列的对象叫做 输入流,可以向其中写入一个字节序列的对象叫做 输出流。这些字节序列的来源地和目的地可以是文件、网络连接、内存块等。 抽象类 InputStream 和 OutputStream 是构成 输入/输出(I/O)类层次结构的基础。 由于面向字节的流不便处理 Unicode 字符,于是衍生出了字符流,抽象类 Reader 和 Writer 是 ...

Java/Spring应用在k8s环境中的内存配置实践

前言在微服务架构中,网关、注册中心、配置中心、服务追踪、认证中心等一系列组件部署到服务器中会占用一定的内存,还有各个业务服务,一部署单个服务可能就占个几百M,甚至上G。那这一系列组件和服务同时部署不得消耗更多的内存?为防止这些服务把系统资源耗尽导致宕机,我们不得不为这些服务配置一定的内存限制。 在 k8s 环境中,如果我们单单配置了 memory 的 limit ,没有配置 Java 应用的JVM ...

深入理解Java虚拟机之Java内存区域与内存溢出异常

运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存的将会包括以下几个运行时数据区域,如下图: 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间。可以当成是当前线程所执行的字节码的行号指示器。在虚拟机的模型中,字节码解释器 ...