自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

suodod的博客

https://blog.sunyw.xyz

  • 博客(53)
  • 资源 (2)
  • 收藏
  • 关注

原创 飞书自定义机器人集成ChatGPT,含java源码开源

飞书平台接入ChatGPT AI教程(文章末尾含源码)

2023-02-10 10:08:42 3356 11

原创 接口幂等实现基于注解(适用于分布式系统中支持spEl动态过滤)

接口幂等,基于注解的方式优雅实现

2022-12-21 21:59:10 355

原创 SpringBoot基于Apollo在不创建多环境的情况下进行配置隔离

Apollo进行配置隔离的方法有两种第一种是创建多env在启动时根据-Denv={}指定访问环境,第二种是基于多集群配置对配置进行隔离第二种方法使用如下点击添加集群,创建集群,输入名称 SpringBoot在进行使用时,可使用apollo.cluster={集群名称} 来指定不同集群环境下的配置文件,不指定默认为default在服务器上启动脚本可以直接使用 nohup java -Denv=dev -Dapollo.clust={} -jar XX.jar &来进行启动从而在最小的.

2022-05-27 17:00:54 295

原创 使用Jstack生产环境OOM排查经历

2021-04-18日,生产服务器主备机器资源报警,进程OOM,下面是排查问题的全过程通过top查看到了cpu占用比较高的应用服务,我们的服务器上部署了多个应用,探查到cpu占用率400%;使用 ps -mp pid -o THREAD,tid,time |sort -rn 命令查看当前pid 占用资源较高的线程tid并进行排序将线程格式转换为16进制后 printf “%x\n” tid得到十六进制后的线程tid后使用 jstack pid |grep tid -A 30 查看线程的堆栈信息.

2022-03-09 08:58:43 495

原创 SpringCloudHystrix无缝切换到Resilience4J

Hystrix在SpringCloud2020版本中正式移除,在进行版本升级的过程中就需要替换熔断组件,熔断组件的替换也比较简单因为Resilience4J已经加入到了SpringCloud的大家庭中,属于SpringCloudCircuitBreaker下的一员,那么在进行熔断组件的切换也是比较简单的首先移除原有的SpringCloudHystrix的相关依赖<dependency> <groupId>org.springframework.cloud</gr.

2022-02-22 22:03:57 1072 3

原创 SpringCloudGateWay跨域配置

@Bean public CorsWebFilter corsWebFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 配置跨域 CorsConfiguration corsConfiguration = new CorsConfiguration(); // 允许哪个请求头 cors.

2022-02-22 14:48:09 1321

原创 SpringCloud服务应用与ShardingJdbc组合

环境介绍相关组件版本SpringBoot :2.3.2.RELEASESpringCloud :Hoxton.SR5SpringCloud-GateWay :2.2.3.RELEASESpringCloud-Hystrix :2.2.3.RELEASESpringCloud-Feign :2.2.3.RELEASESpringCloud-Eureka :2.2.3.RELEASESpringCloud-Hystrix :2.2.3.RELEASE搭建服务模块及相关功能介

2021-12-24 11:37:17 1276

原创 基于SpringCloudGateWay自定义灰度发布

灰度发布:在进行内部版本发布时希望有一部分用户能体验新的功能进行打标签的方式进行分区访问;基于SpringCloudGateWay的灰度发布实践在gateway中进行服务路由是通过Ribbon进行负载的,SpringCloudGateWay使用到的路由策略有两种分别是RandomLoadBalancer和RoundRobinLoadBalancer两个类进行实现的,我们可以参考上述两个负载均衡实现类,在进行路由选择策略中,将灰度服务和非灰度服务进行区分,进行路由;整理流程如下首先,我们需要.

2021-12-24 11:32:43 2717

原创 基于Apollo对SpingCloudGateWay实现动态路由

安装Apollo步骤跳过,此处不再赘述,可自行查找安装步骤;实现原理比较简单,像Apollo和nacos这样的配置中心,都可以以JSON形式保存,我们可以使用key作为路由监听key,value作为路由的一个配置信息这个配置缺点就是界面的可视化比较差,因为都是配置文件,还有就是,在微服务集群机器比较多的情况下,管理起来比较繁琐,可以考虑通过界面化的形式进行改造优点就是对开发人员比较快捷,使用比较简单,下面是具体的实现步骤首先在Apollo创建一个项目然后在项目POM中引入Apollo的mave.

2021-12-22 10:41:29 1239

原创 基于Redis对SpringCloudGateWay实现动态化路由

SpringCloudGateWay的路由存储默认是InMemory,所以只需要改变数据的保存地址即可很方便的解决动态路由第一种:基于Redis保存– 首先SpringCloudGateWay的路由策略类默认为InMemoryRouteDefinitionRepository,实现了RouteDefinitionRepository接口进行的动态路由,那么我们也可以实现此接口创建RedisRouteDefinitionRepository类,实现RouteDefinitionRepository接口.

2021-12-20 17:49:30 1866 3

原创 Redis-5.0.2三主三从集群搭建手册

准备工作:redis-5.0.2.tar.gz,下载地址:https://download.redis.io/releases/linux服务器三台,要求网络互通将redis上传至/home/tmp目录下,使用tar -zxvf edis-5.0.2.tar.gz,解压完毕后cd redis-5.0.2 ,执行make,三台机器都按照这个步骤执行准备配置文件,在/home/tmp 目录下新建redis-config目录,在redis-config目录下新建6800与6801两个文件夹,在68.

2021-08-26 10:09:52 2724

原创 Redis-6.0.6 主从哨兵模式搭建记录

以上为搭建Redis主从集群的全过程,云服务器记得在安全组中配置放行端口号,客户端使用时,链接哨兵即可我的个人博客: https://blog.sunyw.xyz

2021-06-17 14:20:25 303 1

原创 策略设计模式加多线程并行处理数据

策略设计模式:基于给定的接口,来进行实现开发,在进行调用时,根据给定的类型进行调用,业务调用方不用关心具体的代码实现,只需关注类型本身即可;以下是根据真实代码开发缩小的具体案例,来演示设计模式加多线程实现的方式首先给定一个接口,一个run()接口,返回值是Stringpublic interface BaseInterFace { String run();}根据接口编写对应的实现类FirstService是第一个实现接口public class FirstServ.

2021-05-12 17:45:31 281 1

原创 Redis管道操作个人封装的工具类

RedisTemplate每一次操作都会从连接池中获取链接然后释放,批量操作时,效率比较低,所以使用管道来解决此问题List < String > @Autowired @Qualifier(value="strRedisTemplate") private StringRedisTemplate strRedisTemplate; /** * 批量数据插入到redis中,不要使用单个插入,多个数据时,使用管道来节省网络链接的开销 * * @param list.

2021-05-12 09:34:53 221

原创 分布式限流组件

现有功能注解接口限流/** * 基于注解形式的限流 * * @param param * @return */@GetMapping("/send/{param}")@Limiter(count = 1, method = "send", time = 30)public String send(@PathVariable String param) { return param;}全局限流@Pointcut("execution(public * com.sun.

2021-02-23 11:47:33 302

原创 java自定义注解进行出参入参日志打印

在实际的开发需求中,我们会对请求的入参和出参的信息打印,这些我们可以自定义一个注解来完成这些重复的冗余工作,还可以在此基础上进行日志的入表持久化,这样查日志的时候就可以不用再服务器上看了,可以在可视化界面进行查看首先定义一个注解名称为Log,参数只有一个接口的名称,一半用于接口层面,来进行入参和出参打印package com.sunyw.xyz.annotation;import java.lang.annotation.*;@Target({ElementType.METHOD})@Re.

2021-01-31 23:19:32 3577

原创 AOP处理业务类中重复校验

我们项目中会有一些公共的校验,像商户的合同和流水是否重复等等,之前是在每个业务类中都做一次验证,本次的项目重构中,我尝试把这些公共的校验提取出来作为一个切面来处理,但是在业务中会用到这些查询出来的结果,我尝试在请求参数的父类中增加一个私有对象来赋值,这样可以在AOP中校验完毕对参数进行赋值,在下文业务类处理直接get这个参数即可,减少了很多的代码量,下面是我的一个demo,可以做为参考项首先是一个父类的请求类假设 date和time是公共的请求参数,每个请求类都需要继承这个父类,Db是业务中的一个数据库.

2021-01-14 21:47:15 244 1

原创 截取从指定位置开始字符串长度按照字节

按照字节截取从指定位置截取字符串长度代码 /** * * @param orig 原字符串 * @param count 截取位置 * @return * @throws Exception */public static String subBytes(String orig, int count)throws Exception { byte[] gbks = orig.getBytes ("GBK"); .

2020-12-16 18:55:04 338

原创 基于zookeeper+curator的分布式锁代码实现

zookeeper的配置和安装请移步zookeeper的安装分布式锁的可选择性一般常用的为redis的分布式锁和zookeeper的分布式锁,redis是以一个key值作为唯一,zookeeper是以创建的临时节点下的子节点来创建一个唯一,redis分布式锁请移步基于redisson的分布式锁下面是具体的代码实现依赖<dependency> <groupId>org.apache.curator</groupId> <artifac.

2020-12-13 00:38:14 358

原创 基于redisson的分布式锁使用

-依赖 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>2.15.1</version> </dependency>-配置默认使用sprin

2020-12-11 15:35:53 241

原创 java业务处理中订单的防重设计

涉及到支付的系统中,必不可少的就是订单,在实际的环境中可能会出现因为网络环境原因或者是操作失误导致重复的请求,下面是一个基于redis的一个控制,有需要的可以作为参考id类生成package com.sunyw.xyz.utils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.sp.

2020-12-11 14:14:49 518

原创 springcloud初体验环境搭建

之前一直使用的是基于dubbo-zookeeper的微服务架构,今天开始学习基于springcloud的微服务架构,首先是springcloud简介springcloud官网 https://spring.io/projects/spring-cloud/dubbo和springcloud有很多共同点也有很多不同之处,dubbo在进行服务调用时是基于RPC(远程过程调用Remote Procedure Call),默认的通讯协议是dubbo,底层则是使用netty进行请求,springcloud是基于.

2020-08-24 22:06:57 121

原创 记录一次 org.springframework.core.task.TaskRejectedException

错误信息Exception in thread "main" org.springframework.core.task.TaskRejectedException: Executor [java.util.concurrent.ThreadPoolExecutor@1b701da1[Running, pool size = 2, active threads = 2, queued tasks = 15, completed tasks = 0]] did not accept task: com.

2020-08-15 16:12:44 2578

原创 基于Apache进行doc文档模板填充生成新的文档

使用Apache对doc文档进行填充有些像合同之类的可能会用到对模板进行动态数据填充然后生成新的文档,下面就是我使用poi进行的doc文档填充的一些使用过程模板很简单,使用时基本上都一样依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins.

2020-07-25 00:52:09 188

原创 基于Apache Poi的excel解析 附示例代码链接

poi是Apache基金会下的一个开源项目,对excel、doc等文档进行解析和创建首先是对excel的解析这个是一个excel的模板,上代码一个实体类对应excel的信息package com.sunyw.xyz.vo;import java.io.Serializable;public class PoiExcelBean implements Serializable { private static final long serialVersionUID = 405644.

2020-07-25 00:34:54 169 1

原创 基于redis的自增id

先说需求:一个编号,每天从000-999,超过999后拒绝交易难处,数据库是mysql没有sequence,字段不是自增的,因为,生成的编号前缀还有一些年月日加其他的一些东西,最后想到的是redis的自增id使用的springdataredis中的RedisAtomicLong,根据key值获取,从0开始,每次获取一个自增的long类型的数字;实现方法/** * 获取自增id,有效时间为当天, * @param key * @return */ pu.

2020-07-22 14:49:31 7422

原创 redis分布式锁基于springdataredis

分布式锁原子性操作,基于springbootredis开箱即用效果package com.sunyw.xyz.controller;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.StringRedisTemplate;import org.springfram.

2020-07-03 22:34:51 204

原创 java复习思路

java基础1.1 jvm的内存划分1.2 gc的常用算法 https://blog.csdn.net/zd836614437/article/details/64126826?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2- 1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-Blog

2020-05-13 22:51:44 431 1

原创 Liunx环境下配置mysql数据库主从复制

环境:Linux服务器 * 2需要两个数据节点可以相互Ping通,打开防火墙端口主从复制是为了在高并发下对数据库的读写分离,增删改由主数据库进行操作,查由从数据库进行操作,主服务器在进行数据变更后,从数据库会进行获取住数据库的binglog,读取增删改的内容,并同步到本地服务器主服务器配置配置数据库配置文件my.cnf; 找不到my.cnf 就find / -name my.cnf...

2020-05-07 15:19:30 273

原创 linux下自定义命令

linux下很多重复性的东西可以简化为一个命令或者很少的字母来代替;服务器上一个服务在 /home/server下,所以我就加入了一个cds直接跳入到定义的目录下如下vim ~/.bashrc命令的缩写就可以在这里进行配置,很方便快捷编辑完后记得刷新一下环境变量source ~/.bashrc...

2020-04-08 15:07:10 262

原创 java多线程下获取方法返回值

多线程下获取执行方法的返回值,实现线程的几种方法,大家都是比较清楚的,而runable接口是void类型,无返回值,想通过runable来获取返回值,只能再起一个方法调度进行异步回调,而多线程实现的另一个方法Callable方法是有一个任意值对象的返回的;如下实现callable方法实现call方法,返回object对象在call方法中调用要被执行的逻辑方法开启多线程线程的执行...

2020-04-02 10:19:10 5181 2

原创 ArrayBlockingQueue消息队列

ArrayBlockingQueue是Queue的一个子类,可以作为消息队列来进行使用ArrayBlockingQueue底层是有数组来进行实现的,存在队列的参数不能为空,否则会抛出一个空指针异常在进行初始创建ArrayBlockingQueue时,可以指定两个参数 public ArrayBlockingQueue(int capacity, boolean fair) {...

2020-03-30 12:05:34 298

原创 世界疫情统计java

在查看了今日头条的数据后,找到了他们的供数接口,并对数据做了一下整理码云地址:点击打开以上仅供学习使用;

2020-03-13 09:23:10 750

原创 Linux环境下zookeeper的配置和安装以及dubbo-admin的安装和配置

之前有做过一次windows下zookeeper的环境搭建和安装; windows下zookeeper与dubboadmin安装首先需要准备zookeeper的安装包百度网盘地址::链接 提取码:ttee通过sftp工具上传至linux系统目录下,执行 tar -zxvf zookeeper-3.4.14进行解压解压完毕进入conf 目录下 将 zoo_sample.cfg复制出来...

2020-03-10 17:38:53 363

原创 SpringBoot集成Swagger生成API文档

本文主要介绍基于springboot框架下使用swagger生成api文档的基本使用方法基于REST风格的接口接口规范来进行代码编写,加上自动化的api文档简直不要太舒服,下面是基本的使用,以及解释在传统开发中我们经常使用word来进行接口文档的编写,这种方法很繁琐,随着时间的增加接口的变化和繁多也会导致文档变得难以维护和停止维护,这对于刚入职公司的新人来说是非常的不友好的,swagger可...

2020-02-25 13:45:22 241

原创 Memcached安装及集成springboot

什么是memcached:* memcached是一个基于内存的缓存中间件,是基于key -value进行存储;* memcached是一个多核缓存;* memcached对比redis的优缺点 * memcached基于key -value,而redis基于hash,所以在内存的利用率更高效,redis的内存使用率会高于memcached * 性能方面的话,redis使用的是单核,而m...

2019-10-24 10:06:23 151

原创 SpringBoot+Dubbo+Zookeeper分布式项目打包时子模块依赖找不到解决方案

问题描述:子模块打包依赖其他的子模块,打包显示找不到jar包解决方案:由于springboot打包和maven打包最后出来的jar包不同需要在pom中新增以下插件 <build> <plugins> <plugin> <groupId>org.springframewor...

2019-10-13 01:35:01 1123

原创 SpringBoot整合ActiveMQ

activemq是由Apache出品对应java的jms的消息中间件,能够做到很好的分布式系统模块解耦异步通知而无需进行线程等待,下面是activemq与springboot的整合;安装: 首先需要下载activemq,本次是基于windows环境下的安装下载地址.下载之后解压后进入bin目录下,直接启动activemq.bat批处理文件;可以验证一下,进入activemq的后台查看...

2019-09-09 00:41:30 101

原创 IDEA推送到git: Push to origin/master was rejected

打开cmd进入项目路径下或者idea自带的Terminal依次输入以下,然后再次push项目git pullgit pull origin mastergit pull origin master --allow-unrelated-h完成!

2019-09-03 10:46:29 286

原创 支付宝支付PC网页支付接入沙箱环境

首先需要生成应用私钥和应用公钥地址生成工具使用地址上面有详细的说明然后是配置你的私钥;生成appid然后就是看文档写代码文档地址我写的比较简单因为回调需要公网ip,我就没写就只做了个跳转支付,后面的其实也差不多支付网页跳转,异步通知;上代码吧直接 //appid public static final String appid = "2016092400581860"; //...

2019-09-03 10:33:17 591

5.00.2843Listary+Pro(52pojie.cn).zip

全局检索的一个工具,比everything要好用,我快捷键设置的是shift+d,感觉很舒服,需要的可以试试!

2019-05-29

邮箱工具类

是一个进行邮箱的邮件接收和发送主要使用的是博主用的是Foxmail

2018-10-12

空空如也

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

TA关注的人

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