自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(153)
  • 收藏
  • 关注

原创 C语言 | 计算 1!+2!+3!+……+10!详细讲解

建议大家使用第二种方法写,效率会更高

2022-09-20 10:00:00 52472 6

原创 后端开发刷题 | 打家劫舍

你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家;如果偷了第二家,那么就不能偷第一家和第三家。给定一个整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。数据范围:数组长度满足 1≤n≤2×105,数组中每个值满足 1≤num[i]≤5000。

2024-09-16 11:33:14 604

原创 后端开发刷题 | 编辑距离

给定两个字符串 str1 和 str2 ,请你算出将 str1 转为 str2 的最少操作数。你可以对字符串进行3种操作:1.插入一个字符2.删除一个字符3.修改一个字符。字符串长度满足 1≤n≤1000 ,保证字符串中只出现小写英文字母。

2024-09-16 11:08:28 405

原创 后端开发刷题 | 数字字符串转化成IP地址

现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。例如:给出的字符串为"25525522135",返回["255.255.22.135", "255.255.221.35"]. (顺序没有关系)数据范围:字符串长度 0≤n≤12要求:空间复杂度 O(n!),时间复杂度 O(n!注意:ip地址是由四段数字组成的数字序列,格式如 "x.x.x.x",其中 x 的范围应当是 [0,255]。

2024-09-15 17:27:23 959

原创 后端开发刷题 | 最长回文子串

对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。数据范围: 1≤n≤1000要求:空间复杂度 O(1),时间复杂度 O(n2)进阶: 空间复杂度 O(n),时间复杂度 O(n)

2024-09-15 16:53:15 370

原创 后端开发刷题 | 最长上升子序列

给定一个长度为 n 的数组 arr,求它的最长严格上升子序列的长度。所谓子序列,指一个数组删掉一些数(也可以不删)之后,形成的新数组。例如 [1,5,3,7,3] 数组,其子序列有:[1,3,3]、[7] 等。但 [1,6]、[1,3,5] 则不是它的子序列。我们定义一个序列是的,当且仅当该序列两个下标 i 和 j 满足 i

2024-09-13 11:18:11 785

原创 后端开发刷题 | 兑换零钱(动态规划)

给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。如果无解,请返回-1.数据范围:数组大小满足0≤n≤10000 , 数组中每个数字都满足 0

2024-09-12 11:11:22 845

原创 后端开发刷题 | 把数字翻译成字符串(动态规划)

有一种将字母编码成数字的方式:'a'->1, 'b->2', ... , 'z->26'。现在给一串数字,返回有多少种可能的译码结果数据范围:字符串长度满足 0

2024-09-12 10:26:07 916

原创 后端开发刷题 | 矩阵的最小路径和

给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。数据范围: 1≤n,m≤500,矩阵中任意值都满足 0≤ai,j≤100要求:时间复杂度 O(nm)例如:当输入[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]]时,对应的返回值为12,

2024-09-11 11:23:30 530

原创 后端开发刷题 | 不同路径的数目

一个机器人在m×n大小的地图的左上角(起点)。机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?备注:m和n小于等于100,并保证计算结果在int范围内数据范围:0

2024-09-06 20:49:51 691

原创 后端开发刷题 | 最长公共子序列(非连续)

给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空,则返回"-1"。目前给出的数据,仅仅会存在一个最长的公共子序列。数据范围:0≤∣str1∣,∣str2∣≤2000要求:空间复杂度 O(n2),时间复杂度 O(n2)

2024-09-05 16:47:40 627

原创 后端开发刷题 | 数组中的逆序对

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。即输出P mod 1000000007数据范围: 对于 50%50% 的数据, size≤104对于 100%100% 的数据, size≤105数组中所有数字的值满足 0≤val≤109要求:空间复杂度 O(n),时间复杂度 O(nlogn)

2024-09-04 11:42:47 690

原创 后端开发刷题 | 判断链表中是否有环

我们可以用双指针技巧,同向访问的双指针,速度是快慢的,只要有环,二者就会在环内不断循环,且因为有速度差异,二者一定会相遇。输入分为两部分,第一部分为链表,第二部分代表是否有环,然后将组成的head头结点传入到函数里面。第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1(注:头结点为位置0),即-4->2存在一个链接,组成传入的head为一个带环的链表,返回true。第一部分{1}代表一个链表,-1代表无环,组成传入head为一个无环的单链表,返回false。判断给定的链表中是否有环。

2024-08-28 18:06:26 415

原创 后端开发刷题 | 面试篇4

定义:Spring AOP通过预编译方式和运行期间动态代理,实现程序功能的统一维护。它是一种编程思想,允许开发者在不修改源代码的情况下,为程序中的方法增加额外的功能(如日志、事务管理、安全控制等)。与OOP的关系:AOP是OOP的一种补充,OOP通过纵向的继承关系实现代码重用,而AOP则通过横向抽取公共行为,实现了非业务逻辑的复用,减少了代码的冗余和耦合。

2024-08-28 13:02:55 863

原创 后端开发刷题 | 面试篇3

流:是一种抽象的概念,代表数据的无结构化传递。流是一个无结构化的数据组成的序列,以字节或字符形式输入或输出。输入流:数据从外部数据源流入到程序内部的过程。输出流:数据从程序内部向外部流出到数据目的地的过程。

2024-08-27 12:34:31 950

原创 后端开发刷题 | 合并k个已排序的链表

分治即“分而治之”,“分”指的是将一个大而复杂的问题划分成多个性质相同但是规模更小的子问题,子问题继续按照这样划分,直到问题可以被轻易解决;经过分治后的子问题,需要将解进行合并才能得到原问题的解,因此整个分治过程经常用递归来实现。双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个指针(特殊情况甚至可以多个),两个指针或是同方向访问两个链表、或是同方向访问一个链表(快慢指针)、或是相反方向扫描(对撞指针),从而达到我们需要的目的。要求:时间复杂度 O(nlogn)

2024-08-22 12:47:16 823 1

原创 后端开发刷题 | 合并两个排序的链表

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。退出循环后,哪个pHead不为空,哪个结点(包括剩下的)给虚拟结点的。数据范围: 0≤n≤1000,−1000≤节点值≤1000。创建一个虚拟结点和一个哨兵结点。当pHead1与pHead。小哪个赋给虚拟结点的。

2024-08-21 12:42:16 652

原创 后端开发刷题 | 主持人调度【贪心算法】

并且活动主持人需要全程参与活动,换句话说,一个主持人参与了第 i 个活动,那么该主持人在 (starti,endi) 这个时间段不能参与其他任何活动。有 n 个活动即将举办,每个活动都有开始时间与活动的结束时间,第 i 个活动的开始时间是 starti ,第 i 个活动的结束时间是 endi ,举办某个活动就需要为该活动准备一个活动主持人。贪心思想属于动态规划思想中的一种,其基本原理是找出整体当中给的每个局部子结构的最优解,并且最终将所有的这些局部最优解结合起来形成整体上的一个最优解。

2024-08-18 15:32:19 484

原创 后端开发刷题 | 有效括号序列【栈】

这里可以使用栈,根据栈的先进后出,后进先出的特点,来存储半边的括号,当出现左括号,向栈中压入右括号,然后比较栈中压入的右括号与字符串中当前的括号相比,来判断括号是否成双成对。给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列。括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。要求:空间复杂度 O(n),时间复杂度 O(n)数据范围:字符串长度0≤n≤10000。

2024-08-18 11:22:45 469

原创 后端开发刷题 | 最长公共子串【动态规划】

如果要求dp[i][j],也就是str1的第i个字符和str2的第j个字符为最后一个元素所构成的最长公共子串,我们首先需要判断这两个字符是否相等。如果不相等,那么他们就不能构成公共子串,也就是。

2024-08-17 17:10:32 175

原创 后端开发刷题 | 最小花费爬楼梯【动态规划】

给定一个整数数组 cost cost ,其中 cost[i] cost[i] 是从楼梯第i i 个台阶向上爬需要支付的费用,下标从0开始。你将从下标为1的台阶开始,支付5 ,向上爬两个台阶,到达楼梯顶部。1.支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。2.支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。3.支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。4.支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。5.支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。

2024-08-17 16:39:00 624

原创 后端开发刷题 | 跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级。青蛙要跳上两级台阶有两种跳法,分别是:先跳一级,再跳一级或者直接跳两级。当台阶为3个时,有3种方式跳,全部跳一级;跳台阶问题可以使用递归解决,现在有两个选择,一个是跳一级,一个是跳两级,当台阶为2个时,有2种方式跳:全部跳一级,或者直接跳两级。要求:时间复杂度:O(n) ,空间复杂度: O(1)当台阶为7个时,有21种方式跳.......当台阶为4个时,有5种方式跳.......当台阶为5个时,有8种方式跳.......当n>2时,为f(n-1)+f(n-2)

2024-08-17 12:40:08 609

原创 后端开发刷题 | 二叉树的最大深度

这里使用的是递归的方法来实现,比较简洁,左右节点遍历后取最大值,就是最大深度。数据范围:0≤n≤100000,树上每个节点的val满足 ∣val∣≤100。深度是指树的根节点到任一叶子节点路径上节点的数量。要求: 空间复杂度 O(1),时间复杂度 O(n)最大深度是所有叶子节点的深度的最大值。(注:叶子节点是指没有子节点的节点。求给定二叉树的最大深度,

2024-08-17 12:01:54 385

原创 后端开发刷题 | 二叉树的前序遍历

数据范围:二叉树的节点数量满足 1≤n≤100 ,二叉树节点的值满足 1≤val≤100,树的各节点的值各不相同。给你二叉树的根节点 root ,返回它节点值的 前序。该题可以用递归来解决,前序遍历的顺序是根左右。

2024-08-17 11:49:21 291

原创 后端开发刷题 | 寻找峰值【二分法】

该题只要找出一个峰值即可,可以使用二分法,判断mid附近的元素来寻找峰值,如果mid右边的元素大于mid的数值,那么峰值可能出现在右半部分,只要将left=mid+1,再判断它右边的元素是否小于它,即可找到峰值;反之mid右边的元素小于mid的数值,那么峰值可能出现在左半部分,只要将right=,再判断它左边的元素。给定一个长度为n的数组nums,请你找到峰值并返回其索引。4和8都是峰值元素,返回4的索引1或者8的索引5都可以。2.假设 nums[-1] = nums[n] = −∞。

2024-08-17 11:15:39 417

原创 后端开发刷题 | 二分查找

首先这是一个已经排好序的升序数组,可以定义left,mid,right来实现二分查找,每次用target与mid下标的值比较,如果大于,则说明目标元素可能在右半部分,让mid=left+1;给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1。数据范围:0≤len(nums)≤2×105 , 数组中任意值满足 ∣val∣≤109。nums为空,返回-1。

2024-08-17 10:03:32 298

原创 后端开发刷题 | 链表内指定区间反转【链表篇】

将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n),空间复杂度 O(1)O(1)。给出的链表为 1→2→3→4→5→NULL1→2→3→4→5→NULL, m=2,n=4。可以先将其变成1->3->2->4->5,然后再变成1->4->3->2->5。要求:时间复杂度 O(n)O(n) ,空间复杂度 O(n)O(n)进阶:时间复杂度 O(n)O(n),空间复杂度 O(1)O(1)返回 1→4→3→2→5→NULL。

2024-08-17 08:30:00 449

原创 后端开发刷题 | 反转链表【链表篇】

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。如当输入链表{1,2,3}时,数据范围: 0≤n≤1000。

2024-08-16 15:13:01 560

原创 后端开发刷题 | 排序算法--冒泡排序

排序序列从前向后(从下标较小的元素开始),依次对相邻两个元素的值进行两两比较,若发现逆序则交换,使值较大的元素逐渐从前移向后部。找到了该数组中最大值放在了末端,所以一个元素已经有序,现在第二轮排序,只需要将前面的进行排序。总结:每一轮排序都可以让一个元素在有序的位置上,i个元素进行排序,需要进行i-1轮的排序。这里使用了flag来判断是否排序过程中,该数组已经有序,提前结束排序,这样排序效率更高。有一个长度为7的无序数组,按照从小到大的顺序排序后输出。数组中数据排序后输出。

2024-08-16 14:24:38 318

原创 后端开发刷题 | 面试篇2

序列化其实就是将对象转化成字节序列格式,使其可储存可传输。反序列化就是将字节序列格式转换成对象,是序列化的补集。不可变类是指实例的属性不能被修改的类。一个不可变类的实例对象从被创建出来,它的成员变量就不能被修改。Java 平台的类库中包含许多的不可变类,比如 String、基本类型的包装类等。不可变类比一般的更加安全。

2024-08-14 20:15:00 274

原创 后端开发刷题 | 面试篇1

在 Java 中,方法调用时传递的是变量的值,而不是变量本身。因此,有时候会有人说 Java 使用的是"引用传递",但更准确的说法是 Java 使用的是"值传递",只不过对于对象类型的值,传递的是引用值。HashMap 在 JDK1.7 之前采用数组加链表的形式实现,在 1.8 之后使用了红黑树:通过底层数组存储对象节点,采用链地址法,把新增对象节点连接在当前地址的节点下面,且规定当链表长度大于 8 时,将链表转换成红黑树结构。接口中的方法都是抽象方法,抽象类中可以包含非抽象方法。

2024-08-14 15:57:51 504

原创 后端开发刷题 | 笔试

Linux 中,下面哪个选项inode 中记录的数据()A最后一次读取时间B最近修改的时间C该文件的实际内容D该文件的容量正确答案:C解析:储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点”。Java 中,下面代码会出现的是()ABCD正确答案:D下面 Java 代码的运行结果为()123456publicstaticvoidAfalse trueB。

2024-07-24 19:52:52 1049

原创 后端开发刷题 | 笔试

TCP 传输连接的建立采用“3 次握手”的方式,包括 3 个基本的步骤:A 发送一个请求连接报文给B(SYN 标志置为 1),B 发回确认(SYN+ACK 标志置为 1),A 再加以确认(ACK 标志置为1)。根据缺页中断的处理流程,产生缺页中断后,首先去内存寻找空闲物理块,若内存没有空闲物理块,使用相应的页面置换算法决定淘汰页面,然后调出该淘汰页面,最后调入该进程需要访问的页面,所以答案选D。

2024-07-23 20:57:36 1250

原创 SpringCloud | 单体商城项目拆分(微服务)

用户,购物车,商品,订单,支付等业务都是放在一起,这样很容易一个文件改动造成多个文件也要变动,而且在团队项目中也不容易维护,所以可以进行微服务拆分,来解决这个问题。同理,剩下的4个业务也是这样拆分,其实公共服务就是把各个业务交织的部分,抽取出来,这样就只需要在hm-api里面去调用就可以,微服务架构,首先是服务化,就是将单体架构中的功能模块从单体应用中拆分出来,独立部署为多个服务。我这里采用的是横向拆分,把它们公共的服务提取出来放在hm-api里面。比如在购物车模块里面,它使用到了商品模块里面的服务,

2024-07-15 19:20:50 1154 1

原创 安装Docker教程及yum 报错:Could not retrieve mirrorlist http://mirrorlist.centos.org的解决方案

前提:Linux环境已经搭建好,安装了VMware和MobarXterm。

2024-07-11 20:28:27 1839 12

原创 SpringBoot | 面试题

借助于 BeanFactory 完成 Bean 的实例化。

2024-07-09 13:18:38 1115

原创 SpringBoot | 大新闻项目源码打包

出现报错:Please refer to D:\Learn\big-news\target\surefire-reports for the individual test results.对于一个完成好的后端项目,如何进行打包发送给其他人,在电脑上进行查看。

2024-07-05 13:16:14 304

原创 SpringBoot | 大新闻项目后端(redis优化登录)

该篇主要内容:redis优化登录和ThreadLocal提供线程局部变量,以及该大新闻项目的主要代码。

2024-07-05 12:38:31 1761 2

原创 SpringBoot | 使用jwt令牌实现登录认证,使用Md5加密实现注册

对于登录认证中的令牌,其实就是一段字符串,那为什么要那么麻烦去用jwt令牌?其实对于登录这个业务,在平常我们实现这个功能时,可能大部分都是通过比对用户名和密码,只要正确,就登录成功;而并不会考虑到使用jwt令牌。

2024-06-27 18:08:48 402

原创 SpringBoot | 实现邮件发送

在resource里面的application.yml写相关的发邮件参数(user,code,host,auth)在pojo层里面写实体内容(发邮件需要的发件人邮箱,授权码,服务器域名,身份验证开关),该项目分为pojo,service,controller,utils四个部分,controller层里面调用service里面的方法测试send方法。显示true后,检查一下邮箱,就可以收到对应的测试邮件。该项目涉及到了邮件的发送,所以需要邮箱的授权码。service层里面写send方法,

2024-06-20 21:54:01 732

大新闻springboot项目

该项目使用springboot框架实现的关于文章分类,文章管理,用户管理,文件上传等业务,里面涉及到redis,ThreadLocal,MD5,JWT令牌,分组校验等

2024-07-05

空空如也

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

TA关注的人

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