自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

燕少江湖

热爱生活、梦想人生

  • 博客(98)
  • 问答 (1)
  • 收藏
  • 关注

原创 springboot项目使用IDEA远程Debug

项目上线之后,如果日志打印的很模糊或者业务逻辑比较复杂,有时候无法定位具体的错误原因,因此可以通过IDEA远程代理进行Debug。线上的代码一定要和本地的一致!环境:2.1.4.RELEASE(org.springframework.boot) jdk1.8 Apache Maven 3.5.01、先创建一个准备远程调试的Demo,注意构建项目的配置<?xml version="1.0" encoding="UTF-8"?><project xmlns="htt.

2021-01-15 15:05:58 100 1

原创 fastjson序列化的结果出现$ref/$.object

案例:{"xiaoMing":{"courses":{"English":"English","Chinese":"English","Mathematics":"Mathematics"},"studentNo":"0001"},"xiaoHua":{"courses":{"$ref":"$.xiaoMing.courses"},"studentNo":"0002"}}原因:一个对象被重复引用,fastjson默认开启循环引用检查,所以序列化结果会出现($ref. $.),来标注被重复引用的对象。

2021-01-13 18:51:12 28

原创 ThreadLocal和InheritableThreadLocal学习笔记

ThreadLocal为多线程并发问题提供了一种新的解决思路,因为它可以单独给每一个线程提供独立的变量副本,这样每一个线程就可以只修改自己的副本变量,互不影响。场景1: 每一个线程可以保存一个独立副本,线程A的修改,不影响线程B;比如SimpleDateFormat在多并发场景下就不能使用,可以使用ThreadLocal解决这个问题;场景2: 数据库主从分离,比如某一个查询服务,这个过程需要查询多张表,涉及到多个DAO层,我们可以在SERVICE层指定使用主库或者存库,然后整个过程就只使用主库、或者只

2020-12-28 16:29:01 67

原创 线程池是否新增非核心线程执行任务的逻辑

关于线程池几个重要参数的学习笔记(一)之前执行了几次测试案例,发现使用的阻塞队列不同,结果也不同。使用SynchronousQueue时,当任务数大于corePoolSize时,会新增非核心线程执行任务,而使用LinkedBlockingQueue不会新增。为什么?再看一个案例:1、SendMessageTaskpackage cn.com.dl.pool;import java.util.Random;import java.util.concurrent.Callable;im

2020-12-22 15:12:09 92 2

原创 关于线程池几个重要参数的使用案例

没有仔细看过线程池的代码,或者没有实际应用验证过,肯定会对线程池的几个重要参数有一些误解。比如,当corePoolSize < 提交的任务数时 ,会创建新的线程来执行任务(线程池的线程数不会超过maximumPoolSiz),当线程数等于maximumPoolSize,会将多余的任务放在阻塞队列,当阻塞队列满了之后,默认拒绝提交任务。真的是这样的吗?具体看验证1、ThreadPoolDemopackage cn.com.dl.pool;import java.util.ArrayLi

2020-12-21 19:20:42 68

原创 数据库(Mysql)表与表字符集不统一带来的麻烦事儿

1、查看数据库字符集:show variables like '%collation%';2、查看表A、表B的字符集:show full columns from 表名;show table status from 库名 like '表名';表A的字符集是utf8mb4_unicode_ci、表B的字符集是utf8mb4_general_ci3、带来的问题表A和表B关联查询时应该字符集不统一返回失败:[HY000][1267] Illegal mix of collat

2020-12-11 11:23:13 82 1

原创 关于redis事务的疑问

参考文档:redis官方事务文档菜鸟教程1、什么是原子性? 指一个事务的所有操作要么不间断地全部被执行,要么都不执行,即事务不可分割。redis相关的命令单独执行,都是原子性的,如果多个命令一块执行,就不是原子操作了,有可能内存不足或者运行期间出现错误,一部分失败了,redis不会回滚整个操作。2、redis支持事务吗?(准确的说:不支持) redis对事务只是“简单的支持”,可以在执行命令之前,用MULTI命令申明要开启一个事务,然后将多个命令放入事务...

2020-11-17 16:49:58 34

原创 代理模式的基本概念以及代理的实现方式

1、代理模式?通俗的讲代理模式:生活中经常会听到中介、代驾、代练等词,比如卖房子,房主需要张贴信息、带人看房,房主将自己的功能赋予的中介,帮他完成这些事情。其实房主他最终的目的就是签合同收钱,那这样的话,什么张贴信息、宣传、带人看房,中介来就行了,房主只等着签合同收钱就行了。代理模式的定义:一个类代表另一个类的功能,并且为其它对象提供一种代理以控制对这个对象的访问。代理主要作用:保护目标对象; 增强目标对像。2、代理实现方式:静态代理和动态代理静态代理...

2020-11-16 16:20:14 27

原创 如何保证分布式事务

一、概述最近几年,都提倡将复杂的应用系统,按照业务或者功能拆分成多个职能单一的微服务(只处理自己的业务或者功能),各个服务之间通过PRC或者Restful通信,而且微服务开发效率高、部署简单、代码好维护、稳定性高、扩展性强、松耦合、可以使用不同语言开发等优点,但是也存在测试难度提升、管理复杂、调用复杂、分布式事务等劣势。对于事务,之前的单体应用,不需要考虑跨模块回滚事务的问题,但是在分布式系统中,我们需要保证事务最终一致。现有分布式事务的主要实现方式:XA 方案TCC 方案可靠消息最终一致

2020-11-05 18:06:22 49

原创 RocketMq顺序消息解决方案

一、概念顺序消费可以从业务层次分为两种:全局顺序消息、局部顺序消息全局顺序消息:顾名思义,就是产生消息的顺序和消费消息的顺序一致,比如用户订单,大致分为:创建订单、支付、打包待发货、已发货、用户签收,业务上处理订单时必须按照先后次序来生产、消费消息,不能出现,已经消费了支付消息,然后消费创建订单消息 局部顺序消息:只要保证同一个订单(相同订单号)生产和消费的先后次序即可保证全局消息顺序...

2020-05-07 19:24:46 450 7

原创 LeetCode-滑动窗口的最大值

滑动窗口的最大值题目信息关键要知道双端队列(双向队列)的特性解题思路以及代码package com.cn.dl.leetcode.stack;import java.util.Arrays;import java.util.LinkedList;/** * Created by yanshao on 2020-05-06. */public class MaxSlid...

2020-05-06 11:48:04 92

原创 Rockemq-console搭建

为了更好的使用rocketmq功能:比如根据msgId查询消息内容、创建topic、消息重发、发送新消息等,通过rocketmq 控制台可以完美实现这些功能一、下载rocketmq-console源码地址 :https://github.com/apache/rocketmq-externals二、修改配置,需要懒的话,直接在终端工具里面修改,或者导入IDEA进行修改...

2020-04-08 15:42:40 119

原创 Redis设置键的生存时间或者过期时间以及删除过期键的3种策略

1、Redis设置键的生存时间或者过期时间生存时间:指当前键可以在保持多长时间;过期时间:指当前键什么时候过期,具体的时间戳;设置过期时间一般用expire,或者pexpire,主要区别:expire单位是秒,而pexpire单位是毫秒。TTL、PTTL命令,返回当前键距离过期还有多长时间,TTL单位是秒,PTTL单位是毫秒。Redis有四个不同的命令可以用于设置键的生存时间或...

2020-04-02 16:52:32 371

原创 Mybatis-BaseTypeHandler实现Dao层数据加解密

Mybatis官方文档需求:数据库保存的数据需要加密,然后查询的时候解密具体方法:继承BaseTypeHandler,然后重写具体的set、get方法 public abstract void setNonNullParameter(PreparedStatement var1, int var2, T var3, JdbcType var4) throws SQLExcept...

2020-03-10 11:12:02 359

原创 log4j 配置日志级别是INFO,但控制台输出的日志却是DEBUG?

log4j 配置日志级别是INFO,但控制台输出的日志却是DEBUG? 如果确定配置文件日志级别是info,又可能jar包有冲突,看一下依赖的jar中是否有logback,直接去掉或者排除logback相关引用,然后查看控制台打印的日志级别是否正常IDEA查看具体引用的方式第一步:第二步:crtl+F搜索具体jar包...

2020-03-05 10:49:50 2451

原创 Leetcode-最小路径和

64. 最小路径和https://leetcode-cn.com/problems/minimum-path-sum/package com.cn.dl.leetcode;/** * Created by yanshao on 2020-02-22. */public class MinPathSum { /** * 简单的动态规划,算出每一个节点到下一...

2020-02-22 14:47:48 54

原创 Leetcode- 最长连续序列

128. 最长连续序列解题思路:/** * 1、通过PriorityQueue对数组先进行从小到大排序,但是要剔除重复的数组 * 2、 * 2.1: 然后出队,定义临时变量、临时长度、已经最终的最大长度 * 2.2: 如果当前出队的值等于temp+1,则tempLength++,temp=currentValue * 2....

2020-02-18 22:20:06 45

原创 Leetcode-合并区间

56. 合并区间解题思路: /** * 思路: * 1、如果二维数组长度等于0或者1,直接返回当前数组 * 2、 * 2.1、数组size > 1,先按照区间的起始点生序排序 * 2.2、定义临时变量(tempStart、tempEnd)记录前一个数组的开始点和结束点,从第二个数组开始遍历比较 * 2.3、如果t...

2020-02-18 18:31:10 56

原创 springboot全局异常捕捉及处理

全部异常捕捉,省了每个controller里面try-catch,而且有些异常不一定在controller捕捉,而@RestControllerAdvice,就可以实现全局统一异常的捕捉和处理。以请求参数校验为例,为了校验请求参数是否符合指定的类型、格式、大小等,每个controller层都有类似下面这段代码:参数校验不符合规范结果返回这段代码不能抛弃,返回前端的结果必须有...

2019-11-06 15:18:08 759

原创 springBoot自动装配集合(Map、List)以及动态刷新环境配置

springboot2.0从apollo读取配置针对一些需要经常更新的配置,有多种方案:1、将配置记录在数据库,启动项目的时候读取配置,然后缓存在集合中,这种方案很头疼的地方,每次更新配置之后,需要重新启动项目或者预留接口刷新缓存;2、将配置记录在数据库,然后缓存在redis(注意缓存过期时间以及更新配置之后刷新缓存);3、将配置记录在配置中心或者注册中心,比如:Apollo、zo...

2019-10-13 22:09:31 2034

原创 logback+springboot 使用

logback输出的日志,一般会输出到文件中,再通过logstash、filebeat采集日志文本到es,或者通过kafka输出到es,然后通过kibana查看统计日志。日志格式都是json串,格式固定,方便处理,例如:1、pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http...

2019-10-09 17:36:01 145

原创 dubbo服务链路跟踪

目前很多业务使用微服务架构,服务模块划分有这2种方式:服务功能划分 业务划分不管哪种方式,一次接口调用都需要多个服务协同完成,其中一个服务出现问题,都会导致最终失败,虽然有logback + kafka + ELK 这样的神器架构,但是定位问题也很麻烦,如果在整个链路中,可以通过一个唯一ID(traceId)跟踪本次服务调用,就可以在ELK中查找当前traceId来定位问题。一、案例...

2019-09-06 15:59:53 618

原创 maven-archetype多模块骨架创建以及使用

一、背景 最近部门的项目进行多模块拆分,一个maven模块里包含多个maven子模块,为了方便创建多模块,部门年轻的架构师(我很佩服他)用maven-archetype来创建多模块骨架,然后创建多模块就方便多了。二、创建多模块骨架1、首先创建父模块 <groupId>com.cn.dl</groupId> <artifact...

2019-08-06 21:47:53 1153

原创 leetcode系列-1046. 最后一块石头的重量

1、题目链接:https://leetcode-cn.com/problems/last-stone-weight/2、题目描述有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为x 和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎;如果x != y,那么重量为...

2019-08-04 18:56:13 165

原创 leetcode系列-160. 相交链表

1、leetcode相交链表问题描述2、具体代码package com.cn.dl.leetcode;/** * Created by yanshao on 2019-07-30. */public class GetIntersectionNodeDemo { public static void main(String[] args) { } ...

2019-07-31 21:48:32 59

原创 leetcode系列-2. 两数相加

给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...

2019-07-29 13:58:02 52

原创 使用@Validated校验请求参数

1、pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </depende...

2019-07-01 20:20:37 2830

原创 SpringBoot-swagger2 使用

1、引入依赖:<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> ...

2019-05-06 11:07:33 101

原创 elastic-job任务能够正常执行,但是elastic-console显示任务下线

elastic-job任务能够正常执行,但是elastic-console显示任务下线time>>Thu Apr 25 10:21:06 CST 2019 JobA>>>>>>>time>>Thu Apr 25 10:21:09 CST 2019 JobA>>>>>>>ti...

2019-04-25 10:15:13 1960

原创 javaBean校验-Validator、@Valid

参考资料:1、https://www.ibm.com/developerworks/cn/java/j-lo-beanvalid/2、https://blog.csdn.net/neweastsun/article/details/78509977 (这位老哥的博客非常给力)3、Springboot 表单数据校验4、spring-自定义校验注解常见的表单校验触发是下面这种方式...

2019-04-11 20:34:05 421

原创 记一次rocketMQ不能消费的问题

dubbo服务主机:service-01rocketMQ所在主机:common-01rocketMQ-console查到的异常信息:the consumer group[repay_info] not onlineorg.apache.rocketmq.client.exception.MQBrokerException: CODE: 206 DESC: the consumer g...

2019-04-09 09:43:36 4651

原创 SpringBoot2.0-快速集成RocketMQ(三)

参考:https://github.com/apache/rocketmq-spring/blob/master/README_zh_CN.mdRocketMQ 单机搭建以及使用:https://blog.csdn.net/qq_31289187/article/details/883512351、pom.xml<?xml version="1.0" encoding="U...

2019-03-29 15:38:47 4077

原创 SpringBoot-Mybatis:枚举类型自动转换

例如:准备insert的实体类:insert到mySql之后:select返回的实体类:Mybatis可以做到枚举类型的自动转换,但是结果不是我们想要的,比如: STUDENT("01","学生"), CIVIL_SERVANT("02","公务员"), FARMER("03","农民"), PROGRAMMER("04","程序员"...

2019-03-24 16:50:58 2977

原创 Elastic-job,xml配置转换成javaBean,并使用注解动态配置任务

一、传统xml配置:elastic-job、elastic-job-lite-console使用案例:https://blog.csdn.net/qq_31289187/article/details/84843044官网:http://elasticjob.io/docs/elastic-job-lite/00-overview/elastic-job配置参数含义:http://el...

2019-03-14 20:41:32 1460 8

原创 SpringBoot-@Async的使用

1、在SpringApplication上添加@EnableAsyncpackage com.cn.dl;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframe...

2019-03-11 19:35:52 3242

原创 SpringBoot-RocketMQ整合(二)

RocketMQ 基础概念以及作用 :http://rocketmq.apache.org/docs/simple-example/RocketMQ 单机搭建以及使用:https://blog.csdn.net/qq_31289187/article/details/883512351、pom.xml&lt;?xml version="1.0" encoding="UTF-8"?&g...

2019-03-10 18:32:51 356

原创 RocketMQ 单机搭建以及使用(一)

RocketMQ官方文档:http://rocketmq.apache.org/docs/simple-example/RocketMQ4.3监控平台:https://blog.csdn.net/jessDL/article/details/83029771,到原文看看,支持正版!!!1、下载二进制压缩包http://rocketmq.apache.org/dowloading/rel...

2019-03-08 15:57:38 2092 1

原创 SpringBoot2.0 多数据源切换

这几天做了一个需求,根据业务规则,对数据进行水平切分(划分到不同的数据库),我也是菜鸟,刚开始没有头绪,查了很多资料,自己一步步撸代码,总算完成了。下面把自己写的demo整理一下。1、pom.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;project xmlns="http://maven.apache.org/P...

2019-03-01 15:43:34 806

原创 SpringBoot-面向切面编程基础知识(一)

一、什么叫面向切面编程:        通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。二、通知-Advice       通知就是定...

2019-02-25 17:12:28 498

原创 Springboot 表单数据校验、数据转换、利用AOP和SPEL实现分布式锁

个人笔记,不一定正确!!!一、表单数据校验a、用户输入的数据,后端必须校验,校验数据是否为空、格式以及必须遵守的业务规则Spring官方提供的表单校验文档 hibernate-validator Springboot bean上的属性注解b、自定义数据校验器1、定义实体类User,包含name、age、birthday三个属性package com.cn.dl.bean...

2019-02-20 15:18:40 581

空空如也

空空如也

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

TA关注的人 TA的粉丝

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