- 博客(49)
- 资源 (14)
- 收藏
- 关注

原创 短链接服务
1.短链接是将长连接转化为短连接使得链接变得美观清爽,让用户点击率更高,同时规避原始链接中一些关键词、域名屏蔽等问题,最终利用短链每次跳转都需要经过后端的特性,在跳转过程中做异步埋点,用于效果数据统计2.本系统支持,同一个短链,不同浏览器跳转不同链接地址(如:谷歌,火狐,360浏览器等),不同区域跳转不同链接地址(如:cn,us等),不同系统跳转不同链接地址(如android,ios,windows等),不同平台跳转不同地址(如:手机端,pc端)
2024-12-18 19:25:59
483

原创 大文件秒传,分片上传,断点续传
1.文件通过web端分片多线程上传到服务端,然后web端发起分片合并,完成大文件分片上传功能2.上传过的大文件,实现秒传3.上传过程中,服务异常退出,实现断点续传。
2024-10-28 11:54:43
599

原创 工作实战之系统交互api调用认证设计
系统间接口调用,接口文档及实现,包括api认证授权,包括参数sha256加盐哈希,sign,md5签名,各种手段保证接口调用的安全性
2023-02-23 15:26:33
747

原创 分布式事务原理源码分析(seata)
zh一.TM-RM-TC工作流程图二.详细流程分析1.GlobalTransactionScanner a.TM注册,RM注册,这一步,可以个性化TC的认证,不是所有TM和RM都能注册上来,如果你要做一个类似GTS的分布式事务服务 private void initClient() { if (LOGGER.isInfoEnabled()) { LOGGER.info("Initializing Global Transaction C...
2022-05-26 12:46:33
708

原创 分布式递增序列实现组件starter
一.实现方式1.基于redis实现的递增序列2.基于数据存储过程实现的递增序列3.基于数据库乐观锁实现的递增序列二.测试结果展示1.基于redis实现分布式递增序列a.测试代码package com.zenglx.demo;import com.zenglx.assembly.increasingSequence.api.SequenceGeneratorApi;import org.springframework.beans.factory.annotation.Aut
2021-08-21 18:00:33
391
原创 基于mybatis-plus的多语言扩展
/ 循环注入自定义方法} else {@Override@Getter@Setter/*** 多语言字段*//*** 实体类 => 主键信息*//*** 实体类 => 全部列*//*** 是否多语言*//*** 获取所有的查询的 sql 片段* @param ignoreLogicDelFiled 是否过滤掉逻辑删除字段* @param withId 是否包含 id 项。
2024-05-28 11:08:53
856
原创 TLOG日志框架springboot项目集成与扩展
TLog是一个轻量级的分布式日志标记追踪神器,10分钟即可接入,在我使用的时候,有些不足,所以我自己进行了个性化定制,现在已经在项目中使用。
2023-03-16 16:08:57
2224
2
原创 RPC框架组件openFeign原理解析
OpenFeign是是一个基于Http协议的RPC组件1.如果你以前在工作中经常碰到feign调不通,日志还看不出什么原因2.如果你不知道怎么扩展服务与服务之间的调用feign,服务间的接口签名等3.如果你发现服务与服务间的断路器不起作用,还找不到原因
2023-03-13 16:21:12
1840
原创 工作实战之大文件上传minio
大文件上传,要解决的问题:1.文件太大,请求限制,2.文件太大,耗时太久,连接超时 3.断点续传解决方案:采用分片的方式进行上传前端用百度开源的WebUploader进行分片异步上传后端用minio的putObject上传,composeObject合并,完成大文件的上传
2023-03-10 19:16:46
6611
12
原创 工作实战之代码规范
软件质量的好坏,不仅取决于团队成员的编程能力,更取决于整个项目的代码规范,代码规范包括java代码规范,数据库规范,设计规约等
2023-03-03 14:43:56
516
原创 工作实战之微服务认证实现
白银段位:微服务应用,认证方式springsession+sessionId同步,存在延迟钻石段位:微服务应用,认证方式springsession+redis分布式缓存,存在跨域问题以及CSRF攻击星耀段位:微服务应用,认证方式springsecurity+oauth2,jwttoken方式一、钻石段位springsecurity+springsession+redis缓存。星耀段位:微服务应用,认证方式springsecurity+oauth2+jwttoke
2023-03-02 14:29:45
483
原创 工作实战之xss攻击防范
跨站脚本攻击(全称Cross Site Scripting,简称为XSS)是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代码会被执行,从而达到恶意攻击用户的目的,知其原理才能知道解决方法,但是如果过滤不全,也可能被绕过。
2023-02-24 11:05:08
1253
原创 springboot 自动注入源码分析spring.factories
黄金了解spring.factories自动装配,铂金自己写starter实现自动装配,知道加一个spring.factories然后配置一个@Configuration配置类,星耀知道加载全过程
2023-02-21 16:58:17
743
原创 mybatis扩展mybatis-plus原理剖析
mybatis-plus源码分析,在mybatis的基础上通过解析mapper注解类的方式给mapper接口代理对象增加select,update,delete,insert,selectById等方法
2022-09-26 11:32:55
1253
原创 springboot集成mybatis原理分析
springboot集成mybatis源码分析,解决在开发过程中,mapper对象没有注入,项目启动异常等问题
2022-09-22 16:57:44
1003
1
原创 mybatis源码分析
mybatis源码分析,分析配置文件如何加载到configuration对象,mapper接口,如何通过动态代理生成对象,完成对数据库的操作
2022-09-21 15:55:41
265
原创 xxl-job源码解读(执行器注册调度器)
a.ExecutorRegistryThread,内部启动一个线程registryThread。2.toStop在程序关闭的时候,注销注册的执行器,以免后续调度器调用无效执行器。b.服务端,接收到http请求,将注册信息,存入到数据库,供后面,调度器调度。1.setDaemon(ture)为守护线程,程序关闭不受影响。
2022-09-16 18:02:17
1250
原创 脱敏组件start
一.文章结构1.敏感数据页面上部分显示,可以基于web拦截器返回前端前做修改,也可以基于mybatis拦截器在查询出来后做修改2.项目集成(开箱即用,maven引入,返回类上加注解)3.项目demo测试4.实现原理剖析(自定义注解,mybaits拦截器使用,java反射的使用)5.源码下载二.项目集成1.maven引入<dependency> <groupId>com.zenglx.assembly</groupId&g
2021-08-24 20:44:11
301
原创 分布式页面防重复提交组件start
一.文章结构1.页面防重复提交实现方式(按钮置灰治标不治本,主键判断高并发下失效,基于redis单线程实现)2.项目集成(开箱即用,maven引入,方法加注解)3.多线程快速点击结果展示4.实现原理剖析(自定义注解,spring的aop拦截,redis的setNx的使用)5.源码地址下载二.防重复提交组件集成1.maven引入 <dependency> <groupId>com.zenglx.assembly</gr
2021-08-23 14:42:49
209
原创 前后端数据传输加密(一)
1.AES对称加密 a.前端加解密<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>/*** 加密**/functionencrypt(value,key) { var tempValue = JSON.stringify(value); var tempKey = CryptoJS.enc.Utf8.parse(key); var...
2021-03-31 09:50:18
10785
原创 spring zuul上传大文件处理
上传大文件经过zuul网关,包head space内存溢出处理方式有两种1.在application.yml配置中增加file-size-threshold: 20MBspring: application: name: zuul-gateway servlet: #spring boot2.0之前是http multipart: enable...
2020-03-16 17:11:52
2669
原创 spring 工具 StopWatch 调试性能问题
/* * Inc. * Copyright (c) 2000-2019 All Rights Reserved. */package com.aspire.zenglx.project.util;import org.springframework.util.StopWatch;/** * @author zengliangxi * @version $id:StopWat...
2019-11-21 16:56:11
507
原创 springboot项目配置文件密码 密文
1.maven依赖<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</version>...
2019-11-21 16:43:01
1210
原创 redis实现防重复提交
前端重复提交的解决方案1.按钮置灰解决重复提交问题,不是很靠谱可绕过前端2.后台业务控制,增加代码量,增加业务逻辑复杂度3.使用redis分布式锁(setnx)解决下面我们用aop使用第三种方式解决,可以做到比较通用1.定义注解@Target({ElementType.PARAMETER, ElementType.METHOD})@Retention(Retention...
2019-07-30 10:06:02
1846
原创 springboot2.0与百度开源分布式id生成器UidGennerator集成
UidGenerator 由百度开发,是Java实现的, 基于 Snowflake算法的唯一ID生成器。UidGenerator以组件形式工作在应用项目中, 支持自定义workerId位数和初始化策略, 从而适用于 docker等虚拟化环境下实例自动重启、漂移等场景下面来看怎么在项目中集成:代码结构如下图1.https://github.com/baidu/uid-generato...
2019-07-27 14:24:06
1284
1
原创 springboot2.0与quartz的集成实现分布式高可用,多个调度器模式
本文完成了springboot2.0与调度工具quartz的集成,完成高可用,将状态保存到数据initialize-schema: never这个有三个值,有兴趣的可以去查一下,是关于在数据库中创建quartz表的配置 在项目启动时,将配置文件的job加入到调度服务里面,同时调度服务把它记录到数据库中,然后任务在触发点执行,调度服务回去修改相应状态,通过数据库锁的机制,完成分布式...
2018-12-19 09:51:04
3022
6
原创 linux 应用启动脚本
LOG_FILE=/start/jenkins.log #需要修改 1.启动日志文件APP_NAME=jenkins #需要修改 2.应用名称pid=`ps -ef | grep $APP_NAME | grep -v grep | tr -s " "|cut -d" " -f2 `start(){ if [ -n "$pid" ];then echo -e "$APP_N...
2018-11-30 14:19:00
570
原创 VMware Workstation 12 Pro 本机与虚拟机连接设置
1.设置网络连接 2.配置虚拟网络3.设置本机ip4.将虚拟机ip设置为
2018-11-28 09:39:40
1106
原创 数据权限控制
界面用户通过浏览器访问系统,传递查询参数 查询参数经过控制层,aop组件对参数进行拦截,读取redis缓存中的数据权限数据,进而对参数进行重新组装。 从新组装的查询参数传递到业务处理层。 业务处理层将查询参数传递到数据访问层。 Sql分析组装组件对查询sql和查询参数进行从新拼接。 从新拼接的sql对数据进行查询。 新的查询sql查询出来的数据从数据库到数据访问层。 数据权限过滤的数...
2018-08-28 10:18:01
4170
原创 Elasticsearch 在项目中的实战(三)
.1 安装数据库同步程序将原有项目数据库数据和ES库连接同步,此处用到工具elasticsearch-jdbc1.安装数据库同步服务 elasticsearch-jdbc将elasticsearch-jdbc-2.3.4.1.zip解压到/opt/aspire/product/search/(解压指令unzip)解压考指令(不包含端口修改等操作):cd /opt/aspire/product/s...
2018-05-28 13:50:10
2020
原创 Elasticsearch 在项目中的实战(二)
1.下载elasticsearch-head ES head下载链接2.安装elasticsearch-head a.安装node.js b.unzip elasticsearch-head-master.zip3.进入elasticsearch-head-master目录 执行 npm install 运行 npm run start4.配置 elast...
2018-05-28 11:37:02
936
原创 Elasticsearch 在项目中的实战(一)
1.下载安装elasticsearch ES下载地址2.在linux环境中解压 文件 unzip elasticsearch-5.5.2.zip3.打开ES所在目录,修改$ES_HOME/config/elasticsearch.yml, 找到network.host:字样,将后面的IP修改为服务器的内网IP:# ---------------------------------- Netwo...
2018-05-28 11:13:04
2850
原创 Elasticsearch 在项目中的实战(大纲)
1.下载安装elasticsearch2.下载安装elasticsearch-head插件,图形化界面操作3.将原有项目数据库数据和ES库连接同步,此处用到工具elasticsearch-jdbc4.将查询或操作的数据源切换到ES库...
2018-05-28 10:57:07
2427
maven插件实现代码检查格式化
2023-03-03
设计规约架构师成长之路
2023-03-03
mysql数据库规范拥抱易读数据库脚本
2023-03-03
java开发规范拥抱易读代码
2023-03-03
认证鉴权starter
2023-02-23
redis-3.0.6.tar.gz和redis-desktop-manager-0.8.8.384_.zip
2018-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人