自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

燕少江湖

热爱生活、梦想人生

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

原创 canal本地安装和使用

canal简单安装

2023-11-23 15:07:33 364

原创 MySql表重建-释放存储空间

对mysql比较大的业务表进行删除,这样容易生产比较多的存储碎片,导致存储空间无法充分利用,回收闲置的数据库空间,把分散存储的数据和索引重新挪到一起(defragmentation),对I/O速度有好处。以我司的实际表为例:对历史数据(表:tf_test)删除之后(delete操作),查看tf_test.ibd文件大小是6.2G;也可以用一下SQL查询,但是查询的结果没有直接查看文件大小准确。查看tf_test.ibd文件大小是1.5G,释放了4.7G空间。也可以用这个命令进行重建。

2023-02-22 11:34:32 590 1

原创 kong的安装以及简单配置

kong的安装以及简单使用

2022-11-04 12:54:50 2738

原创 curator之zookeeper分布式锁使用

Apache curator是Apache ZooKeeper(分布式协调服务)的Java/JVM客户端库。它包括一些高级API框架和实用程序,让开发人员使用Apache ZooKeeper更加容易和可靠。它还包括常用用例和扩展的方法,如服务发现和Java 8异步DSL。代码有较详细的注释,核心代码就这三行,curator完全封装好了,我们只需要“傻瓜”式的使用,而且curator fluent风格的api,也非常OK。

2022-10-27 16:17:52 1444

原创 优雅的实现业务数据脱敏

数据在返回给前端之前,遍历数据,对手机号、身份证号、姓名进行脱敏处理,如果有N张报表,我们就需要在N个controller层或者service层去处理,如果脱敏规则改了,就需要改N个controller层或者service层。将脱敏处理规则封装成一个方法,N个controller层或者service层,都使用这个方法,后续改动只改这一个方法,但是这样对controller层或者service层的侵入太强了,不符合高内聚低耦合的设计思想。对于java开发人员,就需要对手机号、身份证号、姓名进行脱敏处理。

2022-09-23 18:29:43 644

原创 https协议类型的接口忽略SSL验证

https协议类型的接口忽略SSL验证

2022-09-16 21:29:01 2054

原创 本地构建、打包elasticjob-console3.1.0+

ElasticJob 的管理控制台构建打包

2022-08-26 17:34:35 296

转载 Mysql SQL语句性能分析

Mysql SQL语句性能分析

2022-08-25 18:41:56 466

原创 jar包指定的JDK版本不一致导致无法编译

jar包指定的JDK版本不一致导致无法编译

2022-08-18 18:03:31 993

原创 postgres常用命令

postgres常用命令

2022-08-17 11:38:18 93

原创 no main manifest attribute, in ./XXX.jar,如何解决?

1、no main manifest attribute, in ./XXX.jar,如何解决?2、springboot三种打包方式

2022-08-12 18:45:25 12987 1

原创 springboot接口如何控制版本?

1、springBoot接口如何控制版本?2、org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping的用途和使用

2022-08-11 13:43:37 1319 2

原创 postgresql-jpa常见异常汇总

postgresql-jpa常见异常汇总

2022-08-05 16:25:26 1307 1

原创 使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true

2022-07-25 17:23:47 4151 2

原创 为什么使用RedisTemplate保存的数据,使用StringRedisTemplate无法获取

为什么使用RedisTemplate保存的数据,使用StringRedisTemplate无法获取

2022-07-22 17:52:41 1235

原创 dubbo3.0.5同一个providerAPI的消费组,不同应用的消费者设置不同的消费者参数,会导致其它消费者服务无法启动

dubbo3.0.5同一个providerAPI的消费组,不同应用的消费者设置不同的消费者参数,会导致其它消费者服务无法启动

2022-07-21 18:02:18 383

原创 切换zookeeper地址,停掉之前的zk,导致elasticjob控制台无法使用

zookeeper无法连接,导致elasticjob控制台无法使用

2022-07-21 10:56:24 887

原创 kafka2.3版本常用命令

kafka2.3版本常用命令

2022-06-24 09:09:36 1910

原创 spring.profiles.active的使用小技巧

spring.profiles.active的使用小技巧

2022-05-06 15:15:47 731

原创 Spring参数解析器的使用-HandlerMethodArgumentResolver

Spring 参数解析器的简单使用-HandlerMethodArgumentResolver

2022-04-29 15:54:05 710

原创 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 1216 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 946 3

原创 ThreadLocal和InheritableThreadLocal学习笔记

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

2020-12-28 16:29:01 210

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

关于线程池几个重要参数的学习笔记(一)之前执行了几次测试案例,发现使用的阻塞队列不同,结果也不同。使用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 1324 6

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

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

2020-12-21 19:20:42 305

原创 数据库(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 1661 1

原创 关于redis事务的疑问

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

2020-11-17 16:49:58 165

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

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

2020-11-16 16:20:14 507

原创 如何保证分布式事务

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

2020-11-05 18:06:22 665

原创 RocketMq顺序消息解决方案

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

2020-05-07 19:24:46 3145 12

原创 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 243

原创 Rockemq-console搭建

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

2020-04-08 15:42:40 340

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

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

2020-04-02 16:52:32 1706

原创 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 1581

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

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

2020-03-05 10:49:50 6918 1

原创 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 199

原创 Leetcode- 最长连续序列

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

2020-02-18 22:20:06 183

原创 Leetcode-合并区间

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

2020-02-18 18:31:10 139

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

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

2019-11-06 15:18:08 2058

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

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

2019-10-13 22:09:31 7749

elasticjob-console-3.1.0

1、elasticjob最新版控制台,当前版本3.1.0; 2、发布任务之后,等待分片的任务也有触发按钮,不需要等待; 3、详细的打包步骤:https://blog.csdn.net/qq_31289187?type=download 4、按照打包步骤,可以自己从github拉取代码到打包成功。

2022-08-29

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

TA关注的人

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