自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (9)
  • 收藏
  • 关注

原创 OpenResty,Nginx实现接口验签与黑名单控制

openresty,nginx,接口验签

2024-04-11 15:19:25 563

原创 rabbitmq死信交换机,死信队列使用

对于核心业务需要保证消息必须正常消费,就必须考虑消费失败的场景,rabbitmq提供了以下三种消费失败处理机制。

2024-04-02 17:53:34 673 1

原创 oracle分区范围修改与数据迁移处理

由于对应用上线后流量越来越大,原来的按年自动分区性能跟不上,因此决定改成按月自动分区,同时将原有分区数据重新迁移到新的分区。

2024-01-29 20:11:12 532

原创 googlecode.log4jdbc慢sql日志,格式化sql

无论使用原生JDBC、mybatis还是hibernate,使用log4j等日志框架可以看到生成的SQL,但是占位符和参数总是分开打印的,不便于分析,显示如下的效果:googlecode Log4jdbc 是一个开源 SQL 日志组件,它使用代理模式实现对常用的 JDBC Driver( Oracle , Derby , MySQL , PostgreSQL , H2 ,等)操作的拦截,记录真实 SQL ,可以将占位符与参数全部合并在一起显示,方便直接拷贝 SQL 在 MySQL 等客户端直接执行,加

2024-01-04 21:06:48 700 1

原创 java生成自定义长度的唯一随机字符串

java生成自定义长度的唯一随机字符串

2023-10-13 16:20:04 355

原创 基于redisson实现注解式分布式锁

redisson注解式分布式锁

2023-10-12 15:08:24 445

原创 双因子认证,TOTP动态口令认证

TOTP:Time-based One-Time Password写,基于对称密钥与时间戳算法的一次性认证码。时间同步,基于客户端的动态口令和动态口令验证服务器的时间比对,默认每30秒产生一个新口令,要求客户端和服务器能够十分精确的保持正确的时钟,客户端和服务端基于时间计算的动态口令才能一致。算法安全的核心在于密钥 , 每个人通过对应账户生成的密钥是不同的 . 当他们用同一个算法加密时 , 会生成不同的随机密码,认证时客户端需要使用阿里身份宝,Goole 身份验证器等工具生成认证码。

2023-06-25 11:36:57 1326

原创 springboot mybatis-plus慢sql输出日志,log4jdbc使用

无论使用原生JDBC、mybatis还是hibernate,使用log4j等日志框架可以看到生成的SQL,但是占位符和参数总是分开打印的,不便于分析,显示如下的效果:Log4jdbc 是一个开源 SQL 日志框架,它使用代理模式实现对常用的 JDBC Driver( Oracle , Derby , MySQL , PostgreSQL , H2 ,等)操作的拦截,记录真实 SQL ,可以将占位符与参数全部合并在一起显示,方便直接拷贝 SQL 在 MySQL 等客户端直接执行,加快调试速度。

2023-06-25 10:10:58 1829

原创 springboot openfeign Sentinel统一降级处理

提供默认的降级方式,若openfeign未指定FallbackFactory则走默认降级方式,否则就走自定义的FallbackFactory降级。此种方式太过于麻烦,每一个方法都要写一个降级逻辑,并且降级逻辑大多是雷同的。

2023-06-09 10:15:02 1651

原创 springboot2.6.3整合knife4j 3.0.3

maven打包需指定profile,如mvn clean package -Pdev -Dmaven.test.skip=true。搭建knife4j在线接口文档,并且支持在线调试,下载接口文档到本地,直在dev环境引入knife4j依赖,其余环境不引入。2. dev 配置文件配置。

2023-06-02 22:55:46 404

原创 Arthas分析方法耗时,java方法耗时过长分析

碰到服务器部署的服务响应过慢我们通常可以通过类似skywalking与sleuth+zipkin的链路追踪技术来分析方法调用链路耗时情况,但有时候服务没有集成链路追踪那就得另谋犀径了,最近在工作中就碰到了此种情况,最终使用阿里巴巴的Arthas来分析,这里记录下详细过程。

2023-05-05 22:53:06 1671 1

原创 java内存占用过大分析,mat内存快照分析

MAT(java memory analyzer tool)是一款基于eclipse免费开源的java内存分析工具,可以用来分析java堆栈溢出,大对象排查等。

2023-04-27 21:30:37 1577

原创 java方法耗时统计,JavaAgent javassist bytebuddy统计方法耗时,jvm监控prometheus

JavaAgent,bytebuddy,prometheus,jvm

2022-12-18 12:09:30 1561 1

原创 springcloud日志链路追踪,Zipkin,Spring Cloud Sleuth

springcloud日志链路追踪,Spring Cloud Sleuth,Zipkin

2022-11-09 22:44:57 720

原创 idea使用fiddler抓包分析,fiddler抓取https

idea使用fiddler抓包分析,fiddler抓取https

2022-09-24 15:26:24 2339

原创 接口幂等性探讨

接口幂等性

2022-09-01 23:27:34 264

原创 vue css实现走马灯(轮播)组件,websocket推送数据

vue走马灯组件

2022-07-25 15:32:33 1597

原创 nginx kafka flink mysql用户操作日志统计

https://zhuanlan.zhihu.com/p/348877559

2022-04-29 23:15:47 4533 2

原创 flume+kafka+flink+mysql实现nginx数据统计与分析

https://juejin.cn/post/6937988947498762270

2022-04-20 20:08:49 6476

原创 jenkins自动化打包部署,jenkins执行sh脚本不退出问题

介绍Jenkins是开源软件项目,主要用来自动化打包部署。使用jenkins彻底告别手动部署的麻烦与繁琐。安装部署jenkins官方下载地址启动jenkins war包登入jenkins设置maven,jdk由于jenkins机器已有Maven与jdk,这里直接设置对应安装路径即可项目构建与部署设置应用部署目标服务器配置远程服务器ssh登录设置密码与超时时间新增maven项目输入项目名称,类型设置代码库,这里我使用的是svn设置编译脚本点击高

2022-03-09 10:23:55 2084 1

原创 webflux webclient DataBufferLimitException: Exceeded limit on max bytes to buffer

org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer

2022-02-24 15:41:14 1072

原创 webflux切面拦截权限,webflux整合aop,webflux获取request

背景在springboot+tomcat应用中获取request可以使用RequestContextHolder.getRequestAttributes()的方式来获取,此种方式的核心在于request所在容器被放在threadlocal中,但是webflux结合netty项目却不能这么使用,因为webflux是异步响应式的。...

2021-12-24 18:04:32 6277 1

原创 java实现表锁行锁

分段独占锁public class SegReentrantLock{ private List<Lock> lockList; public SegReentrantLock() { this(10); } public SegReentrantLock(int size) { if (size < 1){ throw new IllegalArgumentException("size mus

2021-12-20 21:07:12 2046

原创 java修改配置不重启,java运行时修改应用数据,通过jmx修改应用运行数据

背景运行中的应用修改了配置后应用能生效有多种解决方案,比如:配置存入redis中修改了配置文件后按时检测配置文件是否被修改,被修改则读取修改后的内容下面介绍springboot工程通过jmx动态修改配置不停机的方式来管理配置文件,此种方式使用简单,而且实时生效,没有延迟。知识普及jmx MBean:所有被MBeanServer管理的资源,提供了访问接口,可通过RMI或HTTP访问实现功能动态修改应用的浏览器黑名单实现过程编写MBean类编写浏览器黑名单类,将其注册到MBean

2021-11-10 09:02:41 1010

原创 jconsole远程监控认证,java远程监控,jmx监控应用,jmx ssl配置,jconsole ssl连接远程应用

知识普及jmxJMX(java Management Extensions)是一个Java平台的管理和监控接口。任何程序,只要按JMX规范访问这个接口,就可以获取所有管理与监控信息,jconsole与Java VisualVM等常见监测工具都是基于jmx,JMX不但可以用于管理JVM,还可以管理应用程序自身。JMX把所有被管理的资源都称为MBean(Managed Bean),MBean全部由MBeanServer管理,如果要访问MBean,可以通过MBeanServer对外提供的访问接口,例如RMI

2021-10-15 11:49:20 1464 1

原创 java制作带有logo的二维码,解决zxing中文乱码

目标使用谷歌zxing生成带有logo二维码使用便捷方式解决二维码中文乱码问题过程下载依赖:maven坐标:<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version></dependency>编写java代码生成二维

2021-08-05 14:25:16 628

原创 jmeter生成优美的压力测试报告,jmeter生成html压测报告,jmeter压力测试

在jmeter bin目录使用如下命令将测试报告转成htmljmeter -g B:\projects\xx\Mes\压力测试\jmeter数据\报告\tsp签名压测报告.jtl -e -o B:\projects\xx\Mes\压力测试\jmeter数据\报告\html\tsp签名压测报告说明:-g 指定已存在的测试结果-o 指定测试报告的存放位置,指定的文件夹必须是不存在的,否则执行失败-e:测试结束后,生成测试报告...

2021-06-24 22:46:58 1895 1

原创 java实现数据持久层框架,自定义实现数据持久层框架,兼容spring,兼容spring事务管理

完整代码:https://gitee.com/tandatda/smpedr使用完整demo:https://gitee.com/tandatda/demo-edr-smpdb

2021-06-11 11:57:10 1494 2

原创 手写java数据库连接池,自定义实现数据库连接池,兼容springboot

一、目标 用精简的代码实现一个类似于Hikari,Druid一样的数据库连接池。

2021-06-10 22:45:40 973 1

原创 mysql数据类型所占空间大小

官方文档:https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html

2021-06-06 10:38:42 709

原创 java修改字节码技术,Javassist修改class,ASM修改class

背景: 项目使用的Logback 1.1.11版本的类ch.qos.logback.core.rolling.helper.RollingCalendar的periodBarriersCrossed方法long转换成int发生溢出,导致日志无法删除,最终决定在不升级logback版本的前提下使用java修改字节码技术修复此bug。1:ASM直接修改字节码:<dependency> <groupId>asm</groupId>...

2021-05-24 11:46:17 1669

原创 logback1.1.11日志无法自动删除

logback的类ch.qos.logback.core.rolling.helper.RollingCalendar的periodBarriersCrossed方法long转换成int发生溢出,导致最高位变为1,成为了负数。最新版本已修复此bug, maven依赖如下:<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artif

2021-05-22 14:44:15 1025 2

原创 mysql InnoDB 聚集索引,二级索引

InnoDB索引分为聚集索引(聚簇索引)与二级索引。聚集索引:1: 全表唯一且必有一个,主键索引属于聚集索引。2: 索引项的顺序就是表中数据记录的物理顺序。3: 若定义了主键索引InnoDB则使用主键索引当做该表的聚集索引,没有主键索引则使用第一个非空的唯一(UNIQUE)索引作为聚集索引,二者都没有则自动创建一个6字节的自增隐藏列作为聚集索引,此列包含了每一行的自增row ID,此聚集索引名为GEN_CLUST_INDEX,按此rowID排序的行在物理上按插入顺序。二级索引:除..

2021-05-16 18:54:22 424

原创 spring事务提交回滚原理mybatis版

sping事务非常简单好用,不用手动提交回滚事务,比如下面代码将2个更新操作一同提交,一同回滚。上述代码基本没有任何有关jdbc事务的操作,但却能将2个数据库更新操作同时提交与回滚,这是个值得思考的问题。通过思考并查阅spring源码与资料,得出以下结论:1: 图中2个更新操作中,mybatis两次更新以及spring回滚与提交过程中获取的是同一个jdbc connection,connection是保存在ThreadLocal中。2: 提交与回滚操作是spring通过事务拦截器+代理方式.

2021-04-18 21:31:41 781

原创 mysql批量更新,批量插入之replace语句/insert into... on duplicate key update语句

先说结论:1:如果业务逻辑强依赖自增ID,建议不要用REPLACE2:replace语句当存在主键冲突的时候是先DELETE再INSERT,无冲突直接进行insert3:当存在唯一索引冲突的时候是直接UPDATE,UPDATE操作不会涉及到AUTO_INCREMENT的修改4:很大程度上会导致主备中断,存在容灾风险使用语法:1:如果给定行数据不存在,那么MySQL REPLACE语句会插入一个新行(是否存在以UNIQUE索引或PRIMARY KEY为准),不存在则删除旧行,插入新行

2021-04-18 00:12:49 3608

原创 mysql Communications link failure druid

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failurespring: datasource: druid: test-on-borrow: true test-on-return: trueHikariCP

2021-04-13 16:58:12 1318

原创 解析性语言与编译性语言优劣对比

高级编程语言分为解析语言和编译性语言,各自代表有Js,python 以及c/c++,golang等,java某种意义上说既是解析语言也是编译性语言。以下是解析语言与编译性语言的一些优劣对比:1:效率 编译比解析方式可能会取得更高的效率。一般情况下,在解析方式下允许程序时,解析程序可能需要反复扫描源程序。例如,每一次引用变量都要进行类型检查,甚至重新进行存储分配,从而降低程序的运行速度。在空间上,以解析方式运行程序需要更多的空间,因为系统不但需要为用户程序分配运行空间还要为解析程序及其支...

2021-04-13 15:15:57 781 1

原创 mysql同时查出符合条件数据与总数

SQL_CALC_FOUND_ROWS是mysql特有的保留字,与此对应使用的 函数是 FOUND_ROWS(),可以在查出数据的同时查出所有满足条件的数据量。例如:SELECT SQL_CALC_FOUND_ROWS * FROM url WHERE id > 7 LIMIT 2;SELECT FOUND_ROWS();java代码实现:Class.forName("com.mysql.cj.jdbc.Driver");try (Connection connection

2021-04-13 09:19:06 2828

原创 java 对象转json,java首字母小写,判断方法是否为javabean方法

将java对象转成json可用的类库很多,知名的有fastjson,jackson等,今天在做项目的时候发现项目没有上述依赖,用的是google的gson,因此封装方法将java对象转成gson代表的json对象。大致流程如下:1:通过反射获取java对象的所有public方法,再筛选出javabean的getter方法(方法返回类型为boolean 则为is开头)。2:遍历筛选出的方法,通过方法名计算出对应的属性名。3:通过目标对象调用筛选出的方法,将属性名与方法返回值添加到json中。

2021-04-08 16:49:57 371

原创 js文件中加载其他js文件

1:使用sea.js等第三方库进行加载2:工程化前端项目使用import即可3:非工程化前端:function loadJs(src) { return new Promise((resolve, reject)=>{ let script = document.createElement('script'); script.type = "text/javascript"; script.onload = ()=>{

2021-03-29 17:20:11 1463

jenkins部署脚本

jenkins部署脚本

2024-02-19

springboot openfeign Sentinel统一降级处理实现代码

springboot openfeign Sentinel统一降级处理实现代码

2023-06-08

mysqldump定时备份

mysqldump定时备份sh

2022-12-04

mysql配置文件,通用配置

mysql配置文件,通用配置

2022-08-12

nginx配置文件,nginx调优配置

nginx配置文件,nginx调优配置

2022-08-12

vue结合css实现的跑马灯组件

上下左右方向皆可跑,无抖动现象,性能好。

2022-07-22

mongodb4.2配置文件

mongodb4.2配置文件

2022-06-29

一键安装MySQL5.7.10脚本

一键安装MySQL5.7.10

2022-06-21

centos一键安装openjdk1.8

centos一键安装openjdk1.8

2022-06-20

flume+kafka+flink+mysql数据统计

flume+kafka+flink+mysql实现nginx数据统计与分析

2022-04-20

linux传输文件脚本(无需手动输入密码)

linux传输文件脚本(无需手动输入密码)

2022-03-07

springboot启动/停机脚本

springboot启动/停机脚本

2022-03-07

Mycat-Server-1.6.5-RELEASE.rar

mycat完整配置,单库分表

2021-01-25

jarjar-1.4.jar.rar

jarjar-1.4使用环境,。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2020-02-23

空空如也

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

TA关注的人

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