自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

牛奋lch

先要学会做一个好人,才能成为一个有用的人……

  • 博客(139)
  • 资源 (8)
  • 收藏
  • 关注

原创 使用Lombok简化java代码的编写

Lombok介绍        我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法,而且这些方法对业务逻辑,基本上不会有任何的作用。Lombok就是用来简化java的代码开发而生的,通过集成到ID

2017-05-12 22:07:40 1833

原创 使用数据库模拟状态机实现乐观锁

最近遇到了一个问题,有一个定时任务:例如定时从数据库中查询所有的待执行的任务,然后执行。为了提高整个程序的效率,我们使用了线程池,但是在实际的测试中,却发现了一个问题,如果线程池的线程数为5,那么这个定时任务就会被执行5次,也就是说,本来只希望只执行一次的,但是却重复执行了。那么怎么保证线程池中只有一个线程执行这个定时任务了,当然解决的方案有很多,例如使用Redis或zookeeper加全局锁等,

2017-05-09 15:03:05 2745

原创 spring boot-jpa整合QueryDSL来简化复杂操作

前言使用过spring data jpa的同学,都很清楚,对于复杂的sql查询,处理起来还是比较复杂的,而本文中的QueryDSL就是用来简化JPA操作的。Querydsl定义了一种常用的静态类型语法,用于在持久域模型数据之上进行查询。JDO和JPA是Querydsl的主要集成技术。 本文旨在介绍如何使用Querydsl与JPA组合使用。JPA的Querydsl是JPQL和Criter

2017-04-19 20:39:29 51909 11

原创 Caused by: java.net.URISyntaxException: Illegal character异常解决方法

1、异常如下:Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 59: http://so.csdn.net/so/search/s.do?p=1&ref=toolbar&q=xxx xxx&ref=toolbar at java.net.URI.create(Unknown

2017-04-13 19:25:20 26982 3

原创 spring boot-使用redis的Keyspace Notifications实现定时任务队列

前言:最近项目中有一个需求:需要将执行失败的指令存起来,隔5分钟之后,再取出来执行一次,看到这个需求描述,我第一时间想到了Redis的Keyspace Notifications机制。当然也可以使用jdk自带的DelayQueue来实现,或者更进一步,使用ScheduledThreadPoolExecutor池来实现。由于系统是分布式的,所以考虑使用Redis来实现。关于Redis的Key

2017-04-12 21:05:23 14787 3

原创 spring boot加载第三方jar包的配置文件

前言今天收到一封邮件,大概内容如下:spring boot鼓励去配置化,那么怎么将第三方jar包中的xml去配置化了?其实,这个问题,在前面的博客中也有提到,http://blog.csdn.net/liuchuanhong1/article/details/60873295下面,我们就以Quartz定时任务为例,单独对这个问题来进行说明,如何实现去配置化。如果不使用sprin

2017-04-11 19:42:47 12486

原创 spring data jpa使用limit时,抛QuerySyntaxException unexpected token: limit

异常重现:jpql语句如下:select g from Entity g where g.codeUrl = :codeUrl ORDER BY g.createTime DESC limit 1异常原因:limit是特定于某些数据库(例如:mysql),但HQL是针对所有hibernate支持的数据库,也就是说,Mysql的限制返回记录数是limit,也许其他的数据库则不是limit

2017-04-10 16:51:24 10970

原创 spring boot封装HttpClient

最近使用到了HttpClient,看了一下官方文档:HttpClient implementations are expected to be thread safe. It is recommended that the same instance of this class is reused for multiple request executions,翻译过来的意思就是:HttpClie

2017-03-29 23:17:35 31620 6

原创 spring boot-Logging的配置以及使用

前言:该篇文章基本上是翻译的官方文档!spring boot使用Commons Logging作为内部的日志系统,并且给Java Util Logging,Log4J2以及Logback都提供了默认的配置。如果使用了spring boot的Starters,那么默认会使用Logback用于记录日志。一、Log formatspring boot中默认的日志输出格式如下:20

2017-03-29 20:03:23 18317 2

原创 spring boot-执行Async任务时,使用自定义的线程池

在前面的博客中,http://blog.csdn.net/liuchuanhong1/article/details/54605697 我们使用了spring boot的异步操作,当时,我们使用的是默认的线程池,但是,如果我们想根据项目来定制自己的线程池了,下面就来说说,如何定制线程池!一、增加配置属性类package com.chhliu.springboot.async.con...

2017-03-20 20:16:01 34890 6

原创 spring boot-分布式定时任务中,异步执行时JMS无法重新投递消息

这篇博客是紧接着上篇博客来说的http://blog.csdn.net/liuchuanhong1/article/details/64126346在上篇博客中,我们基本上实现了分布式的定时任务架构的搭建,但是,当我们异步消费消息中间件中的消息的时候,如果执行的过程中抛了异常,那么,我们无法做到消息重试,示例如下:@Component // 必须加此注解,该类才会被作为Message

2017-03-20 19:56:03 17303 5

原创 分布式定时任务解决方案-spring boot整合JMS以及Redis实现

最近需要设计一个分布式的定时任务的方案,从理论上来说,Quartz已经提供了一套完善的分布式定时任务的解决方案,但是由于系统目前已有JMS集群和Redis Sentinel集群,如果想要在目前已有的架构上,实现了一个简单的分布式定时任务的话,如何来做了?总体架构设计图如下:redis集群:提供分布式的缓存,以及实现简单的分布式锁http://blog.csdn.net/liuchuanho...

2017-03-20 18:29:12 10469

原创 spring cloud-前端跨域问题的解决方案

当我们需要将spring boot以restful接口的方式对外提供服务的时候,如果此时架构是前后端分离的,那么就会涉及到跨域的问题,那怎么来解决跨域的问题了,一般是在spring boot的主类中,增加一个CorsFilter@Beanpublic CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource so

2017-03-15 21:22:50 26449 10

原创 spring cloud-zuul的Filter详解

在前面我们使用zuul搭建了网关http://blog.csdn.net/liuchuanhong1/article/details/59056278关于网关的作用,这里就不再次赘述了,我们今天的重点是zuul的Filter。通过Filter,我们可以实现安全控制的,比如,只有请求参数中有用户名和密码的客户端才能访问服务端的资源。那么如果来实现Filter了?要想实现Filter,需要

2017-03-15 21:05:42 72386 35

转载 JPA criteria 查询:类型安全与面向对象

原文链接地址:https://my.oschina.net/zhaoqian/blog/133500#OSC_h1_2序言自工作以来,除了以前比较流量的hibernate,就是一直使用ORM 规范 JPA了.而这几天工作需要,研究了下JPA的标准查询,名为:JPA criteria查询.相比JPQL,其优势是类型安全,更加的面向对象.使用标准查询,开发人员可在编

2017-03-14 10:40:48 1253

原创 spring data jpa中的DTO查询

昨天收到一封邮件,问了我一个问题,问题如下:SELECT COUNT(user.id),user_name FROM USER where user_name like "%?%" GROUP BY user_name,id类似这种的sql用spring data jpa怎么写?下面就这个问题一起来探讨下,怎么解决?1、新建Entitypackage com.chhliu.spri

2017-03-10 17:41:06 9598 3

原创 springboot整合Quartz实现动态配置定时任务

前言在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能。一、新建一个springboot工程,并添加依赖 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 run

2017-03-09 09:12:20 114420 141

原创 spring cloud config分布式配置中心的高可用

在前面的博客中,我们实现了配置文件统一管理的功能,但是我们可以发现,我们仅仅只用了一个server,如果当这个server挂掉的话,整个配置中心就会不可用,下面,我们就来解决配置中心的高可用问题。下面我们通过整合Eureka来实现配置中心的高可用,因为作为架构内的配置管理,本身其实也是可以看作架构中的一个微服务,我们可以把config server也注册为服务,这样所有客户端就能以服务的方式进

2017-03-06 09:13:59 11180 3

原创 spring cloud config整合gitlab搭建分布式的配置中心

在前面的博客中,我们都是将配置文件放在各自的服务中,但是这样做有一个缺点,一旦配置修改了,那么我们就必须停机,然后修改配置文件后再进行上线,服务少的话,这样做还无可厚非,但是如果是成百上千的服务了,这个时候,就需要用到分布式的配置管理了。而spring cloud config正是用来解决这个问题而生的。下面就结合gitlab来实现分布式配置中心的搭建。spring cloud config配置中

2017-03-03 17:47:43 14618 1

翻译 Jersey Client基于Https的Basic Authorization

当我们使用Jersey客户端进行Https请求的时候,需要一些Basic的认证,例如我们在请求Github开放平台的时候,只有在请求头中带用户名和密码的基本认证,才会返回结果,那么Jersey客户端如何进行Basic的认证了?(Jersey的代理问题一直没有解决,如果有知道的大牛,还请告知,Thanks!)方式一:基本认证HttpAuthenticationFeature featur

2017-03-02 22:59:00 3193

原创 spring boot启动报Unable to start EmbeddedWebApplicationContext问题解决方案

异常全文如下:org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start Embed

2017-03-02 16:17:27 49635 2

转载 Spring事务管理(详解+实例)

原文链接地址:http://www.mamicode.com/info-detail-1248286.html标签:写这篇博客之前我首先读了《Spring in action》,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下:Spring事务机制详解Spring事务配置的五种方式Spring中

2017-03-02 14:20:57 700

原创 spring cloud-构建微服务架构的网关(API GateWay)

前言在我们前面的博客中讲到,当服务A需要调用服务B的时候,只需要从Eureka中获取B服务的注册实例,然后使用Feign来调用B的服务,使用Ribbon来实现负载均衡,但是,当我们同时向客户端暴漏多个服务的时候,客户端怎么调用我们暴漏的服务了,如果我们还想加入安全认证,权限控制,过滤器以及动态路由等特性了,那么就需要使用Zuul来实现API GateWay了,下面,我们先来看下Zuul怎么使用

2017-03-01 12:20:17 32766 1

原创 spring cloud-Swagger2整合Eureka,实现Eureka页面自动跳转到Swagger2UI界面查看服务接口信息

一、Eureka Server回顾在前面的博客中,细心的读者可能已经发现,当我们点击某个注册到Eureka Server上的某个服务的时候,链接的界面要么报404,要么就是空的,如下图所示:现在问题,我们已经知道了,怎么来解决了?解决思路就是整个Eureka和Swagger2,当点击链接的时候,直接跳转到Swagger2的UI界面,怎么做了?接着往下看。二、在服务配置中添加配置

2017-03-01 12:19:35 16379 2

原创 spring cloud-整合Swagger2构建RESTful服务的APIs

前言在前面的博客中,我们将服务注册到了Eureka上,可以从Eureka的UI界面中,看到有哪些服务已经注册到了Eureka Server上,但是,如果我们想查看当前服务提供了哪些RESTful接口方法的话,就无从获取了,传统的方法是梳理一篇服务的接口文档来供开发人员之间来进行交流,这种情况下,很多时候,会造成文档和代码的不一致性,比如说代码改了,但是接口文档没有改等问题,而Swagger2则

2017-03-01 08:59:14 13251 6

原创 spring boot-aop的使用

一、添加aop starter依赖<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.

2017-02-14 22:32:02 7130

原创 springboot构建自己的starter

前言下面我们来通过示例来构建自己的starter pom并完成自动配置,以此来更深入的理解spring boot的工作原理。需求该starter提供PersonService,并实现自动配置PersonService一、新建一个Maven工程工程pom依赖如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns

2017-02-13 22:24:33 11360 3

原创 spring boot集成druid数据库连接池,实现对数据库的监控

一、加入druid依赖 com.alibaba druid 1.0.27 二、在application.properties配置文件中加入druid配置# 初始化大小,最小,最大spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20#

2017-02-13 20:34:07 9498 1

原创 spring boot整合redis实现缓存机制

一、引入redis和jpaapplication.properties配置如下:############################################################################################jpa的配置########################################################

2017-02-13 20:33:08 6394

转载 注释驱动的 Spring cache 缓存介绍

概述Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。Spring 的缓存技术还具备相当的灵活性,不仅能够使用 SpEL(Spring Exp

2017-02-13 14:56:12 600

原创 spring cloud-Feign的Hystrix支持

一、Feign client中加入Hystrix的fallback@FeignClient(name="springboot-h2", fallback=HystrixClientFallback.class) //在fallback属性中指定断路器的fallbackpublic interface UserFeignClient {// @GetMapping("/user/{id}")

2017-02-12 21:41:28 9744 10

原创 jpa中PropertyReferenceException: No property found for type异常原因

最近在使用spring data jpa的过程由于粗心的原因中遇到了一个异常,异常如下:Caused by: org.springframework.data.mapping.PropertyReferenceException: No property saveUrl found for type SonarUrl! at org.springframework.data.mapping.

2017-02-10 17:16:35 25115

原创 spring cloud-添加Hystrix Dashboard监控到系统中

前言该示例是在spring cloud-使用Hystrix实现单个方法的fallback示例的基础上改进一、添加依赖 org.springframework.cloud spring-cloud-starter-hystrix-dashboard 二、在启动类中添加Hystrix Dashboard支持@EnableHystrix@EnableHy

2017-02-07 22:39:11 15632 7

原创 spring cloud-使用Hystrix实现单个方法的fallback

一、加入Hystrix依赖 org.springframework.cloud spring-cloud-starter-hystrix 二、编写Controllerpackage com.chhliu.springboot.restful.controller;import org.springframework.beans.factory.annotation.Au

2017-02-07 22:23:34 13230 1

原创 spring cloud-实现Eureka注册中心的HA

前言:在前面的例子中,我们的Eureka Server都是单节点的,一旦该节点在生产中挂掉,就无法再提供服务的注册,为了保证注册中心的高可用,在生产中一般采用多节点的服务注册中心。一、在hosts文件中加入如下配置127.0.0.1 peer1127.0.0.1 peer2二、修改application.yml配置文件---spring:  profiles: peer1

2017-02-06 18:07:00 17429 9

转载 Hystrix 使用与分析

由于该博客并没有注明转载出处,此处也无法标志!!!一:为什么需要Hystrix?在大中型分布式系统中,通常系统很多依赖(HTTP,hession,Netty,Dubbo等),如下图: 在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时不可用,服务脱机等.如下图:QPS为50的依赖 I

2017-01-26 16:51:11 1028

原创 spring cloud-给Eureka Server加上安全的用户认证

前言在前面的一篇文章中spring cloud中启动Eureka Server我们启动了Eureka Server,然后在浏览器中输入http://localhost:8761/后,直接回车,就进入了spring cloud的服务治理页面,这么做在生产环境是极不安全的,下面,我们就给Eureka Server加上安全的用户认证.一、添加spring-security支持 or

2017-01-25 14:29:08 23716 15

原创 spring cloud-Feign使用中遇到的问题总结

问题一:在前面的示例中,我们讲过@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)@GetMapping("/user/{id}")这两个注解的效果是等价的,但是在Feign使用中,只能用上面的那种方式,不能直接用@GetMapping,下面我们将前面的那个示例中,改成@GetMapping注解看下效果,我们

2017-01-25 11:25:01 62579 4

原创 spring cloud-使用feign来消费Restful服务同时加入Ribbon来实现负载均衡

前言在前面的示例中,我们消费spring boot提供的Restful服务的时候,使用的是RestTemplate来实现的,实现起来还是比较复杂的,尤其是在消费复杂的Restful服务的时候,还需要进行一系列的转换,编解码等,使用Feign就完全不用考虑这个问题了。一、Feign简介Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可

2017-01-25 09:57:28 17135 9

原创 spring boot中多环境配置支持

一、说明    在我们的日常开发中,生产环境的配置和测试环境的配置以及开发环境的配置基本上都是不相同的,每次到部署环境的时候,就需要手动的切换配置文件,如果在切换的过程中一不小心的话,就会出错,所以在开发中,一般会搞个配置文件检查的功能,来避免出错,而spring boot则充分考虑了这种情况,为开发人员提供了天然的多环境配置支持。二、增加properties配置文件1、applica

2017-01-23 17:10:40 4102

httpinvoker入门

介绍了httpinvoker的简单使用方法,里面包含一个普通的方法,和一个实体类

2013-06-13

jdk webservice部署

使用java自带的jdk,实现webservice的服务发布,可以运行,里面描述了我操作的所有步骤

2013-06-13

junit4,单元测试

使用junit4进行单元测试,能满足日常的开发需求

2013-06-13

操作系统复习资料,给需要提高的同学

挺贴合实际的,能给需要考试的同学提供必要的参考,是难的的好资料,该资料包括了好几章,这是第一章

2010-12-14

银行家算法用c的实现算法

该实验报告比较实用,用C语言写成,能够模拟死锁的解决机制,更加进一步的了解死锁的产生

2010-11-17

网络工程师之数据链路层

介绍了ISO协议的数据链路层的结构,功能,及其实现的协议

2010-09-16

网络基础教程之物理层

较详细的介绍了ISO系统中的最底层,包括了物理层的基本概念,实现的功能

2010-09-16

网络工程师学习笔记(全)

该笔记很好的结合了网络工程师的各类考点!

2010-09-03

空空如也

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

TA关注的人

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