自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 dp算法练习【9】

给你一个整数n,返回和为n的完全平方数的最少数量。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,149和16都是完全平方数,而3和11不是。

2024-09-10 15:03:30 901

原创 dp算法练习题【8】

给你一个整数n,求恰由n个节点组成且节点值从1到n互不相同的有多少种?返回满足题意的二叉搜索树的种数。

2024-09-09 10:28:07 712

原创 dp算法练习【7】

给你一个按排序的整数数组nums,返回组成的新数组,要求也按排序。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]非常简单,思路平方后排序。优化:插入法。

2024-09-08 15:12:17 1457

原创 dp算法练习【6】

给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。3最长公共子序列是 "ace" ,它的长度为 3。3最长公共子序列是 "abc" ,它的长度为 3。0两个字符串没有公共子序列,返回 0。

2024-09-07 15:58:43 743

原创 dp算法练习【5】

给你一个二维整数数组envelopes,其中,表示第i个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。:不允许旋转信封。3最多信封的个数为11、排序后,动态规划 = > 超时2、排序后,贪心 + 二分查找。

2024-09-06 17:36:17 594

原创 dp练习【4】

给你一个由n个数对组成的数对数组pairs,其中且。现在,我们定义一种关系,当且仅当b < c时,数对才可以跟在后面。我们用这种形式来构造。找出并返回能够形成的。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。2最长的数对链是 [1,2] -> [3,4]。3最长的数对链是 [1,2] -> [4,5] -> [7,8]。

2024-09-05 21:49:37 841

原创 dp算法练习【3】

给定两个字符串s1和s2,返回使两个字符串相等所需删除字符的值的最小和。231在 "sea" 中删除 "s" 并将 "s" 的值(115)加入总和。在 "eat" 中删除 "t" 并将 116 加入总和。结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。403在 "delete" 中删除 "dee" 字符串变成 "let",将 100[d]+101[e]+101[e] 加入总和。在 "leet" 中删除 "e" 将 101[e] 加入总和。

2024-09-04 10:45:13 1019

原创 dp算法练习题 [2]

给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。4一个可能的最长回文子序列为 "bbbb"。s = "cbbd"2一个可能的最长回文子序列为 "bb"。

2024-09-03 22:00:23 592

原创 dp算法练习(1)

给你一个n x n的整数数组matrix,请你找出并返回通过matrix的的。可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置(row, col)的下一个元素应当是或者。

2024-09-02 20:21:53 430

原创 ES中Root mapping definition has unsupported parameters解决方案

ES中Root mapping definition has unsupported parameters解决方案

2024-07-14 21:00:29 916

原创 RabbitMQ从入门到入土

优势:时效性强,等到结果后就返回问题:扩展性差性能下降级联失败问题。

2024-06-11 13:50:48 1070

原创 Redis进阶知识个人汇总

一篇关于Redis持久化、主从架构、哨兵机制、分片集群、多级缓存、Redis最佳的键值设计、批处理优化、Redis底层的数据类型、Redis如何实现5种基本数据类型、Linux的5种网络模型以及IO多路复用在Redis网络模型中的应用、Redis的内存策略(包括过期key的处理和内存淘汰策略)。

2024-06-08 16:12:55 1308

原创 MySQL中所有常见知识点汇总

这个关于MySQL数据库中存储引擎、索引、锁、InnoDB引擎、事务、MVCC的知识汇总

2024-06-04 16:24:28 950

原创 ArrayList源码讲解

底层采用的是数组队列,相当于动态数组。ArrayList内部使用一个可重新分配的Object数组来存储元素,这个数组会随着元素的添加自动增长以容纳更多的元素,这就是所谓的“动态数组”。先给出源码,及其一些注解,后面会对插入和扩容进行讲解。

2024-06-02 17:47:30 835

原创 面试题 - Java基础个人总结

一般个人感觉可以结合面向对象和面向过程的区别来回答?面向过程:是一种分析和解决问题的步骤,采用函数,一步一步的实现,性能较高。强调的是步骤与操作面向对象:把一个问题分解为多个对象,建立对象目的不是为了解决某一个步骤(不类似面向过程编程中的函数),而是为了描述一个事物在整个问题过程中产生的行为。然后最后通过调控多个对象,完成某一个问题。强调的是对象和数据抽象,以及通过这些抽象来表达和控制对象的行为和相互作用。面向对象有封装、继承、多态的特 性,所以易维护、易复用、易扩展。可以设计出低耦合的系统。

2024-06-02 14:27:13 881

原创 你真的了解HTTPS协议吗

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。本文即将带大家来了解这些。

2024-05-27 00:11:48 677

原创 进程与线程

进程与线程:地址空间:进程是程序的一个实例,有子集独立的地址空间;线程是进程的子集,虽然有自己的程序计数器、栈、一组寄存器,但不拥有自己独立的地址空间分配:进程创建、调度、销毁由系统内核控制,创建销毁开销大线程创建与切换较进程更为轻量,不需重新分配资源通信进程之间相互隔离,除非通过一些机制进行通信线程之间通信较容易,可直接读写同一块内存区域并行与并发并行:多核 cpu下,每个 核(core) 同时调度运行线程(同时执行)并发:线程轮流使用CPU的做法称为并发。(非同时执行)

2024-05-24 10:00:30 369

原创 对文件下载进行限流处理

今天早上刷着B站,看到一个视频说有一个需求,如何实现下载限流,我就直接看了up是怎么做的:通过休眠线程 `Thread.sleep(1000);计算已经过去的时间,并根据限制速度计算出预期的时间。如果实际时间小于预期时间,则线程休眠一段时间,以控制下载速度。首先,我们需要确定要下载的文件的URL和保存路径。在循环中,将读取到的数据写入输出流,同时更新已读取的总字节数。主要实现思路:控制每次读取文件时循环的时间,以限制下载速度。最后,在循环结束后,断开与服务器的连接,释放资源。,用于存储每次读取的数据。

2024-05-22 10:17:16 313

原创 速了解及使用布隆过滤器

概念:是一种高效查询的数据结构作用:判断某个元素是否在一个集合中。(但是会出现误判的情况)

2024-05-12 13:42:51 528

原创 Java实现AES加密算法工具类

对称密钥算法:AES 使用相同的密钥进行加密和解密,因此被归类为对称密钥算法。这意味着发送方和接收方必须在通信前共享密钥。块加密算法:AES 将明文分成固定大小的块(128 比特),然后对每个块进行加密。在加密过程中,每个块使用相同的密钥独立加密,增强了安全性。密钥长度:AES 支持多种密钥长度,包括 128 位、192 位和 256 位。密钥越长,破解难度越大,但同时也增加了计算成本。替代算法:AES 有三种变体,分别使用不同的密钥长度,分别为 AES-128、AES-192 和 AES-256。

2024-05-02 18:15:33 1072

原创 Redis 持久化个人总结

介绍:全称Redis Database file(Redis数据备份文件),又称Redis数据快照。简单说就是把内存种的所有数据都记录到磁盘中,当Redis实例出故障重启后,从磁盘读取快照文件,恢复数据。快照文件称 RDB文件,默认保存在当前运行目录。save #由Redis主进程来执行RDB,会阻塞其他命令bgsave #开启子进程执行RDB,避免主线程受到影响如果主动停机,会执行一次RDB。RDB方式bgsave的基本流程:fork主进程得到一个子进程,共享内存空间。

2024-04-07 18:50:57 700

原创 一文秒解四大经典限流算法

固定窗口限流算法()是一种最简单的限流算法,其原理是在固定时间窗口单位时间)内限制请求的数量。该算法将时间分成固定的窗口,并在每个窗口内限制请求的数量。具体来说,算法将请求按照时间顺序放入时间窗口中,并计算该时间窗口内的请求数量,如果请求数量超出了限制,则拒绝该请求。在一个固定时间段内,可以接收固定数量的请求。拒绝多余的请求。漏桶限流算法()是一种流量控制算法,用于控制流入网络的数据速率,以防止网络拥塞。

2024-04-03 14:02:29 750

原创 一文了解Java核心知识——线程池

管理一系列线程的资源池。当有任务要处理时,直接从线程池中获取线程来处理,处理完之后线程并不会立即被销毁,而是等待下一个任务。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)的方式。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。通过Executor框架的工具类Executor来创建 FixedThreadPool:SingleThreadExecutor:CachedThreadPool:ScheduledThreadPool

2024-04-03 12:53:53 850

原创 Java23种常见设计模式汇总

创建型设计模式:七大结构型设计模式:11种行为型设计模式:​​​​​​​。

2024-03-30 21:19:24 541

原创 InnoDB引擎

事务是一组操作的集合,它是一个不可分隔的工作单位,事务会把所有的操作作为一个整体向系统提交或撤销操作请求,即这些操作要不同时成功,要不同时失败。ACID原子性(Atomicity):事务是不可分割的最小操作单元。一致性(Consistency):事务完成时,必须使所有数据都保持一致状态隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变是永久的。

2024-03-30 16:21:37 1062

原创 一文搞定ThreadLocal

直接在官网找到对该类的介绍:该类提供线程局部变量。这些变量与其正常对应变量的不同之处在于,访问一个变量(通过其get或set方法)的每个线程都有其自己的、独立初始化的变量副本。实例通常是类中希望将状态与线程关联起来的私有静态字段(例如,用户 ID 或事务 ID)。个人对上述文字的理解:ThreadLocal就是每个线程中的局部变量,每个线程中都要。可以通过set或get方法访问。

2024-03-29 10:58:12 1160

原创 MySQL进阶——锁

同Java中的锁。目的是为了保证数据一致性、完整性,提高并发安全、控制访问顺序。全局锁是对整个 数据库 实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句(表结构)、DDL语句(表数据),以及更新操作的事务提交语句都被阻塞。做全局的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突得概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。表锁元数据锁(meta data lock,MDL)意向锁。

2024-03-27 20:14:39 697

原创 MySQL进阶---SQL优化

插入数据insert:批量插入、手动控制事务、主键顺序插入、大批量插入:load data local infile主键优化主键长度尽量短,顺序插入 AUTO_INCREMENT UUIDorder by优化using index:直接通过索引返回数据,性能高using filesort:需要将返回的结果在排序缓冲区排序gourp by 索引,多字段分组满足最左前缀法则limit优化 覆盖索引 + 子查询count优化 count(*) =count(1) > count(主

2024-03-26 10:35:52 1153

原创 MySQL进阶——索引

介绍索引(Index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。优缺点分析优点提高数据检索的效率,降低数据库IO成本通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗缺点索引列需要占用空间。索引大大提高了查询效率,同时也降低了更新表的速度。如:对表进行Insert、update、delete时,效率降低。索引概述。

2024-03-23 23:51:06 1471

原创 MySQL进阶——存储引擎

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎可以被称为表类型。#1、查询建表语句 --默认存储引擎InnoDBshow create table 表名;​#2、查询当前数据库支持的存储引擎​#3、在建表的时候指定存储引擎create table 表名{。。。。DATA​InnoDB:是MySQL的默认存储引擎,支持事务、外键。如果应用对事务的完整性要求较高,在并发条件下要求数据的一致性,数据操作除了插入和查询外还有。

2024-03-22 17:56:46 871

原创 11种行为型设计模式(下)

观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象是Subject,依赖的对象是Observer,Subject通知Observer变化。个人理解:观察者模式就是一种似广播的模式,一个站对多个对象。观察者模式(Observer Pattern)是一种软件设计模式,它定义了一种一对多的依赖关系,使得多个观察者对象同时监听某一个主题对象。当主题对象的状态发生变化时,所有依赖于它的观察者都会得到通知并自动更新。1、中介者模式是一种行为型设计模式,用来减少对象间的直接耦合。

2024-03-20 17:17:05 1405

原创 11种行为型模式(上)

1、模板方法模式,又叫模板模式。在一个抽象类中中公开定义了执行它的方法模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行2、简单说,模板方法模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。3、模板模式属于行为者模式。对原理图中的说明1、AbstractClass抽象类,类中实现了模板方法,定义了算法的骨架,具体子类需要取实现,其他的抽象方法operation2,3,4。

2024-03-20 15:38:58 928

原创 简述Cookie、Session、JWT三者特点

三者的目的都是为了维持前端页面的登录状态。

2024-03-20 11:02:56 248

原创 Wait()方法是否会释放对象锁之外的锁?

今天看并发的时候,看的调用wait()有人现在就要问了,啥是对象锁,其实就是对象作为锁的条件。上述就是一个对象锁。继续看,然后我就去做了一个小测试,看看调用wait方法,会不会释放对象锁。这里让线程1拿到对象锁,再开始休眠;再让线程2去拿对象锁。如果线程2拿到对象锁,代表wait方法会自动释放所拿到的对象锁。运行结果如下:还真会自动释放锁。问题提出,会不会释放在wait方法之外的所有锁呢?

2024-03-19 20:55:14 519

原创 7大结构型设计模式

1、定义装饰者模式:动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则//1、接口​//2、具体咖啡类​@Overridereturn 1.0;​@Override​//3、装饰者类​​​​​​​​​//4、测试demo​装饰者模式是一种结构型设计模式,它允许你动态地将责任附加到对象上。这种模式可以通过创建一个包装类来包裹原始类,在不改变原始类接口的情况下,给其添加新的功能。

2024-03-18 19:55:03 1557

原创 桥接模式以及在JDBC源码剖析

个人理解:将桥接模式理解为一种将抽象部分和具体实现部分分离开的设计模式。桥接模式通过对象间的组合关系,而不是继承关系,来实现抽象部分和实现部分的解耦。(抽象和具体分开)SpringMVC的三层架构中,service接口和serviceImpl也是运用了这种桥接思想。桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化而互不影响。桥接模式通过对象间的组合关系,而不是继承关系,来实现抽象部分和实现部分的解耦。

2024-03-11 19:56:02 687

原创 适配器模式已经在SpringMVC中的源码实现

1、类适配器模式介绍基本介绍:Adapter类,通过继承src类,实现dst类接口,完成src -> dst的适配1、基本思路和类适配器相同,只是将Adapter类做了修改,不是继承src类,而是持有src类的实例,以解决兼容性问题。即:持有src类,实现dst类接口,完成src -> dst的适配​2、根据合成复用原则,在系统中尽量使用关联关系代替继承关系1、适配器模式又称缺省适配器模式。

2024-03-10 16:29:45 726

原创 代理模式以及静态代理、JDK代理、Cglib代理的实现

1、代理对象不需要实现接口,但是目标对象要实现接口,否则不能用动态代理2、代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象3、动态代理又称:JDK代理,接口代理1、静态代理和JDK代理都要求目标对象实现一个接口,但是有时候目标对象只是一个单独的对象,并没有实现任何的接口,这个时候可使用目标对象子类来实现代理——Cglib代理2、Cglib代理也叫做子类代理,它是在内存中构建一个子类对象从而实现对目标对象功能扩展,有些地方也将Cglib代理归属动态代理。

2024-03-08 16:52:16 1047 1

原创 div聊天框始终保持在底部

在设计一个网络聊天室的时候,每次发完消息,用下面这种方式,将div上加入。这样的id标签,就可以通过使用了原生 JavaScript 的。来获取聊天容器的引用。

2024-03-08 09:58:24 322

原创 创建型设计模式合集

原型模式是一种创建型设计模式,它允许创建对象的同时保持其内部状态的一份拷贝,从而避免了使用详细的构造函数和初始化过程。个人理解:就是通过克隆已有的对象,来创建新的对象,从而减少对象实例化过程。1、建造者模式又称生成器模式,是一种对象构建模式,可以将复杂对象的构建过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同属性的对象。2、建造者模式是一步一步创建一个复杂对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部实现细节。

2024-03-04 20:26:10 1121

maven和Spring的总结

个人的maven和Spring的总结,里面含有Spring实现时候的一些细节

2023-11-05

苍穹外卖技术 - 个人总结

苍穹外卖技术 - 个人总结

2023-10-31

空空如也

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

TA关注的人

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