Java基础之IO流详解

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

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

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

微服务架构实践之认证授权:使用Spring Security + OAuth 2.0 + JWT 搭建认证授权服务

OAuth 是一种用来规范令牌(Token)发放的授权机制,主要包含了四种授权模式:授权码模式、简化模式、密码模式和客户端模式。关于 OAuth 更多介绍可访问 理解OAuth 2.0 查看。本文主要以 密码模式 来实现用户认证和授权。 搭建项目项目代码已上传至 GitHub 。 本例项目以微服务为基础,仅实现认证服务和资源服务,其他如网关、服务管理、配置中心等省略,本文重点是使用 Spring ...

Java中常用的线程安全的单例模式实现方式

1. 使用私有构造函数实现单例模式public class EagerInitializedSingleton { private static final EagerInitializedSingleton INSTANCE = new EagerInitializedSingleton(); /** * 使用 private 修饰,外部或子类不能创建实例 ...

Spring Boot使用Mybatis遇到No operations allowed after connection closed错误

最近在用Spring Boot + Mybatis搭建后台服务提供给Android端;发现隔几分钟后再去请求服务出现如下错误: Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21c910d8] was not registered for synchronizat ...

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

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

XStream添加 CDATA标签解析

了解CDATA在XML元素中,”<”和”&”是非法的,如果使用这些特殊字符,那么解析器在解析文档时会产生错误。为了避免此类错误,需要把”<”这类特殊字符替换为实体引用,如 <user>age &lt; 25</user> //<user>age < 25</user> 在 XML 中有 5 个预定义的实体引用: ...

使用XStream实现Java对象与XML互相转换

XStream简介XStream是一个Java对象与XML互相转换的工具类库。 官网链接: http://x-stream.github.io/index.html 简单使用下载页面:http://x-stream.github.io/download.html 使用Maven构建项目的加入以下依赖: <dependency> <groupId>com.though ...

try-with-resources 使用

简介try-with-resources是Java SE 7中一个新的异常处理机制,它能够很容易地关闭在try-catch语句块中使用的资源。资源是指程序执行完成后必须关闭的对象。try-with-resources语句确保每个资源在语句结束时关闭,任何实现java.lang.AutoCloseable的对象(包含所有实现java.io.Closeable的对象)都可以用作资源。 用法示例以下示例 ...

lombok使用

环境 操作系统:Windows 10 IDE: IntelliJ IDEA 2017.2.4 Lombok简介Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。 ...