自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

未读代码

公众号:未读代码,专注 Java 。有风有雨是常态,风雨无阻是心态,风雨兼程是状态。...

原创 最通俗易懂的 HashMap 源码分析解读
原力计划

HashMap 作为最常用的集合类之一,有必要深入浅出的了解一下。这篇文章会深入到 HashMap 源码,刨析它的存储结构以及工作机制。 1. HashMap 的存储结构 HashMap 的数据存储结构是一个 Node<K,V> 数组,在(Java 7 中是 Entry<K,V...

2020-04-01 08:57:48

阅读数 78

评论数 0

原创 最详细的 Spring Boot 多模块开发与排坑指南
原力计划

创建项目 创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提。你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创建一个 Spring Boot 项目,也可以使用 Spring 官方提供的 Spring Boot 项目生成页面得到一个项目。 下面...

2020-03-23 09:01:24

阅读数 615

评论数 0

原创 最通俗易懂的 Java 11 新特性讲解

大多数开发者还是沉浸在 Java 8 中,而 Java 14 将要在 2020 年 3 月 17 日发布了,而我还在写着 Java 11 的新特性。Java 11 是 Java 8 之后的第一个 LTS 版本,但是也自从 Java 11 开始, Oracle JDK 不再可以免费的用于商业用途,当...

2020-03-03 08:50:31

阅读数 315

评论数 0

原创 最通俗易懂的 Java 10 新特性讲解
原力计划

自从 Java 9 开始,Oracle 调整了 Java 版本的发布策略,不再是之前的 N 年一个大版本,取而代之的是 6 个月一个小版本,三年一个大版本,这样可以让 Java 的最新改变迅速上线,而小版本的维护周期缩短到下个版本发布之前,大版本的维护周期则是 3 年之久。而 10 就是这么一个小...

2020-02-26 08:49:49

阅读数 4632

评论数 5

原创 Jdk14 都要出了,Jdk9 的新特性还不了解一下?

Java 9 中最大的亮点是 Java 平台模块化的引入,以及模块化 JDK。但是 Java 9 还有很多其他新功能,这篇文字会将重点介绍开发人员特别感兴趣的几种功能。 这篇文章也是 Java 新特性系列文章中的一篇,往期文章可以查看下面链接。 还看不懂同事的代码?超强的 Stream 流操作姿势...

2020-02-19 08:50:11

阅读数 559

评论数 0

原创 还看不懂同事代码?快来补一波 Java 7 语法特性

前言 Java 平台自出现到目前为止,已经 20 多个年头了,这 20 多年间 Java 也一直作为最流行的程序设计语言之一,不断面临着其他新兴编程语言的挑战与冲击。Java 语言是一种静态强类型语言,这样的语言特性可以让 Java 编译器在编译阶段发现错误,这对于构建出一个稳定安全且健壮的应用来...

2020-01-08 09:00:31

阅读数 5150

评论数 2

原创 Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 Spring Boot 项目。它分为客户端和服务端两部分,客户端添加到你的 Spring Boot ...

2019-12-23 09:00:41

阅读数 788

评论数 0

原创 超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下

如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然。别慌,这里有一款低开销、自带火焰图、让你大呼好用的 Java 性能分析工具 - async-profiler。 最近 Arthas 性能分析工具上线了火焰图分析功能,Arthas 使用 ...

2019-12-09 09:00:03

阅读数 667

评论数 0

原创 Springboot 系列(十六)你真的了解 Swagger 文档吗?

前言 目前来说,在 Java 领域使用 Springboot 构建微服务是比较流行的,在构建微服务时,我们大多数会选择暴漏一个 REST API 以供调用。又或者公司采用前后端分离的开发模式,让前端和后端的工作由完全不同的工程师进行开发完成。不管是微服务还是这种前后端分离开发,维持一份完整的及时更...

2019-11-26 09:09:11

阅读数 1772

评论数 0

原创 还看不懂同事的代码?超强的 Stream 流操作姿势还不学习一下

Java 8 新特性系列文章索引。 Jdk14都要出了,还不能使用 Optional优雅的处理空指针? Jdk14 都要出了,Jdk8 的时间处理姿势还不了解一下? 还看不懂同事的代码?Lambda 表达式、函数接口了解一下 前言 我们都知道 Lambda 和 Stream 是 Java ...

2019-11-18 08:56:24

阅读数 2706

评论数 1

原创 还看不懂同事的代码?Lambda 表达式、函数接口了解一下

当前时间:2019年 11月 11日,距离 JDK 14 发布时间(2020年3月17日)还有多少天? // 距离JDK 14 发布还有多少天? LocalDate jdk14 = LocalDate.of(2020, 3, 17); LocalDate nowDate = LocalDate.n...

2019-11-12 10:03:43

阅读数 4681

评论数 8

原创 设计模式 -你知道单例模式的五种实现吗?

单例模式(Singleton) 单例模式是在 GOF的23种设计模式里较为简单的一种,下面引用百度百科介绍: 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例 许多时候整个...

2019-11-08 10:21:51

阅读数 239

评论数 0

原创 Arthas - Java 线上问题定位处理的终极利器

前言 在使用 Arthas 之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用 Arth...

2019-11-06 10:31:22

阅读数 14208

评论数 12

原创 Jdk14都要出了,还不能使用 Optional优雅的处理空指针?

1. 前言 如果你没有处理过空指针,那么你不是一位真正的 Java 程序员。 空指针确实会产生很多问题,我们经常遇到空的引用,然后又想从这个空的引用上去获取其他的值,接着理所当然的碰到了 NullPointException。这是你可能会想,这报错很好处理,然后你看了眼报错行数,对比了下代码...

2019-11-05 09:00:07

阅读数 1411

评论数 11

原创 Springboot 系列(十五)如何编写自己的 Springboot starter

1. 前言 Springboot 中的自动配置确实方便,减少了我们开发上的复杂性,那么自动配置原理是什么呢?之前我也写过了一篇文章进行了分析。 Springboot 系列(三)Spring Boot 自动配置。 由于自动配置用到了配置文件的绑定,如果你还不知道常见的配置文件的用法,可以参考这篇文...

2019-11-01 15:37:54

阅读数 240

评论数 0

原创 互联网基础协议 - HTTP

HTTP的简介 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP是一个属于应用层...

2019-10-30 10:25:41

阅读数 219

评论数 0

原创 原来热加载如此简单,手动写一个 Java 热加载吧

1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境。 2. 热加载与热部署的区别 首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/...

2019-10-29 09:57:13

阅读数 2786

评论数 1

原创 Linux配置Tomcat的单机多实例

有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理。但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单机多实例了。 以下操作运行于Linux下。 Tomcat 下载 Tomcat 的下载可以直接到To...

2019-10-25 10:43:09

阅读数 272

评论数 0

原创 Jdk14 都要出了,Jdk8 的时间处理姿势还不了解一下?

当前时间:2019年10月24日。距离 JDK 14 发布时间(2020年3月17日)还有多少天? // 距离JDK 14 发布还有多少天? LocalDate jdk14 = LocalDate.of(2020, 3, 17); LocalDate nowDate = LocalDate.now...

2019-10-24 10:29:21

阅读数 908

评论数 0

原创 抛弃Eclipse,投入IDEA 的独孤求败江湖

“工欲善其事,必先利其器” 出处:孔子《论语》 两年了,这是我的 IDEA 实用技巧总结,从前我是一个 Eclipse 忠实用户,直到某天我用上了 IntelliJ IDEA ,Eclipse 开始在硬盘躺尸… IDEA 是一个非常好用的工具,它的语法十分智能,当你写了一段不怎么聪明(很傻)...

2019-10-23 10:27:48

阅读数 258

评论数 0

原创 Springboot 系列(十四)迅速启用 HTTPS 加密你的网站

1. 获取 HTTPS 证书 正常情况下 HTTPS 证书需要从证书授权中心获得,这样获得的证书才具有公信力,也会被各种浏览器客户端所认可。常见的证书品牌如 Symantec,GeoTrustm,TrustAsia,Symantec 等。不过在 Springboot 的 HTTPS 实验中就没有必...

2019-10-22 08:49:26

阅读数 357

评论数 0

原创 Springboot 系列(十三)使用邮件服务

在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在。Java 从很早时候就可以通过 Java mail 支持邮件服务。Spring 更是对 Java mail 进行了进一步的封装,抽象出了 JavaMailSender. 后来随着 Springboot ...

2019-03-13 09:46:32

阅读数 430

评论数 0

原创 Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件

前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生成插件的开发过程,其实对于 Mybatis 来讲还有很多优秀方便好用的插件,比如这次要演示的 通用...

2019-03-11 09:49:08

阅读数 237

评论数 0

原创 Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库

1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取结果集的过程。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Jav...

2019-03-07 11:24:26

阅读数 242

评论数 0

原创 Springboot 系列(十)使用 Spring data jpa 访问数据库

前言 Springboot data jpa 和 Spring jdbc 同属于 Spring开源组织,在 Spring jdbc 之后又开发了持久层框架,很明显 Spring data jpa 相对于 Spring jdbc 更加的便捷强大,不然也就没有开发的必要了。根据下面的文章开始体验下 S...

2019-03-04 16:08:23

阅读数 235

评论数 0

原创 Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控

前言 作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。下面演示下 Springboot 中如何使用 JD...

2019-03-01 11:03:13

阅读数 243

评论数 0

原创 Springboot 系列(八)动态Banner与图片转字符图案的手动实现

使用过 Springboot 的对上面这个图案肯定不会陌生,Springboot 启动的同时会打印上面的图案,并带有版本号。查看官方文档可以找到关于 banner 的描述 The banner that is printed on start up can be changed by addin...

2019-02-28 17:10:13

阅读数 488

评论数 0

原创 Springboot 系列(七)Spring Boot web 开发之异常错误处理机制剖析

前言 相信大家在刚开始体验 Springboot 的时候一定会经常碰到这个页面,也就是访问一个不存在的页面的默认返回页面。 如果是其他客户端请求,如接口测试工具,会默认返回JSON数据。 ```json { "timestamp":"2019-01-...

2019-02-28 17:00:45

阅读数 758

评论数 0

原创 Springboot 系列(六)Spring Boot web 开发之拦截器和三大组件

1. 拦截器 Springboot 中的 Interceptor 拦截器也就是 mvc 中的拦截器,只是省去了 xml 配置部分。并没有本质的不同,都是通过实现 HandlerInterceptor 中几个方法实现。几个方法的作用一一如下。 preHandle 进入 Habdler 方法之前执行...

2019-02-27 18:11:18

阅读数 723

评论数 0

原创 Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎

前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器。且开发十分简单,只需要引入 web 开发所需的包,然后编写业务代码即可。 自动配置原理? 在进行 web 开发之前让我再来回顾一下自动配置,可...

2019-02-27 17:57:27

阅读数 260

评论数 0

原创 Springboot 系列(四)Spring Boot 日志框架

注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别。 前言 Spring 框架选择使用了 JCL 作为默认日志输出。而 Spring Boot 默认选择了 SLF4J 结合 LogBack。那我们在...

2019-02-26 21:59:07

阅读数 457

评论数 0

原创 Springboot 系列(三)Spring Boot 自动配置原理

注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别。 前言 关于配置文件可以配置的内容,在 Spring Boot 官方网站已经提供了完整了配置示例和解释。 可以这么说,Spring Boot 的一...

2019-02-26 18:20:20

阅读数 287

评论数 0

原创 Springboot 系列(二)Spring Boot 配置文件

注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别。 前言 不管是通过官方提供的方式获取 Spring Boot 项目,还是通过 IDEA 快速的创建 Spring Boot 项目,我们都会发现在 ...

2019-02-26 18:16:59

阅读数 298

评论数 0

原创 Springboot 系列(一)Spring Boot 入门篇

注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别。 前言 由于 J2EE 的开发变得笨重,繁多的配置,错乱的依赖管理,低下的开发效率,复杂的部署流程,第三方技术的集成难度较大等。同时随着复杂项目...

2019-02-14 16:34:56

阅读数 294

评论数 0

原创 消息队列中间件(三)Kafka 入门指南

Kafka 来源 Kafka的前身是由LinkedIn开源的一款产品,2011年初开始开源,加入了 Apache 基金会,2012年从 Apache Incubator 毕业变成了 Apache 顶级开源项目。同时LinkedIn还有许多著名的开源产品。如: 分布式数据同步系统Databus 高...

2018-12-11 23:44:21

阅读数 273

评论数 0

原创 消息队列中间件(二)使用 ActiveMQ

ActiveMQ 介绍 Active MQ 是由 Apache 出品的一款流行的功能强大的开源消息中间件,它速度快,支持跨语言的客户端,具有易于使用的企业集成模式和许多的高级功能,同时完全支持 JSM1.1 和 J2EE1.4 。 官方下载地址: http://activemq.apache....

2018-12-10 23:31:18

阅读数 217

评论数 0

原创 消息队列中间件(一)介绍

消息队列介绍 消息队列中间件是大型系统中的重要组件,已经逐渐成为企业系统内部通信的核心手段。它具有松耦合、异步消息、流量削峰、可靠投递、广播、流量控制、最终一致性等一系列功能,已经成为异步RPC的主要手段之一。 目前常见的消息中间件有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、M...

2018-12-09 23:29:18

阅读数 243

评论数 0

原创 Ubuntu18 的超详细常用软件安装

心血来潮,在笔记本安装了Ubuntu 18 用于日常学习,于是有了下面的安装记录。 Gnome-Tweak-Tool gnome-tweak-tool可以打开隐藏的设置,可以详细的对系统进行配置,以及安装主题和扩展等功能。 // 安装 sudo apt install gnome-tweak-to...

2018-12-06 18:20:33

阅读数 547

评论数 0

原创 IO通信模型(三)多路复用IO

多路复用IO 从非阻塞同步IO的介绍中可以发现,为每一个接入创建一个线程在请求很多的情况下不那么适用了,因为这会渐渐耗尽服务器的资源,人们也都意识到了这个 问题,因此终于有人发明了IO多路复用。最大的特点就是不需要开那么多的线程和进程。 多路复用IO是指使用一个线程来检查多个文件描述符(Socke...

2018-10-27 10:16:17

阅读数 245

评论数 0

原创 IO通信模型(二)同步非阻塞模式NIO(NonBlocking IO)

同步非阻塞模式(NonBlocking IO) 在非阻塞模式中,发出Socket的accept()和read()操作时,如果内核中的数据还没有准备好,那么它并不会阻塞用户进程,而是立刻返回一个信息。也就是说进程发起一个read操作后,并不需要一直阻塞等待,而是马上就得到了一个结果。 如果结果发现...

2018-10-25 08:37:33

阅读数 240

评论数 0

提示
确定要删除当前文章?
取消 删除