- 博客(38)
- 收藏
- 关注
原创 docker部署xxl-job=admin调度中心
我想执行器应该是本机我就写的127.0.0.1,结果后来才知道,这个执行器ip写好了传到docker上的调度中心,那么它看到的也是本地回环地址,所以才一直没有执行,这里应该改成本地java服务的真实ip才可以。1.前提是要和mysql处于同一网络,且已经在mysql中创建xxl_job数据库架构。3.进入调度中心一定要看执行器,新手特别容易忘记这个,导致以为没有注册进来执行器,这里执行器对应于上面yml里定义的appname。
2025-05-28 12:01:28
332
原创 数据库优化
慢 SQL 排查闭环开启慢日志 → 分析日志定位问题 SQL → 用EXPLAIN剖析执行计划 → 针对性优化索引或查询语句。索引设计三原则最左前缀匹配:复合索引按查询条件顺序创建;覆盖索引优先:减少回表,提升查询速度;避免过度索引:索引过多会影响写入性能(插入 / 更新 / 删除)。工具链推荐(全面统计)、(快速预览);可视化:MySQL Workbench(图形化执行计划)、Navicat(索引管理)。
2025-05-13 14:47:28
965
原创 mybatis-plus踩坑记录
如果设置了id类型,那么所有插入的语句即使你对象中主键是有值的也不会插入。4.使用mybatisX插件构造整体框架。还有要把原来mybatis的依赖给去掉。解决方案是在实体类的主键成员变量上加上。3.尽量使用lamdba条件构造器。如果是3一定要用下面那个,
2025-05-13 14:30:28
240
原创 Docker安装,亲测有效
镜像地址可能会变更,如果失效可以百度找最新的docker镜像。若输出显示多个阿里云镜像源地址,则说明配置成功。如果是CentOS7会遇到这个问题。最后,执行命令,安装Docker。首先要安装一个yum工具。更新yum,建立缓存。
2025-04-28 18:08:13
461
原创 Rabbitmq常见面试题(mq八股文)
yaml 注意:阻塞式重试可能影响性能,高并发场景建议结合异步线程发送消息。2. 生产者确认机制(Publisher Confirm + Return) 作用:确保消息到达 MQ 且正确路由。 Confirm Callback:确认消息是否到达 Exchange(/)。 Return Callback:处理路由失败(Exchange 存在但无匹配队列)。 配置(Spring Boot): yaml java 3. 消息持久化 作用:确
2025-04-24 15:45:20
1005
原创 Mysql的深度分页查询优化
**覆盖索引+延迟关联** | O(N + M) | 通用场景,深度分页 | 需合理设计索引 |-- 扫描 1000010 行。- **海量数据 + 复杂查询**:迁移到 **Elasticsearch** 或 **ClickHouse**。- **连续翻页场景**:使用 **游标分页**(如 `WHERE id <?LIMIT M`)。- **随机跳页需求**:结合业务妥协(如限制最大页码),或用 **缓存/预计算** 缓解压力。
2025-04-24 15:42:58
572
原创 Java集合底层
首先map的容量一定是2的次幂,那么二进制情况下一定是只有一个首位为1的值其他都是0,例如16(D)=10000(B),那么15(D)=1111(B),假设hash值为5817(D)=0001 0110 1011 1001(B),此时和n-1进行&操作,最后结果一定是小于n的,不用%运算,这样做是为了计算效率更高,都是基于二进制的。ArrayList是实现了List接口的动态数组,底层是Object数组,不是线程安全的,可存储null值,具体是增删查以及扩容。将类中的空数组直接赋值给实际数组。
2025-03-28 14:47:50
570
原创 分片文件异步合并上传
1.如果是第一个分片文件:通过md5码和当前用户id查询数据库有没有一样的,有直接复制一份。对于大文件,为了避免上传导致网络带宽不够用,还有避免内存溢出,我们采用分片异步上传。3.是最后一个分片文件,注册事务同步管理器,实现在事务成功提交后调起线程的异步调用。2.如果不是最后一个分片文件,将分片文件转存到暂时目录,直接返回结果。5.合并分片文件,用RandomAccessFile实现。controller层,在前端对文件进行分片,先计算。6.trycatch包围,异常处理,直接删掉临时目录。
2025-03-24 10:43:15
327
原创 spring的参数校验
注意事项:可以直接定义在DTO上,这样可以直接对传输进来的参数不需要重复写。@Valid 或 @Validated:用于触发参数验证。要想生效必须在每个要进行校验的方法变量前添加@valid。@NotBlank:确保字符串不为空且不全是空白字符。@Pattern:使用正则表达式验证字符串格式。@Min / @Max:验证数字的最小/最大值。@NotEmpty:确保字符串、集合等不为空。@NotNull:确保参数不为null。@Size:限制字符串或集合的大小。:处理单个参数校验异常(如。
2025-03-24 09:27:42
278
原创 Rabbitmq常见面试题(mq八股文)初版
生产者消息发送到mq,mq会向生产者发送回执:ack、nack(不建议,一般也只处理nack情况):可以定义在yaml中,重试次数,下次重试时间(不建议,同步阻塞重试)综上所述:生产者端如果出现问题,那基本是编码问题,所以不用考虑解决。消费者要消费消息时才会从磁盘中读取并加载到内存(也就是懒加载)消息到达MQ,保存到队列后,尚未消费就突然宕机。消息到达MQ后,处理消息的进程发生异常。生产者发送消息到达MQ后未找到。生产者发送消息时连接MQ失败。生产者发送消息到达MQ的。:(避免消息的重复消费)
2025-03-17 19:23:16
932
原创 sentinel实现对不用用户的限流
先说一下我踩的坑:一定要先使用了这些方法,sentinel控制台才会出现对应的接口。1.引入依赖2.配置3.代码配置限流规则注意区分用的就是这里的limitapp()4.配置拦截器对于不同的用户,给sentinel的上下文设置不同的内容标识5.对想要限流的方法注解伺候介绍一下sentinelresource,如果定义了blockhandler,那就是如果发生了限流后,你还会做什么,一般就返回一下错误信息了,可以直接在写在本类中,方法签名必须要一样,而且还要在后面加一个参数。
2025-03-15 19:40:26
752
原创 swagger生成接口文档,slf4j打印日志
(端口号根据实际情况修改),即可看到生成的接口文档页面。启动 Spring Boot 项目,在浏览器中访问。
2025-03-06 21:48:19
174
原创 docker部署nginx项目和springboot项目
docker部署springboot项目,mvn打包成jar包,然后写一个Dockerfilesddsadsdad。前端用的vue,先npm run build 打包成dist文件夹,编写好nginx.conf。将dist文件夹上传至html目录下,nginx.conf上传至nginx-conf目录下。后续创建容器,并挂载数据卷记得与上面同步,记得加入同一网络。将jar包和Dockerfile同时上传至同一个目录下。先在虚拟机上建立目录,方便后续挂载数据卷。原本运行在本机上的配置文件需要改动一点。
2025-02-07 19:09:40
233
原创 java 身份证识别OCR免费
用的百度api,每个月1000次免费,我没用百度自己的util,都用了比较熟悉的依赖。收获:post方法里的url参数和body里的键值对不是同一个东西,但是get的是。第一次根据文档自己写出来的工具类,蛮有成就感的。idcard的Bean实体。
2025-01-19 17:49:53
237
原创 java基础之深克隆与浅克隆的实现以及概念
实现cloneable接口,重写clone方法,对每个基本数据类型和基本类型数组直接clone,对于引用类型和对象数组则需要new一个新的,然后copy。要求对象及其引用类型字段都实现Serializable接口。对于浅克隆来说,如果对象的属性是值类型,对其进行复制;如果对象的属性是引用类型,复制其引用但不复制引用的对象。集合类clone,可以调用Collections.copy()方法,数组的clone方法已经实现深克隆。对于深克隆来说,无论对象的属性是值类型还是引用类型,都复制属性值给新的对象。
2025-01-06 10:40:10
177
原创 卡特兰数Catalan(一定要记的特殊数列)
序列种数、凸多边形三角划分、给定节点组成二叉搜索树、n对括号正确匹配数目等等,所以看到这些文字,请先通过自己手算算出f(0)到f(4),直接卡特兰数秒了。满足两个递推式(其实有四个,这里就写两个比较简单的)
2024-04-06 10:47:23
265
1
原创 c++高精度加法加高精度乘法加高精度阶乘
高精度乘法MUL(string a,string b)返回字符串。高精求加ADD(string a,string b)返回字符串。
2024-02-28 18:51:53
488
原创 图的存储结构及应用
void Dijkstra(int v, Matrix* my,int distance1[],int path[])//赋值path[]与distance1[],v为出发点。for (i = 0;i++)//初始化path[],distance1[]printf("点%c到其他点的最小路径 最小路径权值为\n",c);printf("请输入哪一个节点到其他节点的最短路径:");printf("path[]数组:");
2023-12-09 13:28:47
70
原创 数据结构实验十二 图的遍历及应用
邻接矩阵,编程实现该图的深度与广度优先遍历算法,输出遍历序列。求从有向图的某一结点出发到其余各结点的最短路径。、熟悉图的深度度优先遍历和广度优先遍历算法。到其余各结点的最短路径和最短路径值。数据结构实验十二 图的遍历及应用。理解图的存储结构与基本操作;、掌握图的单源最短路径算法。)有向图采用邻接矩阵表示。)单源节点最短路径问题采用。)输出有向图中从源结点。单源节点最短路径问题。
2023-12-03 10:04:27
258
1
原创 实验十 树遍历应用
树的建立可以通过递归,以某种序列输入各节点的值(这里我通过先序遍历),先输入当前节点的值,再构建首孩子节点的树,再构建兄弟节点的树。树转化成二叉树,就是将首孩子当作左孩子,兄弟节点当作右孩子。编写一个层序遍历算法,利用队列结构按层次(同一层自左至右)输出树中所有的结点。将树结构转化为二叉树,编写二叉树非递归中序遍历算法,并输出遍历序列。树的形态如下图所示,打印出先序遍历、后序遍历的遍历序列。、掌握树与二叉树的转化及其遍历的基本方法。一般树转化成二叉树后的中序遍历:"、掌握递归二叉树遍历算法的应用。
2023-11-21 16:04:00
97
原创 实验九 哈夫曼编码
我理解到哈夫曼树是一种最优二叉树,假设叶子结点个数为m,那么树的结点就会有2*m-个,哈夫曼树用于最优解编码。可以通过数组来存储,因为已知结点个数,由于哈夫曼树的构造是由下往上的,所以结点的结构需要额外parent来指向父母结点。哈夫曼编码就是将频率多的数的编码短一点,频率少的编码长一点,从而来减少总码长。不知道为什么每一个编码的首字符刚好相反,我也没有找出哪里有问题。、掌握哈夫曼树的构造及数据结构设计。构成,它们在电文中出现的概率分别为。、理解哈夫曼树的基本概念。、假设用于通信的电文仅由。
2023-11-11 21:35:56
252
1
原创 KMP算法c语言实现
相较于暴力,其实KMP的时间效率也差不了多少,除非有非常多的重复子串部分,效率才有显著提升。KMP算法将暴力算法从O(n*m)->O(n+m),n为主串的长度,m为子串的长度。
2023-10-15 18:31:02
95
1
原创 快速幂(c语言)
7^105(d)=7^1*7^8*7^32*7^64=7^(1+8+32+64) 其幂为105(d)=1101001(b)=2^0*1+2^3*1+2^5*1+2^6*1=1+8+32+64=105。作用是幂函数x^n,不同于pow()函数,快速幂将时间压缩至一半,并且可以自定义数据类型。
2023-07-12 15:58:15
231
1
原创 c语言期末复习总结
c语言的特点:1.是一种结构化语言2语句简洁,使用方便灵活3.易于移植4.有强大处理能力5生成的代码质量高,运行效率高。标识符:由字母、数字、下划线组成,开头只能由下划线或者字母开头,不能与关键字重复,大小写字母不一样。
2023-07-03 16:57:26
96
1
原创 选择排序法(算法)
外部循环n-2次,下标从左到右。内部循环遍历剩下数找出最小值下标,最后与a[外部循环变量]交换。逐次从剩下数中找到最小值并放置最左边。外部循环变量k,内部循环变量i,中间变量t,记录最小值下标index,从小到大排序,c语言代码实现。a[index]=t;//最小元素与下标为k的值交换。//index为最小值下标。
2023-06-09 22:17:34
112
1
原创 冒泡排序法(算法)
冒泡排序法就是经过n-1次外部循环,逐次将最大的数移至最右边(最大数和最右边不包括上次循环的最大数和最右边),内部循环n-i次。假设有n个数,要是这n个数从小到大排序外部循环变量i,内部循环变量j,中间变量t。以下是c语言代码实现。
2023-06-09 09:51:13
94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人