Fork me on GitHub
摘要: 一、Spring Boot 系列诞生原因 上学那会主要学的是 Java 和 .Net 两种语言,当时对于语言分类这事儿没什么概念,恰好在2009年毕业那会阴差阳错的先找到了 .Net 的工作,此后就开始了漫长的 .Net 编程之旅,说实话最初的“编程思想”的形成和确立都是在头几年做 .Net 的时候阅读全文
posted @ 2018-11-24 22:31 王磊的博客 阅读(496) 评论(0) 编辑
摘要: 反射和动态代理放有一定的相关性,但单纯的说动态代理是由反射机制实现的,其实是不够全面不准确的,动态代理是一种功能行为,而它的实现方法有很多。要怎么理解以上这句话,请看下文。 一、反射 反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过反射阅读全文
posted @ 2018-12-11 18:33 王磊的博客 阅读(181) 评论(0) 编辑
摘要: 导读:本文你将获取到:同/异步 + 阻/非阻塞的性能区别;BIO、NIO、AIO 的区别;理解和实现 NIO 操作 Socket 时的多路复用;同时掌握 IO 最底层最核心的操作技巧。 BIO、NIO、AIO 的区别是什么? 同/异步、阻/非阻塞的区别是什么? 文件读写最优雅的实现方式是什么? NI阅读全文
posted @ 2018-12-04 17:40 王磊的博客 阅读(255) 评论(1) 编辑
摘要: 导读:Map竟然不属于Java集合框架的子集?队列也和List一样属于集合的三大子集之一?更有队列的正确使用姿势,一起来看吧! <! more Java中的集合通常指的是Collection下的三个集合框架List、Set、Queue和Map集合,Map并不属于Collection的子集,而是和它平阅读全文
posted @ 2018-11-28 08:27 王磊的博客 阅读(125) 评论(0) 编辑
摘要: 一、Spring Boot 系列诞生原因 上学那会主要学的是 Java 和 .Net 两种语言,当时对于语言分类这事儿没什么概念,恰好在2009年毕业那会阴差阳错的先找到了 .Net 的工作,此后就开始了漫长的 .Net 编程之旅,说实话最初的“编程思想”的形成和确立都是在头几年做 .Net 的时候阅读全文
posted @ 2018-11-24 22:31 王磊的博客 阅读(496) 评论(0) 编辑
摘要: 乐观锁、悲观锁、公平锁、自旋锁、偏向锁、轻量级锁、重量级锁、锁膨胀...难理解?不存的!来,话不多说,带你飙车。 上一篇介绍了线程池的使用,在享受线程池带给我们的性能优势之外,似乎也带来了另一个问题:线程安全的问题。 那什么是线程的安全问题呢? 一、线程安全问题的产生 线程安全问题:指的是在多线程编阅读全文
posted @ 2018-11-22 09:34 王磊的博客 阅读(233) 评论(0) 编辑
摘要: 本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据自己的情况自主选择阅读顺序和需要了解的章节。 一、线程池优点 线程池能够更加充分的利用CPU、内存、阅读全文
posted @ 2018-11-19 17:25 王磊的博客 阅读(171) 评论(0) 编辑
摘要: 一、前言 延迟队列的使用场景:1.未按时支付的订单,30分钟过期之后取消订单;2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度;3.过1分钟给新注册会员的用户,发送注册邮件等。 实现延迟队列的方式有两种: 1. 通过消息过期后进入死信交换器,再由交换器转发到延迟消费队列,实现延迟功能; 2.阅读全文
posted @ 2018-11-16 10:01 王磊的博客 阅读(279) 评论(1) 编辑
摘要: 一、前言 RabbitMQ是一个开源的消息代理软件(面向消息的中间件),它的核心作用就是创建消息队列,异步接收和发送消息,MQ的全程是:Message Queue中文的意思是消息队列。 1.1 使用场景 1. 削峰填谷:用于应对间歇性流量提升对于系统的“破坏”,比如秒杀活动,可以把请求先发送到消息队阅读全文
posted @ 2018-11-13 09:11 王磊的博客 阅读(324) 评论(0) 编辑
摘要: 一、介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试。 白盒测试:把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人 员是公开的; 回归测试:软件阅读全文
posted @ 2018-11-05 12:52 王磊的博客 阅读(377) 评论(2) 编辑
摘要: 一、简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key Value数据库,并提供多种语言的API,Redis也是技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」首字母缩写,也就是「远程字典服务」。 <! m阅读全文
posted @ 2018-11-03 11:52 王磊的博客 阅读(249) 评论(0) 编辑
摘要: 一、简介 Java知名的日志有很多,比如:JUL、Log4j、JCL、SLF4J、Logback、Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看。 <! more 1.1 JUL Java有自己的日志框架JUL(Java Util Logging)在jav阅读全文
posted @ 2018-10-30 19:08 王磊的博客 阅读(352) 评论(0) 编辑
摘要: 一、简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: <! more 问题一、后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二、返回数据操作难:数据返回不对或者不够怎么办?怎么才能灵活的操作数据? 这是很多公司阅读全文
posted @ 2018-10-24 09:31 王磊的博客 阅读(599) 评论(2) 编辑
摘要: 一、概述 在开始学习Thread之前,我们先来了解一下 线程和进程之间的关系: 线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。 线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生阅读全文
posted @ 2018-10-09 19:40 王磊的博客 阅读(325) 评论(0) 编辑
摘要: 一、MongoDB简介 1.1 MongoDB介绍 MongoDB是一个强大、灵活,且易于扩展的通用型数据库。MongoDB是C++编写的文档型数据库,有着丰富的关系型数据库的功能,并在4.0之后添加了事务支持。 随着存储数据量不断的增加,开发者面临一个困难:如何扩展数据库?而扩展数据库分为横向扩展阅读全文
posted @ 2018-10-08 09:33 王磊的博客 阅读(677) 评论(1) 编辑
摘要: 一、简介 1.1 MyBatis Generator介绍 MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper、dao、entity 的框架,让我们省去规律性最强的一部分最基础的代码编写。 1.2 MyBatis Generator使用 M阅读全文
posted @ 2018-09-30 10:13 王磊的博客 阅读(363) 评论(0) 编辑
摘要: 一、简介 1.1 MyBatis介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC代码和手动设置参数以及获取结果集。 1.2 MyBatis发展史 MyBatis 原本是apache的一个开源项目iBatis, 201阅读全文
posted @ 2018-09-12 19:13 王磊的博客 阅读(617) 评论(0) 编辑
摘要: 一、前言 Hexo 是一个基于 NodeJs 博客框架,可以快速的帮我们搭建一个博客系统,Hexo使用的是Markdown(下文简称MD)解析文章的,在几秒内即可利用靓丽的主体生成静态网页。 <! more 推荐使用 Hexo 有三大理由: 有大量的主题可供人们选择 使用MD解析文章,MD是现在主流阅读全文
posted @ 2018-09-07 17:19 王磊的博客 阅读(381) 评论(0) 编辑
摘要: 一、Spring Data JPA 介绍 JPA(Java Persistence API)Java持久化API,是 Java 持久化的标准规范,Hibernate是持久化规范的技术实现,而Spring Data JPA是在 Hibernate 基础上封装的一款框架。 开发环境 Spring Boo阅读全文
posted @ 2018-09-07 10:06 王磊的博客 阅读(416) 评论(0) 编辑
摘要: 一、Thymeleaf介绍 Thymeleaf是一种Java XML / XHTML / HTML5模板引擎,可以在Web和非Web环境中使用。它更适合在基于MVC的Web应用程序的视图层提供XHTML / HTML5,但即使在脱机环境中,它也可以处理任何XML文件。它提供了完整的Spring Fr阅读全文
posted @ 2018-09-05 19:49 王磊的博客 阅读(343) 评论(0) 编辑
摘要: 一、FreeMaker介绍 FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT、电子邮件、配置文件、源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组件。 FreeMarker最初设计是用来在MVC模式的Web开发中生成HTML页面的,所以没有绑定S阅读全文
posted @ 2018-08-30 11:18 王磊的博客 阅读(457) 评论(1) 编辑
摘要: 一、简介 提起Java不得不说的一个开发场景就是Web开发,也是Java最热门的开发场景之一,说到Web开发绕不开的一个技术就是JSP,因为目前市面上仍有很多的公司在使用JSP,所以本文就来介绍一下Spring Boot 怎么集成JSP开发,以及生产环境的详细部署方法。 二、集成JSP 开发环境 S阅读全文
posted @ 2018-08-27 09:17 王磊的博客 阅读(901) 评论(5) 编辑
摘要: 一、关于Spring Boot 在开始了解Spring Boot之前,我们需要先了解一下Spring,因为Spring Boot的诞生和Spring是息息相关的,Spring Boot是Spring发展到一定程度的一个产物,但并不是Spring的替代品,Spring Boot是为了让程序员更好的使用阅读全文
posted @ 2018-08-24 17:00 王磊的博客 阅读(772) 评论(0) 编辑
摘要: 一、搭建Java环境 系统环境 Ubuntu 18.04.1 JDK 8 IDEA 2018.2 1.下载JDK 官网地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 选择相应的版本,点击jdk,进入下载页面,阅读全文
posted @ 2018-08-24 14:58 王磊的博客 阅读(647) 评论(0) 编辑
摘要: 前言 本文将系统的介绍一下RabbitMQ集群架构的特点、异常处理、搭建和使用中要注意的一些细节。 知识点 一、为什么使用集群? 二、集群的特点 三、集群异常处理 四、集群节点类型 五、集群搭建方法 六、镜像队列 一、为什么使用集群? 内建集群作为RabbitMQ最优秀的功能之一,它的作用有两个: 阅读全文
posted @ 2018-07-25 20:20 王磊的博客 阅读(2778) 评论(1) 编辑
摘要: 概述 本文重点介绍的Docker的使用,以及如何部署RabbitMQ集群,最基础的Docker安装,本文不做过多的描述,读者可以自行度娘。 Windows10上Docker的安装 因为本人用的是Windows系统,所有推荐一个不错的安装文章,详见:https://blog.csdn.net/xiao阅读全文
posted @ 2018-07-24 20:24 王磊的博客 阅读(1972) 评论(0) 编辑