自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [每日算法 - 阿里机试] leetcode739. 每日温度

给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。

2024-04-07 13:56:42 847

原创 [每日算法 - 阿里机试] leetcode19. 删除链表的倒数第 N 个结点 「 详细图释一看就懂!」

使用快慢指针的方式,快指针与慢指针相差n-1,即快指针比慢指针超前了n个节点。 两个指针同时遍历链表,当快指针指向null时,此时慢指针正好指向倒数第n个元素的前一个元素。

2023-10-06 22:57:27 959 1

原创 [源码系列:手写spring] AOP第一节:切点表达式

在本专栏之前的文章中已经带大家熟悉了Spirng中核心概念IOC的原理以及手写了核心代码,接下来将继续介绍Spring中另一核心概念AOP。AOP即切面编程是Spring框架中的一个关键概念,它允许开发者在应用程序中优雅地处理横切关注点,如日志记录、性能监控和事务管理。在切面编程中,切点表达式是一项关键技术,它定义了在何处应用切面的逻辑。本章将深入探讨Spring切点表达式的实现原理,为读者提供对这一重要概念的深刻理解。

2023-09-24 18:28:00 498 2

原创 [源码系列:手写spring] IOC第十四节:容器事件和事件监听器

现实中的观察者(Observer)往往是主动方,这是由于目标主题(Subject)缺乏主观能动性造成的,其状态的更新并不能主动地通知观察者,这就造成观察行为的持续往复。而在软件设计中我们可以将目标主题作为主动方角色,将观察者反转为被动方角色,建立反向驱动式的消息响应机制,以此来避免做无用功,优化软件效率,请参看观察者模式的类结构,如图所示。

2023-09-10 19:11:44 1139 8

原创 [源码系列:手写spring] IOC第十三节:Bean作用域,增加prototype的支持

在Spring中,Bean的作用域(Scope)定义了Bean的生命周期和可见性。包括单例和多例,在本章节中我们将为Bean添加多例的支持,下面是PrototypeBean的prototype作用域表示每次从容器中获取该Bean时都会创建一个新的实例。每个请求或依赖注入都会导致创建一个全新的Bean对象。prototype作用域的Bean实例不受Spring容器的管理,容器在创建Bean之后不会再跟踪它。这意味着Spring容器不会负责释放或销毁prototype作用域的Bean。

2023-09-06 18:14:07 547

原创 [源码系列:手写spring] IOC第十二节:FactoryBean

在getBean方法中添加BeanFactory的逻辑,当bean属于BeanFactory类型的,就拿他的getObject方法返回的对象,并根据isSingleton()方法返回时决定是否加入缓存。....用于缓存单例的BeanFactory提供类try {//singleton作用域bean,从缓存中获取}else{//prototype作用域bean,新创建beanreturn obj;....

2023-09-05 23:16:59 373

原创 [源码系列:手写spring] IOC第十一节:Aware接口

...//执行BeanPostProcessor的前置处理........@Override//创建BeanFactory,并加载BeanDefinition//添加ApplicationContextAwareProcessor,让继承自ApplicationContextAware的bean能感知bean....

2023-09-05 01:00:17 365

原创 [每日算法 - 华为机试] leetcode690. 员工的重要性

当遇到一个问题描述中涉及到多个个体之间存在层级关系,且这些关系可以看作是一个从顶层到底层的结构时,很可能你正在处理一个树结构问题。例如公司的组织结构、文件系统、家谱等等。这道题就是一个典型的树结构问题...

2023-08-21 23:49:34 163

原创 [每日算法 - 华为机试] leetcode463. 岛屿的周长

解题思路:通过遍历每个陆地格子,然后检查它的上、右、下、左四个相邻格子,🌟​​​​​​​🌟​​​​​​​🌟如果越界或者相邻格子是水域,就认为当前格子的周长增加了1 🌟🌟🌟

2023-08-20 19:38:51 196

原创 [每日算法 - 华为机试] leetcode680. 验证回文串 II

回文字符串定义:"正读和反读都一样,中心对称的字符串"。贪心思想的最优子结构:贪心字符串边缘两个位置的字符串相同与否,相同可以继续运算,不同则非回文字符串。

2023-07-21 11:39:06 190

原创 [每日算法 - 华为机试] leetcode172. 阶乘后的零

解题思路:可以直接想到的是当一个数字*10的时候,乘积的结果必然包含一个0,当和两个10相乘那么乘积肯定包含两个0.

2023-07-12 16:13:36 276

原创 [每日算法 - 华为机试] 剑指 Offer 57 - II. 和为s的连续正数序列 「滑动窗口」

解题思路:用两个指针代表窗口的左右边界,指针移动代表窗口滑动,记录窗口内的数字和sum,窗口滑动同时更改sum。

2023-07-12 15:12:53 252

原创 [每日算法 - 华为机试] LeetCode 475. 供暖器

思路:对一每一个房间,要么利用左边的取暖器,要么利用右边的取暖器,利用二分查找的方式查询出距离房间最近的左右两边的取暖器,取两者的最小值即当前房间取暖所需取暖器最小半径,最后取所有的房间所需最小半径的最大值即可!

2023-07-06 15:05:54 314

原创 [每日算法 - 华为机试] LeetCode1160. 拼写单词

给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写(指拼写词汇表中的一个单词)时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。输入:words = ["cat","bt","hat","tree"], chars = "atach"输出:6。

2023-07-04 13:55:56 408

原创 [每日算法 - 华为机试] 剑指 Offer 10- II. 青蛙跳台阶问题

简单递归缺点: 多了很多重复计算(如红框圈出来的地方),记忆递归的讲每次计算结果存储,不再重复计算。

2023-07-03 16:36:59 256

原创 [每日算法 - 华为机试] leetcode53 :最大子数组和 「算法中的哲学」

解题思路:「阿德勒心理学中的目的论 」我不会受过去影响,我选择了现在的我,只有过去是正向的,才会是我的一部分!

2023-07-03 14:54:20 313

原创 [每日算法 - 华为机试] leetcode20 :有效的括号 「栈」

[每日算法 - 华为机试] leetcode20 :有效的括号 「栈」方法一解题思路...

2023-06-28 23:39:59 47

原创 [每日算法 - 华为机试] leetcode345 :反转字符串中的元音字母「双指针」

方法一:双指针 思路与算法 我们可以使用两个指针 i 和 j 对字符串相向地进行遍历...

2023-06-28 22:37:10 91 1

原创 [源码系列:手写spring] IOC第十节:bean的初始化和销毁方法

自动注册的beanDefinition工厂类添加方法,支持注册有销毁方法的bean(即继承自DisposableBean或有自定义的销毁方法并在xml定义的Bean。当用户没有实现DisposableBean接口但是注册了自己的销毁方法在xml时,将利用此方法将beanDefinition中的方法名称提取,通过上面定义的DisposableBeanAdapter的方式在创建bean的时候存入单例beanFactory的容器中。...try {//填充属性。

2023-06-28 15:38:46 537 1

原创 [源码系列:手写spring] IOC第九节:应用上下文ApplicationContext

在Spring中应用上下文ApplicationContext是相较于BeanFacotry更为先进的IOC容器,BeanFacotry是Spring实现IOC最基础最核心的接口,使得Spring管理不同Java对象成为可能。而ApplicationContext是建立在ApplicationContext的基础上,提供了更多面向应用的功能。

2023-06-13 11:01:11 294

原创 [源码系列:手写spring] IOC第八节:BeanFactoryPostProcessor和BeanPostProcessor

内容介绍:BeanFactoryPostProcessor和BeanPostProcessor是spring中具有重量级地位的两个接口,理解了这两个接口的主要作用,基本就理解Spring的核心原理了。为了便于理解将分成两篇文章介绍。BeanFactoryPostProcessor: BeanFactoryPostProcessor是spring容器的后置处理器,是spring提供的容器扩展机制,它的调用时机是在spring容器实例化任何一个bean之前,也就是说在容器完成BeanDefinition读取之

2023-04-22 18:47:41 422

原创 [每日算法 - 华为机试] leetcode45 :跳跃游戏 II 「动态规划神器推荐」

45. 跳跃游戏 II。

2023-04-10 15:17:44 166

原创 [源码系列:手写spring] IOC第七节:加载xml文件中定义的Bean

核心代码BeanDefinitionReader、AbstractBeanDefinitionReader、XmlBeanDefinitionReader上一节加入了资源管理器,令框架具备了读取配置文件的能力。在该篇文章中将为我们的框架加入xml格式的配置文件,在配置文件中声明式的定义bean信息,利用资源加载器读取xml配置文件,进而解析出bean信息,注入进bean容器。BeanDefinitionReader:读取bean定义...

2023-04-09 19:26:51 343

原创 [源码系列:手写spring] IOC第六节:资源和资源加载器

对java.net.URL进行资源定位的实现类。定义对资源的抽象和访问,并且添加三个Resource接口的。classpath下资源的实现类。文件系统资源的实现类。ResourceLoader接口。Resource接口。

2023-03-22 00:12:57 84

原创 [源码系列:手写spring] IOC第五节:Bean注入Bean

添加BeanReference类,包装一个bean对另一个bean的引用。如beanA引用beanB,那么在实例化beanA时,如果ProperValue.value是BeanReference类型,引用beanB,那么先实例化beanB。在这里为了便于大家理解暂时不引入三级缓存解决循环依赖,三级缓存会在后面高级篇单独讲解。

2023-03-20 22:31:23 63

原创 [源码系列:手写spring] IOC第四节:Bean属性注入

主要内容:1.添加PropertyValue类表示Bean的属性。 2. 为Bean定义对象BeanDefinition添加PropertyValues列表用来存储Bean的各种属性...

2023-03-19 17:37:44 101

原创 [框架应用系列:Quartz快速上手] Java定时任务解决方案之Quartz集群

Leader-follower线程模型中每个线程有三种模式,leader,follower, processing。在Leader-follower线程模型一开始会创建一个线程池,并且会选取一个线程作为leader线程,leader线程负责监听网络请求,其它线程为follower处于waiting状态,当leader线程接受到一个请求后,会释放自己作为leader的权利,然后从follower线程中选择一个线程进行激活,然后...

2023-03-12 20:40:28 1849 1

原创 [每日算法] leetcode第88题:合并两个有序数组

我们可以利用当前数组1中空闲的空间,节省解法二中额外数组拷贝的空间。参数分别代表源数组,源数组起始索引,目标数组,目标数组位置,元素个数。没有用到连个数组正序的条件,复杂度取决于排序算法。也可以使用System.arraycopy方法。数组1有足够的空间放置所有合并后的数据。System.arraycopy图解。利用到了两数组有序的条件,并且。利用到了两数组有序的条件。利用了数组1的空闲空间,

2023-02-23 13:33:06 268

原创 [每日算法] leetcode第3题:无重复字符的最长子串

注:该方法复杂度过高,在leetCode提交会超时,这里就不在出代码示例。窗口向右滑动,使得窗口正好跨过第一个重复字符(思考:为什么不是第二个?给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。判断子串是否包含重复字符 HashSet O(n),双指针O(n^2)滑动窗口滑动规则:当遇到子串就是窗口中的串存在的字符时,(记录次数,参考专栏leetcode第一题讲解)找到所有子串 O(n^2)构建子串 :散列表存储下标。判断子串是否包含重复字符。整体复杂度O(n^3)

2023-02-22 11:16:31 153

原创 [源码系列:手写spring] IOC第三节:Bean实例化策略InstantiationStrategy

策略模式介绍:拿做年夜饭举例,你现在原材料里有排骨肉等,在纠结如何做排骨肉,所以你打开了做排骨策略宝盒 (策略接口,里面放排骨肉具体做法的排骨宝典),当里面是清蒸宝典时(多态,策略接口变量可以接受不同实现类实例),那么你就用清蒸的策略去做。

2023-02-21 17:05:24 100

原创 [源码系列:手写spring] IOC第二节:BeanDefinition和BeanDefinitionRegistry

添加BeanDefinitionRegistry接口,用来注册(存放)创造bean的beanDefinition方法,称作注册表接口。AbstractBeanFactory中设计到了模版模式的设计模式,创建了getBean的模版方法。顾名思义,就是类定义信息,包含类的class类型、属性值、方法等信息。的实现类,具备两者能力,向bean容器中注册。定义注册(存放)和获取单例bean的方法。后,使用bean时才会实例化。

2023-02-20 18:35:56 90

原创 [源码系列:手写spring] IOC第一节:简单bean容器

定义一个简单的bean容器BeanFactory,内部包含一个map用以保存bean,包含注册bean和获取bean两个方法。

2023-02-20 14:03:47 68 1

原创 [每日算法] leetcode第2题:两数相加

[每日算法] leetcode第2题:两数相加

2023-02-08 01:40:06 153

原创 [每日算法] leetcode第1题:两数之和

leetcode第一题:两数之和解析

2023-02-06 03:09:20 231

原创 MySQL性能调优必知:Performance Schema引擎的配置与使用

指在MySQL代码中插入探测代码,以获取我们想了解的信息(也就是生产数据的代码,即所需数据的提供者、生产者)。就像一般的的链路监控框架,如Google的Dapper收集信息过程就是通过在代码中插入探测代码的方式获取信息。(一般Java链路监控框架是通过代理的方式修改字节码文件, 在代码中间插入获取信息的代码。指的是存储关于程序插桩代码信息的表。如果我们为查询模块添加插桩,相应的消费者表将记录如执行总数、未使用索引次数、耗时等信息。如图MySQL存在名为performance_schema的内置数据库。

2023-01-06 16:30:25 1687 3

原创 MYSQL架构介绍

高性能MySQL第一篇:MySQL架构

2022-12-16 16:58:39 1251 6

原创 linux下nacos集群部署报错Error: Could not create the Java Virtual Machine.

修改startup.sh时注意空格注意这里-Dserver "-"之后没有空格nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &

2021-06-02 15:32:01 1741 7

空空如也

空空如也

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

TA关注的人

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