自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 Activiti,Apache camel,Netflex conductor对比,业务选型

Activiti,Apache camel,Netflex conductor对比,业务选型。

2023-11-18 10:39:34 698

原创 Activiti6接入Camel

Activiti6接入camel。

2023-11-18 10:37:52 84

原创 apache camel 执行过程源码解析

apache camel 执行过程源码解析。

2023-11-18 10:36:31 86

原创 多租户限流

多租户限流

2023-01-12 15:24:56 462 1

原创 业务报警维度记录

做项目肯定要针对核心项目做告警,及时发现。特此记录下项目告警的维度 告警来源 告警规则 建议配置 等级 是否配置 基础设施 CPU利用率 > 70% (多核百分比) WARING

2022-01-11 22:34:02 360 1

原创 sentinel流量统计核心代码-滑动窗口

/** * Get the window at current timestamp. * * @return the window at current timestamp */ public WindowWrap<T> currentWindow() { return currentWindow(TimeUtil.currentTimeMillis()); } /** * Get win...

2021-12-03 14:50:41 426

原创 redisson链接数被打满

1.背景:redis集群: 腾讯云redis单节点云缓存服务-32G:8 分片/4GB/1 副本客户端: redisson-3.15.0 集群模式现象: redis服务端8万连接数打满,重启服务后连接数依然逐渐被打满, 打满后后续请求全部连接失败业务监控抛出大量异常2.问题解决 2.1 怀疑是网络问题:联系运维查询反馈网络没问题, 2.2 怀疑是代码问题:系统运行一段时间,最近没有相关发布代码,重启服务,过了一段时间依旧打满 2.3 从日志中看...

2021-12-01 18:40:28 1972

原创 业务服务建模经验

概述此处的“服务”主要指业务服务,中间件服务的设计大体一致,但是侧重点会稍有不同。我们将从以下几点描述一个规范的业务服务设计需要包含的内容: 业务场景分析; 业务领域分析; 业务领域建模; 系统间交互链路设计; 系统内处理流程设计; 系统内关键算法设计; 系统接口设计; 系统数据表设计; 系统非功能设计:高可用性、高性能、安全性、伸缩性、弹性、可扩展性、可测试性、可观测性等; 服务设计原则原则一:端到端业务

2021-11-29 16:43:41 230

原创 全链路压测的大概思路

1.梳理核心接口2.梳理接口哪些不能压测:比如短信,可以降级3.最好梳理下业务用到的中间件:mysql,redis,mq降级过程需要观察相关中间件指标4.数据的mock,尽量真实5.一定要确认好,第三方依赖能不能接收压测流量6.测试环境要和线上环境一致,包括依赖的相关服务7逐步平滑加压8.jemter写压测脚本时机首先要清楚的一点就是,什么时候开始做全链路压测?我们有另外一个业务线,现在就没有打算做,那个业务线的日均单不到十万,而要压测的业务线的日均单到了200万..

2021-11-29 16:39:20 249

原创 TIDB问题记录

①不支持分区,删除数据是个大坑。 解决方案:set @@session.tidb_batch_delete=1;②插入数据太大也会报错 解决方案:set @@session.tidb_batch_insert=1;但是需要注意的是set @@session.tidb_batch_insert=1;set @@session.tidb_batch_delete=1; 虽然一次插入、删除的记录变多了,但是它会破坏事务。底层的原理是将这批大数据切分成一小段一小段,每一...

2021-11-29 16:35:30 1528

原创 低代码平台建设经验总结

文章目录前言 一、低代码平台简介 二、架构设计 1.架构图 2.内容详解 3.有趣的问题 总结前言在某卖菜公司做低代码平台开发接近2年,收获了很多,踩了很多坑,现在做个年终总结和经验设计分享。欢迎指正一、低代码平台简介网上开源的低代码平台大家自行搜索,我们服务和其他公司的不一样,我们主要是服务于公司内部要求,其核心功能主要包括1.快速创建微型项目,降本增效2.构建业务模型为上游提供服务3.接入业务系统需求4.提供统一的数据管控...

2021-11-24 15:45:39 2435 1

原创 批量任务后端如何平滑处理

上游系统批量提交任务场景下,如果做流量整形,监控,数据一致性,时效性等落地方案

2021-11-20 10:58:59 1149

原创 消息消费者降级告警应用

背景:因为项目需要异步接受各方的mq消息进行发起流程/完成任务等操作。但是发起流程因为业务逻辑较重,在并发tps很高的时候容易导致mysql竞争激烈(分库分表逻辑需要优化),进而导致消费速率跟不上生产速率,导致mq消息积压。所以要针对这种情况进行监控-告警-降级方案:详细介绍1.消费速率怎么统计2.获取rabbitmq队列积压数量3.是否进入同步队列算法4.定时任务轮询存在的问题,以及如何优化5.数据库的数据消费速率设置多少合适...

2021-11-13 16:29:19 5706

原创 reactor初探

一。背景:因为要做一个内存的流程引擎,调研了下spring5 提供的reactor project,特整理下相关的知识点二。知识点:响应式包括:controller,service,dao,redis,webclient,db,mq各个层面的响应。有一方不是响应式则背压机制失效,就能称之为响应式开发一。响应式宣言所谓回弹性指的是系统在出现失败时,依然能够保持即时响应性;而弹性则是指的系统在各种请求压力之下,都能保持即时响应性。二。Spring WebFlux

2021-09-26 15:28:49 506

原创 流程业务监控设计一览

初衷:为了流程开放平台的高可用,可监控,快速报警,人员快速响应问题解决,更重要的就是用户体验,因为你app的响应时间很大程度影响用户喜好,所以我们项目对监控内容作了详细划分监控工具:cat打点,granafa监控配置,运维监控报警平台监控分类一.系统层监控这一块基本不用业务开发设计,目前的cat,zabbx等都提供基础监控:gc,redis,mysql,io,带宽等等二.业务监控1.接口响应时间监控,报警频率不需要每次超过阙值就报警,一般超过阙值的频率10/s就需要报警2....

2021-03-28 23:09:09 545

原创 activti实际使用

目录: activiti6内容解析 流程中心如何建设 一.内容解析 1.快速入门网址:https://blog.csdn.net/qq877507054/article/details/60143099 2.核心步骤: 画流程图->生成bpmn文件(ACT_GE_BYTEARRY) 部署流程图->生成流程定义(每次修改流程图部署都会产生新版本ACT_RE_PROCDEF)...

2021-03-21 21:39:08 426 1

原创 Activiti6.0节点驳回,自由跳转核心代码

//获取流程定义Process process = repositoryService.getBpmnModel(processDefinitionId).getMainProcess();//获取目标节点定义FlowNode targetNode = (FlowNode) process.getFlowElement(flowElementId);List<Execution> executionList = runtimeService.createExecutionQuery(..

2021-03-08 15:29:49 716

原创 activiti6节点跳转设计

简介:工作流开发过程中,因为国内的需求变态原因,会有流程图节点任意跳转的需求一.普通的流程跳转设计因为普通流程只需要根据连线进行节点跳转就行直接贴代码: //获取流程定义 Process process = repositoryService.getBpmnModel(processDefinitionId).getMainProcess(); //获取目标节点定义 FlowNode targetNode = (FlowNode)

2020-12-08 13:34:39 898 2

原创 netty内存知识整理

1.ByteBufapi: read ,write,set,mark,resetbyteBuf分类图:1.pooled和u'npooledpooled:从预先分配好的内存中分配,unpooled:每次申请新内存 就是池化和非池化的区别2.unsafe和非unsafeunsafe:可以直接拿到jvm的内存,依赖jdk的unsafe ( JDK的rt.jar包中的Unsafe类提供了硬件级别的原子性操作,Unsafe类中的方法都是native方法 )其实...

2020-11-19 15:52:26 187

原创 netty学习笔记整理一基础篇

一:.netty组件:服务端启动过程:通过jdk创建channel并包装为自己的channel -> init初始化channel->注册selector ->dobind()往jdk注册一个op-accept实现就可以开始接受消息了 1.NioEventLoopGroup 相当于serversocket接受连接bossgroup,传输消息的功能workgroup, 其实就是线程池管理NioEventLoop 2.NioEventLo...

2020-11-18 16:57:09 229

原创 activiti6.0获取流程节点信息返回,并获取网关上的变量

响应实体类:package com.ddmc.workflow.response.activiti;import lombok.Data;import lombok.Getter;import lombok.Setter;import java.io.Serializable;import java.util.ArrayList;import java.util.List;import java.util.Set;@Datapublic class BpmnModelResp

2020-07-01 17:21:28 1555

原创 activit6.0使用经验

最近在做公司B端业务,要用到工作流,上一篇文章记录了技术调研的结果,现在开始记录使用时的架构设计和常见的问题:一:架构体系:我们考虑到扩展性,易用性,隔离性,动态性,把表单和审批人设置的功能都拆成了单独的服务所以我们的工作流审批模块主要包括:1.原生的activiti6引擎:负责流程流转2.外置表单服务:流程部署后根据流程实例设置所有节点的表单,流程启动时通过外置表单引导用户填写信息3.用户节点服务:流程部署后根据流程实例设置所有的节点的用户组,在任务节点开始通过监听器到用户服务获取该节

2020-06-16 14:40:37 360

原创 activiti6.0工作流功能总结

工作流知识: 我们主要使用场景一个是OA,一个是ESB接口流程编排 一.选型:activiti6.0 原因:1.比较稳定 2.集成springboot 3.相比于flowable缺少一些高级功能目前用不到,也更加复杂,但是activiti6可以升级为flowable,而且学习文档比较多 二.接口和表: RepositoryServic...

2020-06-03 11:44:48 957 1

原创 记录透传日志功能设计代码(升级版本)

使用方法: 在controller上增加 注解@AutoLog 支持多个实体,类属性上增加@AutoLogField注解:(为什么只支持controller因为是基于HandlerInterceptor做的,如果要支持service也可以,需增加MethodInterceptor)原理:配置相关注解以后,第一次请求时会自动把相关字段存字典表,设置了缓存,减少请求次数,如果后续请求参数增加属性需要入库需要执行插入sql插入mysql举例:RequestVo增加了一个字段 nam...

2020-05-27 19:30:19 258

原创 幂等注解实现

业务需求:有些前端,或者第三方的接口请求要实现幂等操作,考虑到节省开发时间,做了一个可配置的幂等注解先说明基本的实现原理和优缺点,后面直接贴代码:原理:1.通过自定义注解配置幂等参数:唯一主键,过期时间;2.通过HandleInterceptor拦截请求方法和注解参数,进行校验3.根据唯一主键,主键的值,过期时间,请求url来生成唯一token存redis。后续重复请求判断redis是否已经存在key。如果redis存在则说明已经执行过了(不管执行失败还是成功都算)优点:.

2020-05-18 19:08:38 844

原创 每天一道算法:leetcode:和为K的子数组

package com.myproject.demo.算法;import java.util.HashMap;import java.util.Map;//给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。//// 示例 1 ://////输入:nums = [1,1,1], k = 2//输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。////// 说明 :////// 数组的长度为 [1, 20,000]。// 数组中元.

2020-05-15 16:10:30 206

原创 每天一道算法:二叉树的层序遍历

package com.myproject.demo.算法;import java.util.ArrayList;import java.util.List;import java.util.Queue;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.LinkedBlockingQueue;/** * 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节.

2020-05-14 09:44:47 111

原创 每天一道算法:15. 三数之和

package com.myproject.demo.算法;import com.sun.tools.javac.util.ArrayUtils;import org.apache.lucene.util.CollectionUtil;import org.elasticsearch.common.util.CollectionUtils;import java.util.*;/** * 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a.

2020-05-12 14:37:05 127

原创 每天一道算法;leetcode 50. Pow(x, n)

今天题目简单直接上代码package com.myproject.demo.算法;/** * 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 * <p> * 示例 1: * <p> * 输入: 2.00000, 10 * 输出: 1024.00000 * <p> * 示例 2: * <p> * 输入: 2.10000, 3 * 输出: 9.26100 * <p> * 示例 3: * <p&gt

2020-05-11 13:19:27 175

原创 算法加餐个简单题-x的平方根

package com.myproject.demo.算法;/** * 实现 int sqrt(int x) 函数。 * <p> * 计算并返回 x 的平方根,其中 x 是非负整数。 * <p> * 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 * <p> * 示例 1: * <p> * 输入: 4 * 输出: 2 * <p> * 示例 2: * <p> * 输入: 8 * 输出: 2.

2020-05-09 17:55:00 118

原创 每天一道算法:leetcode 221. 最大正方形

package com.myproject.demo.算法;/** * 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 * <p> * 示例: * <p> * 输入: * <p> * 1 0 1 0 0 * 1 0 1 1 1 * 1 1 1 1 1 * 1 0 0 1 0 * <p> * 输出: 4 * * @author yuJie * @since 2020/5/8 */pub.

2020-05-09 17:53:27 93

原创 每日一道算法:leetcode 236. 二叉树的最近公共祖先

package com.myproject.demo.算法;/** * 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 * <p> * 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” * <p> * 例如,给...

2020-05-07 13:39:09 139

原创 每日一道算法题:leetcode 983. 最低票价

package com.myproject.demo.算法;import java.util.HashSet;import java.util.Set;/*** * * 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 * * 火车票有三种不同的销售方式: ...

2020-05-06 19:21:31 200

原创 leetcode98题 二叉搜索树校验

package com.myproject.demo.算法;/** * 二叉搜索树校验 * <p> * 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 * <p> * 假设一个二叉搜索树具有如下特征: * <p> * 节点的左子树只包含小于当前节点的数。 * 节点的右子树只包含大于当前节点的数。 * 所有左子树和右子树自身必须也是二叉...

2020-05-05 15:53:37 133

原创 Spring源码阅读过程遇到的知识点整理

1. 如果希望一个类中@bean注入的类在外部类初始化之前初始化可以用static修饰2. BeanFactoryPostProcessor在bean实例化之前执行,之后实例化bean(调用构造函数,并调用set方法注入属性值),然后在调用两个初始化方法前后,执行了BeanPostProcessor。初始化方法的执行顺序是,先执行afterPropertiesSet,再执行init-metho...

2020-04-25 22:24:06 120

原创 spring事务和mysql事务的实现原理和一些问题解答

问题列表:1.spring事务是怎么实现的?2.有人说开启了事务的方法就不会有多线程问题对不对?3.mysql如何实现事务的acid的?4.mysql在满足数据的事务特性又做了哪些设计来提高并发?下面我针对这几个问题谈谈自己的理解:1.spring事务是怎么实现的首先大家都知道spring事务是使用的aop来实现的,那spring容器又是怎么设计的,他是通过bea...

2020-04-04 22:04:20 504

原创 Redis的底层数据结构(转载)

Redis 中有各种自定义的数据结构,来实现了各种功能,下面一一进行说明。简单动态字符串SDSRedis 没有直接使用 C 语言的字符串,而是构建了自己的抽象类型简单动态字符串(simple dynamic string)。在 Redis 中,对于所有键,都是字符串类型,其底层实现是 SDS,而键值对的值,其实最终都是以字符串为粒度的,底层都是 SDS 实现。(比如列表,其...

2020-03-31 20:14:20 88

原创 欧创新《DDD实战课》一颗阅读整理

本文是阅读《DDD实战课》一刻的读后整理原文(原文可到极客时间自行购买)一基础篇:DDD 的核心知识体系:正在上传…重新上传取消2.DDD的设计思路: 1.战略设计主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,限界上下文可以作为微服务设计的参考边界。2.战术设计则从技术视角出发,侧重于领域模型的技术实现,完成软件开发和落...

2020-03-29 19:06:54 5420

原创 二叉最优搜索树java实现

package com.bysj.common.算法.动态规划;/*** 二叉最优搜索树使用场景:** 现在我有一张英文单词的文章,我要根据字典翻译为中文,所以我先要把字典构造成一个二叉最优搜索树,其中有的字搜索频率很高比如:草,爱,做等* 所以我先给每个字定义一个频率q,这样每次搜索一个字的时候所需要的消耗就是pi*(depth{ki}+1){算法导论有论证};现在我们要构造一个遍...

2020-03-11 22:36:50 579

原创 linux服务器 cpu性能问题知识点,常用查询和解决方法

一,基础知识:1.平均负载:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数{所谓可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU 的进程,就是我们常用 ps 命令看到的,处于 R 状态的进 程。不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps ...

2020-03-09 23:11:01 299

空空如也

空空如也

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

TA关注的人

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