自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 spring全局异常处理类ExceptionHandler获取request入参

项目中需要用到的数据校验、异常捕获,所以会用@ExceptionHandler方法,对Controller做统一的全局异常处理。当发生异常时,需要记录异常的url、入参、出参、错误信息等。但是request的inputStream已经读取过一次,此时拿到的request是空的。

2024-04-22 17:04:59 332

原创 canal通过rocketMq同步数据延迟delay问题优化

mq发送延迟,最大延迟达到了1小时。

2024-04-22 14:35:20 220 2

原创 给20w用户发优惠活动的短信,让用户领取优惠券,问怎么设计

我们经常有一些业务需要发送优惠券给用户,优惠券发放有两种方式,一种是直接发送,一直是给用户领取,还有一些是需要支付的。此处以发送短信给用户领取为例。此场景类似于京东app发送话费优惠券短信给用户,用户点击链接跳转到网页或app领取。

2024-04-17 16:17:45 224

原创 getOutputStream() has already been called for this response

在做java导出Excel数据的时候,接口层面需要有HttpServletResponse的入参来设置输出流然后执行的时候报getOutputStream() has already been called for this response错误。

2024-04-16 19:53:20 258

原创 java实现根据sql动态下载数据到excel

由于生产数据库不能直接连接下载数据,所以需要在监控系统上做一个根据sql动态查询并下载数据的功能。

2024-04-16 19:10:24 282

原创 如何升级node.js版本

如果你使用的是npm(Node Package Manager)或Yarn等包管理器,它们可能也提供了更新Node.js的功能。具体步骤取决于你使用的包管理器,你可以查阅相关文档或在线资源来了解如何使用包管理器来更新Node.js。无论你选择哪种方法,都建议在升级Node.js之前备份你的代码和项目,以防万一出现任何问题。同时,也要注意检查你的项目依赖是否与新版本的Node.js兼容,以避免升级后出现运行错误。访问Node.js的官方网站,下载对应你操作系统的最新版本安装程序。

2024-04-12 11:44:12 1295

原创 Can not set final java.lang.Class field com.baomidou.mybatisplus.core.override.MybatisMapperProxy.ma

多数据源使用时,不能正确创建数据源连接。

2024-04-10 18:12:06 188

原创 多线程实现Scheduler定时任务

在Spring框架中,@Scheduled注解用于标记一个方法作为定时任务,它使用cron表达式来定义任务的执行频率。对于cron表达式定义的定时任务,如果上一个任务的执行还没有完成,下一个任务的执行行为取决于你使用的调度器(scheduler)以及任务的配置。Spring的@Scheduled注解默认使用的是单线程的,这意味着如果上一个任务还在执行,下一个任务的触发将会被阻塞,直到上一个任务完成。因此,在这种情况下,下一个任务不会在上一个任务还没执行完的时候就开始执行。然而,如果你配置了多线程的。

2024-03-29 16:04:20 367

原创 springcloud+nacos服务注册与发现

看了下官方的demo,直接使用的话有很多jar包缺失或者版本号没有指明。可以参考他的demo代码。比较全。

2024-03-23 13:21:27 1037

原创 nacos-config实现配置中心功能

在本地、开发、测试、uat、生产等环境中通过修改启动参数-Dspring.cloud.nacos.config.namespace=local,来获取不同环境的配置,实现不同环境的配置隔离。这是个简单可行的demo,有什么不足或者需要完善的地方欢迎交流指正。

2024-03-22 19:49:14 259

原创 灰度方案设计

【代码】灰度方案设计。

2024-03-21 11:35:23 179

原创 redis实现分布式锁

使用时先lock 再在finally里面release。原理是利用redis的setnx命令。

2024-03-14 16:16:49 190

原创 基于shardingsphere实现分库分表

【代码】基于shardingsphere实现分库分表。

2024-03-12 16:25:53 185

原创 springboot项目如何引入线程池

【代码】springboot项目如何引入线程池。

2024-01-11 17:40:44 430 1

原创 python分页爬取es日志,获取数据

这里是分页爬取数据,判断msgId重复的数据,并写入文件。这里终点参考分页的方式。

2023-09-26 23:39:48 366

原创 java springboot 时间格式序列化 UTC8

我们在项目中使用序列化和反序列化组件中,默认一般采用Jackson,如果遇到特殊配置,我们该怎么配置呢,大致有如下两种方式:采用配置文件【application.yml】和代码配置。如果我们在项目中使用了FeignClient,可以指定Mapper,同时也可以进行Jackson的通用配置修改。链接:https://www.jianshu.com/p/b4bd43ed38be。商业转载请联系作者获得授权,非商业转载请注明出处。ObjectMapper的设置。比如添加jackson节点。

2023-09-01 14:45:24 446

原创 新旧库切换流程

新旧切换标准流程前言 随着业务壮大,我们系统涉及数据库迁移、接口切换迁移等等相关的工作越来越多。但在实际落地的操作过程中也发现了很多各种各样的问题,给系统稳定性造成了重大威胁。因此,根据之前的经验教训,总结出一个标准化的流程,后续大家按照标准流程操作执行。最大程度保障系统稳定性。 数据库迁移流程包含但不限于MySQL、HBASE、MongoDB、Redis等。1. 双写读旧新库刚初始化还没有数据,所以要读取旧库,同时将增量数据写入新库。2. 双写读旧,旧数据

2023-08-04 16:24:36 594

原创 springboot多数据源根据开关控制方法访问的数据源

有个需求需要通过开关控制需要访问的数据源,此处参考DS多数据源,采用注解加aop切面实现此功能。此处使用时要多测试防止异常。

2023-08-02 19:56:48 500

原创 如何画时序图

信息量还是不少,我给你总结下。时序图,用来描述多个对象参与实现业务目标时,彼此之间按时间顺序进行交互的过程。常见的应用场景,是在支付领域。用好时序图,能帮我们,搞清楚业务规则、系统逻辑,提高工作效率。1、画时序图的方法1)定目标,指定用例或业务目标展开分析2)找对象,找出参与实现目标的对象/角色3)列消息,按时间顺序列出对象的交互消息2、画时序图的经验1)给交互消息加序号,方便阅读沟通2)触发交互的对象画在最左,交互频繁的走近些3)同一个流程,画不同视图,理解更全面、深刻。

2023-06-28 21:15:47 4930

原创 代码规范及单元测试覆盖率

安装Alibaba Java Coding Guidelines插件。Tools-》阿里编码规约-》编码规约扫描。

2023-06-14 21:25:42 59

原创 java mysql自定义查询需要的列

有时候不同的业务需要查询不同的数据,如果都全表查询,效率较低,网络传输量也比较大,所以可以采取自定义需要查询的字段的方式解决。我们可以通过入参传入需要查询的字段和排序字段进行数据查询,然后返回数据信息先建表枚举类表字段枚举类排序枚举类结果过滤类,封装了需要的字段还有排序字段信息。此处用枚举类的主要目的是为了参数的合法化,想简单的话可以直接用字符串。工具类,用来获取查询的字段还有排序字段信息,个别方法可能没用,可以后续自己扩展。

2023-06-13 18:48:54 450

原创 设计模式之责任链模式

责任链模式是一种。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

2023-05-17 23:57:20 85

原创 设计模式之装饰模式

半透明(Semi-transparent)装饰模式用具体装饰类型来定义装饰之后的对象,而具体构件使用抽象构件类型来定义对于客户端而言,具体构件类型无须关心,是透明的;但是具体装饰类型必须指定,这是不透明的可以给系统带来更多的灵活性,设计相对简单,使用起来也非常方便客户端使用具体装饰类型来定义装饰后的对象,因此可以单独调用扩展新增的方法最大的缺点在于不能实现对同一个对象的多次装饰,而且客户端需要有区别地对待装饰之前的对象和装饰之后的对象透明(Transparent)装饰模式。

2023-05-17 00:28:22 345

原创 设计模式之门面模式(Facade Pattern 外观模式)

门面模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。门面模式又称为外观模式,它是一种对象结构型模式。

2023-05-16 00:05:22 860

原创 设计模式之工厂模式

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。

2023-05-14 23:41:12 225

原创 设计模式之策略模式

策略接口的定义,通常包含两个方法:获取策略类型的方法和处理策略业务逻辑的方法。*** 第三方支付*//*** 获取支付方式* @return 响应,支付方式*//*** 支付调用* @param order 订单信息* @return 响应,支付结果*/2.策略接口的实现每种支付类都实现了上述接口(基于接口而非实现编程),这样我们可以灵活的替换不同的支付方式。/*** 微信支付*/@Component@Override@Override调用微信支付。

2023-05-14 01:03:29 231

原创 单例设计模式

单例模式,属于创建类型的一种常用的。通过单例模式的方法创建的类在当前进程中只有一个。

2023-05-11 23:14:27 259

原创 多线程异步处理任务(异步下载)

我们在下载报表时,有时候数据较多接口会超时。此时我们可以采用后台进程异步生成文件,生成后前端再下载。

2023-05-10 18:12:07 180

原创 java状态机实现订单状态转移

状态机

2023-05-09 20:21:14 1206

原创 根据项目名称查询github,判断项目代码是否被传上了github

【代码】根据项目名称查询github,判断项目代码是否被传上了github。

2023-05-06 09:56:07 181

原创 mybatis通过拦截器动态的修改sql

比如你的orderInfo有个版本号,你需要每次修改的时候版本号增加1,如果手工添加比较麻烦,容易遗漏,可以通过拦截器实现。添加MybatisConfig,注入拦截器。

2023-05-05 18:09:56 1497

原创 设计模式六大原则

LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。

2023-04-28 19:11:45 808

原创 手动创建springboot项目

简单springboot项目搭建

2022-09-20 10:12:51 995

原创 git解决enter passphrase for key

git解决enter passphrase for key

2022-09-19 10:34:00 838

原创 GitLab配置ssh key:gitlab add an ssh key

GitLab配置ssh key:gitlab add an ssh key

2022-09-09 10:40:45 844

原创 springmvc long精度缺失,long转string字符串

springmvc long精度缺失,long转string字符串

2022-05-06 23:25:19 633

原创 springboot+mybatis

环境:开发工具Intellij IDEA 2017.1.3 springboot: 2.1.0 jdk:jdk1.8.0_141 maven:3.3.9插件PageHelper 分页插件 mybatis generator 代码生成插件步骤1.创建一个springboot项目2.设置项目属性(Packageing默认jar)3.选择项目需要的依赖(web m...

2018-11-29 18:01:08 215 1

原创 git安装 git TortoiseGit ssh配置

 安装Git-2.15.0-64-bit安装TortoiseGit-2.4.0.2-64bit安装TortoiseGit-LanguagePack-2.4.0.0-64bit-zh_CN 获取sshkey https://blog.csdn.net/everything1209/article/details/53100263git config --global ...

2018-11-29 16:40:58 155

原创 java多线程

两种简单的实现方式,一种是有链接阻塞队列,多余的任务会直接放到队列里面等待执行,一种是同步队列  public void testLinkedBlockingQueue(){ List<Integer> waitDealList = new ArrayList<>(10); for (int i = 0; i < 100; i++...

2018-11-29 16:40:05 65

原创 C#创建指定大小的文件并下载

        private void txtFileSize_KeyPress(object sender, KeyPressEventArgs e)        {            if (e.KeyChar == 0x20) e.KeyChar = (char)0;  //禁止空格键              //if ((e.KeyChar == 0x2D) &amp...

2018-07-25 10:23:12 999

空空如也

空空如也

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

TA关注的人

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