自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Saytime

自律、自强

  • 博客(70)
  • 收藏
  • 关注

原创 Stream API

Stream API 主要操作:筛选与切片filter(Predicate) 筛选元素,从流中排除不满足Predicate的某些元素limit(n) 截断流,使其元素不超过给定数量skip(n) 跳过前面n个元素,若元素不足n个,则返回空流distinct() 去重,通过流所生成元素的hashCode()与equals(...

2019-02-14 17:34:20 1000 2

原创 线程池ThreadPoolExecutor

主要流程如下,如果看懂了,那么这篇就可以跳过了。图片来源:https://www.cnblogs.com/KingJack/p/9595621.html下面是线程池内容的详情核心内容:ThreadPoolExecutor一般来说使用线程池的方式,可以通过工具类Executors,比如:Executors.newSingleThreadExecutor(); // 单个线程的线...

2019-02-14 17:32:26 745

原创 记一次Dubbo、Log4j2使用Maven打成可执行Jar问题

中间的坑就不多说了试过很多插件,都有问题,只有用shade打包没问题,中间集成log4j2,必须排除一个脚本文件,也是经过各种Google,看源码等等。最终解决方式如下: <plugins> <plugin> <groupId>org.apache.maven.plugins</group...

2019-02-14 17:28:34 995

原创 log4j2 日志脱敏/特殊处理

一、最简单方式如果你对日志进行特殊处理的需求,可以只通过一个正则表达式完成,那么使用原生方式<PatternLayout pattern="%m%n"> <replace regex="正则表达式&q

2019-02-14 16:51:11 17644 2

原创 SpringBoot(十六):SpringBoot整合Mybatis-Plus

Mybatis-Plus 总的来说比Mybatis Generator更加好用,公司自己搭的框架也是用的这个,还算方便。本节版本虽然只用到了基本特性,但可以满足大部分的增删改查。一、环境准备SpringBoot 1.5.10.RELEASEMybatis-Plus 2.1.9Mybatis-Plus 官方地址:http://mp.baomidou.com/po...

2018-06-05 20:53:31 43870 16

原创 SpringBoot(十五):SpringBoot整合Redis

一、环境准备Redis-x64-3.2.100.zipSpringBoot 1.5.10.RELEASERedis-x64-3.2.100.zip 下载地址:https://github.com/MicrosoftArchive/redis/releasespom依赖: <!-- redis --> <dependency&...

2018-06-05 18:26:32 2266

原创 SpringBoot(十四):SpringBoot整合Memcached

一、环境准备memcached 1.4.5SpringBoot 1.5.10.RELEASEjava_memcached-release_2.6.6.jarmemcached 1.4.5 windows 下载地址:http://www.runoob.com/memcached/window-install-memcached.htmldanga memcached java c...

2018-06-05 18:25:55 9919 2

原创 SpringCloud(六):服务网关(Zuul)

一、服务网关官方文档: https://springcloud.cc/spring-cloud-dalston.html#_router_and_filter_zuul路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。Ne...

2018-06-04 17:28:28 6673

原创 SpringCloud(五):断路器(Hystrix)

一、简介http://projects.spring.io/spring-cloud/spring-cloud.html#_circuit_breaker_hystrix_clients Netflix开源了Hystrix组件,实现了断路器模式,SpringCloud对这一组件进行了整合。 在微服务架构中,一个请求需要调用多个服务是非常常见的。hystrix主要是用来防止服务雪崩...

2018-06-04 17:28:04 1232

原创 SpringCloud(四):服务消费(Feign)

一、Feign介绍 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。二、Feign消费者pom.xml ...

2018-06-04 17:27:37 905

原创 SpringCloud(三):服务消费以及负载均衡(RestTemplate+Ribbon)

一、什么是Ribbon Ribbon是Netflix公司开源的一个负载均衡的项目,是一个客户端负载均衡器,运行在客户端上。它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TCP客户端的一些行为。Feign已经默认使用了Ribbon。负载均衡容错多协议(HTTP,TCP,UDP)支持异步和反应模型缓存和批处理二、Eureka服务提供者集群先启动上篇文章中...

2018-06-04 17:27:11 993 1

原创 SpringCloud(二):服务的注册与发现(Eureka)

一、什么是服务注册与发现Spring Cloud Eureka 模块提供的功能是被动式的服务发现。服务注册:每个用户去聊天室服务器上注册。服务发现:这样他的好友们就能看到你,你同时也将获取好友的上线列表.微服务中,服务就相当于聊天室的用户,而服务注册中心就像聊天室服务器一样。目前服务发现的解决方案有Eureka,Consul,Zookeeper等等。SpringCloud默认使...

2018-06-04 17:26:43 1357

原创 SpringCloud(一):了解SpringCloud

一、SpringCloud 简介首先看看SpringCloud官方的介绍。 Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service disco...

2018-06-01 18:17:32 1532

原创 SpringBoot(十三):SpringBoot整合RabbitMQ

如果对RabbitMQ不熟悉的,建议先看RabbitMQ系列教程。一、环境准备RabbitMQ 3.7.4SpringBoot 1.5.10.RELEASE <dependency> <groupId>org.springframework.boot</groupId> ...

2018-06-01 18:14:47 2921 7

原创 RabbitMQ(八):RabbitMQ消息确认机制之confirm串行

一、Confirm模式生产者将信道设置成confirm模式,一旦信道进入confirm模式,所有在该信道上面发布的消息都会被指派一个唯一的ID(从1开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会将消息写入磁盘之后发出,broker回传给生产者的确认消...

2018-06-01 18:12:37 2067 2

原创 RabbitMQ(七):RabbitMQ消息确认机制之事务机制

一、使用RabbitMQ可能存在的问题服务器异常数据丢失问题解决方案:采用持久化数据,即声明队列时设置queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments)durable = true生...

2018-06-01 18:12:13 6704 3

原创 RabbitMQ(六):主题模式

一、主题模式官方内容参考:http://www.rabbitmq.com/tutorials/tutorial-five-java.html 跟路由模式类似,只不过路由模式是指定固定的路由键,而主题模式是可以模糊匹配路由键,类似于SQL中=和like的关系。二、topic交换机这个就不解释了,配置路由键的时候可以配置 *, # 来模糊匹配* (star) ca...

2018-06-01 18:11:27 4723 3

原创 RabbitMQ(五):路由模式

一、路由模式官方内容参考:http://www.rabbitmq.com/tutorials/tutorial-four-java.html 跟订阅模式类似,只不过在订阅模式的基础上加上了类型,订阅模式是分发到所有绑定到交换机的队列,路由模式只分发到绑定在交换机上面指定路由键的队列。二、direct交换机生产者申明一个direct类型交换机,然后发送消息到这个交换机指...

2018-06-01 18:10:43 9454 1

原创 RabbitMQ(四):订阅模式

一、订阅模式官方内容参考:http://www.rabbitmq.com/tutorials/tutorial-three-java.html即一个生产者发送消息给多个消费者,且每个消费者都收到一次,也即是一个消息能够被多个消费者消费。类似于我们订阅同一微信公众号,微信公众号推送图文,我们每个人都能收到一份。二、fanout交换机之前我们直接发送消息到队列,这里指定的交...

2018-06-01 18:03:57 1018

原创 RabbitMQ(三):工作队列

一、工作队列官方文档:http://www.rabbitmq.com/tutorials/tutorial-two-java.html简单队列不足:不支持多个消费者即一个生产者可以对应多个消费者同时消费,相比简单队列支持多消费者。因为实际工作中,生产者服务一般都是很简单的业务逻辑处理之后就发送到队列, 消费者接收到队列的消息之后,进行复杂的业务逻辑处理,所以一般都是多个消费者进行处理。...

2018-06-01 18:03:31 837 1

原创 RabbitMQ(二):简单队列

一、简单队列官方内容参考:http://www.rabbitmq.com/tutorials/tutorial-one-java.html即一个生产者对应一个消费者,一对一的关系,不允许多个消费者消费。二、代码演示连接RabbitMQ工具类package cn.saytime.rabbitmq.util;import com.rabbitmq.client.Co...

2018-06-01 18:02:11 1079 2

原创 RabbitMQ(一):RabbitMQ安装

一、安装RabbitMQ这里为了方便,采用Docker安装,不会Docker的同学,安装windows版本的RabbitMQ吧,因为Linux系统安装因为版本问题,可能会出现各种各样的问题。[root@Basic ~]# docker pull rabbitmq:management二、启动RabbitMQ[root@Basic ~]# docker run -d --...

2018-06-01 18:01:18 940 1

原创 SpringBoot(十二):SpringBoot整合Kafka

一、准备工作 提前说明:如果你运行出问题,请检查Kafka的版本与SpringBoot的版本是否与我文中的一致,本文中的环境已经经过测试。Kafka服务版本为 kafka_2.11-1.1.0 (Scala), 也就是1.1.0SpringBoot版本:1.5.10.RELEASE提前启动zk,kafka,并且创建一个Topic[root@Basic kafka_2....

2018-04-15 16:45:04 38096 10

原创 Kafka(四):Java操作Kafka

一、准备工作 提前说明:如果你运行出问题,请检查Kafka的版本与Maven kafka client的版本是否与我文中的一致。环境:Kafka版本为 kafka_2.11-1.1.0 (Scala), 也就是1.1.0提前创建一个Topic[root@Basic kafka_2.11-1.1.0]# bin/kafka-topics.sh --create --zo...

2018-04-15 16:43:56 4316 2

原创 Kafka(三):Kafka集群

一、相关知识 备份因子最多为集群服务器数量,如果只有一台服务器,那么备份因子只能设置为1,三台kafka集群的话,备份因子可以设置为2或者3,我们来看设置不同参数服务器的表现: 假设我们现有三台Kafka服务器集群,每个节点的broker.id分别为0/1/2,然后创建一个Topic,有三个分区,备份因子为3[root@Basic kafka_2.11-1.1.0]...

2018-04-15 16:43:16 1295 3

原创 Kafka(二):Kafka安装与使用

一、安装Kafka官方快速安装文档:http://kafka.apache.org/quickstart安装kafka下载最新版本kafka[root@Basic apps]# wget http://mirrors.shu.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz[root@Basic apps]# tar -zxvf ...

2018-04-15 16:42:47 1246

原创 Kafka(一):初识Kafka

一、消息队列相关概念JMS ==> JAVA API JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。从使用角度看,JMS和JDB...

2018-04-15 16:40:17 2208 1

原创 Mybatis(八):Mybatis-Spring 整合

官方文档:http://www.mybatis.org/spring/zh/getting-started.html一、依赖 // Spring dependency> groupId>org.mybatisgroupId> artifactId>mybatisartifactId> version>3.4.6versi

2018-01-08 15:51:23 660

原创 Mybatis(七):Mybatis Generator

Mybatis Generator 自动生成代码工具首先,还是一样,学东西看官网:http://www.mybatis.org/generator/index.html不看官网就看我的代码吧。。。一、依赖project> modelVersion>4.0.0modelVersion> groupId>cn.saytimegroupId> artifact

2018-01-08 15:51:01 696

原创 Mybatis(六):动态 SQL

官方介绍:MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种

2018-01-08 15:50:24 687

原创 Mybatis(五):一对多级联查询

主要是使用来实现关联。直接上代码,一看就懂。User.javapackage cn.saytime.domain;import java.util.List;/** * Created by L on 2018/1/3. */public class User { private Long id; private String username;

2018-01-08 15:49:50 2814

原创 Mybatis(四):一对一级联查询

关于级联查询,会涉及到Mybatis的”N+1”问题,之后讲解什么是”N+1”问题以及怎么解决。主要是使用来实现关联。有两种方式来实现关联。嵌套查询:通过执行另外一个 SQL 映射语句来返回预期的复杂类型。嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集。首先,让我们来查看这个元素的属性。你会看到,它和普通的只由 select 和 resultMap 属性的结果映射不同。=

2018-01-08 15:49:02 1107

原创 Mybatis(三):批量操作

批量操作分为批量插入和批量更新主要使用foreach collection="list" item="item" open="(" close=")" separator="," index="index"> #{item.xx}, #{item.xx}/foreach>collection="list" 其中list是固定的,如果是数组就是arrayitem

2018-01-08 15:48:29 20491 2

原创 Mybatis(二):插入操作返回主键

插入数据并返回主键这种需求很常见,所以列出来。一、实现方式1. 使用useGeneratedKeys+keyProperty (推荐)简单来说就是配置:insert id="" useGeneratedKeys="true" keyProperty="id"> 将插入的ID赋值给设置的keyProperty对象属性字段里面,一般也就是对象的ID,比如插入Use

2018-01-08 15:47:49 8980

原创 Mybatis(一):入门

Mybatis应该对于任何用Java的人来说都不陌生,以前对于知识有些没有系统性的整理和学习,所以这里把自己当做小白,再次学习下Mybatis。在此,多说点没用的。学习新东西的最好的途径就是官网,因为以后要学习最新的东西的时候,没有那么多的教学视频和博客给你,甚至需要Google国外的网站。MyBatis官方文档,http://www.mybatis.org/mybatis-3/zh/i

2018-01-08 15:42:07 881

原创 SpringBoot(十一):SpringBoot发送邮件

之前一段时间没有上CSDN发表,自己本地记在有道云的,现在都发出来,希望对你们有帮助。 ··· 发送邮件一、依赖<!-- javax.mail --><dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.0</version></

2018-01-03 17:02:02 17644 18

原创 SpringBoot(十):SpringBoot使用FastJson

阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征: 速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson; 功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Andr

2018-01-03 16:59:06 3927

原创 SpringBoot(九):SpringBoot使用Druid数据源

Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池)一、依赖为了测试,使用jdbcTemplate<!-- jdbcTemplate --><dependency> <groupId>org.springfra

2018-01-03 16:58:07 45448 11

原创 SpringBoot(八):SpringBoot整合Log4j

SpringBoot默认使用日志框架logback一、依赖 <!-- spring boot start --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusion

2018-01-03 16:50:52 12604

原创 SpringBoot(七):SpringBoot整合Swagger2

相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档。手写Api文档的几个痛点:文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。接口返回结果不明确不能直接在线测试接口,通常需要使用工具,比如postman接口文档太多,不好管理Swagg

2017-07-10 23:01:42 71113 33

空空如也

空空如也

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

TA关注的人

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