自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 资源 (11)
  • 收藏
  • 关注

原创 用plantuml画时序图

Thread线程的状态有哪些,我们用plantuml来画一下时序图。

2023-05-08 10:46:31 313 1

原创 Elastic-job架构图(plantuml生成)

使用plant uml绘制elastic job架构图。

2023-04-17 14:38:24 369

原创 通过windows命令行dos连接mysql数据库服务器命令

dos连接mysql数据库命令

2023-01-15 14:04:06 1005

原创 java日期格式化为json字符串,看这个就够了

java日期格式化为json字符串,看这个就够了。不管是入参还是返参,原理都是一样的。/** * json格式化注解 * 1,pattern是转化成json的格式, * 如果是入参,则把pattern格式的字符串转换成时间对象payTime。 * 如果是返参,则把时间对象payTime转换成pattern格式的字符串。 * * 2,只能处理pattern格式的字符串/只能转化成pattern格式的字符串 * "payTime...

2022-07-26 19:59:05 2218

原创 秒杀系统设计要点总结

秒杀系统设计要点1,前端静态资源缓存,提高页面响应速度,减轻服务器压力。2,微服务独立部署,加入秒杀系统崩溃,避免对其他服务造成影响。3,限流,防止系统崩溃。4,限制用户访问频率。5,把秒杀商品做成令牌,提前预热存放在redis中,秒杀的实质就是竞争redis中的令牌。6,异步生成订单(独立的订单微服务)。7,异步扣减库存(独立的库存微服务)。...

2022-07-01 13:39:59 672

原创 xxl-job实战分享

1,xxl-job如何保证同一时刻,一个分片只被一个节点调度?2,xxl-job-admin启动成功日志Connected to the target VM, address: '127.0.0.1:63157', transport: 'socket' . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ ...

2021-04-02 19:44:20 1375

原创 如果前端可以拉起2个支付页面,后端如何避免重复支付

场景:1,前端可以拉取2个支付页面,这里的支付页面,指的就是支付宝或者微信等第三方渠道的输入密码进行支付的页面。2,后端预支付接口、支付回调接口、退款接口如何设计,才能保证支付的幂等性呢?...

2021-03-23 11:13:06 825

原创 HashMap扩容测试(基于java8进行测试)

结论:初始容量为16的HashMap,当向这个集合中添加第13个键值对时,会触发扩容,扩容后的容量为32package com.cr949.auto.docs.utils;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;/** * @author cr949 * @description HashMap扩容测试 */public class HashMapCapacit.

2021-02-20 16:50:06 505 1

原创 SpringCloudZuul责任链模式实现原理知识点梳理

SpringCloudZuul责任链模式实现原理知识点梳理更多内容,可以参考之前的博文:https://blog.csdn.net/reggergdsg/article/details/99951666

2021-02-20 15:32:04 289

原创 对象深拷贝实践之Zuul对象深拷贝

源码来自zuul-core-1.1.0.jarpackage com.netflix.zuul.util;import java.io.*;/** * Deep copy of an Object. The Object must be Serializable * @author Mikey Cohen * Date: 1/31/12 * Time: 11:54 AM */public class DeepCopy { /** * Returns ...

2021-02-20 15:06:54 124

原创 log4j如何打印日志到控制台【sql语句调试】

mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl如果使用的数据库连接池是Druid,控制台打印sql如下:Creating a new SqlSessionSqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7d4826ce] was not registered for synchr...

2021-01-26 13:41:10 997

原创 AES加密工具类AesUtils整理

package com.cr949.auto.docs.utils;import lombok.extern.slf4j.Slf4j;import org.springframework.util.Base64Utils;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import.

2021-01-21 09:43:00 2694

原创 RabbitMQ如何查看某个队列的所有消费者【问题排查】

版本:spring-rabbit-1.6.10.RELEASEspring-boot-autoconfigure-1.3.7.RELEASE使用RabbitMQ时,遇到了一个问题,发送消息以后,发现存在多个消费者,并且这个消费者并不是我写的Listener。为了找到这个消费者的IP和端口,我需要查看当前这个队列有哪些消费者。直接访问RabbitMQ管理界面http://localhost:15672,发现一个问题,就是有的消费者并不会显示到这里,并且很多情况下,消费者列表都是空.

2020-12-10 15:22:07 12894

原创 SpringBoot Actuator端点的实现原理【概括整理】

SpringBoot Actuator端点的实现原理【概括整理】版本:spring-boot-actuator-2.2.6.RELEASE概括起来,SpringBoot Actuator的实现原理如下1,Endpoint Bean@Endpoint标注的class是一个bean,是SpringBoot Actuator功能的具体的实现。 比如/actuator/beans端点对应的实现类是BeansEndpoint.class2,注入Endpoint Bean到...

2020-12-03 15:47:39 2487 4

原创 如何把项目打jar包,然后暴露接口给第三方应用提供服务【实战讲解】

如何把项目打jar包,然后暴露接口给第三方应用提供服务【实战讲解】下面这个例子,是我在开源项目CR949中使用到的部分代码,作为讲解,发布到这里。jar包中的controller,如何对外暴露接口。这样一个场景:比如,我去gitee上面,下载一个项目,打成jar包。现在呢,我想把这个jar中的一个接口暴露出来,这样我本地项目启动以后,我就可以直接访问这个接口了。例如我们的项目启动时,可以从控制台日志看到swagger2的/v2/api-docs接口注入到HandlerMapping的过...

2020-12-02 13:53:16 6844 2

原创 Swagger2的/v2/api-docs接口是如何对第三方项目暴露的【实现原理】

Swagger2的/v2/api-docs接口是如何对第三方项目暴露的呢?也就是说jar包中如何暴露接口给第三方应用?答案是:HandlerMappingswagger2实现了自己的HandlerMapping,在实现类PropertySourcedRequestMappingHandlerMapping中,把/v2/api-docs接口保存到了handlerMethods集合。然后提供了访问/v2/api-docs接口的方法lookupHandlerMethod(String urlPath,

2020-12-02 13:17:49 12337

原创 Spring boot注入RestTemplate实例的2种方式

RestTemplate是我们使用的比较多的模板,用来发送http请求。大多数情况下,需要我们自己注入到Spring IOC容器。对于低版本的spring boot,比如spring boot 1.3.7,是不支持RestTemplateBuilder创建RestTemplate实例的。怎么办呢,如下:@Beanpublic RestTemplate restTemplate() { return new RestTemplate();}如果是spring boo...

2020-12-02 09:46:39 4602

原创 spring boot 1.3.7版本和spring boot 2.2.6版本获取端口的2种方式

spring boot 1.3.7版本,直接从environment中获取端口,这种情况下,不管是否修改默认端口,都可以获取到。package com.cr949.auto.docs.config;import com.cr949.auto.docs.constants.Constants;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;...

2020-12-01 15:05:53 351

原创 如何从jdbc中获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等)

* 如何从jdbc中获取数据库建表语句信息(表字段名称/表字段类型/表字段注释信息/表字段长度等等)* 1,表字段名称* 2,表字段类型* 3,表字段注释信息这里介绍3种方式,如下:第一种方式:执行sql语句获取 select * from user_pop_info where 1 = 2第二种方式:执行sql语句获取 show create table user_pop_info第二种方式:直接从jdbc数据库连接Connection实例中获取三种方式获取的数据有一些区...

2020-11-04 11:31:23 3938 2

原创 AOP切面获取参数的一个小技巧

一般来说,我们的参数,都是通过json传递的,那么这个问题就转化成了,从json中获取指定字符串的问题。OK,这个问题就简单了。如下:public static void main(String[] args) { JSONObject jsonObject = JSON.parseObject("{\"timeStamp\":21602756894612,\"status\":0,\"results\":{\"userName\":\"yang20102\",\"userLevel.

2020-10-30 11:47:12 1689

原创 spring boot单元测试

import com.alibaba.fastjson.JSON;import lombok.extern.slf4j.Slf4j;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.Spring.

2020-10-28 17:09:29 242 1

原创 java基础:如何获取Unsafe类的实例

Unsafe类是一个final类,位于rt.jar包下,是sun公司提供的一个工具类。这个类提供了执行native方法的能力,首先,官网不推荐我们直接使用Unsafe,原因如它的名字一样,不安全。为什么不安全呢,因为native方法直接调用操作系统的指令来执行,效率很高,但是不受jvm控制,因此容易出问题。当然,如果你艺高人胆大,建议剑走偏锋!但是我们在源码中,经常能看到Unsafe的身影,那么,如何获取Unsafe实例呢?可以借鉴caffeine的做法。源码如下:publ..

2020-09-25 15:06:54 828

原创 Spring Cloud微服务开发如何在本地进行微服务间的调用

Spring Cloud微服务开发如何在本地进行微服务间的调用实际开发中,我们一般是把微服务之间的调用放到开发环境进行联调,微服务内部的代码,通过swagger接口进行测试。那么,如果我想在本地进行微服务之间的调用,该如何实现呢?思路:1,配置中心使用开发环境的配置,这样保证服务能正常启动。2,eureka使用本地localhost:8xxx/eureka,本地启动的微服务,都注册到这个地址上。spring: profiles: dev cloud: confi.

2020-09-06 16:31:29 3856

原创 阿里Fastjson:搞定json字符串转对象首字母大写的问题/格式化日期显示时间戳的问题

世界之大,无奇不有。虽然java规范明确规定字段名称首字母必须小写。但是实际开发中,总能遇到接口方强行定义成大写的情况。怎么解决呢?使用阿里fastjson即可。

2020-09-06 15:11:28 2425 7

原创 Eureka集群数据同步的设计思路梳理

Eureka集群数据同步包含两层含义:第一层含义:Eureka Client只会向一个Eureka Server注册服务。一个Eureka Client只会向一个Eureka Server注册服务,如果失败,会向其他Eureka Server进行重试,并且Eureka Client发起的注册请求是单条操作,不可能批量操作,具体实现在RetryableEurekaHttpClient.class中。第二层含义:Eureka Server集群之间,通过复制进行数据同步。Eure...

2020-08-25 18:30:04 1637

原创 Eureka源码中isReplication的业务含义是什么

官方注释是这样的:true if this is a replication event from other replica nodes, false otherwise.isReplication = true 代表这个请求是同步请求,指的是Eureka Server集群之间的数据同步。isReplication = false 代表这个请求是注册请求,指的是Eureka Client发起的服务注册请求。EurekaHttpClient.class代表的是Eureka Cli..

2020-08-25 18:19:44 693

原创 Eureka Server集群数据同步源码解析(上)Eureka Client发起数据同步请求

首先搞清楚一个问题:Eureka Server集群数据同步与Eureka Server集群数据备份,是同一个概念吗?很显然,不是一个概念。Eureka Server集群数据同步处理的是Eureka Client发起的数据同步请求。Eureka Server集群数据备份处理的是Eureka Server发起的数据备份请求。Eureka服务的启动类是EurekaBootStrap,这个类在eureka-core-1.4.6-source.jar包下。总体来说,Eureka Server集群数据...

2020-08-25 11:18:52 686

原创 原型模式使用手册,如何正确使用原型模式

原型模式属于创建型设计模式,可以重复的创建对象,并且保证效率。什么意思呢?也就是说,当我们大批量创建对象时,使用原型模式,会更高效。这里隐含1层含义:1,当数据量达到一定规模是,原型模式创建对象的效率高于new对象。真的吗,我们来试试。首先创建2个bean,一个是普通的javabean,一个是实现了Cloneable接口的javabeanpackage com.yangcq.learning.hantang.learning;import lombok.Data;...

2020-08-18 15:16:11 450

原创 使用阿里easyexcel 2.1.6版本遇到问题:NoSuchMethodError org.terracotta.statistics.StatisticsManager.tags

关键报错信息如下:2020-07-06 19:02:32,461 [SimpleAsyncTaskExecutor-2] ERROR cn.xxxxxxx.aaaaaaa.bbbbbbb.service.impl.XxxxxxxxxServiceImpl - [162 - d5db7678adcd8a35 - 9dcc97632c8bee3a] - error com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoSuc.

2020-08-04 17:24:44 4099

原创 spring cloud+mybatis+阿里Druid:如何开启配置multiStatementAllow支持一次执行多条sql

关于如何开启multiStatementAllow,一次执行多条sql,这里结合项目,来说明一下。首先搞清楚,multiStatementAllow配置在哪,其实就是阿里Druid框架中WallConfig.class中的一个属性。源码如下:package com.alibaba.druid.wall;import com.alibaba.druid.util.Utils;import com.alibaba.druid.wall.spi.WallVisitorUtils;...

2020-07-24 19:13:07 8014 2

原创 理论与实践:幂等性的常见实现方案有哪些

1,全局唯一ID2,去重表3,多版本控制4,状态机控制5,数据库唯一索引

2020-07-21 11:32:55 232

原创 MQ和ELK,增加了日常排查问题的复杂度

最近遇到一个问题,排查了很久,才解决。这里分享一下思路,遇到问题的思路更重要,有时候,就是看你有没有思路。就怕没有了思路,那样就病急乱投医了。问题描述:

2020-07-13 12:40:38 522

原创 java8 并行流 parallelStream,在8核的机器上,启动了几个线程

java8 并行流 parallelStream,其实就是java集合接口Collection新增的一个方法。default Stream<E> parallelStream() { return StreamSupport.stream(this.spliterator(), true);}parallelStream的存在,使得处理集合多了一种选择。parallelStream的底层实现,并没有多么高大上的技术,而是我们熟知的多线程框架ForkJoin。..

2020-07-13 12:24:24 2798

原创 开发常用小工具类:list集合去重

在平时的项目维护中,我们经常会操作大批量的数据。比如,我需要把某个excel中所有的手机号复制出来,然后去重。对于这样的需求,通过今天分享的这个小工具类,可以轻松搞定。mark一下吧!package com.yangcq.learning.hantang.utils;import lombok.extern.slf4j.Slf4j;import java.util.*;/** * List去重 */@Slf4jpublic class DuplicateRemov.

2020-06-02 15:15:40 496

原创 Spring Cloud环境下多数据源的配置要点(实战)

最近在搭建Spring Cloud新项目,遇到了这个问题,记录一下,以飨读者。关于怎么配置多数据源,这里不再赘述,简单来说,就是配置多个bean,每个bean对应一个数据源。有不懂的读者,可以参考我之前的一篇博客,或者在网上搜素,都可以。如何配置多数据源这篇博客比较老了,用的是xml配置文件。但是万变不离其宗,本质上是一样的,就是注入多个bean到Spring的IOC容器中。在Spring Cloud环境下,我们配置了2个数据源以后,启动项目会报错。报错日志如...

2020-05-25 13:37:35 1356

原创 Slf4j + logback 打印日志的最佳实践

我们抛开业务逻辑,仅仅从日志的角度来考虑日志问题。集合最近对项目的日志优化,总结以下几点最佳实践。Slf4j + logback 打印日志的最佳实践1,日志级别使用不当2,谨慎使用e.printStackTrace()3,使用占位符,而不是字符串拼接4,尽量打印更少的日志5,尽量不要在for循环中log日志下面结合代码,来具体讲解。...

2020-04-03 17:49:44 1636

原创 自己动手,使用Spring Initializr从零开始搭建Spring Cloud项目

新建Project打开IDEA开发工具,File -> New -> Project然后一步步往下设置,然后到这一步,选择Spring CloudOK,继续一路往下,点finish,Spring Cloud项目创建完成。设置编译器版本,选择jdk版本等这里我使用的是JDK 1.8,当前主流的版本。具体操作不再赘述,网上一搜一大...

2020-04-02 17:06:25 2125

原创 java异常信息捕获:为什么不建议使用e.printStackTrace()

考考大家:e.printStackTrace() 会把堆栈异常信息写到哪里:1,磁盘2,内存3,文件这个问题答案不难,但是你搞清楚了以后,就不会再这样打印日志了。--------> 正确答案见下面的留言。毕竟,内存贵啊,富豪才能任性使用。码农使用的时候,要悠着点...至于该如何优雅的打印日志,可以参考我的上一篇博客《Spring Cloud如何优雅打...

2020-03-31 11:10:09 3597 3

原创 Spring Cloud如何优雅打印日志:slf4j+logback

最近在对项目的日志进行优化,主要是如何减少不必要的日志输出,如何优化日志输出的性能,以及当前code中,一些不规范的日志输出代码的优化。基于此,对java日志进行了一个系统的梳理。今天这里,主要分享一个点,干货!具体的理论就不再重复搬运了,大家可以自行搜索脑补。Spring Cloud + Slf4j + Logback 架构打印日志的正确姿势import lombok.ext...

2020-03-30 16:36:21 4255 2

原创 Spring事务UnexpectedRollbackException异常抛出原因深度分析及解决方案

Transaction rolled back because it has been marked as rollback-only,中文翻译为:事务已回滚,因为它被标记成了只回滚。这个异常,相信写代码多年的大家,都遇到过,什么原因呢?今天我们专门分析一下,以为前车之鉴。报错信息详情关键报错信息:org.springframework.transaction.Un...

2020-03-27 16:02:32 10230

32位sublime text

32位sublime text

2016-12-31

Sumlime text 3 windows版本64位安装文件

1,Sumlime text 3 windows版本64位安装文件; 2,超级实用的变成工具; 3,功能强大; 4,批量操作;

2016-06-05

myeclipse破解码自动生成工具

1,myeclipse10破解码自动生成工具; 2,myeclipse9破解码自动生成工具; 3,myeclipse8.5破解码自动生成工具; 4,myeclipse11破解码自动生成工具;

2016-06-05

java反编译工具-jd

1,java反编译工具; 2,实用; 3,架构师必备;

2016-06-05

SpringMVC+MySQL实现的分页小项目

SpringMVC+MySQL实现的分页小项目,对于学习SpringMVC框架挺有用的,建议收藏。

2016-03-19

Mybatis-3完整版源代码java-source-code

Mybatis-3完整版源代码java-source-code 202个源代码文件 .java文件,例如:mybatis-3-annotations-CacheNamespace.java

2016-01-18

java实现的网页爬虫1.6版本聚焦爬虫抽取网页完整版

java实现的网页爬虫1.6版本聚焦爬虫抽取网页完整版 1,几个版本合集; 2,基本上可以完成抽取指定站点的源代码的功能; 3,网址保存到数据库中; 4,源代码写入java文件,保存到硬盘指定目录;

2016-01-17

java实现的网页爬虫1.5版本聚焦爬虫抽取网页

java实现的网页爬虫1.5版本聚焦爬虫抽取网页

2016-01-16

java实现的网页爬虫1.5版本聚焦爬虫抽取网页html

java实现的网页爬虫1.5版本聚焦爬虫抽取网页html 1,对制定网页进行抽取; 2,获取指定网页中的所有URL地址; 3,把URL地址分类保存到数据库中;

2016-01-16

SpringMVC配置多数据源实战

配置多数据源、SpringMVC框架下多数据源的配置问题、如何在同一个项目中使用多个数据库、如果在同一个项目中使用不同的数据库。

2016-01-09

网页爬虫聚焦爬虫JavaSpider 1.4版本

网页爬虫聚焦爬虫JavaSpider 1.4版本 1,爬取指定网页中的所有网址; 2,将爬取到的网址,保存到数据库中; 3,servlet + MySQL5.5实现;

2016-01-09

空空如也

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

TA关注的人

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