个人学习
文章平均质量分 58
等不见天亮等时光i
一个工作好几年的开发
展开
-
飞书自定义机器人集成ChatGPT,含java源码开源
飞书平台接入ChatGPT AI教程(文章末尾含源码)原创 2023-02-10 10:08:42 · 3516 阅读 · 11 评论 -
接口幂等实现基于注解(适用于分布式系统中支持spEl动态过滤)
接口幂等,基于注解的方式优雅实现原创 2022-12-21 21:59:10 · 390 阅读 · 0 评论 -
SpringBoot基于Apollo在不创建多环境的情况下进行配置隔离
Apollo进行配置隔离的方法有两种第一种是创建多env在启动时根据-Denv={}指定访问环境,第二种是基于多集群配置对配置进行隔离第二种方法使用如下点击添加集群,创建集群,输入名称 SpringBoot在进行使用时,可使用apollo.cluster={集群名称} 来指定不同集群环境下的配置文件,不指定默认为default在服务器上启动脚本可以直接使用 nohup java -Denv=dev -Dapollo.clust={} -jar XX.jar &来进行启动从而在最小的.原创 2022-05-27 17:00:54 · 324 阅读 · 0 评论 -
SpringCloudHystrix无缝切换到Resilience4J
Hystrix在SpringCloud2020版本中正式移除,在进行版本升级的过程中就需要替换熔断组件,熔断组件的替换也比较简单因为Resilience4J已经加入到了SpringCloud的大家庭中,属于SpringCloudCircuitBreaker下的一员,那么在进行熔断组件的切换也是比较简单的首先移除原有的SpringCloudHystrix的相关依赖<dependency> <groupId>org.springframework.cloud</gr.原创 2022-02-22 22:03:57 · 1236 阅读 · 3 评论 -
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 · 1339 阅读 · 0 评论 -
基于SpringCloudGateWay自定义灰度发布
灰度发布:在进行内部版本发布时希望有一部分用户能体验新的功能进行打标签的方式进行分区访问;基于SpringCloudGateWay的灰度发布实践在gateway中进行服务路由是通过Ribbon进行负载的,SpringCloudGateWay使用到的路由策略有两种分别是RandomLoadBalancer和RoundRobinLoadBalancer两个类进行实现的,我们可以参考上述两个负载均衡实现类,在进行路由选择策略中,将灰度服务和非灰度服务进行区分,进行路由;整理流程如下首先,我们需要.原创 2021-12-24 11:32:43 · 2803 阅读 · 0 评论 -
基于Apollo对SpingCloudGateWay实现动态路由
安装Apollo步骤跳过,此处不再赘述,可自行查找安装步骤;实现原理比较简单,像Apollo和nacos这样的配置中心,都可以以JSON形式保存,我们可以使用key作为路由监听key,value作为路由的一个配置信息这个配置缺点就是界面的可视化比较差,因为都是配置文件,还有就是,在微服务集群机器比较多的情况下,管理起来比较繁琐,可以考虑通过界面化的形式进行改造优点就是对开发人员比较快捷,使用比较简单,下面是具体的实现步骤首先在Apollo创建一个项目然后在项目POM中引入Apollo的mave.原创 2021-12-22 10:41:29 · 1352 阅读 · 0 评论 -
基于Redis对SpringCloudGateWay实现动态化路由
SpringCloudGateWay的路由存储默认是InMemory,所以只需要改变数据的保存地址即可很方便的解决动态路由第一种:基于Redis保存– 首先SpringCloudGateWay的路由策略类默认为InMemoryRouteDefinitionRepository,实现了RouteDefinitionRepository接口进行的动态路由,那么我们也可以实现此接口创建RedisRouteDefinitionRepository类,实现RouteDefinitionRepository接口.原创 2021-12-20 17:49:30 · 1969 阅读 · 3 评论 -
Redis-6.0.6 主从哨兵模式搭建记录
以上为搭建Redis主从集群的全过程,云服务器记得在安全组中配置放行端口号,客户端使用时,链接哨兵即可我的个人博客: https://blog.sunyw.xyz原创 2021-06-17 14:20:25 · 333 阅读 · 1 评论 -
Redis管道操作个人封装的工具类
RedisTemplate每一次操作都会从连接池中获取链接然后释放,批量操作时,效率比较低,所以使用管道来解决此问题List < String > @Autowired @Qualifier(value="strRedisTemplate") private StringRedisTemplate strRedisTemplate; /** * 批量数据插入到redis中,不要使用单个插入,多个数据时,使用管道来节省网络链接的开销 * * @param list.原创 2021-05-12 09:34:53 · 263 阅读 · 0 评论 -
分布式限流组件
现有功能注解接口限流/** * 基于注解形式的限流 * * @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 · 320 阅读 · 0 评论 -
java自定义注解进行出参入参日志打印
在实际的开发需求中,我们会对请求的入参和出参的信息打印,这些我们可以自定义一个注解来完成这些重复的冗余工作,还可以在此基础上进行日志的入表持久化,这样查日志的时候就可以不用再服务器上看了,可以在可视化界面进行查看首先定义一个注解名称为Log,参数只有一个接口的名称,一半用于接口层面,来进行入参和出参打印package com.sunyw.xyz.annotation;import java.lang.annotation.*;@Target({ElementType.METHOD})@Re.原创 2021-01-31 23:19:32 · 3770 阅读 · 0 评论 -
AOP处理业务类中重复校验
我们项目中会有一些公共的校验,像商户的合同和流水是否重复等等,之前是在每个业务类中都做一次验证,本次的项目重构中,我尝试把这些公共的校验提取出来作为一个切面来处理,但是在业务中会用到这些查询出来的结果,我尝试在请求参数的父类中增加一个私有对象来赋值,这样可以在AOP中校验完毕对参数进行赋值,在下文业务类处理直接get这个参数即可,减少了很多的代码量,下面是我的一个demo,可以做为参考项首先是一个父类的请求类假设 date和time是公共的请求参数,每个请求类都需要继承这个父类,Db是业务中的一个数据库.原创 2021-01-14 21:47:15 · 257 阅读 · 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 · 355 阅读 · 0 评论 -
基于zookeeper+curator的分布式锁代码实现
zookeeper的配置和安装请移步zookeeper的安装分布式锁的可选择性一般常用的为redis的分布式锁和zookeeper的分布式锁,redis是以一个key值作为唯一,zookeeper是以创建的临时节点下的子节点来创建一个唯一,redis分布式锁请移步基于redisson的分布式锁下面是具体的代码实现依赖<dependency> <groupId>org.apache.curator</groupId> <artifac.原创 2020-12-13 00:38:14 · 383 阅读 · 0 评论 -
基于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 · 260 阅读 · 0 评论 -
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 · 567 阅读 · 0 评论 -
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 · 138 阅读 · 0 评论 -
记录一次 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 · 2789 阅读 · 0 评论 -
基于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 · 213 阅读 · 0 评论 -
基于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 · 189 阅读 · 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 · 7496 阅读 · 0 评论 -
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 · 223 阅读 · 0 评论 -
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 · 456 阅读 · 1 评论 -
java多线程下获取方法返回值
多线程下获取执行方法的返回值,实现线程的几种方法,大家都是比较清楚的,而runable接口是void类型,无返回值,想通过runable来获取返回值,只能再起一个方法调度进行异步回调,而多线程实现的另一个方法Callable方法是有一个任意值对象的返回的;如下实现callable方法实现call方法,返回object对象在call方法中调用要被执行的逻辑方法开启多线程线程的执行...原创 2020-04-02 10:19:10 · 5224 阅读 · 2 评论 -
ArrayBlockingQueue消息队列
ArrayBlockingQueue是Queue的一个子类,可以作为消息队列来进行使用ArrayBlockingQueue底层是有数组来进行实现的,存在队列的参数不能为空,否则会抛出一个空指针异常在进行初始创建ArrayBlockingQueue时,可以指定两个参数 public ArrayBlockingQueue(int capacity, boolean fair) {...原创 2020-03-30 12:05:34 · 318 阅读 · 0 评论 -
世界疫情统计java
在查看了今日头条的数据后,找到了他们的供数接口,并对数据做了一下整理码云地址:点击打开以上仅供学习使用;原创 2020-03-13 09:23:10 · 770 阅读 · 0 评论 -
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 · 378 阅读 · 0 评论 -
SpringBoot集成Swagger生成API文档
本文主要介绍基于springboot框架下使用swagger生成api文档的基本使用方法基于REST风格的接口接口规范来进行代码编写,加上自动化的api文档简直不要太舒服,下面是基本的使用,以及解释在传统开发中我们经常使用word来进行接口文档的编写,这种方法很繁琐,随着时间的增加接口的变化和繁多也会导致文档变得难以维护和停止维护,这对于刚入职公司的新人来说是非常的不友好的,swagger可...原创 2020-02-25 13:45:22 · 259 阅读 · 0 评论 -
Memcached安装及集成springboot
什么是memcached:* memcached是一个基于内存的缓存中间件,是基于key -value进行存储;* memcached是一个多核缓存;* memcached对比redis的优缺点 * memcached基于key -value,而redis基于hash,所以在内存的利用率更高效,redis的内存使用率会高于memcached * 性能方面的话,redis使用的是单核,而m...原创 2019-10-24 10:06:23 · 169 阅读 · 0 评论 -
SpringBoot+Dubbo+Zookeeper分布式项目打包时子模块依赖找不到解决方案
问题描述:子模块打包依赖其他的子模块,打包显示找不到jar包解决方案:由于springboot打包和maven打包最后出来的jar包不同需要在pom中新增以下插件 <build> <plugins> <plugin> <groupId>org.springframewor...原创 2019-10-13 01:35:01 · 1148 阅读 · 0 评论 -
SpringBoot整合ActiveMQ
activemq是由Apache出品对应java的jms的消息中间件,能够做到很好的分布式系统模块解耦异步通知而无需进行线程等待,下面是activemq与springboot的整合;安装: 首先需要下载activemq,本次是基于windows环境下的安装下载地址.下载之后解压后进入bin目录下,直接启动activemq.bat批处理文件;可以验证一下,进入activemq的后台查看...原创 2019-09-09 00:41:30 · 117 阅读 · 0 评论 -
SpringBoot集成分布式环境示例
zookeeper的搭建,看这里,zookeeper+dubbo搭建首先创建一个maven项目,父工程的pom依赖,只是放了一个springboot的依赖;<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=...原创 2019-09-02 15:38:52 · 170 阅读 · 2 评论 -
MongoDB集成SpringBoot,代码案例
码云地址pom文件<?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-instance" xsi:schemaLocati...原创 2019-07-28 15:34:17 · 123 阅读 · 0 评论 -
MongoDB的安装和启动
MongoDB下载地址直接默认安装就好,下面是配置MongoDB在默认的安装目录下新建文件夹data 这个文件夹就是以后用来存储db序列化的地方再新建一个文件夹log/log.log用来进行日志的存放在根目录下创建一个文件 mongo.conf ,就是mongodb的配置文件了,下面是这个配置文件需要写入的一些东西,直接复制改一下就好#数据库路径 dbpath=E:\MongoDB...原创 2019-07-28 12:33:33 · 140 阅读 · 0 评论 -
dubbo+zk,windows下安装
zookeeper+dubbo搭建过程zk版本3.4.14,地址:https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/dubbo地址,百度网盘:https://pan.baidu.com/s/1Hlpc-2C17gseCYjkvxLKUg,提取码:lyk8本次搭建的过程是基于**windows**环境下进行搭建的;1.下载...原创 2019-06-26 16:17:45 · 386 阅读 · 0 评论