自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 资源 (2)
  • 收藏
  • 关注

原创 【JAVA WEB实用与优化技巧】如何自己封装一个自定义UI的Swagger组件,包含Swagger如何处理JWT无状态鉴权自动TOKEN获取

Swagger 原生UI存在的缺点① 不够方便直观swagger ui 布局是上下瀑布式的,比如我访问完A接口,想访问B接口,访问完B接口想继续访问A接口就必须往上翻,接口少还好操作。接口多的话来回就很烦。② 请求的参数没有缓存③ 不够美观④ 如果是JWT 无状态登录,Swagger使用起来就没有那么丝滑了,因为JWT无状态登录这种需要每次在请求的Header中带上TOKEN,Swagger可没那么只能给你登录接口返回的token带过去,这样就导致无状态session的情况下Swagg...

2024-05-21 17:10:09 17

原创 【算法一则】【动态规划】求二维数组可组成的最大正方形

在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。这道题目要求找出给定二维字符数组中最大正方形的面积。我们可以使用动态规划的方法来解决这个问题。

2024-04-26 17:19:23 369

原创 【算法一则】【贪心】数组中的数可以拼装成的最大数

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

2024-04-26 08:58:28 245

原创 Springboot 中RedisTemplate使用scan来获取所有的key底层做了哪些事情

每次迭代next()都要判断是否数据集中还有数据,没有的话去redis中通过游标取下次一的数据集(2条)。然后将获取到数据集迭代器替换到游标中,上一个数据集回收(防止内存过大),使迭代器可以正常流转。

2024-04-24 14:50:57 1016

原创 【做算法学数据结构】二叉树的层序遍历【二叉树】

`二叉树`是一种常见的树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的特点是每个节点最多有两个子节点,并且子节点的顺序是有序的,即左子节点在前,右子节点在后。

2024-04-24 14:01:27 779

原创 【算法一则】反转链表

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left

2024-04-22 09:08:08 199

原创 【做算法学数据结构】【链表】删除排序链表中的重复元素

当涉及到数据结构时,链表是一种常见且重要的数据结构。链表由一系列节点组成,每个节点包含数据和指向下一个节点的引用。相比于数组,链表的大小可以动态地增长或缩小,因为每个节点只需要存储自己的数据和指向下一个节点的引用。

2024-04-18 09:57:52 584

原创 【算法一则】矩阵置零 【矩阵】【空间复用】

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

2024-04-17 17:24:32 1139

原创 【算法一则】编辑距离 【动态规划】

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:①插入一个字符②删除一个字符③替换一个字符

2024-04-16 14:53:53 867

原创 【算法一则】分隔链表

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

2024-04-15 09:59:05 304

原创 【算法一则】做算法学数据结构 - 简化路径 - 【栈】

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

2024-04-12 16:20:05 972

原创 【算法一则】- 插入区间 - 数组

给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval = [start, end] 表示另一个区间的开始和结束。

2024-04-11 16:06:31 418

原创 Redis 由浅入深 (3) - Redis的两种持久化方式RDB和AOF

RDB和AOF是Redis中的两种持久化方案。RDB是一种快照式持久化机制,将Redis数据集以二进制形式保存到RDB文件中,适用于快速备份和恢复。AOF是一种日志式持久化机制,将写命令以追加的方式记录到AOF文件中,适用于数据完整性要求较高的场景。RDB持久化具有快速、紧凑的特点,但可能导致数据丢失。AOF持久化具有高可靠性和数据完整性,但写入性能较低。根据实际需求,可以选择适合的持久化方案或同时使用两种方案,以确保数据的安全性和可靠性。

2024-04-11 13:53:46 259

原创 【算法一则】贪心加双指针-盛水最多的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。

2024-04-09 16:31:17 1218

原创 手撸一个简单的雪花算法生成自增id

雪花算法(Snowflake)是为了解决分布式系统中生成全局唯一ID的需求而设计的。在分布式系统中,如果多个节点同时生成ID,传统的自增ID或随机数ID可能会导致ID冲突,因此需要一种算法来确保在不同节点、不同时间生成的ID都是唯一的。

2024-04-09 09:29:51 740

原创 Linux logrotate教程以及如何使用logrotate分割nginx访问日志

Logrotate 是一个用于管理 Linux 系统日志文件的工具。

2024-03-19 14:48:40 763

原创 Nginx常用命令总结及常见问题排查

连续更新挑战第4天…

2024-03-07 13:42:43 1304

原创 缓存淘汰策略看完这篇就够了

LFU 算法是一种常用的缓存淘汰算法,具有简单易行、公平性等优点。但是,LFU 算法也存在不准确、空间复杂度高等缺点。在实际应用中,可以根据具体的应用场景选择合适的缓存淘汰算法。LRU 算法是一种常用的缓存淘汰算法,具有简单易行、有效性等优点。但是,LRU 算法也存在不公平性、空间复杂度高等缺点。在实际应用中,可以根据具体的应用场景选择合适的缓存淘汰算法。LRU 算法可以用链表或哈希表来实现。LRU 算法可以与其他缓存淘汰算法结合使用,例如 LFU 算法。

2024-03-05 11:28:09 1021

原创 Redis 由浅入深 (7) - redis集群操作手册

常见的redis集群操作命令总结,以及一些常见的运维命令。

2024-03-04 13:47:32 965 1

原创 Redis 由浅入深 (6) - Redis批量删除key

日常工作当中经常会遇到删除Redis key的问题,如果是删除某个key,使用 DEL keyname 或者 EXPIRE keyname ttl 都可以实现。但如果想要一次性删除多个key应该怎么处理呢?Redis本身并不支持批量删除key的操作,下面我们就来看看如何巧妙地处理这类问题。

2024-02-29 16:08:02 1349

原创 递归读取文件夹下的所有文件

递归遍历文件夹下所有文件

2024-02-19 10:51:41 607

原创 ForkJoin 的使用以及原理

Fork-Join 是一种并行计算模式,它通常用于解决递归式或者分治式的问题。其原理基于将一个大的任务划分成若干个小任务,然后并行地执行这些小任务,最后将它们的结果合并起来得到最终的结果。

2024-02-18 14:15:13 349

原创 牛客30道题解析精修版

牛客笔试题

2024-01-24 16:36:41 789

原创 【算法】解决动态规划问题的通用步骤思路及示例算法:打家劫舍【动态规划】

动态规划(Dynamic Programming,简称DP)是一种解决问题的算法设计技术,通常用于优化问题。它通过将问题分解为更小的子问题,并解决这些子问题,然后合并它们的解决方案来解决原始问题。动态规划通常用于具有重叠子问题和最优子结构性质的问题。动态规划的主要思想是避免重复计算,通过将中间结果存储起来,以便后续直接使用,从而提高效率。这种思想在递归过程中特别有用,因为递归经常会重复计算相同的子问题。

2024-01-24 11:13:43 1354

原创 JAVA的双亲委派机制

双亲委派(Parent Delegation)是一种软件设计模式,常用于Java类加载器的实现。它通过继承关系来实现类的加载,即每个类加载器都有一个父加载器,当一个类加载器需要加载一个类时,它首先将该任务委派给它的父加载器,只有在父加载器无法加载时,才由该加载器自己来完成加载。

2024-01-23 17:19:06 944

原创 【算法】用JAVA代码实现LRU 【缓存】【LRU】

LRU(Least Recently Used)是一种常见的缓存淘汰策略,用于在缓存空间不足时确定哪些数据应该被淘汰。其基本原则是淘汰最近最少被访问的数据。

2024-01-22 17:18:49 1164

原创 前端打同一个包可以从测试晋升到生产的配置方案

前端打同一个包从测试晋升到生产环境的方案,是一种高效、可靠且易于维护的部署方式。在这种方案中,前端代码在开发完成后,经过测试验证无误后,可以直接打包部署到生产环境,无需进行额外的配置或修改。这样可以减少部署过程中可能出现的错误和延迟,提高应用的可用性和性能。

2024-01-19 10:44:47 1132

原创 【算法】分割回文串【动态规划】【回溯】

首先看到“最大'、”最小“、”最少“、”所有结果“等题目,可以首先考虑用动态规划去解决。这个题目可以看到需要返回s中所有可能得分割方案,我们首先想到可以用动态规划去解决。然后我们继续看题,他说要讲s分割成一些子串,使每个子串都是回文串,这个时候我们可以简单用动态规划的思路去思考下。s = "aab", 设置初始start = 0; end = i ++;找到子回文串之后start=end; s.substring(start, end)当确认第一个子串是回文串的时候,我们的第一个子串可能是....

2024-01-19 09:24:46 392

原创 【算法】串联所有单词的子串【滑动窗口】

给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如,如果 words = `["ab","cd","ef"], 那么 "abcdef", "abefcd","cdabef", "cdefab","efabcd`", 和 "efcdab" 都是串联子串。 "acdbef" 不是串联子串,因为他不是任何 words 排列的连接。...

2024-01-18 09:43:38 487

原创 算法(图网格)-岛屿问题-岛屿数量

每一个格子都会往上下左右方向移动,但网格是有边界的,移动到边界之后要停止移动,同时移动到已经处理过后的格子的时候也停止移动。比如grid[1][1]这个节点上下左右需要处理的逻辑。向上发现值为1可以继续处理,向左发现为0直接停止移动,向右向下同理。给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

2023-12-26 17:08:46 412

原创 Feign 使用篇

Feign是一个声明式的HTTP客户端工具,它简化了在分布式系统中进行服务间通信的过程。开发人员可以使用Feign来定义接口,然后通过该接口来调用远程服务,就像调用本地方法一样简单。

2023-09-25 15:35:16 110

原创 PING命令详解

ping命令是一个常用的网络诊断工具,它用于测试计算机之间是否能够互相通信,并测量数据包从一个计算机发送到另一个计算机所需的时间。

2023-09-05 15:47:25 3805

原创 牛客刷题第二弹

CMS收集器是一种以获取最短回收停顿时间为目标的收集器,它是基于标记清除算法实现的,它的运作过程相对于其他收集器来说要更复杂一些,整个过程分为四个步骤,包括:初始标记、并发标记、重新标记、并发清除。重新标记阶段则是为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间通常会比初始标记阶段稍长一些,但也远比并发标记阶段的时间短。这种在代码中的体现为:A类方法中的参数包含了B类。HAS-A:聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。

2023-08-22 15:59:17 123

原创 Linux 如何处理tomcat/springboot进程控制台日志

catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr),这是在tomcat的启动脚本里指定的,如果没有修改的话stdout和stderr会重定向到这里。另外,如果我们在应用里使用其他的日志框架,配置了向Console输出的,则也会在这里出现。是一个Linux上的日志文件轮换工具,它可以自动轮换日志文件并保留历史日志,防止磁盘被日志文件填满。是一个非常实用的日志处理工具,能够有效地管理Linux系统中的日志文件,保障系统的稳定运行。来立即轮换日志文件,也可以通过。

2023-07-10 14:11:01 1262

原创 Axios 获取文件流转base64字符串展示到img标签中

我们使用axios发送GET请求获取图像文件流。然后,我们使用new Uint8Array(response.data)将获取的二进制数据转换为无符号8位整数数组,并使用reduce方法将它们合并为字符串。然后,我们使用new Uint8Array(response.data)将获取的二进制数据转换为无符号8位整数数组,并使用reduce方法将它们合并为字符串。最后,使用btoa函数对字符串进行Base64编码,并将结果存储在base64String变量中。

2023-06-08 09:03:51 2118

原创 讨论下两个String引用在各种情况下是否相等

Jdk1.6及之前: JVM存在永久代, 运行时常量池在永久代,运行时常量池包含字符串常量池Jdk1.7:有永久代,但已经逐步“去永久代”,字符串常量池从永久代里的运行时常量池分离到堆里Jdk1.8及之后: 无永久代,变成了元空间,运行时常量池在元空间,字符串常量池依然在堆里只在常量池上创建常量只在堆上创建对象:调用toString方法或者+在堆上创建对象,在常量池上创建常量在堆上创建对象,在常量池上创建引用//只在堆上创建对象AA//将该对象AA的引用保存到常量池上。

2023-05-05 14:19:43 555 1

原创 Markdown 语法大全

Markdown是一种轻量级标记语言,常用于撰写博客、文档、论文等。它可以让你使用易读易写的纯文本格式来编写文档,然后通过转换成有效的HTML文档进行发布。

2023-04-12 20:03:01 5595

原创 VUE 配置history路由模式配置

vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。当你使用 history 模式时,URL 就像正常的 url,例如 http://yoursite.com/user/id,也好看!不过这种模式要玩好,还需要后台配置支持。

2023-04-07 14:23:19 3906

原创 HTTP 状态大全

HTTP 状态码是一组三位数字,用于表示 HTTP 协议响应的结果。这些状态码由 RFC 7231 定义,并被广泛使用于 Web 开发中。

2023-04-07 13:38:34 1495

原创 二进制中原码、反码、补码以及如何计算补码,附力扣算法题

① 二进制中最高位表示符号位② 负数来说反码就是原码非符号位取反,0 变成1,1变成0。对于正数来说就是反码就是原码不需要计算。③ 负数来说补码就是反码 + 1,正数来说补码就是原码④ 10进制转2进制的方法有很多,上述介绍了只介绍了两种参考文章负数的二进制表示方法(正数:原码、负数:补码)Java 运算符。

2023-03-14 22:32:09 2729

封装swagger组件,提供全新UI以及无状态登录接口调用解决方案

解决swagger原始ui一下缺点: ① 不够方便直观 swagger ui 布局是上下瀑布式的,比如我访问完A接口,想访问B接口,访问完B接口想继续访问A接口就必须往上翻,接口少还好操作。接口多的话来回就很烦。 ② 请求的参数没有缓存 比如我想掉一个post接口来伪造一条数据,第一次访问完成之后,刷新页面后第二次还要重新造数据,就很麻烦,命名我只需要改部分字段重新请求就行,结果每次都要重新填写报文。字段躲起来兼职就是折磨。 ③ 不够美观 不用多说,当然一个工具类产品美观并不重要,但是美观的产品还是能给人带来心情愉悦的体验,就像你旁边坐着一位漂亮女孩,你整天心情都会好很多。不管如何对我来说工具颜值还是挺重要的。 ④ 如果是JWT 无状态登录,Swagger使用起来就没有那么丝滑了,因为JWT无状态登录这种需要每次在请求的Header中带上TOKEN,Swagger可没那么只能给你登录接口返回的token带过去,这样就导致无状态session的情况下Swagger的调试功能等于瘫痪状态。

2024-05-21

swagger-bootstrap-ui

使用bootstrap重写的swaggerui

2024-05-21

前端一个包就能从测试晋级生产的配置方案

前端打同一个包从测试晋升到生产环境的方案,是一种高效、可靠且易于维护的部署方式。在这种方案中,前端代码在开发完成后,经过测试验证无误后,可以直接打包部署到生产环境,无需进行额外的配置或修改。这样可以减少部署过程中可能出现的错误和延迟,提高应用的可用性和性能。

2024-01-19

lombok 实现原理(代码)

可以参考:https://blog.csdn.net/yh4494/article/details/126871988 这篇文章进行学习交流。

2023-04-21

ElasticSearch Head 适配ElasticSearch 7.0 +

ElasticSearch UI操作工具、非常好用的ElasticSearch工具

2022-07-22

ElasticSearch 7.0 版本

ElasticSearch 7.0 版本

2022-07-22

空空如也

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

TA关注的人

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