自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

追光者的博客

Good, better, best. Never let it rest. http://wuwii.com/

  • 博客(51)
  • 资源 (6)
  • 收藏
  • 关注

原创 学习 Spring Boot:(二十九)Spring Boot Junit 单元测试

前言JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量。JUnit 测试框架具有以下重要特性:测试工具测试套件测试运行器测试分类了解 Junit 基础方法加入依赖在 pom.xml 中加入依赖:<dependency> <groupId>junit</grou...

2018-05-07 16:14:16 157064 8

原创 学习Spring Boot:(二十八)Spring Security 权限认证

前言主要实现 Spring Security 的安全认证,结合 RESTful API 的风格,使用无状态的环境。主要实现是通过请求的 URL ,通过过滤器来做不同的授权策略操作,为该请求提供某个认证的方法,然后进行认证,授权成功返回授权实例信息,供服务调用。基于Token的身份验证的过程如下:用户通过用户名和密码发送请求。程序验证。程序返回一个签名的token 给客户端。...

2018-05-07 16:13:00 11679 3

原创 学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator

前言主要是完成微服务的监控,完成监控治理。可以查看微服务间的数据处理和调用,当它们之间出现了异常,就可以快速定位到出现问题的地方。springboot - version: 2.0正文依赖maven 项目 在 pom.xml 文件中加入 actuator 的依赖:<dependency> <groupId>org.spri...

2018-05-07 16:10:35 27124

原创 学习Spring Boot:(二十六)使用 RabbitMQ 消息队列

前言前面学习了 RabbitMQ 基础,现在主要记录下学习 Spring Boot 整合 RabbitMQ ,调用它的 API ,以及中间使用的相关功能的记录。相关的可以去我的博客/RabbitMQ正文我这里测试都是使用的是 topic 交换器,Spring Boot 2.0.0, jdk 1.8配置Spring Boot 版本 2.0.0 在 pom.xml 文件中...

2018-05-07 16:10:22 826

原创 学习Spring Boot:(二十五)使用 Redis 实现数据缓存

前言由于 Ehcache 存在于单个 java 程序的进程中,无法满足多个程序分布式的情况,需要将多个服务器的缓存集中起来进行管理,需要一个缓存的寄存器,这里使用的是 Redis。正文当应用程序要去缓存中读取数据,但是缓存中没有找到该数据,则重新去数据库中获取数据,然后将数据存入缓存中。 还有当我们需要更新或者删除缓存中的数据时候,需要让缓存失效。配置在系统配置文...

2018-05-07 16:08:52 488

原创 学习Spring Boot:(二十四)多数据源配置与使用

前言随着业务量增大,可能有些业务不是放在同一个数据库中,所以系统有需求使用多个数据库完成业务需求,我们需要配置多个数据源,从而进行操作不同数据库中数据。正文JdbcTemplate 多数据源配置需要在 Spring Boot 中配置多个数据库连接,当然怎么设置连接参数的 key 可以自己决定, 需要注意的是 Spring Boot 2.0 的默认连接池配置参数好...

2018-05-07 16:07:54 655

原创 学习Spring Boot:(二十三)Spring Boot 中使用 Docker

前言简单的学习下怎么在 Spring Boot 中使用 Docker 进行构建,发布一个镜像,现在我们通过远程的 docker api 构建镜像,运行容器,发布镜像等操作。这里只介绍两种方式:远程命令 api (需要知道 Docker 命令)maven 插件 (不需要了解 Docker 命令)开启 Docker api 远程访问开启 docker api 远程操作的功能,...

2018-05-07 16:07:01 1418

原创 学习Spring Boot:(二十二)使用 AOP

前言 AOP 1,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。基于AOP实现的功能不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。正文Spring Boot 中使用在 pom.xml 中加入 aop 依赖: ...

2018-05-07 16:05:21 483

原创 学习Spring Boot:(二十一)使用 EhCache 实现数据缓存

前言当多次查询数据库影响到系统性能的时候,可以考虑使用缓存,来解决数据访问新能的问题。 SpringBoot 已经为我们提供了自动配置多个 CacheManager 的实现,只要去实现使用它就可以了。一般的系统都是优先使用 EhCache,它工作在 JAVA 进程中,在传统的应用没有太大要求的时候,使用它比较方便,分布式系统中去使用 Shiro 集中管理缓存。正文加入依赖...

2018-05-07 16:03:17 474

原创 学习Spring Boot:(二十)使用 MongoDB

前言 MongoDB 1 是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。正文Spring Boot 对 MongoDB 的数据源操作进行了封装。加入依赖...

2018-05-06 10:25:48 374

原创 学习Spring Boot:(十九)Shiro 中使用缓存

前言在 shiro 中每次去拦截请求进行权限认证的时候,都会去数据库查询该用户的所有权限信息, 这个时候就是有一个问题了,因为用户的权限信息在短时间内是不可变的,每次查询出来的数据其实都是重复数据,没必要每次都去重新获取这个数据,统一放在缓存中进行管理,这个时候,我们只需要获取一次权限信息,存入到缓存中,待缓存过期后,再次重新获取即可。例如,我执行一个查询多次,它执行多次权限查询。 ...

2018-05-06 10:25:04 386

原创 学习Spring Boot:(十八)Spring Boot 中session共享

前言前面我们将 Redis 集成到工程中来了,现在需要用它来做点实事了。这次为了解决分布式系统中的 session 共享的问题,将 session 托管到 Redis。正文引入依赖除了上篇文章中引入 spring-boot-starter-data-redis,还需要 spring-session 依赖: <dependency> ...

2018-05-06 10:24:22 482

原创 学习Spring Boot:(十七)Spring Boot 中使用 Redis

前言 Redis 1 是一个由Salvatore Sanfilippo写的key-value存储系统。 edis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合...

2018-05-06 10:23:33 425

原创 学习Spring Boot:(十六)使用Shiro与JWT 实现认证服务

前言需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时access_token进行资源访问。这里我们将使用 JWT 1,基于散列的消息认证码,使用一个密钥和一个消息作为输入,生成它们的消息摘要。该密钥只有服务端知道。访问时使用该消息摘要进行传播,服务端然后对该消息摘要进行验证。认证步骤客户端第一次使用用户名密码访问认证服务器,服务...

2018-05-06 10:22:40 18253 2

原创 学习Spring Boot:(十五)使用Lombok来优雅的编码

前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。正文添加依赖在 pom.xml 文件中添加相关依赖:<lombok.version>1.16.20</lombok.version><!-- https://mvnrep...

2018-05-06 10:21:33 763 2

原创 学习Spring Boot:(十四)spring-shiro的密码加密

前言前面配置了怎么使用 shiro ,这次研究下怎么使用spring shiro的密码加密,并且需要在新增、更新用户的时候,实现生成盐,加密后的密码进行入库操作。正文配置凭证匹配器 @Bean public HashedCredentialsMatcher hashedCredentialsMatcher() { HashedCredent...

2018-05-06 10:20:42 6070 2

原创 学习Spring Boot:(十三)配置 Shiro 权限认证

经过前面学习 Apache Shiro ,现在结合 Spring Boot 使用在项目里,进行相关配置。正文添加依赖在 pom.xml 文件中添加 shiro-spring 的依赖: <dependency> <groupId>org.apache.shiro</groupId> ...

2018-05-06 10:19:08 2258

原创 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器

前言在 Spring Boot 中使用 Mybatis 中遇到了字段为枚举类型,数据库存储的是枚举的值,发现它不能自动装载。解决内置枚举转换器MyBatis内置了两个枚举转换器分别是:org.apache.ibatis.type.EnumTypeHandler 和 org.apache.ibatis.type.EnumOrdinalTypeHandler。EnumT...

2018-05-06 10:18:52 997 2

原创 学习Spring Boot:(十一) 自定义装配参数

前言SpringMVC 中 Controller 中方法的参数非常灵活,得益于它的强大自动装配,这次将根据上次遗留下的问题,将研究下装配参数。正文SpringMVC中使用了两个接口来处理参数: * HandlerMethodArgumentResolver 处理方法请求参数; * HandlerMethodReturnValueHandler 处理方法的返回参数。这里我们将...

2018-05-06 10:18:04 772

原创 学习Spring Boot:(十)使用hibernate validation完成数据后端校验

前言后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性及效率。了解了解一点概念性的东东。 * JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0 中 。 * Hibernate Va...

2018-05-05 10:07:02 2926 4

原创 学习Spring Boot:(九)统一异常处理

前言开发的时候,每个controller的接口都需要进行捕捉异常的处理,以前有的是用切面做的,但是SpringMVC中就自带了@ControllerAdvice ,用来定义统一异常处理类,在 SpringBoot 中额外增加了 @RestControllerAdvice。使用创建全局异常处理类通过使用 @ControllerAdvice 或者 @RestControllerAd...

2018-05-05 10:06:01 1367 3

原创 学习Spring Boot:(八)Mybatis使用分页插件PageHelper

首先Mybqtis可以通过SQL 的方式实现分页很简单,只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了。本文主要介绍使用拦截器的方式实现分页。实现原理拦截器实现了拦截所有查询需要分页的方法,并且利用获取到的分页相关参数统一在sql语句后面加上limit分页的相关语句,从而达到SQL 分页的目的,它的好处不用多说了,代码也写的很少,对S...

2018-05-05 10:05:14 2086

原创 学习Spring Boot:(七)集成Mybatis

前面都是用的是spring data JPA,现在学习下Mybatis,而且现在Mybatis也像JPA那样支持注解形式了,也非常方便,学习一下。数据库 mysql 5.7添加依赖在pom文件中添加:<mybatis.version>1.3.1</mybatis.version><druid.version>1.1.3</drui...

2018-05-05 10:04:25 645 2

原创 学习Spring Boot:(六) 集成Swagger2

前言Swagger是用来描述和文档化RESTful API的一个项目。Swagger Spec是一套规范,定义了该如何去描述一个RESTful API。类似的项目还有RAML、API Blueprint。 根据Swagger Spec来描述RESTful API的文件称之为Swagger specification file,它使用JSON来表述,也支持作为JSON支持的YAML。Swag...

2018-05-05 10:03:22 1690 3

原创 学习Spring Boot:(五)使用 devtools热部署

前言 spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLo...

2018-05-05 10:02:21 568

原创 学习Spring Boot:(四)应用日志

前言应用日志是一个系统非常重要的一部分,后来不管是开发还是线上,日志都起到至关重要的作用。这次使用的是 Logback 日志框架。正文Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日...

2018-05-05 10:01:33 768 1

原创 学习Spring Boot:(三)配置文件

前言Spring Boot使用习惯优于配置(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。正文使用配置文件注入属性Spring Boot 默认的配置文件src/main/java/resources/application.properties或者src/main/java/resources/application.y...

2018-05-05 10:00:37 694

原创 学习Spring Boot:(二)启动原理

前言主要了解前面的程序入口 @@SpringBootApplication 这个注解的结构。正文参考《SpringBoot揭秘 快速构建微服务体系》第三章的学习,总结下。SpringBootApplication背后的秘密@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@...

2018-05-05 09:59:32 1170

原创 学习Spring Boot:(一)入门

微服务现在微服务越来越火了,Spring Boot热度蹭蹭直升,自学下。 微服务其实是服务化思路的一种最佳实践方向,遵循SOA(面向服务的架构)的思路,各个企业在服务化治理上面的道路已经走得很远了,整个软件交付链上各个环节的基础设施逐渐成熟了,微服务就诞生了。 微服务给我们也带来了很多挑战,服务“微”化之后,一个显著的特征就是服务的数量增多了。如果将软件开发和交付也作为一种生...

2018-05-05 09:57:19 1481 5

转载 并发容器CopyOnWriteArrayList

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。...

2018-05-04 23:45:15 94

原创 使用Redis完成分布式锁

实现原理 分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用...

2018-05-04 23:44:21 205

原创 Spring中使用Configuration注入Bean

在Spring容器中使用applicationContext.xml中来给对应的类注入对应的属性,来完成初始化,最典型的就是配置数据库连接池了。<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">...

2018-05-04 23:43:35 6933

转载 理解一致性哈希算法(consistent hashing)

一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 平衡性(Balance):平...

2018-05-04 23:42:38 263

转载 解决Hash碰撞冲突方法总结

Hash碰撞冲突我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。如下将介绍如何处理冲突,当然其前提是一致性hash。解决冲突开放地址法开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1)...

2018-05-04 23:41:41 924

原创 Java中使用有返回值的线程

在创建多线程程序的时候,我们常实现Runnable接口,Runnable没有返回值,要想获得返回值,Java5提供了一个新的接口Callable,可以获取线程中的返回值,但是获取线程的返回值的时候,需要注意,我们的方法是异步的,获取返回值的时候,线程任务不一定有返回值,所以,需要判断线程是否结束,才能够去取值。测试代码package com.wuwii.test;import ja...

2018-05-04 23:39:49 2234

原创 Java的顺序栈和链式栈

栈的定义栈是限制在表的一段进行插入和删除的运算的线性表,通常能够将插入、删除的一端为栈顶,例外一端称为栈底,当表中没有任何元素的时候称为空栈。通常删除(又称“退栈”)叫做弹出pop操作,每次删除的都是栈顶最新的元素;每次插入(又称“进栈”)称为压入push操作。当栈满的时候,进行push 操作,会上溢,当空栈的时候进行退栈操作的时称为下溢。上溢是一种出错的情况,下溢可能是正常的情况...

2018-05-04 23:39:18 303

原创 初探Java 9 的的模块化

Java 9中最重要的功能,毫无疑问就是模块化(Module),它将自己长期依赖JRE的结构,转变成以Module为基础的组件,当然这在使用Java 9 开发也和以前有着很大的不同。Java8或更加早期的系统的问题Jar文件,像rt.jar等jar文件太大的以至于不能使用在小设备和应用中。因为JDK是太大的,我们的应用或设备不能支持更好的平台.由于修饰符是public的缘故,每个人都...

2018-05-04 23:38:42 376

原创 Java8 新特性Stream 的学习和使用方法

流(Stream)流是java 8 中新引入的特性,用来处理集合中的数据,Stream 是一个来自数据源的元素队列并支持聚合操作。 * Java 中 Stream 不会存储元素。 * 数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。 * 聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, match...

2018-05-04 23:37:57 1651

原创 Java8 新特性Stream 的学习和使用方法

流(Stream)流是java 8 中新引入的特性,用来处理集合中的数据,Stream 是一个来自数据源的元素队列并支持聚合操作。 * Java 中 Stream 不会存储元素。 * 数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。 * 聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, match...

2018-05-02 23:29:31 535 1

原创 fastDFS与Java整合上传下载

由于项目需要整合个文件管理,选择使用的是fastDFS。整合使用还是很方便的。准备下载fastdfs-client-java源码 源码地址 密码:s3sw修改pom.xml 第一个plugins是必需要的,是maven用来编译的插件,第二个是maven打源码包的,可以不要。<build> <plugins> <plugin> <groupId>org.a

2017-09-17 11:31:08 5515 2

Netty 入门与实战:仿写微信 IM 即时通讯系统.zip

netty 入门与实战,初学者必备,非常好的文档,就是要求的字数太多,要 50 字,

2019-12-09

(免费下载)Java并发编程的艺术.pdf

《Java并发编程的艺术》内容涵盖Java并发编程机制的底层实现原理、Java内存模型、Java并发编程基础、Java中的锁、并发容器和框架、原子类、并发工具类、线程池、Executor框架等主题,每个主题都做了深入的讲解,同时通过实例介绍了如何应用这些技术。

2018-05-22

(免费)cordova-3.4.js 下载

Apache Cordova是一个开源的移动开发框架。允许你用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发。 应用在每个平台的具体执行被封装了起来,并依靠符合标准的API绑定去访问每个设备的功能,

2018-05-22

(免费)Git-2.8.1 (WIN 64 位)

Git是目前世界上最先进的分布式版本控制系统,免费的最新 WIndow 版本 Git 2.8.1

2018-05-22

geoserver中WPS源码

geoserver中WPS源码,喜欢的人可以研究

2017-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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