自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法题学习-Hash表

LeetCode1.给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。思路:使用 hash表,类似于redis中的缓存原理,首先查询其中一个元素是否存在(target - X),再查询出另一个元素。解释:因为 nums[0] + nums[1] == 9 , 返回 [0,1]输出:nums = [2,7,11,15],target = 9。输出:nums = [2,7,11,15],target = 9。

2023-12-10 21:06:23 379

原创 kafka学习

/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic 主题名称。./kafka-topics.sh --describe --zookeeper localhost:2181 --topic 主题名称。在学习了1-4点之后,明白题目为什么要使用websocket,而不是使用普通的http请求,因为涉及一个实时性。最后错误定位在:/etc/hosts下,

2023-11-12 11:43:59 110

原创 数据分享——决策树学习

在数据分析中,用到了决策树,于是没有学习过决策树的橘子皮,对决策树进行了快速学习。

2023-11-11 21:56:54 164

原创 橘子皮的实习周记——第一周总结

摸爬滚打,总归是在去学校前找到了实习,避免了去学校的实习的痛苦和暂时找不到实习的焦虑。目前入职上班时间一周,主要内容是对一个项目进行一些基础的添加操作(用领导A的话来说,就是熟悉一下业务),我最头疼的就是使用hadoop这些技术,对MySQL内的数据进行一个同步。从跟领导A的日常问题中,启发了一些我对代码、对生活的新思考,例如有用到mybatis部分时,例如:Mybatis查询的流程,如何读取Propeities里的配置。

2023-11-05 14:25:56 118

原创 算法通关村——位运算常用技巧

异或运算的符合是 ⊕(在代码中用 ^ 表示异或) ,运算规则是:对于每个二进制位,当两个数对应的位相同时,结果为 0,否则结果为 1。与运算的符合是 & ,运算规则是:对于每个二进制位,当两个数对应的位都为 1 时,结果才为 1 ,否则结果为 0。取反运算的符合是 ~ ,运算规则是:对一个数的每个二进制位进行取反操作,0 变成 1 ,1 变成 0。或运算的符合是 | ,运算规则是:对于每个二进制位,当两个数对应的位都为0时,结果才为0,否则结果位1。

2023-08-31 18:27:45 78

原创 每天一道SQL题之day09

每天一道SQL题之day09。

2023-08-24 23:08:46 62

原创 每天一道SQL题之day08

每天一道SQL题之day08。

2023-08-23 21:10:37 85

原创 每天一道SQL题之day07

每天一道SQL题之day07。

2023-08-22 09:19:11 72

原创 每天一道SQL题之day06

每天一道SQL题之day06。

2023-08-21 11:32:25 114

原创 每天一道SQL题之day05

每天一道SQL题之day04链接: 连续出现的数字表:找出所有至少连续出现三次的数字。返回的结果表中的数据可以按 任意顺序 排列。结果格式如下面的例子所示:示例 1:输入: 表:输出: 表:3、解析连续出现:意味着相同数字的 Id 是连着的,由于这题问的是至少连续出现 3 次,我们使用 并检查是否有 3 个连续的相同数字。同时需要添加关键字 ,因为如果一个数字连续出现超过 3 次,会返回重复元素。最开始想的很简单:测试的时候竟然过了,以为这题这么简单,没想到提交的时候就傻眼了,疯狂

2023-08-20 18:30:35 49

原创 每天一道SQL题之day04

每天一道SQL题之day04。

2023-08-19 21:48:50 134

原创 每天一道SQL题之day03

每天一道SQL题之day03。

2023-08-18 17:39:11 52

原创 每天一道SQL题之day02

每天一道SQL题之day02。

2023-08-16 22:45:27 42

原创 每天一道SQL题之day01

每天一道SQL题之day01。

2023-08-15 22:56:27 277 1

原创 项目中引入gava-retrying重试机制

在通过项目调用ChatGPT时,会因为网络环境较差情况下出现调用失败的问题。那么如何可以解决这个问题呢?是 Google Guava库的一个扩展包。可以为任意函数调用创建可配置的重试机会,是一个灵活方便的。修改成一个错误的modeId。包含了多种的重试策略,可以看到,是重试了两次。

2023-08-14 17:12:19 153

原创 算法通关村——轻松搞定最大(小)深度问题

输入:root = [3,9,20,null,null,15,7]最小深度是从根节点到最近叶子节点的最短路径上的节点数,输入:root = [1,null,2,4,3,7]给定一个二叉树 root ,返回其最大深度。给定一个二叉树,找出其最小深度。

2023-08-10 15:54:35 97 1

原创 算法通关村——轻松搞定二叉树里的双指针

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;1.类似于两个二叉树同时进行前序遍历,先判断根节点是否相同,如果相同再分别判断左右子节点是否相同,判断的过程中只要有一个不相同就返回false,如果全部相同就返回ture。通过递归的返回值来判断两个子树的内侧结点和外侧结点是否相等,所以准确的来说是一个树的遍历顺序左中右,一个树的遍历顺序是右左中。输入:root1 = [1,3,2,5],root2 = [2,1,3,null,4,null,7]返回合并后的二叉树。

2023-08-08 15:37:33 116

原创 Mybatis-Plus实现分表功能【简易版】

该字段是用于上传excel文件后,通过EasyExcel包的方法,对数据进行压缩处理,保存为csv格式的内容,再存入字段中。示例数据:数据库中内容:由于现在我对上传的文件进行了校验,只能上传1MB大小的文件,故字段内容不多,可若后需求需要加大时,该表的该字段就会‘负重前行’,故需要进行分表,才不会影响查询速度。

2023-08-04 23:15:17 2098 1

原创 算法通关村——迭代实现二叉树的前序遍历

前序遍历是中左右,如果还有左子树就一直向下找。完了之后再返回从最底层向上向右找(注意:空节点不如栈)。

2023-08-03 20:53:06 64

原创 算法通关村——如何通过中序和后序序列恢复一颗二叉树

解析:因为前序、后序序列只能确定根节点,但是中间部分不知道怎么划分,故不能恢复。中序:3 4 8 6 7 5 2 后序: 8 7 6 5 4 3 2。中序:3 4 8 6 7 5 后续: 8 7 6 5 4 3。(1)后续最后一个访问的就是根节点,所以根节点是。前序和后序序列不能恢复二叉树。

2023-07-31 17:40:03 400 1

原创 算法通关村——n数之和问题解析

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。创建一个哈希表,对于每一个x,首先查询哈希表中是否存在 target -x ,然后将 x 插入到哈希表中,即可保证不会让 x 和 自己匹配。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。

2023-07-29 20:59:32 100

原创 算法通关村——基于链表实现队列

队列的特点是结点的排队次序和出队次序,即先入队者先出队(FIFO first in first out)基于链表实现队列,在尾部后插入元素,在front删除元素。

2023-07-29 18:36:36 76

原创 算法通关村——括号匹配问题解析

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。输入:s=“()[]{}”

2023-07-26 15:56:20 141 1

原创 算法通关村——如何基于数组(链表)实现栈

补充小知识:栈顶(top)有的地方指向栈顶元素,有的地方指向栈顶再往上的一个空单位。top先将栈顶元素取出,然后再执行top–。链表也可以实现栈,插入和删除都在头结点进行。形象比喻:子弹弹夹,第一颗的子弹最后打出。

2023-07-26 15:18:07 122 1

原创 算法通关村——双指针的妙用

双指针就是两个变量,不一定真的是指针。双指针思想适用于处理数组、字符串等场景问题。例如:从下列序列中删除重复元素[1,2,2,2,3,3,3,5,5,,7,8],重复元素只保留一个。删除之后的结果应该为[1,2,3,5,7,8]。可以在删除第一个2时将其后面的元素整体向前移动一次,删除第二个2时,再将其后的元素整体向前移动一次,处理后面的3和5都一样的情况,这就导致需要执行5次大量移动才能完成,效率较低。使用双指针可以方便的解决这个问题,如图:首先定义两个指针slow、fast。

2023-07-25 23:21:01 71

原创 算法通关村——不简单的数组

例如元素数组为{1,2,3,4,5},删除了3之后,根据数组的移动原则,从4开始向前移动,变成{1,2,4,5,?答:任然是5,也就是删除3之后的结构为:{1,2,4,5,5},此时表示元素数量的size会减1变成4,原来5的位置仍然是5,因为是通过size来标记元素的,所以最后一个5不会被访问到。例如{0,0,3,4,5,6,7,0,0,0},此时该怎么拿到3到7的元素呢?答:可以,可以将前5个位置依次初始化,后位置的空着,此时数组的内容为{1,2,3,4,5,0,0,0,0,0}。

2023-07-24 17:45:20 31

原创 算法村通关村第二关——K个一组反转

k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。LettCode25:给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。输入:head = [1,2,3,4,5], k = 2。将其分为两个链表一组,分为三组。输出:[2,1,4,3,5]

2023-07-24 13:36:20 72

原创 算法通关村第二关——终于学会链表反转了

如下图,将对链表{1-> 2-> 3-> 4-> 5} 进行反转,先建立结点dumy,并且令dumy.next = node(1),接下来每次从旧的链表拆下来一个结点到dumy后,在调整其他结点。这个过程就是前面的带虚拟结点的插入操作,每走一步都要考虑各种指针怎么指,既要将结点摘下来接到对应的位置上,还要保证后续结点能够找到。LettCode206:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。如下图,是在调整4结点的时候,链表及链表指针发生的变化。如何不借助虚拟结点,实现链表反转呢?

2023-07-20 15:29:21 89

原创 算法通关村第二关——指定区间反转

缺点:若left和right差值过大,并且恰好是链表的头结点和尾结点时,找到left和right需要遍历一次,反转它们之间的链表还需要在遍历一次。这个过程就是前面的带虚拟结点的插入操作,每走一步都要考虑各种指针怎么指,既要将结点摘下来接到对应的位置上,还要保证后续结点能够找到。2.把pre的next指针指向反转以后的链表头节点,把反转以后的链表的尾节点的next指针指向succ。反转的整体思想:在需要反转的区间里,每遍历到一个结点,让这个新结点来到反转部分的起始位置。题目解读:将左右指针里的元素进行反转。

2023-07-19 22:05:26 117

原创 算法通关村第一关——链表经典问题之两个链表第一个公共子节点

/结点的值 int val;//下一个结点 ListNode next;//结点的构造函数 无参 public ListNode() {} //结点的构造函数,一个参数 public ListNode(int val) {} }小技巧:如果题目刚拿到手的时候没有思路怎么办?试着将常用的数据结构和常用的算法思想都想一遍,一个一个试,看有没有能解决的。常用的数据结构:数组、链表、队列、栈、Hash表、集合、树、堆等等。

2023-07-17 21:17:11 469 1

原创 【算法通关村第一关——链表青铜挑战笔记】

什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。将该位置结点的前结点的指针指向该节点,该节点的指针指向后面节点的一个位置。删除表头结点,需要将head = head.next,新头结点就是原结点的第二个结点。插入结点分为三种情况,从链表头部插入、从链表中间插入或者从链表后插入。直接将插入的结点的下一个指针指向前头结点。将结点尾的指针指向需要插入的结点。(2)删除最后一个结点。

2023-07-17 14:13:43 642 1

原创 GPT面试官

我JDK动态代理好像是需要有实现接口时,使用的是JDK动态代理,CGLIB则是没有实现接口时,使用的是CGLIB,请你具体说说,并且详细举例GPT对的,JDK动态代理需要有接口,而CGLIB动态代理不需要接口。JDK动态代理是基于接口实现的,当我们需要代理一个类的方法时,需要先定义一个接口,只有实现该接口的类才能被代理。JDK动态代理通过反射机制在运行时动态地创建代理对象,这个代理对象实现了代理类所实现的接口,并且将所有方法的调用转发给了被代理对象。

2023-04-14 16:43:41 359 1

原创 【Spring的Bean的生命周期】

如果Bean实现了BeanPostProcessor接口,则在Bean的初始化之前调用postProcessBeforeInitialization()方法。在实例化Bean对象之后,Spring容器会将按照实例化时配置的属性进行依赖注入,也就是将其他的Bean对象注入进来,这一步也是整个生命周期中比较重要的一步。BeanFactory通过调用Bean的构造函数来创建Bean的实例,此时还未进行任何属性注入。由于Spring的IoC容器是单例模式的,所以在容器的销毁过程中会调用单例Bean的销毁方法。

2023-04-14 16:39:06 57 1

空空如也

空空如也

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

TA关注的人

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