- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 spring cloud gateway使用redis存储时,断网重连会导致路由丢失解决方案
【代码】spring cloud gateway使用redis存储时,断网重连会导致路由丢失解决方案。
2024-12-02 09:09:46
266
原创 后端代码生成器 Spring boot + Mybatis plus 不做重复crud仔!
infrastructure-code-generator是我在业余时间开发的一个基于jpt技术的仓储层代码生成器,如果你使用过mapstruct或者lombok,是的,原理与他们无异,但此工具使用起来将会让你事半功倍,更加简单和效率,毫无配置
2024-02-21 17:58:55
1038
原创 大并发下请求合并(并发处理技巧)
链接资源是宝贵的,并发比较高的情况1000个请求进来,每一个请求都会去尝试获取数据库链接,打开并执行查询然后关闭。这会导致链接资源挤兑,同时也提高了数据库压力,因此解决以上问题,可以通过批处理请求合并的方式。这样的一次请求可能会涉及tomcat、数据库连接池的链接获取,以及可能存在的链接创建和销毁。
2023-09-20 18:12:15
341
原创 springboot打印接口及方法出入参及实现方法级链路跟踪解决aop失效(插桩方式)
controller日志打印注解(controller类上使用)/**是否打印参数*/ boolean argsNeed() default true;/**是否打印结果*/ boolean resultNeed() default true;/**是否打印耗时*/ boolean millisecondNeed() default true;method上使用/**超过定义的耗时会打印日志,作为慢日志输出*/ long maxSlowTime() default 0L;
2023-07-03 15:10:41
2731
原创 mysql 8.0 too many connections问题 相关操作
– set persist interactive_timeout=600;– set session interactive_timeout=600;– set persist wait_timeout=600;– set session wait_timeout=600;– set persist max_connections=800;– show global variables like “wait_timeout”;– show session variables like “wait_t
2023-04-13 15:17:43
484
原创 spring cloud gateway集成sentinel并扩展支持restful api进行url粒度的流量治理
对于带有@PathVariable的restful接口未作支持,在sentinel中/api/{id}这样的接口,其中/api/1与/api/2会被当做两个不同的接口处理,因此很难去做类似接口的流量治理,但在之后,sentinel团队已经提供了响应的csp扩展依赖,下文将会逐步讲述如何通过sentinel扩展来支持相应的服务流量治理
2023-02-20 16:40:36
1545
9
原创 spring cloud gateway 实现redis动态路由及自动项目路由上报
可以看到,RouteDefinitionRepository继承了两个父接口,分别为RouteDefinitionLocator和RouteDefinitionWriter,RouteDefinitionLocator定义了路由定义获取接口,而RouteDefinitionWriter则定义了路由定义保存更新save接口和删除接口。
2023-02-20 14:37:53
2465
原创 p3c-pmd扩展开发自定义规则
阿里的pmd项目遵循pmd的规范开发,引用了ast的依赖包做ast树的处理,要在此开源项目基础上做扩展开发首先要明白,静态代码检查受限于ast语法树以及代码结构的原因,很难检测关联性比较强的代码,例如:类a使用spring注入的方式获取实例,但该bean是在另一个配置类中,此时pmd如果要检测该实例的相关配置,是很难检测的,pmd主要检测静态代码层面,也就是当前类能看到的东西,如果想要去检测类a的实例的某个属性是否符合规范,是很难的。
2022-10-11 17:31:38
2111
原创 linux 查看所有java进程 内存和cpu使用情况及根据pid查询相关项目命令
1、查看内存cpu使用top-b-n1|grepjava|awk‘{print“PID”$1",mem“$6”,CPUpercent“$9”%“,“mempercent”$10”%"}’2、查看相关pid所对应项目pwdx[pid]
2022-08-01 19:33:49
2206
原创 idea启动报错Internal error. Please refer to https://jb.gg/ide/critical-startup-errors java.util.concurr
Internal error. Please refer to https://jb.gg/ide/critical-startup-errorsjava.util.concurrent.CompletionException: org.picocontainer.PicoRegistrationException: Key com.tang.intellij.lua.luacheck.LuaCheckSettings duplicatedat java.base/java.util.concurrent
2022-07-06 16:53:31
15650
23
原创 redis分页查询代码实现
本人业务开发中遇到了某种需要纯redis做分页查询的操作,但网上百度之后发现千篇一律,完全没有任何系统化东西呈现。故记录下自己想到的处理方式和代码实现。ps:写的不好勿喷,实在是并没有找到对本人实用的东西。需要实现收藏功能,或类似操作连贯性较高的非幂等性操作,且并发较高:上述代码是用于redis的分页数据包装的,业务数据最终包在data参数中。上述代码babybus:首先生成三个key,如下表格所示,先开启一个事务,使所有操作一块执行,然后rank操作首先对collectKey对应的userId的ke
2022-06-27 17:41:21
3374
原创 aop统一日志输出controller出入参及部分参数
aop统一日志输出controller出入参及部分参数/** * @author cy c * @date 2022/5/19 16:28 * 统一日志处理 */@Component@Aspectpublic class LogStdOut { private static final Logger logger = LoggerFactory.getLogger(LogStdOut.class); private final ObjectMapper objec.
2022-05-20 18:15:48
538
原创 获取用户ip (java)
@Componentpublic class IpInfoUtil { private static final Logger log = LoggerFactory.getLogger(IpInfoUtil.class); /** * 获取客户端IP地址 * * @param request 请求 * @return */ public String getIpAddr(HttpServletRequest request)
2022-05-20 18:03:57
1928
原创 恶俗评论敏感词过滤 (可直接拿去用,动态热更新)
恶俗评论敏感词过滤,可直接拿去用,动态热更新过滤算法敏感词库加载及初始化敏感词库的动态热更新bean配置yml配置依赖过滤算法主要是实现一个前缀树的数据结构,项目启动时读取敏感词库并进行预处理化,保存到前缀树中,空间换时间,其中,filter方法为过滤方法。/** * @author cy c * @date 2022/5/17 16:49 */@Componentpublic class SensitiveFilter { private static final Logge
2022-05-20 17:58:02
1220
2
原创 redis缓存一致性延时双删代码实现
1、自定义注解/***@author caoyue*延时双删**/@Retention(RetentionPolicy.RUNTIME)@Documented@Target(ElementType.METHOD)public @interface ClearCache { boolean open() default true;}2、刪除逻辑/** * @author caoyue * @date 2022/4/11 9:55 */@Componen
2022-05-05 16:04:54
2377
原创 sql优化-开启慢sql记录
-- ---------查看是否启用慢查询日志SHOW VARIABLES LIKE '%slow_query_log%'-- ---------设置启动慢查询日志SET GLOBAL slow_query_log = on-- ----------查看慢查询日志输出方式show VARIABLES LIKE '%log_output%'-- -----------修改慢查询日志输出到表中set GLOBAL log_output = 'table';-- -----------------
2022-02-18 17:19:30
794
原创 策略模式极简代码实现,使用function接口减少类膨胀
策略模式极简代码实现,使用function接口减少类膨胀具体实现测试功能具体实现解决策略模式的类膨胀问题可以使用享元模式,这边直接用一个函数式接口解决,废话少说,直接上代码首先是策略注册类,注册类作为策略模式的父类抽象类,只提供获取策略的方法,具体的策略实现方法使用抽象方法交给子类去实现。主要实现如下,使用一个value为函数式接口的hashmap来保存策略方法,map的key作为选择哪一个策略的参数。此demo中声明两个方法,饥饿了就罢工,饱了就干活。init方法中初始化了策略方法的map。策略的
2021-12-29 18:24:17
1825
原创 设计模式-策略设计模式(反射+枚举+策略)
策略设计模式主要是为了减少代码冗余度,通常通过某个方法来决定使用哪个策略类,避免了大量的if else或者switch1、创建父接口,声明要实现的方法/** * 策略父接口 * */public interface StrategyFather { void say();}二、创建策略类,实现该方法,一个中文输出一个英文输出1、中文输出/** * @author cy * @version 1.0 * @date 2021/9/16 13:31 * 中文输出 */
2021-09-16 13:46:45
442
原创 abtest灰度、多版本发布核心算法
前言下面是abtest进行流量分流和保证用户粘性的核心算法代码demo,生产中还需要考虑到指标收集、落库、缓存提高并发,保证高并发高可用高效率。如果需要集成到网关服务springcloud gateway,请结合我的另一篇文章https://blog.youkuaiyun.com/qq_41214487/article/details/119927913?spm=1001.2014.3001.5501首先依旧采用ketemaHash算法,替代默认的hashcode方法,实现分布更加均匀的hash算法:pu
2021-09-13 22:02:01
540
原创 Springboot整合kafka,支持动态调试,参数比较全,包括调优项
只是一个模板,酌情修改依赖:<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId></dependency>配置文件内容(部分为自定义):spring: kafka: producer: #消息发送失败重试次数,默认是int最大值 retri
2021-09-09 22:20:05
2118
原创 docker安装rocketmq4.6.1(精简版)
一、创建文件mkdir -p /usr/local/rocketmq/server/logs/ /usr/local/rocketmq/server/store/ /usr/local/rocketmq/broker/logs/ /usr/local/rocketmq/broker/store/ /usr/local/rocketmq/broker/conf/cd /usr/local/rocketmq/broker/conf/vim broker.conf内容如下:# 所属集群名称,如果节点
2021-09-08 09:58:00
573
原创 一致性hash KetamaHash代码实现(分布式路由算法)及原理分析
KetamaHash代码实现一致性hash(分布式路由算法)及原理分析一致性hash是什么一致性hash作为常见的分布式路由算法,可以很好的实现服务端的负载均衡。用户在请求时通过分布式路由算法打到不同的服务器上,可以保证用户粘性的同时有很好的伸缩性,服务器的增删节点并不会造成大规模的数据移动。一致性hash原理一句话,散列函数,hash越剧烈,散列分布越均衡,这就是一致性hash的本质。简单的hash路由:hash(key)%节点数这种硬hash的方式存在很多问题,如果对节点进行增删,会导致
2021-09-06 15:16:32
1121
原创 logstash配置不同类型日志写到不同索引
前言日志统一规范化方便开发人员查看日志和排查问题,在进行容器化部署时,例如k8s内的日志查询,通常是用于运维层面进行查看日志的,而开发人员需要一套属于自己的日志工具。方案一:普罗米修斯那套,包括洛基(日志收集),Grafana可视化。比较轻量级而且与k8s兼容友好,在此不介绍,自行百度方案二:有钱上收费,类似阿里的sls等方案三:elk,这里介绍elk一、项目开发日志规范首先保证以下几点:1、日志格式json,方便格式化2、运维层面日志清洗阶段3、logstash基于jv
2021-09-02 16:24:42
5614
7
原创 StreamSets启动报错ava.lang.RuntimeException: The permissions of the realm file ‘/root/sdc/conf/form-real
配置文件权限设置有误,不要使用chmod777、chown等进行操作,使用默认权限即可。自记录用-
2021-09-01 15:59:40
628
1
原创 springcloud gateway网关集成abtest(灰度发布、多版本发布)
在大型分布式电商平台中,网关是重中之重,负责所有服务的分发和流量的控制等核心操作,而灰度发布又为企业的商业决策提供数据依据。那么如何通过网关来集成灰度发布呢?下面分步骤介绍,全程干货。
2021-08-26 15:08:30
2480
17
原创 es搜索建议相关(建议词过滤,前缀、中缀匹配等)
目录一、搜索建议介绍文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、搜索建议介绍es中提供了几种suggest搜索建议方式Term Suggester:补全纠错,用户输入错误的情况下返回一个正确的建议 Phrase Suggester:短语自动补全 Completion Suggester:完全补全,fst结构 Context Suggester:根据上下文补全,通常用于对第三种方式的过滤操作对于中文而言,es..
2021-08-02 23:31:16
8152
10
原创 elasticsearch搜索分数自定义以及相关度计算相关
elasticsearch搜索分数自定义以及相关度计算相关一、es通过其score字段对搜索结果进行排序在进行业务开发时通常其默认的分数计算是不符合预期的。最简单的方法是通过boost字段来对每一个字段进行权重设置,来体现该字段的重要性。boost字段会导致分数的计算公式发生改变,boost默认为1例如:GET productinfo/_search{ "_source": ["spuTitle","classifyName"], "query": { "bool": {
2021-07-30 15:24:04
5129
3
原创 nio简单例子
缓冲区底层就是数组用于存储不同的数据类型(boolean除外) //ByteBuffer //CharBuffer //ShortBuffer //IntBuffer //LongBuffer //FloatBuffer //DoubleBuffer/** 上述缓冲区通过allocate方法获取缓冲区* 缓冲区存取数据两个方法是put和get* private int mark = -1;* private int position = 0
2021-04-10 09:53:30
229
原创 FutureTask源码解析(详细)
FutureTask源码解析(详细)首先futuretask实现了Runablefuture接口,此接口声明了run方法,而Runablefuture接口继承了runable和future接口,future接口定义了某些方法比如get获取结果 private volatile int state;//线程执行的状态 private static final int NEW = 0;//创建新线程 private static final int COMPLETIN
2021-04-10 09:43:04
497
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人