- 博客(30)
- 收藏
- 关注
原创 Java后端开发中验证码的实现以及Kaptcha类的详细配置介绍
验证码的本质是{id, key, value}的形式,对于不同的目标提供不同的子集内容,借助Redis的过期时间可以很好的管理验证码的有效时间。除此之外,也可以在Controller中自行设计Map容器用于代替Redis。思路如下:Map的Key仍为uuid的某种形式,Value则封装POJO。// 有效期3分钟 endTime . setTime(createTime . getTime() + 1000 * 60 * 3);} }
2023-03-26 17:58:57 4761
原创 LeetCode每日一题20220823-题解-变为棋盘
题目链接:https://leetcode.cn/problems/transform-to-chessboard/
2022-08-23 13:19:53 333
原创 LeetCode每日一题20220822-题解-输出二叉树
题目链接:https://leetcode.cn/problems/print-binary-tree/ leetcode 每日一题 输出二叉树
2022-08-22 04:47:35 238
原创 LeetCode每日一题20220818-题解-最大相等频率
题目链接:https://leetcode.cn/problems/maximum-equal-frequency/
2022-08-18 16:58:52 152
原创 LeetCode HOT100 验证二叉搜索树
验证二叉搜索树 HOT100 题目链接:https://leetcode.cn/problems/validate-binary-search-tree/
2022-08-17 16:35:30 149
原创 okteto学习笔记
在使用Okteto设置开发环境时,需要以下两个步骤。第一步、部署应用程序代码第二步、执行oktetoup在执行oktetoup之前,需要安装OktetoCLI。安装流程参考本文目录-[docs]可以选择使用现有集群进行交互,也可以使用OktetoCloud,除此之外还可以使用Okteto自托管。在执行命令时,他会分析本地程序的源代码并自动选择一个基本的开发容器配置,并创建一个默认配置文件okteto.ymldevmy-appimagegolang-8080。...
2022-07-19 15:29:00 2290
原创 AQS入门理解
一、什么是AQS1. AQS的定义AQS 的全称为 AbstractQueuedSynchronizer ,中文译为抽象队列式同步器。这个类在 java.util.concurrent.locks 包下面。这个抽象类对于JUC并发包非常重要,JUC包中的 ReentrantLock,Semaphore,ReentrantReadWriteLock,CountDownLatch 等等几乎所有的类都是基于AQS实现的。2. AQS的原理/思想如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工
2022-05-06 18:51:17 522
原创 看完这个文章就可以对 ArrayList 有自己的见解了
ArrayList 也是我们在写代码的过程中很常使用的一种集合类。让大家从使用易操作的数组变成使用 ArrayList 的缘由我想应该是 add 方法,能够“无忧无虑”的向 ArrayList 里存放数据,还能像数组一样用“下标”和 get 方法获得数据。那么这篇文章就对 ArrayList 这个集合类做一次简单的理解吧。一、定义先来看看这个类的作者 Josh Bloch 和 Neal Gafter 是怎么描述他们的作品的:Resizable-array implementation of the
2022-05-05 18:52:44 546
原创 一文理解基于MD5的URL短地址处理
在 LeetCode 上有这么一个题:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,并且这个TinyURL可以用解密方法恢复成原本的URL。这个题一般来说最简单的做法就是直接给传入的 url 生成一个标识符然后存到哈希表里,然后用标识符再从哈希表取出来。官方的题解1正是如此:public class Codec { Map<Integer, String
2022-05-04 20:39:51 1654
原创 从数据结构的角度来看Mysql为什么使用B+树
Mysql数据库为什么使用B+树作为索引?这篇文章我们不鼓吹B+树的优点,我们从数据结构上来看这个问题。一、数据结构数据结构大致可以分为两种 —— 线性结构 和 非线性结构。1. 线性结构线性结构包括:数组、链表、哈希表、栈、队列 等等2. 非线性结构非线性结构包括:树、图还有例如 跳表 之类的其他的数据结构,也都是从基础数据结构演化出来的,用来解决指定的场景问题。二、索引的数据结构我们先把记忆中的 Mysql的索引是使用B+树做的,因为B+树有 xxx 的优点 抹去,没有人在开发的时候就
2022-05-01 18:49:16 2054
原创 一文带你入门B树和B+树
B树和B+树,其实在各大论坛平台上总会看到这两个东西。但是他们说的又有种“高手云集”的感觉 —— 他们都会,就我不会,连插嘴的功夫都没有。这篇文章就来简单的讲解一下B树和B+树,下次再遇见这种话题,也不用再尴尬窘迫了。在解读这两个树之前呢,先解释一下 B-树 这个东西。其实很多人不敢去了解 B树 的有关内容,为什么呢,一打听这个东西,就有什么 B-树、B树、B+树 ,3个东西!太多了!实际上不是这样。现在打开百度百科搜索 B树 ,你就会发现,百度百科会直接跳转到 B-树 里。什么意思呢,没错,没有
2022-05-01 17:11:59 614
原创 Java的垃圾回收机制
写在前面:在浏览了大量了面试经历之后发现,其实在 JVM 这个模块考察的最多的就是垃圾回收机制。所以写此文来学习一下有关的内容。
2022-04-30 11:44:54 981
原创 从类加载开始学习类加载器的内容
本篇文章将以类加载为起点,阐述类加载器的有关内容。一、类加载1. 类加载的方式类的加载有 3 种方式,分别是:1.1 使用new关键字创建属于隐式加载,也叫静态加载。在运行的时候使用 new 关键字,如下:Room room = new Room();1.2 调用forName()方法属于显式加载,也叫动态加载。最常见的是数据库的链接。通过反射加载类型,并创建加载示例。Class cl = Class.forName("Room");Object room = cl.newInst.
2022-04-29 19:06:18 171
原创 简单的聊聊常用的HashSet
前面写完了 HashMap 的源码简单理解,不趁机把 HashSet 的源码顺带写了属实可惜,毕竟 HashSet 的实现就是靠 HashMap 来做的,源码内容很少,下面就来介绍一下。一、简单介绍HashSet 是一个没有重复元素的集合,实现了 Set 的接口。与 HashMap 一样,HashSet 也不能保证元素的顺序,也可以插入 null 值。HashSet 是基于 HashMap 实现的,只是我们使用 HashMap 的时候会传入 key 和 value ,而使用 HashSet 只会人工.
2022-04-29 11:11:12 207
原创 简单的理解一下 HashMap 的源码
一、数据结构基于哈希表的 Map 接口实现,是 Java 中常用的集合类框架,也是非常典型的数据结构。HashMap 的底层实现主要是数组和链表。数组的特点:存储区间是连续的,占用内存严重,空间复杂也很大,时间复杂为O(1)。优点:随机读取效率很高,随机访问性强,查找速度快。缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存中要往后移的,且大小固定不易动态扩展。链表的特点:区间离散,占用内存宽松,空间复杂度小,时间复杂度为O(N)。优点:插入删除速度快,内存利用率高,没有大小固定,扩展灵
2022-04-27 15:32:06 928 1
原创 【蓝桥杯】【2017】【包子问题】非常容易理解的欧几里得算法
题目来源:蓝桥杯-2017题目小明几乎每天早晨都会在一家包子铺吃早餐。这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有3种蒸笼,分别能放4、5和6个包子。.
2022-01-17 01:02:53 439
原创 【Leetcode】【学习计划】【二叉树】填充每个节点的下一个右侧节点指针
题目来源:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/解题思路原文:本次展示算法思路来源于题目评论解题思路作者:https://leetcode-cn.com/u/buringdroplets/题目填充每个节点的下一个右侧节点指针给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:class Node { public int val.
2022-01-15 12:31:23 158
原创 【蓝桥杯】【2017省赛B组】【方格分割】利用DFS思想求解方格分割问题
题目来源:蓝桥杯-2017-省赛-B组思路原著:https://blog.csdn.net/qq_39630587/article/details/79624382题目6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图所示试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。示例本题无示例解题思路在思路开始编写之前,先告知本题答案:509种首先观察题目提供的三.
2022-01-14 23:08:04 117
原创 【Leetcode】【学习计划】【深度优先搜索】岛屿的最大面积
题目来源:https://leetcode-cn.com/problems/max-area-of-island/解题思路原文:https://leetcode-cn.com/problems/max-area-of-island/solution/biao-zhun-javadong-tai-gui-hua-jie-fa-100-by-mark-/题目岛屿的最大面积给你一个大小为 m x n 的二进制矩阵grid。岛屿 是由一些相邻的 1 (代表土地)构成的组合,这里的「相邻」要求两个1.
2022-01-13 15:26:41 477
原创 【Leetcode】【20220111】【广度优先搜索】有限的BFS解决迷宫问题
题目来源:https://leetcode-cn.com/problems/escape-a-large-maze/Java API - HashSet:https://www.apiref.com/java11-zh/java.base/java/util/HashSet.html#add(E)Java API - Object:https://www.apiref.com/java11-zh/java.base/java/lang/Object.html解题思路原文:https://leetco.
2022-01-11 18:15:06 302
原创 【Leetcode】【20220110】【深度优先搜索】DFS解决累加数问题
题目来源:https://leetcode-cn.com/problems/additive-number/submissions/深度优先搜索:https://baike.baidu.com/item/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2/5224976题目累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含3个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。累加序.
2022-01-10 19:24:12 201
原创 【Leetcode】【20220108】【格雷编码】格雷编码的对称生成
题目来源:https://leetcode-cn.com/problems/gray-code/思路原著:https://leetcode-cn.com/u/zzpig/格雷编码:https://baike.baidu.com/item/%E6%A0%BC%E9%9B%B7%E7%A0%81/6510858题目n位格雷码序列是一个由2n个整数组成的序列,其中:每个整数都在范围[0,2n-1]内(含0和2n-1)第一个整数是0一个整数在序列中出现不超过一次每对相邻整数的二进制表示恰好一.
2022-01-08 19:32:53 660
原创 【学习笔记】关于HTML的学习笔记(上)
1、HTML简介HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随
2020-08-03 11:32:13 615
原创 【学习随笔】关于JUC的学习随笔(一)
1、JUC简单介绍JUC是java.util .concurrent工具包的简称,是一个处理线程的工具包。在Java的Concurrent包下还有atomic包和locks包,分别是原子性和各种锁。在线程的学习方面,我们了解到Thread和Runnable,通过这两个东西便可以实现线程的调用。之所以使用JUC,是因为JUC能够获取返回值而且Callable的执行效率更高。2、线程 & 进程进程狭义定义:进程是正在运行的程序的实例(an instance of a
2020-07-26 10:17:59 172
原创 【学习笔记】关于JDBC的初次学习
1、JDBCJava数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。 ——百度百科1.1、简易概述 在早期编程中,如果需要数据库的连接,则需要针对不同的数据库编写出基本不同的Java代码,繁琐性高且维护性差。自此,Java官方定义了一套操作所有面向关系型数据库的规
2020-07-20 15:53:58 258
原创 【学习笔记】关于Java Spring的学习笔记(上)
1、Spring1.1、简介Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。功能:使用基本的JavaBean代替EJB(Enterprise Java Beans)目的:解决企业应用开发的复杂性Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。
2020-07-19 21:27:39 352
原创 【学习笔记】关于Java Spring的学习随笔(一)
1、Spring1.1、简介Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。功能:使用基本的JavaBean代替EJB(Enterprise Java Beans)目的:解决企业应用开发的复杂性Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。
2020-07-13 17:31:40 324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人