- 博客(60)
- 资源 (7)
- 收藏
- 关注
原创 一起来学SpringBoot | 第二十六篇:轻松搞定安全框架(Shiro)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程Shiro 是 Apache 旗下开源的一款强大且易用的Java安全框架,身份验证、授权、加密、会话管理。 相比 Spring Security 而言 ...
2018-07-04 13:27:17 1647
原创 一起来学SpringBoot | 第二十五篇:打造属于你的聊天室(WebSocket)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程Webscoket 对浏览器有一定的要求,所以使用之前要考虑兼容性的问题….WebscoketWebSocket 是 HTML5 新增的一种...
2018-06-28 09:13:29 2475
原创 一起来学SpringBoot | 第二十四篇:数据库管理与迁移(Liquibase)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程目前 Spring Boot 支持较好的两款工具分别是 flyway、liquibase,支持 sql script,在初始化数据源之后执行指定的脚本代...
2018-06-28 09:13:03 3043 2
原创 一起来学SpringBoot | 第二十三篇:轻松搞定重复提交(分布式锁)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程在 一起来学SpringBoot | 第二十二篇:轻松搞定重复提交(一) 一文中介绍了单机版的重复提交解决方案,在如今这个分布式与集群横行的世道中,那怎...
2018-06-28 09:12:29 4707
原创 一起来学SpringBoot | 第二十二篇:轻松搞定重复提交(本地锁)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我...
2018-06-28 09:11:55 3988 3
原创 一起来学SpringBoot | 第二十一篇:轻松搞定数据验证(三)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程前面两章中详细介绍了数据有效性校验的重要性、自定有数据有效性校验注解 本章也是轻松搞定数据验证的最后一篇, 一起来揭开神秘的分组验证 分组验...
2018-06-12 17:32:36 739
原创 一起来学SpringBoot | 第二十篇:轻松搞定数据验证(二)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程一起来学SpringBoot | 第十九篇:轻松搞定数据验证(一) 中介绍了数据有效性校验的重要性,也简单介绍了如何用轻松的方式搞定数据有效性校验,但是...
2018-06-12 17:32:14 517
原创 一起来学SpringBoot | 第十九篇:轻松搞定数据验证(一)
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块,这时候就要求我们在服务端接收到数据...
2018-06-12 17:31:43 437 2
原创 一起来学SpringBoot | 第十八篇:轻松搞定全局异常
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程实际项目开发中,程序往往会发生各式各样的异常情况,特别是身为服务端开发人员的我们,总是不停的编写接口提供给前端调用,分工协作的情况下,避免不了异常的发生...
2018-06-12 17:31:11 397
原创 一起来学SpringBoot | 第十七篇:轻松搞定文件上传
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程文件上传和下载是JAVA WEB中常见的一种操作,文件上传主要是将文件通过IO流传输到服务器的某一个特定的文件夹下;刚开始工作那会一个上传文件常常花费小...
2018-06-12 17:30:25 390
原创 一起来学SpringBoot | 第十六篇:定时任务详解
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程在我们日常开发中,经常会遇到 数据定时增量同步、定时发送邮件、爬虫定时抓取 的需求;这时我们可以采用定时任务的方式去进行工作…..定时任务概述...
2018-05-31 14:10:02 1180
原创 一起来学SpringBoot | 第十五篇:actuator与spring-boot-admin 可以说的秘密
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程一起来学SpringBoot | 第十四篇:强大的 actuator 服务监控与管理 中介绍了actuator 的作用,细心的朋友可能会发现通过http...
2018-05-31 14:09:35 3273 2
原创 一起来学SpringBoot | 第十四篇:强大的 actuator 服务监控与管理
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程actuator是spring boot项目中非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api 请求来监管、审计、收集应用...
2018-05-31 14:08:59 1412
原创 一起来学SpringBoot | 第十三篇:RabbitMQ延迟队列
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程初探RabbitMQ消息队列中介绍了RabbitMQ的简单用法,顺带提及了下延迟队列的作用。所谓延时消息就是指当消息被发送以后,并不想让消费者立即拿到消...
2018-05-31 14:08:25 3855 1
原创 一起来学SpringBoot | 第十二篇:初探RabbitMQ消息队列
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程MQ全称(Message Queue)又名消息队列,是一种异步通讯的中间件。可以将它理解成邮局,发送者将消息传递到邮局,然后由邮局帮我们发送给具体的消息...
2018-05-31 14:07:54 424
原创 一起来学SpringBoot | 第十一篇:集成Swagger在线调试
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、前后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。 前端...
2018-05-31 14:07:23 528 5
原创 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache...
2018-05-31 14:05:22 992
原创 一起来学SpringBoot | 第九篇:整合Lettuce Redis
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程Spring Boot 除了支持常见的ORM框架外,更是对常用的中间件提供了非常好封装,随着Spring Boot2.x的到来,支持的组件越来越丰富,也...
2018-05-31 14:04:40 5124 1
原创 一起来学SpringBoot | 第八篇:通用Mapper与分页插件的集成
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程在一起来学SpringBoot | 第七篇:整合Mybatis一文中,我们介绍了Mybatis这款优秀的框架,顺便提及了民间大神开发的两款插件(通用Ma...
2018-05-29 10:35:43 798
原创 一起来学SpringBoot | 第七篇:整合Mybatis
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射,几乎避免了所有的 JDBC 代码和手动设置参数以及获取结果集,使用简...
2018-05-29 10:34:31 609 2
原创 一起来学SpringBoot | 第六篇:整合SpringDataJpa
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程上一篇介绍了Spring JdbcTemplate的使用,对比原始的JDBC而言,它更加的简洁。但随着表的增加,重复的CRUD工作让我们苦不堪言,这时候...
2018-05-29 10:27:59 773
原创 一起来学SpringBoot | 第五篇:使用JdbcTemplate访问数据库
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程Spring Framework对数据库的操作在JDBC上面做了深层次的封装,通过依赖注入功能,可以将 DataSource 注册到JdbcTempla...
2018-05-29 10:27:11 773
原创 一起来学SpringBoot | 第四篇:整合Thymeleaf模板
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程在前面几章中已经介绍了如何创建一个SpringBoot 项目,同时简单的描述了SpringBoot REST Web服务。除此之外它也是支持如JSP、T...
2018-05-23 13:32:05 747
原创 一起来学SpringBoot | 第三篇:SpringBoot日志配置
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程Spring Boot 内部采用的是 Commons Logging进行日志记录,但在底层为 Java Util Logging、Log4J2、Logb...
2018-05-23 13:30:56 895 1
原创 一起来学SpringBoot | 第二篇:SpringBoot配置详解
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程上一篇介绍了 SpringBoot 由来及构建方式,通过第一章的教程我们对 SpringBoot 不在感到陌生,可以发现 SpringBoot 虽然...
2018-05-22 20:28:40 902
原创 一起来学SpringBoot | 第一篇:构建第一个SpringBoot工程
SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程未接触 SpringBoot 之前,搭建一个普通的 WEB 工程往往需要花费30分钟左右,如果遇到点奇葩的问题耽搁的时间会更长一点,但自从用了Spr...
2018-05-18 08:31:06 1903 1
原创 Spring解密 - 默认标签的解析
Spring是一个开源的设计层面框架,解决了业务逻辑层和其他各层的松耦合问题,将面向接口的编程思想贯穿整个系统应用,同时它也是Java工作中必备技能之一…前言紧跟上篇 Spring解密 - XML解析 与 Bean注册 ,我们接着往下分析源码解密在 Spring 的 XML 配置里面有两大类声明,一个是默认的如 ,另一类就是自定义的如,两种标签的解析方式差异是非常大的。p
2018-01-11 09:37:40 872
原创 一起学设计模式 - 代理模式
代理模式(Proxy Pattern)属于结构型模式的一种,给某个对象提供一个代理对象,并由代理对象控制对于原对象的访问,即客户不直接操控原对象,而是通过代理对象间接地操控原对象。概述身处华夏大地的码农都知道,因为国内有个牛逼的GFW,所以导致无法访问 Google,不能访问Google怎么查资料呢?不能查资料怎么提升(装逼)呢,古语有云(扯犊子的):上有政策,下有对策,我们可以借助
2018-01-11 09:30:38 387
原创 一起学设计模式 - 外观模式
外观模式(Facade Pattern)属于结构型模式的一种,为子系统中的一组接口提供一个统一的入口,它通过引入一个外观角色来简化客户端与子系统之间的交互…概述外观模式是一种使用频率非常高的结构型设计模式,当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给
2018-01-11 09:30:02 328
原创 一起学设计模式 - 组合模式
组合模式(Composite Pattern)属于结构型模式的一种,组合多个对象形成树形结构来表示部分 - 整体的结构层次,对单个对象(叶子对象)和组合对象(容器对象)的使用具有一致性概述组合模式对单个对象(叶子对象)和组合对象(容器对象)具有一致性,它将对象组织到树结构中,可以用来描述整体与部分的关系。同时它也模糊了简单元素(叶子对象)和复杂元素(容器对象)的概念,使得客户能够像处
2018-01-11 09:29:21 398
原创 一起学设计模式 - 桥接模式
桥接模式(Brideg Pattern)属于结构型模式的一种,用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。概述桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设
2018-01-11 09:28:41 406
原创 一起学设计模式 - 适配器模式
适配器模式(Adapter Pattern)属于结构型模式的一种,把一个类的接口变成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作…概述当你想使用一个已经存在的类,而它的接口不符合你的需求,或者你想创建一个可重用的类(与不兼容接口无关的类),这时候可以考虑使用适配器模式。同时它也是一种包装模式,它与装饰模式同样具有包装的功能。案例
2018-01-11 09:27:59 333
原创 一起学设计模式 - 建造者模式
建造者模式(Builder Pattern)属于创建型模式的一种,将多个简单对象构建成一个复杂的对象,构建过程抽象化,不同实现方法可以构造出不同表现(属性)的对象,还提供了一种更加优雅构建对象的方式…概述有时候构建一个复杂的对象,需要经过好几步的处理,比如常用的StringBuffer、StringBuilder、以及Swagger(一种接口文档),都是以这种模式构建对象的
2018-01-11 09:27:18 355
原创 Spring解密 - XML解析 与 Bean注册
Spring是一个开源的设计层面框架,解决了业务逻辑层和其他各层的松耦合问题,将面向接口的编程思想贯穿整个系统应用,同时它也是Java工作中必备技能之一…
2018-01-09 17:47:12 424
原创 一起学设计模式 - 原型模式
原型模式(Prototype Pattern)是创建模式的一种,其作用是提高创建效率,减少计算机资源开销,与工厂模式类似的是,都屏蔽了对象实例化的过程…概述原型模式是23GOF模式的一种,其特点就是通过克隆/拷贝的方式来,节约创建成本和资源,被拷贝的对象模型就称之为原型。举例:在写PPT的时候,大多情况下模板风格都是一致的,只是其中部分描述内容发生变化,这个时候你会选择Ctrl+C/V还是新建一页
2017-12-31 08:39:38 264
原创 一起学设计模式 - 单例模式
单例设计模式(Singleton Pattern)是最简单且常见的设计模式之一,主要作用是提供一个全局访问且只实例化一次的对象,避免多实例对象的情况下引起逻辑性错误(实例化数量可控)…概述Java中,单例模式主要分三种:懒汉式单例、饿汉式单例、登记式单例三种。懒汉:非线程安全,需要用一定的风骚操作控制,装逼失败有可能导致看一周的海绵宝宝饿汉:天生线程安全,ClassLoad的时候就已经实例化好
2017-12-31 08:38:31 398
原创 一起学设计模式 - 工厂模式
工厂模式是JAVA中最常用的设计模式之一,使用工厂模式后,创建对象的时候不在将创建逻辑暴露给客户端,而是通过实现接口的方式创建对象,这种设计模式也是对象实例化的最佳方式。概述 工厂模式的三种形态简单工厂(Simple Factory)工厂方法(Factory Method)抽象工厂(Abstract Factory)简单工厂简单工厂模式属于工厂模式的小弟,未被收纳进GOF 23中,但是也
2017-12-31 08:37:21 674
原创 一起学并发编程 - 简易线程池实现
开发中经常会遇到各种池(如:连接池,线程池),它们的作用就是为了提高性能及减少开销,在JDK1.5以后的java.util.concurrent包中内置了很多不同使用场景的线程池,为了更好的理解它们,自己手写一个线程池,加深印象。
2017-11-16 08:41:23 1106
原创 一起学并发编程 - sleep与wait的差异
在JAVA的学习中,不少人会把sleep和wait搞混,认为都是做线程的等待,下面主要介绍下这俩者是什么,及了解它们之间的差异和相似之处。
2017-11-15 09:40:14 746
原创 一起学并发编程 - 等待与通知
wait,notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视,而本文则是对这些关键字的使用进行描述。
2017-11-15 09:39:16 781
基于 Springboot、Shiro、Mybatis、Thymeleaf 做的后台管理系统(也有传统MVC版本,都在ZIP里)
2017-08-10
SSM+Shiro+BootStrap框架整合
2016-09-06
Maven+Spring+SpringMVC+Shiro+Mybatis+MYSQL
2016-09-06
RabbitMQ项目demo
2016-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人